From cef5310e655dc647b004dfdd40159cecb6d67ef3 Mon Sep 17 00:00:00 2001 From: mashuai Date: Wed, 23 Oct 2024 09:48:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E8=B4=AD=E7=BB=91=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/constant/MaterialConstants.java | 50 +++++++++-- .../controller/PurchaseBindController.java | 32 ++++++- .../controller/PurchaseStorageController.java | 2 +- .../material/purchase/dto/PurchaseDto.java | 5 +- .../purchase/mapper/PurchaseBindMapper.java | 7 ++ .../service/IPurchaseBindService.java | 8 ++ .../service/impl/PurchaseBindServiceImpl.java | 83 ++++++++++++++++++- .../impl/PurchaseStorageServiceImpl.java | 4 +- .../material/purchase/vo/PurchaseVo.java | 3 + .../material/task/mapper/TmTaskMapper.java | 2 +- .../material/purchase/PurchaseBindMapper.xml | 11 ++- 11 files changed, 193 insertions(+), 14 deletions(-) diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/MaterialConstants.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/MaterialConstants.java index 684ae8d9..29cb26c8 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/MaterialConstants.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/MaterialConstants.java @@ -51,15 +51,55 @@ public class MaterialConstants { */ public static final String LATITUDE_PATTERN = "^(-?(90(\\.0+)?|[1-8]?\\d(\\.\\d{1,6})?))$"; - public static final String ZERO_CONSTANT = "0"; + /** + * 待提交 + */ + public static final Integer ZERO_CONSTANT = 0; - public static final String ONE_CONSTANT = "1"; + /** + * 待通知 + */ + public static final Integer ONE_CONSTANT = 1; - public static final String TWO_CONSTANT = "2"; + /** + * 待验收 + */ + public static final Integer TWO_CONSTANT = 2; - public static final String THREE_CONSTANT = "3"; + /** + * 待绑定 + */ + public static final Integer THREE_CONSTANT = 3; - public static final String FOUR_CONSTANT = "4"; + /** + * 待入库 + */ + public static final Integer FOUR_CONSTANT = 4; + + /** + * 已完成 + */ + public static final Integer FIVE_CONSTANT = 5; + + /** + * 待验收(驳回后) + */ + public static final Integer SIX_CONSTANT = 6; + + /** + * 待绑定(驳回后) + */ + public static final Integer SEVEN_CONSTANT = 7; + + /** + * 待入库(驳回后) + */ + public static final Integer EIGHT_CONSTANT = 8; + + /** + * 入库进行中 + */ + public static final Integer NINE_CONSTANT = 9; /** * 已全部入库 diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseBindController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseBindController.java index f395d83c..423707b9 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseBindController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseBindController.java @@ -1,8 +1,11 @@ package com.bonus.material.purchase.controller; +import com.bonus.common.core.utils.poi.ExcelUtil; import com.bonus.common.core.web.controller.BaseController; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.page.TableDataInfo; +import com.bonus.common.log.annotation.SysLog; +import com.bonus.common.log.enums.OperaType; import com.bonus.common.security.annotation.PreventRepeatSubmit; import com.bonus.common.security.annotation.RequiresPermissions; import com.bonus.material.purchase.dto.PurchaseDto; @@ -86,8 +89,35 @@ public class PurchaseBindController extends BaseController { @ApiOperation(value = "二维码生成下载") @PostMapping(value = "/downloadQrCode") @PreventRepeatSubmit - @RequiresPermissions("purchase:bpmPurchaseInfo:query") + //@RequiresPermissions("purchase:bind:download") public void downloadQrCode(HttpServletResponse response, PurchaseDto purchaseDto) { purchaseBindService.downloadQrCode(response, purchaseDto); } + + /** + * 驳回或批量驳回 + * @param dto + * @return + */ + @ApiOperation(value = "驳回或批量驳回操作") + @com.bonus.material.common.annotation.PreventRepeatSubmit + @RequiresPermissions("purchase:bind:reject") + @PostMapping("/reject") + public AjaxResult reject(@RequestBody PurchaseDto dto) { + return purchaseBindService.reject(dto); + } + + /** + * 导出新购验收绑定详细列表 + */ + @ApiOperation(value = "导出新购验收绑定详细列表") + @PreventRepeatSubmit + @RequiresPermissions("purchase:bind:export") + @SysLog(title = "新购验收绑定任务", businessType = OperaType.EXPORT, module = "仓储管理->导出新购验收绑定任务") + @PostMapping("/export") + public void export(HttpServletResponse response, PurchaseDto dto) { + List list = purchaseBindService.selectAll(dto); + ExcelUtil util = new ExcelUtil(PurchaseVo.class); + util.exportExcel(response, list, "新购验收绑定任务数据"); + } } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseStorageController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseStorageController.java index 67495d52..89d033ae 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseStorageController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseStorageController.java @@ -86,7 +86,7 @@ public class PurchaseStorageController extends BaseController { * @param dto * @return */ - @ApiOperation(value = "入库或批量入库操作") + @ApiOperation(value = "驳回或批量驳回操作") @PreventRepeatSubmit @RequiresPermissions("purchase:storage:reject") @PostMapping("/reject") diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/dto/PurchaseDto.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/dto/PurchaseDto.java index b0dc37cc..7cca849c 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/dto/PurchaseDto.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/dto/PurchaseDto.java @@ -1,7 +1,5 @@ package com.bonus.material.purchase.dto; -import com.bonus.common.core.web.domain.BaseEntity; -import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Builder; import lombok.Data; @@ -47,6 +45,9 @@ public class PurchaseDto { @ApiModelProperty(value = "二级明细id") private String purchaseId; + @ApiModelProperty(value = "二级明细id列表") + private List purchaseIdList; + @ApiModelProperty(value = "id列表") private List taskIds; diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseBindMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseBindMapper.java index 1b425465..6e9cdfac 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseBindMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseBindMapper.java @@ -73,4 +73,11 @@ public interface PurchaseBindMapper { * @param dto */ void insert(PurchaseDto dto); + + /** + * 更新绑定状态 + * @param updatedStatus + * @param purchaseId + */ + void updateStatusById(@Param("updatedStatus") Integer updatedStatus, @Param("id") String purchaseId); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/IPurchaseBindService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/IPurchaseBindService.java index a1886cce..852feb6b 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/IPurchaseBindService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/IPurchaseBindService.java @@ -47,4 +47,12 @@ public interface IPurchaseBindService { * @param purchaseDto */ void downloadQrCode(HttpServletResponse response, PurchaseDto purchaseDto); + + /** + * 驳回或批量驳回操作 + * @param dto + * @return + */ + AjaxResult reject(PurchaseDto dto); + } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseBindServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseBindServiceImpl.java index 8cf66d18..01c2b7b4 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseBindServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseBindServiceImpl.java @@ -13,6 +13,7 @@ import com.bonus.material.purchase.dto.PurchaseDto; import com.bonus.material.purchase.mapper.PurchaseBindMapper; import com.bonus.material.purchase.service.IPurchaseBindService; import com.bonus.material.purchase.vo.PurchaseVo; +import com.bonus.material.task.mapper.TmTaskMapper; import com.bonus.system.api.RemoteUserService; import com.bonus.system.api.domain.SysUser; import com.fasterxml.jackson.databind.DeserializationFeature; @@ -26,6 +27,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.util.*; +import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -43,6 +45,9 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService { @Resource private RemoteUserService remoteUserService; + @Resource + private TmTaskMapper tmTaskMapper; + /** * 查询所有绑定信息 * @param dto @@ -109,7 +114,9 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService { if (dto == null || dto.getTaskId() == null || dto.getTypeId() == null) { return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "参数不能为空"); } - return AjaxResult.success(purchaseBindMapper.selectPurchaseCheckInfoById(dto)); + List list = purchaseBindMapper.selectPurchaseCheckInfoById(dto); + extracted(list); + return AjaxResult.success(list); } /** @@ -145,6 +152,8 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService { for (PurchaseDto purchaseDto : dto.getDtoList()) { purchaseDto.setCreateBy(SecurityUtils.getUserId().toString()); purchaseDto.setCreateTime(DateUtils.getNowDate()); + purchaseDto.setTaskId(dto.getTaskId()); + purchaseDto.setTypeId(dto.getTypeId()); result += purchaseBindMapper.add(purchaseDto); } if (result > 0) { @@ -181,6 +190,78 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService { } } + /** + * 驳回或批量驳回操作 + * @param dto + * @return + */ + @Override + public AjaxResult reject(PurchaseDto dto) { + //一级页面驳回 + int result = 0; + if (dto.getTaskId() != null) { + //根据任务id查询详细信息 + List list = purchaseBindMapper.selectPurchaseCheckInfoById(dto); + if (CollectionUtils.isNotEmpty(list)) { + for (PurchaseVo purchaseVo : list) { + //更新状态为已驳回 + purchaseBindMapper.updateStatusById(MaterialConstants.SEVEN_CONSTANT, purchaseVo.getPurchaseId()); + } + } + result += tmTaskMapper.updateStatusById(MaterialConstants.SEVEN_CONSTANT, dto.getTaskId()); + } + //二级页面驳回 + if (dto.getPurchaseId() != null) { + List idList = Arrays.asList(dto.getPurchaseId().split(",")); + for (String purchaseId : idList) { + purchaseBindMapper.updateStatusById(MaterialConstants.SEVEN_CONSTANT, purchaseId); + } + for (String id : idList) { + //根据二级页面驳回状态更新任务状态 + dto.setPurchaseId(id); + List list = purchaseBindMapper.selectPurchaseCheckInfoById(dto); + if (CollectionUtils.isNotEmpty(list)) { + for (PurchaseVo purchaseVo : list) { + dto.setTaskId(purchaseVo.getTaskId().toString()); + List voList = purchaseBindMapper.selectPurchaseCheckInfoById(dto); + result = getResult(result, voList); + } + } + } + } + if (result > 0) { + return AjaxResult.success("操作成功"); + } + return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg()); + } + + /** + * 获取结果方法抽取 + * @param result + * @param voList + * @return + */ + private int getResult(int result, List voList) { + Map> groupedByIdStatus = voList.stream() + .collect(Collectors.groupingBy( + PurchaseVo::getTaskId, + Collectors.mapping(PurchaseVo::getStatus, Collectors.toList()) + )); + result += groupedByIdStatus.entrySet().stream() + .mapToInt(entry -> { + Integer taskId = entry.getKey(); + List statusList = entry.getValue(); + if (statusList.contains(MaterialConstants.INBOUND_AUDIT) || statusList.contains(MaterialConstants.PURCHASE_STORAGE_NO_PASSED)) { + return tmTaskMapper.updateStatusById(MaterialConstants.NINE_CONSTANT, taskId.toString()); + } else if (!statusList.contains(MaterialConstants.INBOUND_AUDIT) && !statusList.contains(MaterialConstants.PURCHASE_STORAGE_NO_PASSED) + && !statusList.contains(MaterialConstants.PARTIALLY_WAREHOUSED) && statusList.contains(MaterialConstants.INVENTORY)) { + return tmTaskMapper.updateStatusById(MaterialConstants.FOUR_CONSTANT, taskId.toString()); + } + return 0; + }).sum(); + return result; + } + /** * 内层二维码下载 * @param purchaseDto diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java index df4715dc..d4c17884 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java @@ -266,10 +266,10 @@ public class PurchaseStorageServiceImpl implements IPurchaseStorageService { Integer id = entry.getKey(); List statusList = entry.getValue(); if (statusList.contains(MaterialConstants.INBOUND_AUDIT) || statusList.contains(MaterialConstants.PURCHASE_STORAGE_NO_PASSED)) { - return tmTaskMapper.updateStatusById(MaterialConstants.PARTIALLY_WAREHOUSED, id); + return tmTaskMapper.updateStatusById(MaterialConstants.NINE_CONSTANT, id.toString()); } else if (!statusList.contains(MaterialConstants.INBOUND_AUDIT) && !statusList.contains(MaterialConstants.PURCHASE_STORAGE_NO_PASSED) && !statusList.contains(MaterialConstants.PARTIALLY_WAREHOUSED) && statusList.contains(MaterialConstants.INVENTORY)) { - return tmTaskMapper.updateStatusById(MaterialConstants.INVENTORY, id); + return tmTaskMapper.updateStatusById(MaterialConstants.FOUR_CONSTANT, id.toString()); } return 0; }).sum(); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/vo/PurchaseVo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/vo/PurchaseVo.java index 76bd58e0..4d2927af 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/vo/PurchaseVo.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/vo/PurchaseVo.java @@ -107,4 +107,7 @@ public class PurchaseVo { @ApiModelProperty(value = "二维码路径") private String qrUrl; + + @ApiModelProperty(value = "异常数量") + private Integer exceptionNum; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/mapper/TmTaskMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/mapper/TmTaskMapper.java index 92d6ee85..2adc8688 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/mapper/TmTaskMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/mapper/TmTaskMapper.java @@ -73,5 +73,5 @@ public interface TmTaskMapper { * @param id * @return */ - int updateStatusById(@Param("updatedStatus") Integer updatedStatus, @Param("id") Integer id); + int updateStatusById(@Param("updatedStatus") Integer updatedStatus, @Param("id") String id); } diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseBindMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseBindMapper.xml index e8cbd1d3..4081217d 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseBindMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseBindMapper.xml @@ -129,6 +129,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" GROUP_CONCAT( mt.type_name ) AS purchaseMaterial, GROUP_CONCAT( mt.manage_type ) AS manageType, SUM( pcd.check_num ) AS purchaseNum, + COUNT(CASE WHEN pcd.status != 3 THEN 1 END) AS exceptionNum, pci.purchaser as purchaserName, pci.create_by as createBy, pci.create_time as createTime, @@ -171,7 +172,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" pm.out_fac_code AS outFacCode, pcd.production_time AS productDate, pm.qr_code AS qrCode, - pm.qr_url AS qrUrl + pm.qr_url AS qrUrl, + pcd.status AS status FROM purchase_macode_info pm LEFT JOIN purchase_check_details pcd ON pm.task_id = pcd.task_id @@ -188,6 +190,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND pcd.id = #{purchaseId} + + AND ( + pm.ma_code LIKE CONCAT('%',#{keyWord},'%') + OR pm.out_fac_code LIKE CONCAT('%',#{keyWord},'%') + OR pm.qr_code LIKE CONCAT('%',#{keyWord},'%') + ) +