diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/service/impl/BackReceiveServiceImpl.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/service/impl/BackReceiveServiceImpl.java index fe735cc..94eb252 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/service/impl/BackReceiveServiceImpl.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/service/impl/BackReceiveServiceImpl.java @@ -521,6 +521,8 @@ public class BackReceiveServiceImpl implements BackReceiveService { } List backApplyInfoList = receiveView(record); if (!CollectionUtils.isEmpty(backApplyInfoList) && !CollectionUtils.isEmpty(useTypeTree)) { + // 将最大退料数量为0或者最大退料数量小于实际退料数量则移除 + backApplyInfoList.removeIf(info -> info.getMaxBackNum() == 0); for (TypeTreeNode typeTreeNode : useTypeTree) { for (BackApplyInfo applyInfo : backApplyInfoList) { if (String.valueOf(typeTreeNode.getTypeId()).equals(applyInfo.getModelId())) { diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/BackApplyController.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/BackApplyController.java index 0c6621c..1127443 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/BackApplyController.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/BackApplyController.java @@ -251,6 +251,17 @@ public class BackApplyController extends BaseController { return AjaxResult.success("退料任务创建成功"); } + /** + * 修改退料申请 + * @param bean + * @return + */ + @Log(title = "修改退料申请", businessType = BusinessType.UPDATE) + @PostMapping("/updateBackApply") + public AjaxResult updateBackApply(@RequestBody BackApplyInfo bean) { + return backApplyService.updateBackApply(bean); + } + @ApiOperation(value = "退料无需审批接口,如需审批请勿使用") @Log(title = "退料申请提交--by重庆", businessType = BusinessType.INSERT) @PostMapping("/submitBackApplyByCq") diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/BackApplyMapper.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/BackApplyMapper.java index 8aa20d6..5bf5337 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/BackApplyMapper.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/BackApplyMapper.java @@ -152,4 +152,46 @@ public interface BackApplyMapper { List getTaskIdByIdAll(BackApplyDto dto); void updateTmTaskAll(BackApplyDto dto); + + /** + * 修改退料申请 + * @param backApplyInfo + * @return + */ + int updateBackApply(BackApplyInfo backApplyInfo); + + /** + * 查询明细 + * @param bean + * @return + */ + List selectDetailsById(BackApplyInfo bean); + + /** + * 查询退料明细 + * @param backApplyDetail + * @return + */ + List selectBackDetailsById(BackApplyInfo backApplyDetail); + + /** + * 修改退料明细 + * @param backApplyDetail + * @return + */ + int update(BackApplyInfo backApplyDetail); + + /** + * 删除退料明细 + * @param backApplyDetail + * @return + */ + int delBackDetailsById(BackApplyInfo backApplyDetail); + + /** + * 查询退料审核明细 + * @param backApplyDetail + * @return + */ + BackApplyInfo selectCheckDetailsById(BackApplyInfo backApplyDetail); } diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/BackApplyService.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/BackApplyService.java index c588e19..b1e622f 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/BackApplyService.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/BackApplyService.java @@ -124,4 +124,11 @@ public interface BackApplyService { * @return */ AjaxResult auditAll(BackApplyDto dto); + + /** + * 修改退料申请 + * @param bean + * @return + */ + AjaxResult updateBackApply(BackApplyInfo bean); } diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/BackApplyServiceImpl.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/BackApplyServiceImpl.java index e031b3f..5254f88 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/BackApplyServiceImpl.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/BackApplyServiceImpl.java @@ -17,6 +17,7 @@ import com.bonus.sgzb.material.vo.TypeTreeBuild; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.text.SimpleDateFormat; import java.util.*; @@ -407,10 +408,23 @@ public class BackApplyServiceImpl implements BackApplyService { List listL4 = new ArrayList<>(); List listL3 = new ArrayList<>(); List listL21 = new ArrayList<>(); + List infoList = new ArrayList<>(); try { + /*// 根据id去back_check_details查询是否存在已经申请退料,存在则去除 + if (bean.getId() != null) { + infoList = backApplyMapper.selectDetailsById(bean); + }*/ // 先查第四层类型 listL4 = backApplyMapper.getUseTypeTreeL4(bean); if (CollectionUtils.isNotEmpty(listL4)) { + /*if (CollectionUtils.isNotEmpty(infoList)) { + // 将infoList中所有的typeId提取到一个Set中 + Set infoTypeIds = infoList.stream() + .map(info -> Long.parseLong(info.getTypeId())) + .collect(Collectors.toSet()); + // 从listL4中移除那些typeId在infoTypeIds中的元素 + listL4.removeIf(o -> infoTypeIds.contains(o.getTypeId())); + }*/ List list4ParentIds = listL4.stream().map(o -> o.getParentId()).collect(Collectors.toList()); // 根据第四层parentId 查第三层类型 listL3 = backApplyMapper.getUseTypeTreeL3(list4ParentIds); @@ -540,6 +554,83 @@ public class BackApplyServiceImpl implements BackApplyService { } } + /** + * 修改退料申请 + * @param bean + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult updateBackApply(BackApplyInfo bean) { + if (bean == null || bean.getBackApplyInfo() == null || CollectionUtils.isEmpty(bean.getBackApplyDetails())) { + return AjaxResult.error("退料申请数据不能为空"); + } + BackApplyInfo backApplyInfo = bean.getBackApplyInfo(); + List backApplyDetails = bean.getBackApplyDetails(); + for (BackApplyInfo backApplyDetail : backApplyDetails) { + backApplyDetail.setId(backApplyInfo.getId()); + // 先去back_check_details查询该条数据退料情况 + BackApplyInfo info = backApplyMapper.selectCheckDetailsById(backApplyDetail); + if (info != null && info.getNum() > backApplyDetail.getNum()) { + return AjaxResult.error(backApplyDetail.getTypeName() + "的退料数量不能小于已退料数量,情修改后重新提交"); + } + } + try { + int result = 0; + List infoList = new ArrayList<>(); + List checkList = new ArrayList<>(); + if (backApplyInfo.getId() != null) { + infoList = backApplyMapper.selectBackDetailsById(backApplyInfo); + checkList = backApplyMapper.selectDetailsById(bean); + if (CollectionUtils.isNotEmpty(checkList)) { + // 将checkList中所有的typeId提取到一个Set中 + Set infoTypeIds = checkList.stream() + .map(BackApplyInfo::getTypeId) + .collect(Collectors.toSet()); + // 从infoList中移除那些typeId在infoTypeIds中的元素 + infoList.removeIf(o -> infoTypeIds.contains(o.getTypeId())); + } + backApplyInfo.setUpdateBy(SecurityUtils.getUsername()); + result = backApplyMapper.updateBackApply(backApplyInfo); + if (result == 0) { + return AjaxResult.error("退料申请修改失败"); + } + } + List typeIdList = backApplyDetails.stream().map(BackApplyInfo::getTypeId).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(infoList)) { + for (BackApplyInfo backApplyDetail : infoList) { + if (!typeIdList.contains(backApplyDetail.getTypeId())) { + // 进行删除操作 + result = backApplyMapper.delBackDetailsById(backApplyDetail); + if (result == 0) { + return AjaxResult.error("退料申请删除失败"); + } + } + } + } + for (BackApplyInfo backApplyDetail : backApplyDetails) { + backApplyDetail.setId(backApplyInfo.getId()); + // 先根据id和typeId查询,数据是否存在,存在则更新,不存在则新增 + List list = backApplyMapper.selectBackDetailsById(backApplyDetail); + if (CollectionUtils.isNotEmpty(list)) { + backApplyDetail.setUpdateBy(SecurityUtils.getUsername()); + backApplyDetail.setAuditNum(backApplyDetail.getNum()); + result = backApplyMapper.update(backApplyDetail); + } else { + backApplyDetail.setCreateBy(SecurityUtils.getUsername()); + backApplyDetail.setAuditNum(backApplyDetail.getNum()); + result = backApplyMapper.upload(backApplyDetail); + } + if (result == 0) { + return AjaxResult.error("退料申请修改失败"); + } + } + return AjaxResult.success("退料申请修改成功"); + } catch (Exception e) { + throw new RuntimeException("退料申请修改失败"); + } + } + private int auditAllDetails(BackApplyDto dto) { int re = 0; if (CollUtil.isNotEmpty(dto.getBackApplyList())) { diff --git a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/BackApplyMapper.xml b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/BackApplyMapper.xml index 4cc4b50..721eb6b 100644 --- a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/BackApplyMapper.xml +++ b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/BackApplyMapper.xml @@ -362,6 +362,49 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bai.id = #{id} + + UPDATE back_apply_info + SET + + back_person = #{backPerson}, + + + phone = #{phone}, + + + remark = #{remark}, + + + back_time = #{backTime}, + + + update_by = #{updateBy}, + + update_time = NOW() + WHERE + id = #{id} + + + + UPDATE back_apply_details + SET + + pre_num = #{num}, + + + audit_num = #{auditNum}, + + + remark = #{remark}, + + + update_by = #{updateBy}, + + update_time = NOW() + WHERE + parent_id = #{id} and type_id = #{typeId} + + DELETE FROM tm_task_agreement @@ -404,6 +447,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + DELETE + FROM back_apply_details + WHERE parent_id = #{parentId} and type_id = #{typeId} + + + + + + + + \ No newline at end of file