diff --git a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/controller/BpmPurchaseStorageController.java b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/controller/BpmPurchaseStorageController.java index c004328..0837d03 100644 --- a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/controller/BpmPurchaseStorageController.java +++ b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/controller/BpmPurchaseStorageController.java @@ -1,11 +1,12 @@ package com.bonus.purchase.controller; -import com.bonus.base.api.domain.MaType; import com.bonus.common.core.domain.ResultBean; 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.purchase.domain.PurchaseStorageDto; +import com.bonus.purchase.dto.PurchaseDto; import com.bonus.purchase.service.BpmPurchaseStorageService; import com.bonus.purchase.service.impl.BpmPurchaseInfoService; import com.bonus.purchase.vo.PurchaseVo; @@ -55,24 +56,21 @@ public class BpmPurchaseStorageController extends BaseController { } - /* - * 入库 - * */ + /** + * 入库 + * @param purchaseDto + * @return + */ @PostMapping - public int warehouse(PurchaseStorageDto purchaseStorageDto) { - PurchaseStorageDto purchaseStorageDto1 = purchaseStorageService.selectByPrimaryKey(purchaseStorageDto.getId()); - MaType maType = purchaseStorageService.selectByTypeId(purchaseStorageDto1.getTypeId()); - - if (maType.getManageType() == "1"){ - int status = purchaseStorageService.updateStorageNum(purchaseStorageDto1.getInputNum(),purchaseStorageDto1.getTypeId()); - }else { - int status = purchaseStorageService.insertMaMachine(purchaseStorageDto1); - } - return purchaseStorageService.setStatus(purchaseStorageDto1.getId()); + public AjaxResult warehouse(@RequestBody PurchaseDto purchaseDto) { + return purchaseStorageService.warehouse(purchaseDto); } - /* - * 入库驳回 - * */ + + /** + * 入库驳回 + * @param purchaseStorageDto + * @return + */ @PutMapping(value = "/reject") public int reject(PurchaseStorageDto purchaseStorageDto) { return bpmPurchaseInfoService.updateStatusByIdIn(Integer.valueOf(purchaseStorageDto.getStatus()),purchaseStorageDto.getId()); 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 f2bbcad..baea48a 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 @@ -1,8 +1,10 @@ package com.bonus.purchase.dto; import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import javax.validation.constraints.NotNull; import java.util.List; @@ -14,6 +16,8 @@ import java.util.List; */ @Data @Builder +@AllArgsConstructor +@NoArgsConstructor public class PurchaseDto { @ApiModelProperty(value = "id") 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 512b73b..7c582e4 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 @@ -48,4 +48,5 @@ public interface BpmPurchaseAcceptMapper { */ int updateCheckNum(@Param("id") String id, @Param("purchaseNum") Integer purchaseNum); + int updateNum(@Param("id") String purchaseId, @Param("purchaseNum") Integer bindNum); } diff --git a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/mapper/BpmPurchaseStorageMapper.java b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/mapper/BpmPurchaseStorageMapper.java index 4dc57e8..74f282e 100644 --- a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/mapper/BpmPurchaseStorageMapper.java +++ b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/mapper/BpmPurchaseStorageMapper.java @@ -3,7 +3,9 @@ package com.bonus.purchase.mapper; import com.bonus.base.api.domain.MaMachine; import com.bonus.base.api.domain.MaType; import com.bonus.purchase.domain.PurchaseStorageDto; +import com.bonus.purchase.vo.PurchaseAcceptVo; import com.bonus.purchase.vo.PurchaseVo; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -20,10 +22,10 @@ public interface BpmPurchaseStorageMapper { MaType selectByTypeId(Integer typeId); - int updateStorageNum(Integer inputNum, Integer typeId); + int updateStorageNum(@Param("inputNum") Integer inputNum, @Param("typeId") Integer typeId); int setStatus(Integer id); - int insertmaMachine(MaMachine maMachine); + int insertmaMachine(PurchaseAcceptVo acceptVo); } diff --git a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/service/BpmPurchaseStorageService.java b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/service/BpmPurchaseStorageService.java index cd2b97c..3e665b2 100644 --- a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/service/BpmPurchaseStorageService.java +++ b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/service/BpmPurchaseStorageService.java @@ -1,7 +1,8 @@ package com.bonus.purchase.service; -import com.bonus.base.api.domain.MaType; +import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.purchase.domain.PurchaseStorageDto; +import com.bonus.purchase.dto.PurchaseDto; import com.bonus.purchase.vo.PurchaseVo; import java.util.List; @@ -29,14 +30,10 @@ public interface BpmPurchaseStorageService { PurchaseStorageDto selectByPrimaryKey(Integer id); - - int insertWarehouse(PurchaseStorageDto purchaseStorageDto); - - MaType selectByTypeId(Integer typeId); - - int updateStorageNum(Integer inputNum, Integer typeId); - - int setStatus(Integer id); - - int insertMaMachine(PurchaseStorageDto purchaseStorageDto1); + /** + * 入库 + * @param purchaseDto + * @return + */ + AjaxResult warehouse(PurchaseDto purchaseDto); } 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 74b4e67..d552e40 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 @@ -104,11 +104,20 @@ public class BpmPurchaseAcceptServiceImpl implements BpmPurchaseAcceptService { PurchaseAcceptVo::getId, Collectors.mapping(PurchaseAcceptVo::getStatus, Collectors.toList()) )); - result = getResult(result, groupedByIdStatus); - if (result > 0) { - return AjaxResult.success("批量验收合格成功"); + 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("批量验收合格成功"); + } } catch (Exception e) { throw new RuntimeException(e); } diff --git a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/service/impl/BpmPurchaseStorageServiceImpl.java b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/service/impl/BpmPurchaseStorageServiceImpl.java index 9214f19..12ee728 100644 --- a/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/service/impl/BpmPurchaseStorageServiceImpl.java +++ b/bonus-modules/bonus-task/src/main/java/com/bonus/purchase/service/impl/BpmPurchaseStorageServiceImpl.java @@ -1,15 +1,25 @@ package com.bonus.purchase.service.impl; -import com.bonus.base.api.domain.MaMachine; -import com.bonus.base.api.domain.MaType; +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.purchase.domain.PurchaseStorageDto; +import com.bonus.purchase.dto.PurchaseDto; +import com.bonus.purchase.mapper.BpmPurchaseAcceptMapper; +import com.bonus.purchase.mapper.BpmPurchaseInfoMapper; import com.bonus.purchase.mapper.BpmPurchaseStorageMapper; import com.bonus.purchase.service.BpmPurchaseStorageService; +import com.bonus.purchase.utils.Constants; +import com.bonus.purchase.vo.PurchaseAcceptVo; import com.bonus.purchase.vo.PurchaseVo; +import com.bonus.task.mapper.BpmTaskMapper; import org.springframework.stereotype.Service; 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; @Service public class BpmPurchaseStorageServiceImpl implements BpmPurchaseStorageService { @@ -17,6 +27,15 @@ public class BpmPurchaseStorageServiceImpl implements BpmPurchaseStorageService @Resource private BpmPurchaseStorageMapper bpmPurchaseStorageMapper; + @Resource + private BpmTaskMapper bpmTaskMapper; + + @Resource + private BpmPurchaseInfoMapper bpmPurchaseInfoMapper; + + @Resource + private BpmPurchaseAcceptMapper mapper; + @Override public List selectAll(PurchaseStorageDto purchaseStorageDto) { @@ -33,34 +52,114 @@ public class BpmPurchaseStorageServiceImpl implements BpmPurchaseStorageService return bpmPurchaseStorageMapper.selectByPrimaryKey(id); } + /** + * 入库 + * @param purchaseDto + * @return + */ @Override - public int insertWarehouse(PurchaseStorageDto purchaseStorageDto) { - - return bpmPurchaseStorageMapper.insertWarehouse(purchaseStorageDto); + public AjaxResult warehouse(PurchaseDto purchaseDto) { + if (purchaseDto.getId() != null) { + String[] split = purchaseDto.getId().split(","); + List taskIdList = new ArrayList<>(); + for (int i = 0; i < split.length; i++) { + taskIdList.add(Integer.parseInt(split[i])); + } + System.out.println(taskIdList); + purchaseDto.setTaskIds(taskIdList); + int result = 0; + try { + //根据任务id查询详情表 + for (Integer taskId : taskIdList) { + purchaseDto.setId(String.valueOf(taskId)); + List details = mapper.getDetails(purchaseDto); + //根据查询的采购数量,更新验收数量 + for (PurchaseAcceptVo purchaseVo : details) { + result += mapper.updateNum(purchaseVo.getPurchaseId(), purchaseVo.getBindNum()); + result += bpmPurchaseInfoMapper.updateStatusById(Constants.PURCHASE_PASSED, Integer.parseInt(purchaseVo.getPurchaseId())); + if ("0".equals(purchaseVo.getManageType())) { + result += bpmPurchaseStorageMapper.insertmaMachine(purchaseVo); + } else if ("1".equals(purchaseVo.getManageType())) { + result += bpmPurchaseStorageMapper.updateStorageNum(purchaseVo.getBindNum(), purchaseVo.getTypeId()); + } + } + // 提取 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_INVENTORY)) { + //如果详情状态包含待绑定,则外部任务状态为待绑定 + result += bpmTaskMapper.updateStatusById(Constants.PENDING_INVENTORY, id); + } else if (!statusList1.contains(Constants.PENDING_INVENTORY) && statusList1.contains(Constants.PURCHASE_PASSED)) { + result += bpmTaskMapper.updateStatusById(Constants.PURCHASE_PASSED, id); + } + } + } + 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_PASSED); + int result = 0; + try { + //根据采购单id查询详情id + for (int i = 0; i < split.length; i++) { + purchaseDto.setPurchaseId(split[i]); + List details = mapper.getDetails(purchaseDto); + if (CollectionUtils.isNotEmpty(details)) { + result += bpmPurchaseInfoMapper.updateStatusById(Constants.PURCHASE_PASSED, Integer.parseInt(details.get(0).getPurchaseId())); + if ("0".equals(details.get(0).getManageType())) { + result += bpmPurchaseStorageMapper.insertmaMachine(details.get(0)); + } else if ("1".equals(details.get(0).getManageType())) { + result += bpmPurchaseStorageMapper.updateStorageNum(details.get(0).getBindNum(), details.get(0).getTypeId()); + } + } + result = mapper.updateNum(details.get(0).getPurchaseId(), details.get(0).getBindNum()); + } + //根据详情id查询详情状态,更新任务表状态 + List statusList = mapper.select(Arrays.asList(split)); + // 使用流 API 按 id 分组,并提取 status + Map> groupedByIdStatus = statusList.stream() + .collect(Collectors.groupingBy( + PurchaseAcceptVo::getId, + Collectors.mapping(PurchaseAcceptVo::getStatus, Collectors.toList()) + )); + result = getResult(result, groupedByIdStatus); + if (result > 0) { + return AjaxResult.success("批量入库成功"); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } + return AjaxResult.error("操作失败"); } - @Override - public MaType selectByTypeId(Integer typeId) { - return bpmPurchaseStorageMapper.selectByTypeId(typeId); - } - - @Override - public int updateStorageNum(Integer inputNum, Integer typeId) { - return bpmPurchaseStorageMapper.updateStorageNum(inputNum,typeId); - } - - @Override - public int setStatus(Integer id) { - return bpmPurchaseStorageMapper.setStatus(id); - } - - @Override - public int insertMaMachine(PurchaseStorageDto purchaseStorageDto1) { - MaMachine maMachine = new MaMachine(); - maMachine.setTypeId(purchaseStorageDto1.getTypeId()); - maMachine.setStatus(String.valueOf(61)); - maMachine.setPurchaseId(String.valueOf(purchaseStorageDto1.getId())); - return bpmPurchaseStorageMapper.insertmaMachine(maMachine); + private int getResult(int result, Map> groupedByIdStatus) { + for (Map.Entry> entry : groupedByIdStatus.entrySet()) { + Integer id = entry.getKey(); + List statusList1 = entry.getValue(); + if (statusList1.contains(Constants.PENDING_INVENTORY)) { + //如果详情状态包含待绑定,则外部任务状态为待绑定 + result += bpmTaskMapper.updateStatusById(Constants.PENDING_INVENTORY, id); + } else if (!statusList1.contains(Constants.PENDING_INVENTORY) && statusList1.contains(Constants.PURCHASE_PASSED)) { + result += bpmTaskMapper.updateStatusById(Constants.PURCHASE_PASSED, id); + } + } + return result; } 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 8e58bcc..637667c 100644 --- a/bonus-modules/bonus-task/src/main/resources/mapper/BpmPurchaseAcceptMapper.xml +++ b/bonus-modules/bonus-task/src/main/resources/mapper/BpmPurchaseAcceptMapper.xml @@ -10,6 +10,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE bp.id = #{id} + + UPDATE bpm_purchase_info bp + SET bp.input_num = #{purchaseNum} + WHERE + bp.id = #{id} +