diff --git a/src/main/java/com/bonus/aqgqj/business/backstage/controller/PurchaseController.java b/src/main/java/com/bonus/aqgqj/business/backstage/controller/PurchaseController.java index ab800f4..2c9ec30 100644 --- a/src/main/java/com/bonus/aqgqj/business/backstage/controller/PurchaseController.java +++ b/src/main/java/com/bonus/aqgqj/business/backstage/controller/PurchaseController.java @@ -207,6 +207,17 @@ public class PurchaseController { return service.updatePurchaseData(request, files); } + /** + * 补发货接口 + * + * @param + * @return + */ + @PostMapping("addPurchaseDataBySupplement") + public ServerResponse addPurchaseDataBySupplement(HttpServletRequest request, @RequestParam(value = "file[]", required = false) MultipartFile[] files) { + return service.addPurchaseDataBySupplement(request, files); + } + /** * 发货修改数据接口---暂存 * @param @@ -248,6 +259,33 @@ public class PurchaseController { return ServerResponse.createSuccess(list); } + /** + * 发货详情查看---分批次 + * + * @param dto + * @return + */ + @PostMapping("getPurchaseDetailsListBatch") + @DecryptAndVerify(decryptedClass = OutPlanVo.class) + public ServerResponse getPurchaseDetailsListBatch(EncryptedReq dto) { + List list = service.getPurchaseDetailsListBatch(dto.getData()); + return ServerResponse.createSuccess(list); + } + + /** + * 采购详情查看---补发货专用 + * + * @param dto + * @return + */ + @PostMapping("getPurchaseDetailsListBySupplement") + @DecryptAndVerify(decryptedClass = OutPlanVo.class) + public ServerResponse getPurchaseDetailsListBySupplement(EncryptedReq dto) { + List list = service.getPurchaseDetailsListBySupplement(dto.getData()); + return ServerResponse.createSuccess(list); + } + + /** * 二维码详情查看 diff --git a/src/main/java/com/bonus/aqgqj/business/backstage/entity/OutPlanVoDetails.java b/src/main/java/com/bonus/aqgqj/business/backstage/entity/OutPlanVoDetails.java index f6296a9..831303f 100644 --- a/src/main/java/com/bonus/aqgqj/business/backstage/entity/OutPlanVoDetails.java +++ b/src/main/java/com/bonus/aqgqj/business/backstage/entity/OutPlanVoDetails.java @@ -88,6 +88,17 @@ public class OutPlanVoDetails { */ private int hisNum; + private String num; + + /** + * 批次详情 + */ + private List batchList; + + private String createTime; + + private String supName; + diff --git a/src/main/java/com/bonus/aqgqj/business/backstage/entity/OutPlanVoSupInfo.java b/src/main/java/com/bonus/aqgqj/business/backstage/entity/OutPlanVoSupInfo.java index aa424bc..520c45e 100644 --- a/src/main/java/com/bonus/aqgqj/business/backstage/entity/OutPlanVoSupInfo.java +++ b/src/main/java/com/bonus/aqgqj/business/backstage/entity/OutPlanVoSupInfo.java @@ -95,6 +95,8 @@ public class OutPlanVoSupInfo { private int historyLkNum; + private String createTime; + } diff --git a/src/main/java/com/bonus/aqgqj/business/backstage/mapper/PurchaseMapper.java b/src/main/java/com/bonus/aqgqj/business/backstage/mapper/PurchaseMapper.java index b6abd75..f116148 100644 --- a/src/main/java/com/bonus/aqgqj/business/backstage/mapper/PurchaseMapper.java +++ b/src/main/java/com/bonus/aqgqj/business/backstage/mapper/PurchaseMapper.java @@ -175,4 +175,67 @@ public interface PurchaseMapper { int deleteDetail(Long id); int updateDetail(Long id); + + /** + * 获取补充数据 + * @param data + * @return + */ + List getPurchaseDetailsListBySupplement(OutPlanVo data); + + /** + * 添加补充数据 + * @param outSup + * @return + */ + int insertStPlanOutSupData(OutPlanVoSupInfo outSup); + + /** + * 获取补充数据 + * @param details + * @return + */ + OutPlanVoSupInfo getStPlanOutSupData(OutPlanVoDetails details); + + /** + * 修改补充数据 + * @param bean + * @return + */ + int updateStPlanOutDetailsData(OutPlanVoSupInfo bean); + + /** + * 获取补充数据 + * @param outPlanVo + * @return + */ + OutPlanVoDetails getStPlanOutDetailsData(OutPlanVo outPlanVo); + + /** + * 修改补充数据 + * @param outPlanVoDetails + * @return + */ + int updateStPlanOutData(OutPlanVoDetails outPlanVoDetails); + + /** + * 获取补充数据 + * @param outPlanVoDetails + * @return + */ + int updateStPlanApplyData(OutPlanVoDetails outPlanVoDetails); + + /** + * 获取补充数据 + * @param data + * @return + */ + List getPurchaseDetailsListBatch(OutPlanVo data); + + /** + * 获取补充数据 + * @param details + * @return + */ + List getPurchaseDetailsListByBatch(OutPlanVoDetails details); } diff --git a/src/main/java/com/bonus/aqgqj/business/backstage/service/PurchaseService.java b/src/main/java/com/bonus/aqgqj/business/backstage/service/PurchaseService.java index 71519ef..2524059 100644 --- a/src/main/java/com/bonus/aqgqj/business/backstage/service/PurchaseService.java +++ b/src/main/java/com/bonus/aqgqj/business/backstage/service/PurchaseService.java @@ -74,6 +74,13 @@ public interface PurchaseService { */ List getPurchaseDetailsList(OutPlanVo data); + /** + * 采购详情列表清单 + * @param data + * @return + */ + List getPurchaseDetailsListBySupplement(OutPlanVo data); + /** * 查询二维码导出 * @param data @@ -108,4 +115,19 @@ public interface PurchaseService { * @return */ ServerResponse updatePurchaseDataTemporary(HttpServletRequest request, MultipartFile[] files); + + /** + * 新增补发货数据 + * @param request + * @param files + * @return + */ + ServerResponse addPurchaseDataBySupplement(HttpServletRequest request, MultipartFile[] files); + + /** + * 批量查询采购详情列表清单 + * @param data + * @return + */ + List getPurchaseDetailsListBatch(OutPlanVo data); } diff --git a/src/main/java/com/bonus/aqgqj/business/backstage/service/PurchaseServiceImpl.java b/src/main/java/com/bonus/aqgqj/business/backstage/service/PurchaseServiceImpl.java index 8d730f3..8bf60a2 100644 --- a/src/main/java/com/bonus/aqgqj/business/backstage/service/PurchaseServiceImpl.java +++ b/src/main/java/com/bonus/aqgqj/business/backstage/service/PurchaseServiceImpl.java @@ -600,14 +600,14 @@ public class PurchaseServiceImpl implements PurchaseService { if (StringUtils.isEmpty(detailsList)) { return ServerResponse.createErroe("厂商数据不能为空"); } - boolean hasDuplicates = supInfoList.stream() - .collect(Collectors.groupingBy(OutPlanVoSupInfo::getSupId)) - .entrySet() - .stream() - .anyMatch(e -> e.getValue().size() > 1); - if (hasDuplicates) { - return ServerResponse.createErroe("同一型号厂商不能一致"); - } +// boolean hasDuplicates = supInfoList.stream() +// .collect(Collectors.groupingBy(OutPlanVoSupInfo::getSupId)) +// .entrySet() +// .stream() +// .anyMatch(e -> e.getValue().size() > 1); +// if (hasDuplicates) { +// return ServerResponse.createErroe("同一型号厂商不能一致"); +// } details.setProId(outPlanVo.getProId()); details.setPlanId(details.getPlanId()); int ckNum = 0; @@ -751,6 +751,153 @@ public class PurchaseServiceImpl implements PurchaseService { return ServerResponse.createErroe("修改失败"); } + @Override + @Transactional(rollbackFor = Exception.class) + public ServerResponse addPurchaseDataBySupplement(HttpServletRequest request, MultipartFile[] files) { + try { + String params = request.getParameter("params"); + if (StringHelper.isEmpty(params)) { + return ServerResponse.createErroe("请求参数缺失"); + } + OutPlanVo outPlanVo = JSON.parseObject(params, OutPlanVo.class); + List detailsList = outPlanVo.getDetailsList(); + SupplierVo supp = new SupplierVo(); + for (OutPlanVoDetails details : detailsList) { + List supInfoList = details.getSupList(); + if (StringUtils.isEmpty(detailsList)) { + return ServerResponse.createErroe("厂商数据不能为空"); + } + // 采购和利库都是0的数量就不处理 + if (supInfoList.get(0).getCgNum() == 0 && supInfoList.get(0).getLkNum() == 0) { + continue; + } + + boolean hasDuplicates = supInfoList.stream() + .collect(Collectors.groupingBy(OutPlanVoSupInfo::getSupId)) + .entrySet() + .stream() + .anyMatch(e -> e.getValue().size() > 1); + if (hasDuplicates) { + return ServerResponse.createErroe("同一型号厂商不能一致"); + } + details.setProId(outPlanVo.getProId()); + details.setPlanId(details.getPlanId()); + int ckNum = 0; + int lkNum = 0; + //三级 + int applyNum = mapper.getJsData(outPlanVo.getPlanId()); + if (applyNum > 0) { + return ServerResponse.createErroe("该单子已被结算、不允许再次发货"); + } + for (OutPlanVoSupInfo supInfo : supInfoList) { + ckNum += supInfo.getCgNum(); + lkNum += supInfo.getLkNum(); + supInfo.setPlanId(outPlanVo.getPlanId()); + supInfo.setProId(outPlanVo.getProId()); + supInfo.setModelId(details.getModelId()); + //shu数据校验 + supp.setContractId(supInfo.getContractId()); + supp.setModelId(details.getModelId()); + supp.setSupId(supInfo.getSupId()); + //验证数据 + int num = supplierMapper.supCheck(supp); + // 只有采购才需要选择供应商 + if (num < 1 && supInfo.getCgNum() > 0) { + return ServerResponse.createErroe(supInfo.getSupName() + "-厂家合同内无此-" + details.getModel() + "-型号设备"); + } + } + //数据校验 + MaTypeVo maTypeVo = new MaTypeVo(); + maTypeVo.setModelId(details.getModelId()); + int num = maTypeMapper.maTypeCheck(maTypeVo); + if (lkNum > num) { + return ServerResponse.createErroe(details.getModel() + "-型号设备的利库量大于库存量,库存不足!"); + } + details.setCgNum(Integer.toString(ckNum)); + details.setLkNum(Integer.toString(lkNum)); + } + String createTime = DateTimeHelper.getNowTime(); + for (OutPlanVoDetails details : detailsList) { + String detailId=details.getId(); + List supInfoList = details.getSupList(); + for (OutPlanVoSupInfo outSup : supInfoList) { + if (outSup.getCgNum() <= 0) { + outSup.setContractId("10086"); + outSup.setSupId("10086"); + outSup.setSupName("库存发出"); + } + //新增st_plan_out_sup数据 + outSup.setOutId(outPlanVo.getId()); + outSup.setProId(outPlanVo.getProId()); + outSup.setDetailsId(detailId); + outSup.setCreateTime(createTime); + int succ = mapper.insertStPlanOutSupData(outSup); + if (succ < 1) { + throw new Exception("添加数据失败"); + } + } + //先查询st_plan_out_sup的数据 + //修改st_plan_out_details数据 + OutPlanVoSupInfo outSup = mapper.getStPlanOutSupData(details); + if (outSup != null && outSup.getId() != null){ + OutPlanVoSupInfo bean = new OutPlanVoSupInfo(); + bean.setId(detailId); + bean.setCgNum(outSup.getCgNum()); + bean.setLkNum(outSup.getLkNum()); + int re = mapper.updateStPlanOutDetailsData(bean); + if (re < 1) { + throw new Exception("修改数据失败"); + } + } + } + //先查询st_plan_out_details的数据 + //修改st_plan_out数据 + OutPlanVoDetails outPlanVoDetails = mapper.getStPlanOutDetailsData(outPlanVo); + if (outPlanVoDetails != null && outPlanVoDetails.getId() != null){ + int re = mapper.updateStPlanOutData(outPlanVoDetails); + if (re < 1) { + throw new Exception("修改数据失败"); + } + //更新st_plan_apply + int res = mapper.updateStPlanApplyData(outPlanVoDetails); + } + + return ServerResponse.createSuccess("发货成功", outPlanVo); + } catch (Exception e) { + log.error(e.toString(), e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return ServerResponse.createErroe("发货失败"); + } + + @Override + public List getPurchaseDetailsListBatch(OutPlanVo data) { + List list = new ArrayList<>(); + try { + //先查询批次 +// list = mapper.getPurchaseDetailsListBatch(data); +// if (list.size()>0){ +// for (OutPlanVoDetails details : list) { +// //根据批次查询对应数据 +// List detailsList = mapper.getPurchaseDetailsListByBatch(details); +// details.setBatchList(detailsList); +// } +// } else { + //分批发货前的数据 + OutPlanVo outPlanVo = mapper.getPurchaseDetails(data); + OutPlanVoDetails details = new OutPlanVoDetails(); + details.setOutId(outPlanVo.getId()); + List detailsList = mapper.getPurchaseDetailsListByBatch(details); + details.setBatchList(detailsList); + list.add(details); +// } + return list; + } catch (Exception e) { + log.error(e.toString(), e); + return new ArrayList<>(); + } + } + @Override public AjaxResult deleteDetail(Long id) { try { @@ -1150,6 +1297,30 @@ public class PurchaseServiceImpl implements PurchaseService { return list; } + @Override + public List getPurchaseDetailsListBySupplement(OutPlanVo data) { + List list = new ArrayList<>(); + try { + OutPlanVo outPlanVo = mapper.getPurchaseDetails(data); + OutPlanVo param = new OutPlanVo(); + param.setId(outPlanVo.getId()); + list = mapper.getPurchaseDetailsListBySupplement(param); + if (StringUtils.isNotEmpty(list)) { + list.forEach(vo -> { + List outPlanVoSupInfoList = mapper.getPurchaseSupDetailsList(vo); + if (outPlanVoSupInfoList.size()>0){ + List supList = new ArrayList<>(); + supList.add(outPlanVoSupInfoList.get(0)); + vo.setSupList(supList); + } + }); + } + } catch (Exception e) { + log.error(e.toString(), e); + } + return list; + } + /** * 查询二维码集合数据 * diff --git a/src/main/resources/mappers/business/backstage/PurchaseMapper.xml b/src/main/resources/mappers/business/backstage/PurchaseMapper.xml index 88f78fe..50d1b46 100644 --- a/src/main/resources/mappers/business/backstage/PurchaseMapper.xml +++ b/src/main/resources/mappers/business/backstage/PurchaseMapper.xml @@ -54,6 +54,12 @@ #{item.modelId},#{item.cgNum},#{item.lkNum},#{item.supName},#{item.ccDay},#{item.jyDay},#{item.remark}) + + insert into st_plan_out_sup(contract_id, out_id, pro_id, details_id, + sup_id, model_id, cg_num, lk_num, sup_name, cc_day, jy_day, remark,create_time) + values (#{contractId}, #{outId}, #{proId}, #{detailsId}, #{supId}, + #{modelId}, #{cgNum}, #{lkNum}, #{supName}, #{ccDay}, #{jyDay}, #{remark},#{createTime}) + update st_plan_out_sup set contract_id=#{contractId},sup_id=#{supId}, @@ -87,6 +93,20 @@ where id = #{id} + + update st_plan_out_details + set cg_num= #{cgNum}, + lk_num= #{lkNum} + where id = #{id} + + + update st_plan_out set cg_num=#{cgNum},lk_num= #{lkNum} where id = #{id} + + + update st_plan_apply + set cg_num=#{cgNum},lk_num= #{lkNum} where id = #{planId} + + + + + + +