diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/controller/BaseTreeController.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/controller/BaseTreeController.java index 7e49746..c25e3e4 100644 --- a/bonus-modules/bonus-base/src/main/java/com/bonus/base/controller/BaseTreeController.java +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/controller/BaseTreeController.java @@ -98,4 +98,13 @@ public class BaseTreeController { return R.ok(bmProNature); } + /** + * 获取新购状态 + */ + @RequestMapping("/getStatus") + public R getStatus(){ + R> bmProNature = remoteDictService.getDictData("purchase_status"); + return R.ok(bmProNature); + } + } diff --git a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/controller/BpmPurchaseAcceptController.java b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/controller/BpmPurchaseAcceptController.java index 329d8b9..02005ca 100644 --- a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/controller/BpmPurchaseAcceptController.java +++ b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/controller/BpmPurchaseAcceptController.java @@ -59,7 +59,7 @@ public class BpmPurchaseAcceptController extends BaseController { */ @ApiOperation("单个或批量验收合格") @PostMapping ("/approve") - public AjaxResult updateTask(PurchaseDto purchaseDto) + public AjaxResult updateTask(@RequestBody PurchaseDto purchaseDto) { return purchaseAcceptService.updateTask(purchaseDto); } @@ -71,21 +71,21 @@ public class BpmPurchaseAcceptController extends BaseController { */ @ApiOperation("二级页面不合格") @PostMapping ("/reject") - public AjaxResult updateDetails(PurchaseDto purchaseDto) + public AjaxResult updateDetails(@RequestBody PurchaseDto purchaseDto) { return purchaseAcceptService.updateDetails(purchaseDto); } /** - * 导出新购验证列表 + * 导出新购验收列表 */ - @ApiOperation(value = "导出新购验证列表") + @ApiOperation(value = "导出新购验收列表") @RequiresPermissions("purchase:purchaseDto:export") @PostMapping("/export") public void export(HttpServletResponse response, PurchaseDto purchaseDto) { List list = purchaseAcceptService.selectAll(purchaseDto); ExcelUtil util = new ExcelUtil<>(PurchaseAcceptVo.class); - util.exportExcel(response, list, "新购验证列表"); + util.exportExcel(response, list, "新购验收列表"); } } diff --git a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/dto/PurchaseDto.java b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/dto/PurchaseDto.java index a6a0102..4d4f6f0 100644 --- a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/dto/PurchaseDto.java +++ b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/dto/PurchaseDto.java @@ -15,7 +15,7 @@ import java.util.List; public class PurchaseDto { @ApiModelProperty(value = "id") - private Integer id; + private String id; @ApiModelProperty(value = "类型id") private Integer typeId; diff --git a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/mapper/BpmPurchaseAcceptMapper.java b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/mapper/BpmPurchaseAcceptMapper.java index 48341cc..512b73b 100644 --- a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/mapper/BpmPurchaseAcceptMapper.java +++ b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/mapper/BpmPurchaseAcceptMapper.java @@ -33,27 +33,12 @@ public interface BpmPurchaseAcceptMapper { */ 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 + * @param idList * @return */ - List select(@Param("array") String[] split); + List select(@Param("array") List idList); /** * 更新采购数量 @@ -61,5 +46,6 @@ public interface BpmPurchaseAcceptMapper { * @param purchaseNum * @return */ - int updateCheckNum(@Param("id") Integer id, @Param("purchaseNum") Integer purchaseNum); + int updateCheckNum(@Param("id") String id, @Param("purchaseNum") Integer purchaseNum); + } diff --git a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/mapper/BpmPurchaseInfoMapper.java b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/mapper/BpmPurchaseInfoMapper.java index 30e06f5..2ab2dd0 100644 --- a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/mapper/BpmPurchaseInfoMapper.java +++ b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/mapper/BpmPurchaseInfoMapper.java @@ -124,5 +124,5 @@ public interface BpmPurchaseInfoMapper { */ int updateByPrimaryKey(BpmPurchaseInfo record); - int updateStatusById(@Param("updatedStatus") Byte updatedStatus, @Param("id") Integer id); + int updateStatusById(@Param("updatedStatus") Integer updatedStatus, @Param("id") Integer id); } \ No newline at end of file diff --git a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/service/impl/BpmPurchaseAcceptServiceImpl.java b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/service/impl/BpmPurchaseAcceptServiceImpl.java index 0273cce..5f58144 100644 --- a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/service/impl/BpmPurchaseAcceptServiceImpl.java +++ b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/service/impl/BpmPurchaseAcceptServiceImpl.java @@ -4,14 +4,17 @@ import com.alibaba.nacos.common.utils.CollectionUtils; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.purchase.dto.PurchaseDto; import com.bonus.purchase.mapper.BpmPurchaseAcceptMapper; +import com.bonus.purchase.mapper.BpmPurchaseInfoMapper; import com.bonus.purchase.service.BpmPurchaseAcceptService; import com.bonus.purchase.utils.Constants; import com.bonus.purchase.vo.PurchaseAcceptVo; +import com.bonus.task.mapper.BpmTaskMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -26,6 +29,12 @@ public class BpmPurchaseAcceptServiceImpl implements BpmPurchaseAcceptService { @Resource private BpmPurchaseAcceptMapper mapper; + @Resource + private BpmTaskMapper bpmTaskMapper; + + @Resource + private BpmPurchaseInfoMapper bpmPurchaseInfoMapper; + /** * 查询采购单 * @param purchaseDto @@ -55,13 +64,12 @@ public class BpmPurchaseAcceptServiceImpl implements BpmPurchaseAcceptService { @Transactional(rollbackFor = Exception.class) public AjaxResult updateTask(PurchaseDto purchaseDto) { //只有任务状态为待验收时,方可批量验收合格 - if (purchaseDto.getTaskId() != null) { - String[] split = purchaseDto.getTaskId().split(","); - ArrayList list = new ArrayList<>(); + if (purchaseDto.getId() != null) { + String[] split = purchaseDto.getId().split(","); + ArrayList taskIdList = new ArrayList<>(); for (int i = 0; i < split.length; i++) { - list.add(Integer.parseInt(split[i])); + taskIdList.add(Integer.parseInt(split[i])); } - purchaseDto.setTaskIds(list); List statusList = mapper.selectStatus(purchaseDto); if (CollectionUtils.isNotEmpty(statusList)) { for (Integer status : statusList) { @@ -70,42 +78,68 @@ public class BpmPurchaseAcceptServiceImpl implements BpmPurchaseAcceptService { } } } - purchaseDto.setStatus(Constants.PURCHASE_ACCEPTED); - int result; + int result = 0; try { - result = mapper.updateTask(purchaseDto); //根据任务id查询详情表 - List taskIds = purchaseDto.getTaskIds(); - for (Integer taskId : taskIds) { - purchaseDto.setId(taskId); + for (Integer taskId : taskIdList) { + purchaseDto.setId(String.valueOf(taskId)); List details = mapper.getDetails(purchaseDto); //根据查询的采购数量,更新验收数量 for (PurchaseAcceptVo purchaseVo : details) { - result = mapper.updateCheckNum(purchaseVo.getId(), purchaseVo.getPurchaseNum()); + result += mapper.updateCheckNum(purchaseVo.getPurchaseId(), purchaseVo.getPurchaseNum()); + if ("0".equals(purchaseVo.getManageType())) { + result += bpmPurchaseInfoMapper.updateStatusById(Constants.PENDING_BINDING, Integer.parseInt(purchaseVo.getPurchaseId())); + } else if ("1".equals(purchaseVo.getManageType())) { + result += bpmPurchaseInfoMapper.updateStatusById(Constants.PENDING_INVENTORY, Integer.parseInt(purchaseVo.getPurchaseId())); + } + } + // 提取 PurchaseId + List idList = details.stream().map(PurchaseAcceptVo::getPurchaseId).collect(Collectors.toList()); + //根据详情id查询详情状态,更新任务表状态 + List idStatusList = mapper.select(idList); + // 使用流 API 按 id 分组,并提取 status + Map> groupedByIdStatus = idStatusList.stream() + .collect(Collectors.groupingBy( + PurchaseAcceptVo::getId, + Collectors.mapping(PurchaseAcceptVo::getStatus, Collectors.toList()) + )); + for (Map.Entry> entry : groupedByIdStatus.entrySet()) { + Integer id = entry.getKey(); + List statusList1 = entry.getValue(); + if (statusList1.contains(Constants.PENDING_BINDING)) { + //如果详情状态包含待绑定,则外部任务状态为待绑定 + result += bpmTaskMapper.updateStatusById(Constants.PENDING_BINDING, id); + } else if (!statusList1.contains(Constants.PENDING_BINDING) && statusList1.contains(Constants.PENDING_INVENTORY)) { + result += bpmTaskMapper.updateStatusById(Constants.PENDING_INVENTORY, id); + } + } + if (result > 0) { + return AjaxResult.success("批量验收合格成功"); } - } - 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; + purchaseDto.setStatus(Constants.PENDING_BINDING); + int result = 0; 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 (PurchaseAcceptVo purchaseVo : details) { - result = mapper.updateCheckNum(purchaseVo.getId(), purchaseVo.getPurchaseNum()); + if (CollectionUtils.isNotEmpty(details)) { + if ("0".equals(details.get(0).getManageType())) { + bpmPurchaseInfoMapper.updateStatusById(Constants.PENDING_BINDING, Integer.parseInt(split[i])); + } else if ("1".equals(details.get(0).getManageType())) { + bpmPurchaseInfoMapper.updateStatusById(Constants.PENDING_INVENTORY, Integer.parseInt(split[i])); + } } + result = mapper.updateCheckNum(details.get(0).getPurchaseId(), details.get(0).getPurchaseNum()); } //根据详情id查询详情状态,更新任务表状态 - List statusList = mapper.select(split); + List statusList = mapper.select(Arrays.asList(split)); // 使用流 API 按 id 分组,并提取 status Map> groupedByIdStatus = statusList.stream() .collect(Collectors.groupingBy( @@ -114,24 +148,16 @@ public class BpmPurchaseAcceptServiceImpl implements BpmPurchaseAcceptService { )); 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 (statusList1.contains(Constants.PENDING_BINDING)) { + //如果详情状态包含待绑定,则外部任务状态为待绑定 + result += bpmTaskMapper.updateStatusById(Constants.PENDING_BINDING, id); + } else if (!statusList1.contains(Constants.PENDING_BINDING) && statusList1.contains(Constants.PENDING_INVENTORY)) { + result += bpmTaskMapper.updateStatusById(Constants.PENDING_INVENTORY, id); } } if (result > 0) { - return AjaxResult.success("操作成功"); + return AjaxResult.success("批量验收合格成功"); } } catch (Exception e) { throw new RuntimeException(e); @@ -150,12 +176,13 @@ public class BpmPurchaseAcceptServiceImpl implements BpmPurchaseAcceptService { public AjaxResult updateDetails(PurchaseDto purchaseDto) { if (purchaseDto.getPurchaseId() != null) { String[] split = purchaseDto.getPurchaseId().split(","); - purchaseDto.setStatus(Constants.PURCHASE_NO_PASSED); - int result; + // 将字符串数组转换为 List + List idList = Arrays.stream(split).map(Integer::parseInt).collect(Collectors.toList()); + int result = 0; try { - result = mapper.updateDetails(split, purchaseDto.getStatus()); + result += bpmPurchaseInfoMapper.updateStatusByTaskIdIn(Constants.PURCHASE_NO_PASSED, idList); //根据详情id查询详情状态,更新任务表状态 - List statusList = mapper.select(split); + List statusList = mapper.select(Arrays.asList(split)); // 使用流 API 按 id 分组,并提取 status Map> groupedByIdStatus = statusList.stream() .collect(Collectors.groupingBy( @@ -164,20 +191,13 @@ public class BpmPurchaseAcceptServiceImpl implements BpmPurchaseAcceptService { )); 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); + result += bpmTaskMapper.updateStatusById(Constants.PURCHASE_ACCEPTED, id); } 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); + result += bpmTaskMapper.updateStatusById(Constants.PURCHASE_NO_PASSED, id); } } if (result > 0) { diff --git a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/service/impl/BpmPurchaseInfoService.java b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/service/impl/BpmPurchaseInfoService.java index f9c1a07..e88b8f6 100644 --- a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/service/impl/BpmPurchaseInfoService.java +++ b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/service/impl/BpmPurchaseInfoService.java @@ -221,7 +221,7 @@ public class BpmPurchaseInfoService{ return bpmPurchaseInfoMapper.updateIsActiveById(id); } - public int updateStatusByIdIn(Byte updatedStatus,Integer id){ + public int updateStatusByIdIn(Integer updatedStatus,Integer id){ return bpmPurchaseInfoMapper.updateStatusById(updatedStatus,id); } diff --git a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/vo/PurchaseAcceptVo.java b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/vo/PurchaseAcceptVo.java index 2335c5f..291d554 100644 --- a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/vo/PurchaseAcceptVo.java +++ b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/vo/PurchaseAcceptVo.java @@ -60,8 +60,7 @@ public class PurchaseAcceptVo { private Integer notaxPrice; @ApiModelProperty(value="税率") - @Excel(name = "税率") - private Integer taxRate; + private String taxRate; @ApiModelProperty(value="操作人") @Excel(name = "操作人") @@ -81,4 +80,11 @@ public class PurchaseAcceptVo { @ApiModelProperty(value="备注") @Excel(name = "备注") private String remark; + + @ApiModelProperty(value = "二级明细id") + private String purchaseId; + + @ApiModelProperty(value = "管理类型0是编码1计数") + private String manageType; + } diff --git a/bonus-modules/bonus-task/src/main/resources/mapper/BpmPurchaseAcceptMapper.xml b/bonus-modules/bonus-task/src/main/resources/mapper/BpmPurchaseAcceptMapper.xml index 667c797..bd09c68 100644 --- a/bonus-modules/bonus-task/src/main/resources/mapper/BpmPurchaseAcceptMapper.xml +++ b/bonus-modules/bonus-task/src/main/resources/mapper/BpmPurchaseAcceptMapper.xml @@ -3,25 +3,7 @@ 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} @@ -38,7 +20,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SUM( bp.purchase_num ) AS purchaseNum, SUM( bp.purchase_price ) AS purchasePrice, SUM( bp.notax_price ) AS notaxPrice, - CONCAT(bp.tax_rate, '%') AS taxRate, su.nick_name AS createBy, bt.create_time AS createTime, bt.`status` AS STATUS, @@ -78,11 +59,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bp.id AS purchaseId, mt1.`name` AS materialName, mt.`name` AS materialModel, + mt.manage_type AS manageType, sda.dict_label AS unitName, bp.purchase_price AS purchasePrice, bp.notax_price AS notaxPrice, bp.purchase_num AS purchaseNum, bs.`name` AS supplierName, + CONCAT(bp.tax_rate, '%') AS taxRate, bp.product_date AS productDate, bp.`status` AS STATUS, sda1.dict_label AS statusName @@ -97,10 +80,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE bp.is_active = '1' - AND ( - mt1.id = #{typeId} - OR mt.id = #{typeId} - ) + AND mt.id = #{typeId} AND bs.id = #{supplierId}