package com.ruoyi.contract.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.contract.domain.bo.ConPurchaseBo; import com.ruoyi.contract.domain.bo.ConPurchaseMediaBo; import com.ruoyi.contract.domain.bo.ConPurchasePaymentBo; import com.ruoyi.contract.domain.bo.conpurchase.ConPurchaseBoCopy; import com.ruoyi.contract.domain.bo.conpurchase.ConPurchaseBoExtend; import com.ruoyi.contract.domain.vo.ConPurchaseImportVO; import com.ruoyi.contract.domain.vo.ConPurchaseVo; import com.ruoyi.contract.service.IConPurchaseService; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 采购合同信息 * * @author ruoyi * @date 2024-06-07 */ @Validated @RequiredArgsConstructor @RestController @RequestMapping("/system/purchase") public class ConPurchaseController extends BaseController { private final IConPurchaseService iConPurchaseService; private static final Logger logger = LoggerFactory.getLogger(ConPurchaseController.class); /** * 查询采购合同信息列表 */ // @SaCheckPermission("system:purchase:list") @GetMapping("/list") public TableDataInfo list(ConPurchaseBoExtend bo, PageQuery pageQuery) { return iConPurchaseService.queryPageList(bo, pageQuery); } /** * 汇总采购合同相关字段信息 */ // @SaCheckPermission("system:purchaseMedia:list") @PostMapping("/costSummarizing") public Map costSummarizing(@RequestBody ConPurchaseBoExtend bo) { return iConPurchaseService.statistics(bo); } /** * 导出采购合同信息列表 */ // @SaCheckPermission("system:purchase:export") @Log(title = "采购合同信息", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(ConPurchaseBo bo, HttpServletResponse response) { List list = iConPurchaseService.queryList(bo); ExcelUtil.exportExcel(list, "采购合同信息", ConPurchaseVo.class, response); } /** * 动态列表导出采购合同信息列表 */ // @SaCheckPermission("contract:other:export") @Log(title = "采购合同信息", businessType = BusinessType.EXPORT) @PostMapping("/dynamicExport") public void dynamicExport(@RequestBody Map map, HttpServletResponse response) { String fieldName = map.get("fieldName"); String mediaFieldName = ""; if (StringUtils.isNotBlank(fieldName)) { mediaFieldName = map.get("mediaFieldName"); if (StringUtils.isNotBlank(mediaFieldName)){ mediaFieldName = mediaFieldName.replace("cityName","cityId"). replace("mediaName","mediaId"); } if (StringUtils.isNotBlank(fieldName)){ fieldName = fieldName.replace("mediaDeptName","mediaDeptId"); } }else { throw new ServiceException("主表字段属性不可不填写"); } String ids = map.get("ids"); if (StringUtils.isNotBlank(ids)){ String[] split = ids.split(","); List collect = new ArrayList<>(Arrays.asList(split)) .stream() .filter(ObjectUtil::isNotNull) .collect(Collectors.toList()); ids = String.join(",", collect); } iConPurchaseService.dynamicexportUpgrade(fieldName, mediaFieldName, ids, response); } /** * 获取采购合同信息详细信息 * * @param id 主键 */ // @SaCheckPermission("system:purchase:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { return R.ok(iConPurchaseService.queryById(id)); } /** * 新增采购合同信息 */ // @SaCheckPermission("system:purchase:add") @Log(title = "采购合同信息", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping("/add") public R add(@Validated(AddGroup.class) @RequestBody ConPurchaseBoCopy boCopy) { ConPurchaseBo bo = BeanUtil.toBean(boCopy, ConPurchaseBo.class); if (CollUtil.isNotEmpty(boCopy.getPurchasePaymentBoList())){ //收款 List conPurchasePaymentBoList = boCopy.getPurchasePaymentBoList().stream().map(item -> { ConPurchasePaymentBo conPurchasePaymentBo = BeanUtil.toBean(item, ConPurchasePaymentBo.class); return conPurchasePaymentBo; }).collect(Collectors.toList()); bo.setPurchasePaymentBoList(conPurchasePaymentBoList); } if (CollUtil.isNotEmpty(boCopy.getPurchaseMediaBoList())){ List collect = boCopy.getPurchaseMediaBoList().stream().map(item -> { ConPurchaseMediaBo conSaleMediaBo = BeanUtil.toBean(item, ConPurchaseMediaBo.class); return conSaleMediaBo; }).collect(Collectors.toList()); bo.setPurchaseMediaBoList(collect); } return toAjax(iConPurchaseService.insertByBo(bo)); } /** * 修改采购合同信息 */ // @SaCheckPermission("system:purchase:edit") @Log(title = "采购合同信息", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping("/edit") public R edit(@Validated(EditGroup.class) @RequestBody ConPurchaseBo bo) throws IllegalAccessException { return toAjax(iConPurchaseService.updateByBo(bo)); } /** * 废除采购合同信息 */ // @SaCheckPermission("contract:sale:edit") @Log(title = "采购合同废除", businessType = BusinessType.UPDATE) @RepeatSubmit() @GetMapping("/updatePurchaseAblish/{id}") public R editAbolish(@NotNull(message = "主键不能为空") @PathVariable Long id) { return toAjax(iConPurchaseService.updatePurchaseAblish(id)); } /** * 恢复采购合同信息 */ // @SaCheckPermission("contract:sale:edit") @Log(title = "采购合同恢复", businessType = BusinessType.UPDATE) @RepeatSubmit() @GetMapping("/updatePurchaseRenew/{id}") public R editRenew(@NotNull(message = "主键不能为空") @PathVariable Long id) { return toAjax(iConPurchaseService.updatePurchaseRenew(id)); } /** * 删除采购合同信息 * * @param ids 主键串 */ // @SaCheckPermission("system:purchase:remove") @Log(title = "采购合同信息", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { return toAjax(iConPurchaseService.deleteWithValidByIds(Arrays.asList(ids), true)); } /** * 更新统计数据 */ @GetMapping("/updateAllStatic") public R updateAllStatic() { return toAjax(iConPurchaseService.updatePurchaseDaysOverdue()); } /** * 采购合同导入 * @param file * @return */ @Log(title = "采购合同", businessType = BusinessType.IMPORT) @PostMapping("/importData") public R> importData(MultipartFile file) { try { return iConPurchaseService.importPurchase(file); } catch (Exception e) { logger.error("采购合同导入异常,异常信息:{}",e.getMessage(),e); return R.fail(e.getMessage()); } } }