From 5dcd2291388d00f8e8aff0bf24a77fa274f2c9f4 Mon Sep 17 00:00:00 2001 From: mashuai Date: Wed, 21 Aug 2024 10:17:51 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=96=B0=E8=B4=AD=E9=AA=8C=E6=94=B6?= =?UTF-8?q?=E5=90=88=E6=A0=BC=E4=B8=8D=E5=90=88=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../purchase/mapper/PurchaseAcceptMapper.java | 38 +++++ .../service/PurchaseAcceptService.java | 15 ++ .../impl/PurchaseAcceptServiceImpl.java | 151 ++++++++++++++++++ .../com/bonus/purchase/utils/Constants.java | 24 +++ .../resources/mapper/PurchaseAcceptMapper.xml | 57 ++++++- 5 files changed, 282 insertions(+), 3 deletions(-) create mode 100644 bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/utils/Constants.java diff --git a/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/mapper/PurchaseAcceptMapper.java b/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/mapper/PurchaseAcceptMapper.java index 0a1b713..80d3bb1 100644 --- a/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/mapper/PurchaseAcceptMapper.java +++ b/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/mapper/PurchaseAcceptMapper.java @@ -2,6 +2,7 @@ package com.bonus.purchase.mapper; import com.bonus.purchase.domain.PurchaseDto; import com.bonus.purchase.vo.PurchaseVo; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -24,4 +25,41 @@ public interface PurchaseAcceptMapper { * @return */ List getDetails(PurchaseDto purchaseDto); + + /** + * 查询状态 + * @param purchaseDto + * @return + */ + List selectStatus(PurchaseDto purchaseDto); + + /** + * 更新任务状态 + * @param purchaseDto + * @return + */ + int updateTask(@Param("purchaseDto") PurchaseDto purchaseDto); + + /** + * 审批合格或不合格 + * @param split + * @param status + * @return + */ + int updateDetails(@Param("array") String[] split, @Param("status") Integer status); + + /** + * 查询状态 + * @param split + * @return + */ + List select(@Param("array") String[] split); + + /** + * 更新采购数量 + * @param id + * @param purchaseNum + * @return + */ + int updateCheckNum(@Param("id") Integer id, @Param("purchaseNum") Integer purchaseNum); } diff --git a/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/service/PurchaseAcceptService.java b/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/service/PurchaseAcceptService.java index e1f3eeb..d5e87cb 100644 --- a/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/service/PurchaseAcceptService.java +++ b/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/service/PurchaseAcceptService.java @@ -1,5 +1,6 @@ package com.bonus.purchase.service; +import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.purchase.domain.PurchaseDto; import com.bonus.purchase.vo.PurchaseVo; @@ -24,4 +25,18 @@ public interface PurchaseAcceptService { * @return */ List getDetails(PurchaseDto purchaseDto); + + /** + * 批量验收合格 + * @param purchaseDto + * @return + */ + AjaxResult updateTask(PurchaseDto purchaseDto); + + /** + * 批量审批 + * @param purchaseDto + * @return + */ + AjaxResult updateDetails(PurchaseDto purchaseDto); } diff --git a/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/service/impl/PurchaseAcceptServiceImpl.java b/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/service/impl/PurchaseAcceptServiceImpl.java index bb4adfe..14cc824 100644 --- a/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/service/impl/PurchaseAcceptServiceImpl.java +++ b/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/service/impl/PurchaseAcceptServiceImpl.java @@ -1,13 +1,20 @@ package com.bonus.purchase.service.impl; +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.purchase.domain.PurchaseDto; import com.bonus.purchase.mapper.PurchaseAcceptMapper; import com.bonus.purchase.service.PurchaseAcceptService; +import com.bonus.purchase.utils.Constants; import com.bonus.purchase.vo.PurchaseVo; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * @Author ma_sh @@ -38,4 +45,148 @@ public class PurchaseAcceptServiceImpl implements PurchaseAcceptService { public List getDetails(PurchaseDto purchaseDto) { return mapper.getDetails(purchaseDto); } + + /** + * 批量验收合格 + * @param purchaseDto + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult updateTask(PurchaseDto purchaseDto) { + //只有任务状态为待验收时,方可批量验收合格 + if (purchaseDto.getTaskId() != null) { + String[] split = purchaseDto.getTaskId().split(","); + ArrayList list = new ArrayList<>(); + for (int i = 0; i < split.length; i++) { + list.add(Integer.parseInt(split[i])); + } + purchaseDto.setTaskIds(list); + List statusList = mapper.selectStatus(purchaseDto); + if (CollectionUtils.isNotEmpty(statusList)) { + for (Integer status : statusList) { + if (!status.equals(Constants.PENDING_ACCEPTANCE)) { + return AjaxResult.warn("存在非待验收任务,无法批量验收合格"); + } + } + } + purchaseDto.setStatus(Constants.PURCHASE_ACCEPTED); + int result; + try { + result = mapper.updateTask(purchaseDto); + //根据任务id查询详情表 + List taskIds = purchaseDto.getTaskIds(); + for (Integer taskId : taskIds) { + purchaseDto.setId(taskId); + List details = mapper.getDetails(purchaseDto); + //根据查询的采购数量,更新验收数量 + for (PurchaseVo purchaseVo : details) { + result = mapper.updateCheckNum(purchaseVo.getId(), purchaseVo.getPurchaseNum()); + } + } + if (result > 0) { + return AjaxResult.success("操作成功"); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } else if (purchaseDto.getPurchaseId() != null) { + String[] split = purchaseDto.getPurchaseId().split(","); + purchaseDto.setStatus(Constants.PURCHASE_ACCEPTED); + int result; + try { + result = mapper.updateDetails(split, purchaseDto.getStatus()); + //根据采购单id查询详情id + for (int i = 0; i < split.length; i++) { + purchaseDto.setPurchaseId(split[i]); + List details = mapper.getDetails(purchaseDto); + for (PurchaseVo purchaseVo : details) { + result = mapper.updateCheckNum(purchaseVo.getId(), purchaseVo.getPurchaseNum()); + } + } + //根据详情id查询详情状态,更新任务表状态 + List statusList = mapper.select(split); + // 使用流 API 按 id 分组,并提取 status + Map> groupedByIdStatus = statusList.stream() + .collect(Collectors.groupingBy( + PurchaseVo::getId, + Collectors.mapping(PurchaseVo::getStatus, Collectors.toList()) + )); + for (Map.Entry> entry : groupedByIdStatus.entrySet()) { + Integer id = entry.getKey(); + ArrayList list = new ArrayList<>(); + List statusList1 = entry.getValue(); + if (!statusList1.contains(Constants.PENDING_ACCEPTANCE) && statusList1.contains(Constants.PURCHASE_ACCEPTED) + && !statusList1.contains(Constants.PURCHASE_NO_PASSED)) { + //如果不包含47和49,则更新任务状态为48 全部通过 + list.add(id); + purchaseDto.setTaskIds(list); + purchaseDto.setStatus(Constants.PURCHASE_ACCEPTED); + result = mapper.updateTask(purchaseDto); + } else if (!statusList1.contains(Constants.PENDING_ACCEPTANCE) && statusList1.contains(Constants.PURCHASE_NO_PASSED)) { + list.add(id); + purchaseDto.setTaskIds(list); + purchaseDto.setStatus(Constants.PURCHASE_NO_PASSED); + result = mapper.updateTask(purchaseDto); + } + } + if (result > 0) { + return AjaxResult.success("操作成功"); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } + return AjaxResult.error("操作失败"); + } + + /** + * 二级批量审批不合格 + * @param purchaseDto + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult updateDetails(PurchaseDto purchaseDto) { + if (purchaseDto.getPurchaseId() != null) { + String[] split = purchaseDto.getPurchaseId().split(","); + purchaseDto.setStatus(Constants.PURCHASE_NO_PASSED); + int result; + try { + result = mapper.updateDetails(split, purchaseDto.getStatus()); + //根据详情id查询详情状态,更新任务表状态 + List statusList = mapper.select(split); + // 使用流 API 按 id 分组,并提取 status + Map> groupedByIdStatus = statusList.stream() + .collect(Collectors.groupingBy( + PurchaseVo::getId, + Collectors.mapping(PurchaseVo::getStatus, Collectors.toList()) + )); + for (Map.Entry> entry : groupedByIdStatus.entrySet()) { + Integer id = entry.getKey(); + ArrayList list = new ArrayList<>(); + List statusList1 = entry.getValue(); + if (!statusList1.contains(Constants.PENDING_ACCEPTANCE) && statusList1.contains(Constants.PURCHASE_ACCEPTED) + && !statusList1.contains(Constants.PURCHASE_NO_PASSED)) { + //如果不包含47和49,则更新任务状态为48 全部通过 + list.add(id); + purchaseDto.setTaskIds(list); + purchaseDto.setStatus(Constants.PURCHASE_ACCEPTED); + result = mapper.updateTask(purchaseDto); + } else if (!statusList1.contains(Constants.PENDING_ACCEPTANCE) && statusList1.contains(Constants.PURCHASE_NO_PASSED)) { + list.add(id); + purchaseDto.setTaskIds(list); + purchaseDto.setStatus(Constants.PURCHASE_NO_PASSED); + result = mapper.updateTask(purchaseDto); + } + } + if (result > 0) { + return AjaxResult.success("操作成功"); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } + return AjaxResult.error("操作失败"); + } } diff --git a/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/utils/Constants.java b/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/utils/Constants.java new file mode 100644 index 0000000..3b8e8e0 --- /dev/null +++ b/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/utils/Constants.java @@ -0,0 +1,24 @@ +package com.bonus.purchase.utils; + +/** + * 常量类 + * @Author ma_sh + * @create 2024/8/20 16:54 + */ +public class Constants { + + /** + * 待验收 + */ + public static final Integer PENDING_ACCEPTANCE = 47; + + /** + * 已验收 + */ + public static final Integer PURCHASE_ACCEPTED = 48; + + /** + * 不通过 + */ + public static final Integer PURCHASE_NO_PASSED = 49; +} diff --git a/bonus-modules/bonus-purchase/src/main/resources/mapper/PurchaseAcceptMapper.xml b/bonus-modules/bonus-purchase/src/main/resources/mapper/PurchaseAcceptMapper.xml index 55c171b..a8fb26b 100644 --- a/bonus-modules/bonus-purchase/src/main/resources/mapper/PurchaseAcceptMapper.xml +++ b/bonus-modules/bonus-purchase/src/main/resources/mapper/PurchaseAcceptMapper.xml @@ -3,6 +3,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + UPDATE bpm_task bt + SET bt.`status` = #{purchaseDto.status} + WHERE + bt.task_id IN + + #{taskId} + + + + + UPDATE bpm_purchase_info bp + SET bp.`status` = #{status} + WHERE + bp.id IN + + #{purchaseId} + + + + UPDATE bpm_purchase_info bp + SET bp.check_num = #{purchaseNum} + WHERE + bp.id = #{id} + + + + + + + \ No newline at end of file From cb0d20083782d2422a1bcc3e2f418fc86a3ab6da Mon Sep 17 00:00:00 2001 From: mashuai Date: Wed, 21 Aug 2024 10:18:18 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=96=B0=E8=B4=AD=E9=AA=8C=E6=94=B6?= =?UTF-8?q?=E5=90=88=E6=A0=BC=E4=B8=8D=E5=90=88=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PurchaseAcceptController.java | 27 ++++++++++++++++++- .../bonus/purchase/domain/PurchaseDto.java | 14 +++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/controller/PurchaseAcceptController.java b/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/controller/PurchaseAcceptController.java index f24245f..0404e8e 100644 --- a/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/controller/PurchaseAcceptController.java +++ b/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/controller/PurchaseAcceptController.java @@ -2,6 +2,7 @@ package com.bonus.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.security.annotation.RequiresPermissions; import com.bonus.purchase.domain.PurchaseDto; @@ -20,7 +21,7 @@ import java.util.List; * @create 2024/8/19 16:13 */ @RestController -@RequestMapping("/purchase/arrival") +@RequestMapping("/acceptance") public class PurchaseAcceptController extends BaseController { @Resource @@ -51,6 +52,30 @@ public class PurchaseAcceptController extends BaseController { return getDataTable(list); } + /** + * 单个或批量验收合格 + * @param purchaseDto + * @return + */ + @ApiOperation("单个或批量验收合格") + @PostMapping ("/approve") + public AjaxResult updateTask(PurchaseDto purchaseDto) + { + return purchaseAcceptService.updateTask(purchaseDto); + } + + /** + * 二级页面验收不合格 + * @param purchaseDto + * @return + */ + @ApiOperation("二级页面不合格") + @PostMapping ("/reject") + public AjaxResult updateDetails(PurchaseDto purchaseDto) + { + return purchaseAcceptService.updateDetails(purchaseDto); + } + /** * 导出新购验证列表 */ diff --git a/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/domain/PurchaseDto.java b/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/domain/PurchaseDto.java index a915cc7..69044a3 100644 --- a/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/domain/PurchaseDto.java +++ b/bonus-modules/bonus-purchase/src/main/java/com/bonus/purchase/domain/PurchaseDto.java @@ -3,7 +3,10 @@ package com.bonus.purchase.domain; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + /** + * 新购模块查询传参类 * @Author ma_sh * @create 2024/8/19 17:50 */ @@ -29,8 +32,17 @@ public class PurchaseDto { private String keyWord; @ApiModelProperty(value = "状态") - private String status; + private Integer status; @ApiModelProperty(value = "出厂日期") private String productDate; + + @ApiModelProperty(value = "id集合") + private List taskIds; + + @ApiModelProperty(value = "任务id集合") + private String taskId; + + @ApiModelProperty(value = "二级明细id") + private String purchaseId; }