diff --git a/src/main/java/com/glxp/api/controller/basic/UdiRelevanceController.java b/src/main/java/com/glxp/api/controller/basic/UdiRelevanceController.java index b2a8e50e8..321faf07a 100644 --- a/src/main/java/com/glxp/api/controller/basic/UdiRelevanceController.java +++ b/src/main/java/com/glxp/api/controller/basic/UdiRelevanceController.java @@ -2,6 +2,7 @@ package com.glxp.api.controller.basic; import com.glxp.api.dao.basic.UdiRelevanceDao; import com.glxp.api.service.inout.impl.IoCodeService; +import com.glxp.api.service.inv.impl.InvProductService; import org.springframework.beans.BeanUtils; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; @@ -29,7 +30,6 @@ import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.basic.*; import com.glxp.api.service.inv.InvPreProductService; -import com.glxp.api.service.inv.InvProductService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.service.thrsys.ThrDataService; import com.glxp.api.service.thrsys.ThrSystemService; diff --git a/src/main/java/com/glxp/api/controller/basic/UdiRlSupController.java b/src/main/java/com/glxp/api/controller/basic/UdiRlSupController.java index a55ec2042..9585a9f77 100644 --- a/src/main/java/com/glxp/api/controller/basic/UdiRlSupController.java +++ b/src/main/java/com/glxp/api/controller/basic/UdiRlSupController.java @@ -27,7 +27,7 @@ import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.res.basic.UdiRlSupResponse; import com.glxp.api.service.auth.AuthAdminService; import com.glxp.api.service.basic.*; -import com.glxp.api.service.purchase.PurApplyDetailService; +import com.glxp.api.service.purchase.impl.PurApplyDetailService; import com.glxp.api.service.system.CompanyService; import com.glxp.api.util.BeanCopyUtils; import com.glxp.api.util.SupplementVailUtil; @@ -177,6 +177,57 @@ public class UdiRlSupController extends BaseController { return ResultVOUtils.success(pageSimpleResponse); } + + @AuthRuleAnnotation("") + @GetMapping("/company/product/plan/rationSet/filter") + public BaseResponse rationSetAdd(CompanyProductRelevanceRequest companyProductRelevanceRequest, + BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + if (StrUtil.isNotEmpty(companyProductRelevanceRequest.getCustomerId())) { + String customerId = getCustomerId(); + if (customerId.equals("110")) { + companyProductRelevanceRequest.setCustomerId(null); + } + } + + companyProductRelevanceRequest.setIsDisable(false); + if (StrUtil.isNotEmpty(companyProductRelevanceRequest.getUdiCode())) { + UdiEntity udiEntity = FilterUdiUtils.getUdi(companyProductRelevanceRequest.getUdiCode()); + if (udiEntity != null) { + companyProductRelevanceRequest.setNameCode(udiEntity.getUdi()); + companyProductRelevanceRequest.setUnionCode(udiEntity.getUdi()); + } + } + //如果输入DI标识,精确找到不同层级对应的产品信息 + if (StrUtil.isNotEmpty(companyProductRelevanceRequest.getUnionCode())) { + FilterUdiRelRequest filterUdiInfoRequest = new FilterUdiRelRequest(); + filterUdiInfoRequest.setNameCode(companyProductRelevanceRequest.getUnionCode()); + List temps = udiRelevanceService.filterUdiGp(filterUdiInfoRequest); + if (temps != null && temps.size() > 0) { + companyProductRelevanceRequest.setOriginUuid(temps.get(0).getOriginUuid()); + companyProductRelevanceRequest.setNameCode(filterUdiInfoRequest.getNameCode()); + companyProductRelevanceRequest.setUnionCode(null); + } + } else { + //只查找主标识产品信息 + companyProductRelevanceRequest.setDiType(1); + } + + List udiRelevanceResponses = null; + FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); + BeanCopyUtils.copy(companyProductRelevanceRequest, filterUdiRelRequest); + udiRelevanceResponses = udiRelevanceService.filterUdiJoinSup(filterUdiRelRequest); + PageInfo pageInfo; + pageInfo = new PageInfo<>(udiRelevanceResponses); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setList(udiRelevanceResponses); + + return ResultVOUtils.success(pageSimpleResponse); + } + @AuthRuleAnnotation("") @GetMapping("/sale/info/company/product/corp/filter") public BaseResponse filterRlCorp(FilterCompanyProductRelevanceRequest filterCompanyProductRelevanceRequest, @@ -319,7 +370,7 @@ public class UdiRlSupController extends BaseController { basicDataRequest.setDeleteCompanyFileRequest(deleteCompanyFileRequest); basicDataRequest.setKey(SyncDelType.BASIC_MANAGE); Long userId = getUserId(); - spGetHttpClient.deleteBasicData(basicDataRequest,userId+""); + spGetHttpClient.deleteBasicData(basicDataRequest, userId + ""); return ResultVOUtils.success("成功"); } diff --git a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java index 2c1df7be4..bf6c073d3 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -762,7 +762,7 @@ public class IoCodeTempController extends BaseController { return invRes; } } - + codeEnttity.setPrice(udiRelevanceResponse.getPrice()); //是否边扫边校验 if (bussinessTypeEntity.getCheckWebNew() == 1 && bussinessTypeEntity.isCheckEnable()) { String errMsg = ioCheckInoutService.checkCode(codeEnttity); @@ -777,7 +777,7 @@ public class IoCodeTempController extends BaseController { } else codeTempService.insert(codeEnttity); } else { - checkPrice(codeEnttity, bussinessTypeEntity, inBatch); + checkPrice(codeEnttity, bussinessTypeEntity, inBatch, codeEnttitys); codeTempService.insert(codeEnttity); } } @@ -788,7 +788,7 @@ public class IoCodeTempController extends BaseController { return ResultVOUtils.success(addCodeResult); } - public void checkPrice(IoCodeTempEntity codeTempEntity, BasicBussinessTypeEntity bussinessTypeEntity, String inBatch) { + public void checkPrice(IoCodeTempEntity codeTempEntity, BasicBussinessTypeEntity bussinessTypeEntity, String inBatch, List codeTempEntities) { // 校验价格 String priceFifo = systemParamConfigService.selectValueByParamKey("price_fifo"); if (IntUtil.value(priceFifo) > 0) { @@ -796,10 +796,44 @@ public class IoCodeTempController extends BaseController { if (bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_PUT)) { codeTempEntity.setInBatchNo(inBatch); } else { + + List filteredAndSorted = codeTempEntities.stream() + .filter(person -> IntUtil.value(person.getRelId()) == IntUtil.value(codeTempEntity.getRelId()) + && StrUtil.trimToEmpty(person.getBatchNo()).equals(StrUtil.trimToEmpty(codeTempEntity.getBatchNo())) + ) + .sorted(Comparator.comparing(IoCodeTempEntity::getInBatchNo)) + .collect(Collectors.toList()); + + Map> stringListMap = null; + if (CollUtil.isNotEmpty(filteredAndSorted)) { + stringListMap = filteredAndSorted.stream() + .collect(Collectors.groupingBy(person -> StrUtil.trimToEmpty(person.getInBatchNo())) + ); + } + List lastList = null; + if (stringListMap != null) { + lastList = stringListMap.entrySet().stream().findFirst().get().getValue(); + } + + int exitCount = 0; + int extiReCount = 0; + if (CollUtil.isNotEmpty(lastList)) { + for (IoCodeTempEntity ioCodeTempEntity : lastList) { + exitCount = exitCount + ioCodeTempEntity.getCount(); + extiReCount = extiReCount + ioCodeTempEntity.getReCount(); + } + } //出库时填写价格与入库批次 //1.获取出库最新批次 - InvProductDetailEntity invProductDetailEntity = invProductDetailService.selectLastInBatch(bussinessTypeEntity, codeTempEntity.getRelId() + "", codeTempEntity.getBatchNo(), codeTempEntity.getInvCode(), codeTempEntity.getMainAction()); - if (invProductDetailEntity == null) { + String lastInBatch = null; + if (exitCount > 0) { + lastInBatch = lastList.get(0).getInBatchNo(); + } else { + InvProductDetailEntity invProductDetailEntity = invProductDetailService.selectLastInBatch(bussinessTypeEntity, codeTempEntity.getRelId() + "", codeTempEntity.getBatchNo(), codeTempEntity.getInvCode(), codeTempEntity.getMainAction()); + if (invProductDetailEntity != null) + lastInBatch = invProductDetailEntity.getInBatchNo(); + } + if (lastInBatch == null && exitCount == 0) { //首次出库,获取入库最早批次 InvProductDetailEntity inProductDetail = invProductDetailService.selectFirstInBatch(bussinessTypeEntity, codeTempEntity.getRelId() + "", codeTempEntity.getBatchNo(), codeTempEntity.getInvCode(), ConstantType.TYPE_PUT); if (inProductDetail != null) { @@ -809,16 +843,16 @@ public class IoCodeTempController extends BaseController { } else { //非首次出库 //1.获取当前批次已出库数量 - Integer outCount = invProductDetailService.selectCountByInBatch(bussinessTypeEntity, invProductDetailEntity.getInBatchNo(), ConstantType.TYPE_OUT); + Integer outCount = IntUtil.value(invProductDetailService.selectCountByInBatch(bussinessTypeEntity, lastInBatch, ConstantType.TYPE_OUT)); //2.获取当前批次入库数量 - Integer inCount = invProductDetailService.selectCountByInBatch(bussinessTypeEntity, invProductDetailEntity.getInBatchNo(), ConstantType.TYPE_PUT); + Integer inCount = IntUtil.value(invProductDetailService.selectCountByInBatch(bussinessTypeEntity, lastInBatch, ConstantType.TYPE_PUT)); //3.若数量还有剩,则此次出库为当前批次 - if (inCount > outCount) { - codeTempEntity.setPrice(invProductDetailEntity.getPrice()); - codeTempEntity.setInBatchNo(invProductDetailEntity.getInBatchNo()); + if (inCount >= (outCount + extiReCount + codeTempEntity.getReCount())) { + codeTempEntity.setPrice(lastList.get(0).getPrice()); + codeTempEntity.setInBatchNo(lastList.get(0).getInBatchNo()); } else { // 4.若数量不足,则出下一批次 - InvProductDetailEntity nextInvProduct = invProductDetailService.selectNextInBatch(bussinessTypeEntity, codeTempEntity.getRelId() + "", codeTempEntity.getBatchNo(), codeTempEntity.getInvCode(), codeTempEntity.getMainAction(), invProductDetailEntity.getInBatchNo()); + InvProductDetailEntity nextInvProduct = invProductDetailService.selectNextInBatch(bussinessTypeEntity, codeTempEntity.getRelId() + "", codeTempEntity.getBatchNo(), codeTempEntity.getInvCode(), ConstantType.TYPE_PUT, lastList.get(0).getInBatchNo()); if (nextInvProduct != null) { codeTempEntity.setPrice(nextInvProduct.getPrice()); codeTempEntity.setInBatchNo(nextInvProduct.getInBatchNo()); diff --git a/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java b/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java index b7e943f80..b81a02036 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java @@ -42,10 +42,12 @@ import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.basic.*; import com.glxp.api.service.inout.*; import com.glxp.api.service.inout.impl.IoOrderInvoiceService; -import com.glxp.api.service.purchase.PurOrderDetailService; +import com.glxp.api.service.inout.impl.ReceiveDetailService; +import com.glxp.api.service.inout.impl.ReceiveService; import com.glxp.api.service.purchase.PurOrderService; import com.glxp.api.service.purchase.SupCertService; import com.glxp.api.service.purchase.SupProductService; +import com.glxp.api.service.purchase.impl.PurOrderDetailService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.service.thrsys.ThrOrderDetailService; import com.glxp.api.service.thrsys.ThrOrderService; @@ -91,7 +93,7 @@ public class IoOrderDetailBizController extends BaseController { @Resource ReceiveService receiveService; @Resource - ReceivedetailService receivedetailService; + ReceiveDetailService receivedetailService; @Resource IBasicBusTypeChangeService basicBusTypeChangeService; @Resource @@ -233,7 +235,6 @@ public class IoOrderDetailBizController extends BaseController { } - //选入第三方单据至业务单据 @AuthRuleAnnotation("") @PostMapping("/udiwms/inout/order/addThrOrder") diff --git a/src/main/java/com/glxp/api/controller/inv/InnerOrderController.java b/src/main/java/com/glxp/api/controller/inv/InnerOrderController.java index 5365dbb49..290f9236c 100644 --- a/src/main/java/com/glxp/api/controller/inv/InnerOrderController.java +++ b/src/main/java/com/glxp/api/controller/inv/InnerOrderController.java @@ -142,8 +142,6 @@ public class InnerOrderController { innerOrderDetailService.deleteByOrderId(id + ""); } } - - return ResultVOUtils.success("删除成功"); } diff --git a/src/main/java/com/glxp/api/controller/inv/InvProductController.java b/src/main/java/com/glxp/api/controller/inv/InvProductController.java index f0fcfbd0a..82f9a2829 100644 --- a/src/main/java/com/glxp/api/controller/inv/InvProductController.java +++ b/src/main/java/com/glxp/api/controller/inv/InvProductController.java @@ -1,6 +1,7 @@ package com.glxp.api.controller.inv; import com.glxp.api.service.inv.impl.InvProductDetailService; +import com.glxp.api.service.inv.impl.InvProductService; import org.springframework.beans.BeanUtils; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; @@ -29,7 +30,6 @@ import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.auth.WarehouseUserService; import com.glxp.api.service.basic.IBasicBussinessTypeService; -import com.glxp.api.service.inv.InvProductService; import com.glxp.api.util.udi.FilterUdiUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.BindingResult; diff --git a/src/main/java/com/glxp/api/controller/inv/InvProductRationController.java b/src/main/java/com/glxp/api/controller/inv/InvProductRationController.java new file mode 100644 index 000000000..2af1337d6 --- /dev/null +++ b/src/main/java/com/glxp/api/controller/inv/InvProductRationController.java @@ -0,0 +1,148 @@ +package com.glxp.api.controller.inv; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.github.pagehelper.PageInfo; +import com.glxp.api.annotation.Log; +import com.glxp.api.annotation.RepeatSubmit; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.constant.BusinessType; +import com.glxp.api.controller.BaseController; +import com.glxp.api.entity.inv.InvProductRationEntity; +import com.glxp.api.req.inv.InvAddRationRequest; +import com.glxp.api.req.inv.InvProductRationRequest; +import com.glxp.api.req.system.DeleteRequest; +import com.glxp.api.res.inv.InvProductRationResponse; +import com.glxp.api.service.inv.InvProductRationService; +import com.glxp.api.service.inv.impl.InvProductService; +import com.glxp.api.util.IntUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.validation.constraints.NotEmpty; +import java.util.Date; +import java.util.List; + +@Slf4j +@RestController +public class InvProductRationController extends BaseController { + + + @Resource + private InvProductRationService invProductRationService; + @Resource + InvProductService invProductService; + + /** + * 查询定量管理设置 + * + * @param invProductRationRequest + * @return + */ + @GetMapping("/udiwms/inv/project/ration/filter") + @Log(title = "定量管理设置", businessType = BusinessType.INSERT) + public BaseResponse filterList(InvProductRationRequest invProductRationRequest) { + List list = invProductRationService.filterList(invProductRationRequest); + list.stream().forEach(item -> + item.setInvCount(IntUtil.value(invProductService.selectExitCount(item.getCurInvCode(), item.getSupId(), item.getRelId()))) + ); + PageInfo pageInfo = new PageInfo<>(list); + return ResultVOUtils.page(pageInfo); + } + + + /** + * 新增定量管理设置 + */ + @RepeatSubmit() + @PostMapping("udiwms/inv/project/ration/add") + @Log(title = "定量管理设置", businessType = BusinessType.INSERT) + public BaseResponse add(@RequestBody InvAddRationRequest invAddRationRequest) { + String user = getUserId() + ""; + if (invAddRationRequest.getInvProductRationEntity() != null) { + InvProductRationEntity invProductRationEntity = invAddRationRequest.getInvProductRationEntity(); + invProductRationEntity.setCreateUser(user); + invProductRationEntity.setCreateTime(new Date()); + invProductRationEntity.setUpdateUser(user); + invProductRationEntity.setUpdateTime(new Date()); + invProductRationService.save(invProductRationEntity); + } + + List rationEntities = invAddRationRequest.getRationEntities(); + if (CollUtil.isNotEmpty(rationEntities)) { + for (InvProductRationEntity rationEntity : rationEntities) { + rationEntity.setCreateUser(user); + rationEntity.setCreateTime(new Date()); + rationEntity.setUpdateUser(user); + rationEntity.setUpdateTime(new Date()); + } + } + invProductRationService.saveBatch(rationEntities); + return ResultVOUtils.success("新增成功!"); + } + + /** + * 修改定量管理设置 + */ + @RepeatSubmit() + @PostMapping("udiwms/inv/project/ration/edit") + @Log(title = "定量管理设置", businessType = BusinessType.UPDATE) + public BaseResponse edit(@RequestBody InvProductRationEntity invProductRationEntity) { + + if (StrUtil.isNotEmpty(invProductRationEntity.getBusType())) { + switch (invProductRationEntity.getBusType()) { + case "HCLY": + invProductRationEntity.setLyInvCode(invProductRationEntity.getBusInvCode()); + break; + case "CPSG": + invProductRationEntity.setSgInvCode(invProductRationEntity.getBusInvCode()); + break; + case "CGJH": + invProductRationEntity.setJhInvCode(invProductRationEntity.getBusInvCode()); + break; + case "CGDD": + invProductRationEntity.setCgInvCode(invProductRationEntity.getBusInvCode()); + break; + default: + break; + } + } + invProductRationService.updateById(invProductRationEntity); + return ResultVOUtils.success("修改成功"); + } + + /** + * 删除定量管理设置 + */ + @PostMapping("udiwms/inv/project/ration/remove") + @Log(title = "定量管理设置", businessType = BusinessType.DELETE) + public BaseResponse remove(@NotEmpty(message = "主键不能为空") + @RequestBody DeleteRequest deleteRequest) { + invProductRationService.removeById(deleteRequest.getId()); + return ResultVOUtils.success("删除成功"); + } + + + /** + * 修改定量管理设置 + */ + @RepeatSubmit() + @PostMapping("udiwms/inv/project/ration/genOrder") + @Log(title = "定量管理设置", businessType = BusinessType.UPDATE) + public BaseResponse genOrder(@RequestBody InvAddRationRequest invAddRationRequest) { + + if (CollUtil.isNotEmpty(invAddRationRequest.getRationEntities())) { + invProductRationService.genOrder(invAddRationRequest.getRationEntities()); + } + + + return ResultVOUtils.success("修改成功"); + } + + +} diff --git a/src/main/java/com/glxp/api/controller/purchase/IoPurChangeService.java b/src/main/java/com/glxp/api/controller/purchase/IoPurChangeService.java index 4d537834b..d78086e15 100644 --- a/src/main/java/com/glxp/api/controller/purchase/IoPurChangeService.java +++ b/src/main/java/com/glxp/api/controller/purchase/IoPurChangeService.java @@ -14,13 +14,16 @@ import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.inout.PurReceiveDetailEntity; import com.glxp.api.entity.inout.PurReceiveEntity; import com.glxp.api.entity.purchase.*; -import com.glxp.api.service.basic.CompanyProductRelevanceService; import com.glxp.api.service.basic.IBasicBusTypeChangeService; import com.glxp.api.service.inout.IoOrderDetailBizService; import com.glxp.api.service.inout.IoOrderService; -import com.glxp.api.service.inout.ReceiveService; -import com.glxp.api.service.inout.ReceivedetailService; +import com.glxp.api.service.inout.impl.ReceiveDetailService; +import com.glxp.api.service.inout.impl.ReceiveService; import com.glxp.api.service.purchase.*; +import com.glxp.api.service.purchase.impl.PurApplyDetailService; +import com.glxp.api.service.purchase.impl.PurApplyService; +import com.glxp.api.service.purchase.impl.PurOrderDetailService; +import com.glxp.api.service.purchase.impl.PurPlanDetailService; import com.glxp.api.util.CustomUtil; import com.glxp.api.util.MsDateUtil; import com.glxp.api.util.GennerOrderUtils; @@ -28,7 +31,6 @@ import com.glxp.api.util.OrderNoTypeBean; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.awt.geom.QuadCurve2D; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -45,7 +47,7 @@ public class IoPurChangeService { @Resource ReceiveService receiveService; @Resource - ReceivedetailService receivedetailService; + ReceiveDetailService receivedetailService; @Resource PurApplyService purApplyService; @Resource diff --git a/src/main/java/com/glxp/api/controller/purchase/PurApplyController.java b/src/main/java/com/glxp/api/controller/purchase/PurApplyController.java index 42e42d642..7b23938b3 100644 --- a/src/main/java/com/glxp/api/controller/purchase/PurApplyController.java +++ b/src/main/java/com/glxp/api/controller/purchase/PurApplyController.java @@ -1,5 +1,8 @@ package com.glxp.api.controller.purchase; +import com.glxp.api.service.purchase.impl.PurApplyDetailService; +import com.glxp.api.service.purchase.impl.PurOrderDetailService; +import com.glxp.api.service.purchase.impl.PurPlanDetailService; import org.springframework.beans.BeanUtils; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; diff --git a/src/main/java/com/glxp/api/controller/purchase/PurOrderController.java b/src/main/java/com/glxp/api/controller/purchase/PurOrderController.java index 0379d9300..f8df56c8b 100644 --- a/src/main/java/com/glxp/api/controller/purchase/PurOrderController.java +++ b/src/main/java/com/glxp/api/controller/purchase/PurOrderController.java @@ -1,5 +1,7 @@ package com.glxp.api.controller.purchase; +import com.glxp.api.service.purchase.impl.PurOrderDetailService; +import com.glxp.api.service.purchase.impl.PurPlanDetailService; import org.springframework.beans.BeanUtils; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; @@ -25,13 +27,10 @@ import com.glxp.api.res.purchase.PurOrderResponse; import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.inout.IoOrderDetailBizService; import com.glxp.api.service.inout.IoOrderService; -import com.glxp.api.service.purchase.PurOrderDetailService; import com.glxp.api.service.purchase.PurOrderService; -import com.glxp.api.service.purchase.PurPlanDetailService; import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.OrderNoTypeBean; import lombok.RequiredArgsConstructor; -import org.springframework.beans.BeanUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; diff --git a/src/main/java/com/glxp/api/controller/purchase/PurOrderReceiveController.java b/src/main/java/com/glxp/api/controller/purchase/PurOrderReceiveController.java index a602c28a5..9ba1b9138 100644 --- a/src/main/java/com/glxp/api/controller/purchase/PurOrderReceiveController.java +++ b/src/main/java/com/glxp/api/controller/purchase/PurOrderReceiveController.java @@ -47,12 +47,16 @@ import com.glxp.api.service.basic.IBasicBusTypeChangeService; import com.glxp.api.service.basic.UdiProductService; import com.glxp.api.service.inout.IoOrderDetailBizService; import com.glxp.api.service.inout.IoOrderService; -import com.glxp.api.service.inout.ReceiveService; -import com.glxp.api.service.inout.ReceivedetailService; +import com.glxp.api.service.inout.impl.ReceiveDetailService; +import com.glxp.api.service.inout.impl.ReceiveService; import com.glxp.api.service.inv.InvPreProductService; import com.glxp.api.service.inv.InvPreinProductService; -import com.glxp.api.service.inv.InvProductService; +import com.glxp.api.service.inv.impl.InvProductService; import com.glxp.api.service.purchase.*; +import com.glxp.api.service.purchase.impl.PurApplyDetailService; +import com.glxp.api.service.purchase.impl.PurApplyService; +import com.glxp.api.service.purchase.impl.PurOrderDetailService; +import com.glxp.api.service.purchase.impl.PurPlanDetailService; import com.glxp.api.util.CustomUtil; import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.OrderNoTypeBean; @@ -75,7 +79,7 @@ public class PurOrderReceiveController extends BaseController { @Resource ReceiveService receiveService; @Resource - ReceivedetailService receivedetailService; + ReceiveDetailService receivedetailService; @Resource CustomerService customerService; @Resource diff --git a/src/main/java/com/glxp/api/controller/purchase/PurPlanController.java b/src/main/java/com/glxp/api/controller/purchase/PurPlanController.java index 3610a841b..24ff2c2e3 100644 --- a/src/main/java/com/glxp/api/controller/purchase/PurPlanController.java +++ b/src/main/java/com/glxp/api/controller/purchase/PurPlanController.java @@ -1,5 +1,8 @@ package com.glxp.api.controller.purchase; +import com.glxp.api.service.purchase.impl.PurApplyDetailService; +import com.glxp.api.service.purchase.impl.PurOrderDetailService; +import com.glxp.api.service.purchase.impl.PurPlanDetailService; import org.springframework.beans.BeanUtils; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; @@ -463,8 +466,8 @@ public class PurPlanController { @PostMapping("/purchase/plan/addPlanDetail") public BaseResponse addPlanDetail(@RequestBody PurPlanDetailEntity purPlanDetailEntity) { - boolean falg = purPlanDetailService.insert(purPlanDetailEntity); - if (falg) { + int falg = purPlanDetailService.insert(purPlanDetailEntity); + if (falg > 0) { return ResultVOUtils.success("添加成功"); } else { return ResultVOUtils.success("添加失败"); diff --git a/src/main/java/com/glxp/api/dao/inv/InvProductDao.java b/src/main/java/com/glxp/api/dao/inv/InvProductDao.java index adac7dd2c..c0bf72cad 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvProductDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvProductDao.java @@ -85,8 +85,11 @@ public interface InvProductDao extends BaseMapperPlus filterProductNames(FilterInvProductRequest filterInvProductRequest); + + + Integer selectExitCount(@Param("invCode") String invCode, @Param("supId") Long supId, @Param("relIdFk") Long relIdFk); + } diff --git a/src/main/java/com/glxp/api/dao/inv/InvProductRationMapper.java b/src/main/java/com/glxp/api/dao/inv/InvProductRationMapper.java new file mode 100644 index 000000000..cd129b44b --- /dev/null +++ b/src/main/java/com/glxp/api/dao/inv/InvProductRationMapper.java @@ -0,0 +1,15 @@ +package com.glxp.api.dao.inv; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.glxp.api.entity.inv.InvProductRationEntity; +import com.glxp.api.req.inv.InvProductRationRequest; +import com.glxp.api.res.inv.InvProductRationResponse; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface InvProductRationMapper extends BaseMapper { + + List filterList(InvProductRationRequest invProductRationRequest); +} diff --git a/src/main/java/com/glxp/api/dao/purchase/PurApplyDao.java b/src/main/java/com/glxp/api/dao/purchase/PurApplyDao.java index 6c2f1f5eb..50825f040 100644 --- a/src/main/java/com/glxp/api/dao/purchase/PurApplyDao.java +++ b/src/main/java/com/glxp/api/dao/purchase/PurApplyDao.java @@ -1,6 +1,9 @@ package com.glxp.api.dao.purchase; +import com.glxp.api.dao.BaseMapperPlus; +import com.glxp.api.dao.inout.ReceiveDao; +import com.glxp.api.entity.inout.PurReceiveEntity; import com.glxp.api.entity.purchase.PurApplyEntity; import com.glxp.api.req.purchase.PurApplyRequest; import com.glxp.api.res.purchase.PurApplyResponse; @@ -10,11 +13,11 @@ import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper -public interface PurApplyDao { +public interface PurApplyDao extends BaseMapperPlus { List queryPageList(PurApplyRequest purApplyRequest); - Integer insert(PurApplyEntity purApplyRequest); + int insert(PurApplyEntity purApplyRequest); Boolean update(PurApplyEntity purApplyRequest); diff --git a/src/main/java/com/glxp/api/dao/purchase/PurApplyDetailDao.java b/src/main/java/com/glxp/api/dao/purchase/PurApplyDetailDao.java index 24361218d..94062fe53 100644 --- a/src/main/java/com/glxp/api/dao/purchase/PurApplyDetailDao.java +++ b/src/main/java/com/glxp/api/dao/purchase/PurApplyDetailDao.java @@ -1,6 +1,8 @@ package com.glxp.api.dao.purchase; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.glxp.api.entity.inv.InvProductRationEntity; import com.glxp.api.entity.purchase.PurApplyDetailEntity; import com.glxp.api.req.purchase.PurApplyDetailRequest; import com.glxp.api.res.purchase.PurOrderDetailResponse; @@ -10,13 +12,14 @@ import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper -public interface PurApplyDetailDao { +public interface PurApplyDetailDao extends BaseMapper { + List queryPageList(PurApplyDetailRequest purApplyRequest); List joinQueryList(PurApplyDetailRequest purApplyRequest); - Boolean insert(PurApplyDetailEntity purApplyDetailEntity); + int insert(PurApplyDetailEntity purApplyDetailEntity); Boolean update(PurApplyDetailEntity purApplyRequest); diff --git a/src/main/java/com/glxp/api/dao/purchase/PurPlanDetailDao.java b/src/main/java/com/glxp/api/dao/purchase/PurPlanDetailDao.java index 23cc6d285..6e9f4e09c 100644 --- a/src/main/java/com/glxp/api/dao/purchase/PurPlanDetailDao.java +++ b/src/main/java/com/glxp/api/dao/purchase/PurPlanDetailDao.java @@ -1,7 +1,9 @@ package com.glxp.api.dao.purchase; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.basic.BasicProductsEntity; +import com.glxp.api.entity.inv.InvProductRationEntity; import com.glxp.api.entity.purchase.PurPlanDetailEntity; import com.glxp.api.req.purchase.PurPlanDetailRequest; import com.glxp.api.res.purchase.PurOrderDetailResponse; @@ -11,16 +13,16 @@ import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper -public interface PurPlanDetailDao { +public interface PurPlanDetailDao extends BaseMapper { List queryPageList(PurPlanDetailRequest purApplyRequest); List joinQueryList(PurPlanDetailRequest purPlanDetailRequest); - Boolean insert(PurPlanDetailEntity purPlanDetailRequest); + int insert(PurPlanDetailEntity purPlanDetailRequest); Boolean update(PurPlanDetailEntity purPlanDetailRequest); - Boolean deleteByIds(@Param("ids")List ids); + Boolean deleteByIds(@Param("ids") List ids); Boolean deleteByOrderId(@Param("orderIdFk") String orderIdFk); diff --git a/src/main/java/com/glxp/api/entity/inv/InvProductRationEntity.java b/src/main/java/com/glxp/api/entity/inv/InvProductRationEntity.java new file mode 100644 index 000000000..19be944ae --- /dev/null +++ b/src/main/java/com/glxp/api/entity/inv/InvProductRationEntity.java @@ -0,0 +1,181 @@ +package com.glxp.api.entity.inv; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; +import java.util.Date; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@ApiModel(value = "com-glxp-api-entity-inv-InvProductRationEntity") +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@TableName(value = "inv_product_ration") +public class InvProductRationEntity implements Serializable { + @TableId(value = "id", type = IdType.INPUT) + @ApiModelProperty(value = "") + private Integer id; + + /** + * 产品ID + */ + @TableField(value = "relId") + @ApiModelProperty(value = "产品ID") + private Long relId; + + /** + * 供应商ID + */ + @TableField(value = "supId") + @ApiModelProperty(value = "供应商ID") + private Long supId; + + + /** + * 定量数 + */ + @TableField(value = "rationCount") + @ApiModelProperty(value = "定量数") + private Integer rationCount; + + /** + * 库存数 + */ + @TableField(value = "invCount") + @ApiModelProperty(value = "库存数") + private Integer invCount; + + /** + * 业务单据类型 + */ + @TableField(value = "busType") + @ApiModelProperty(value = "业务单据类型") + private String busType; + + /** + * 扫码单据类型 + */ + @TableField(value = "scanType") + @ApiModelProperty(value = "扫码单据类型") + private String scanType; + + /** + * 当前仓库 + */ + @TableField(value = "curInvCode") + @ApiModelProperty(value = "当前仓库") + private String curInvCode; + + /** + * 领用仓库 + */ + @TableField(value = "lyInvCode") + @ApiModelProperty(value = "领用仓库") + private String lyInvCode; + + /** + * 业务-申购采购仓库 + */ + @TableField(value = "sgInvCode") + @ApiModelProperty(value = "业务-申购采购仓库") + private String sgInvCode; + + /** + * 业务-计划采购仓库 + */ + @TableField(value = "jhInvCode") + @ApiModelProperty(value = "业务-计划采购仓库") + private String jhInvCode; + + /** + * 业务-订单采购仓库 + */ + @TableField(value = "cgInvCode") + @ApiModelProperty(value = "业务-订单采购仓库") + private String cgInvCode; + + /** + * 出入库-往来仓库 + */ + @TableField(value = "fromInvCode") + @ApiModelProperty(value = "出入库-往来仓库") + private String fromInvCode; + + /** + * 更新时间 + */ + @TableField(value = "updateTime") + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + /** + * 更新人 + */ + @TableField(value = "updateUser") + @ApiModelProperty(value = "更新人") + private String updateUser; + + /** + * 创建时间 + */ + @TableField(value = "createTime") + @ApiModelProperty(value = "创建时间") + private Date createTime; + + /** + * 创建人 + */ + @TableField(value = "`createUser`") + @ApiModelProperty(value = "创建人") + private String createUser; + + @TableField(value = "remark") + @ApiModelProperty(value = "备注") + private String remark; + + /** + * 业务单生成后审核状态 1:草稿;2:未审核 + */ + @TableField(value = "busAuditStatus") + @ApiModelProperty(value = "业务单生成后审核状态 1:草稿;2:未审核") + private Integer busAuditStatus; + + + /** + * 出入库单生成后审核状态 1:草稿;2:已提交 + */ + @TableField(value = "auditStatus") + @ApiModelProperty(value = "出入库单生成后审核状态 1:草稿;2:未审核") + private Integer auditStatus; + + + /** + * 出入库单号 + */ + @TableField(value = "scanOrder") + @ApiModelProperty(value = "出入库单号") + private String scanOrder; + + + /** + * 业务单号 + */ + @TableField(value = "busOrder") + @ApiModelProperty(value = "业务单号") + private String busOrder; + + @TableField(exist = false) + private String busInvCode; + + private static final long serialVersionUID = 1L; +} diff --git a/src/main/java/com/glxp/api/req/inv/InvAddRationRequest.java b/src/main/java/com/glxp/api/req/inv/InvAddRationRequest.java new file mode 100644 index 000000000..dc9c3df3c --- /dev/null +++ b/src/main/java/com/glxp/api/req/inv/InvAddRationRequest.java @@ -0,0 +1,16 @@ +package com.glxp.api.req.inv; + +import com.glxp.api.entity.inv.InvProductRationEntity; +import lombok.Data; + +import java.util.List; + +@Data +public class InvAddRationRequest { + + + private List rationEntities; + + InvProductRationEntity invProductRationEntity; + +} diff --git a/src/main/java/com/glxp/api/req/inv/InvProductRationRequest.java b/src/main/java/com/glxp/api/req/inv/InvProductRationRequest.java new file mode 100644 index 000000000..19816c8fb --- /dev/null +++ b/src/main/java/com/glxp/api/req/inv/InvProductRationRequest.java @@ -0,0 +1,17 @@ +package com.glxp.api.req.inv; + +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +@Data +public class InvProductRationRequest extends ListPageRequest { + + private String curInvCode; + private String cpmctymc; + private String nameCode; + private Long relId; + private String ggxh; + private String ylqxzcrbarmc; + private String zczbhhzbapzbh; + private String supId; +} diff --git a/src/main/java/com/glxp/api/res/inout/IoCodeTempResponse.java b/src/main/java/com/glxp/api/res/inout/IoCodeTempResponse.java index ba613709e..79c2c6775 100644 --- a/src/main/java/com/glxp/api/res/inout/IoCodeTempResponse.java +++ b/src/main/java/com/glxp/api/res/inout/IoCodeTempResponse.java @@ -146,5 +146,7 @@ public class IoCodeTempResponse { private Integer checkStatus; + private String price; + } diff --git a/src/main/java/com/glxp/api/res/inv/InvProductRationResponse.java b/src/main/java/com/glxp/api/res/inv/InvProductRationResponse.java new file mode 100644 index 000000000..d2d50ab3f --- /dev/null +++ b/src/main/java/com/glxp/api/res/inv/InvProductRationResponse.java @@ -0,0 +1,117 @@ +package com.glxp.api.res.inv; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class InvProductRationResponse { + + + private Integer id; + + /** + * 产品ID + */ + private Long relId; + /** + * 供应商ID + */ + private Long supId; + /** + * 定量数 + */ + private Integer rationCount; + + /** + * 库存数 + */ + private Integer invCount; + + /** + * 业务单据类型 + */ + private String busType; + + /** + * 扫码单据类型 + */ + private String scanType; + + /** + * 当前仓库 + */ + private String curInvCode; + + /** + * 领用仓库 + */ + private String lyInvCode; + + /** + * 业务-申购采购仓库 + */ + private String sgInvCode; + + /** + * 业务-计划采购仓库 + */ + private String jhInvCode; + + /** + * 业务-订单采购仓库 + */ + private String cgInvCode; + + /** + * 出入库-往来仓库 + */ + private String fromInvCode; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 更新人 + */ + private String updateUser; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 创建人 + */ + private String createUser; + /** + * 备注 + */ + private String remark; + + + private String cpmctymc; + private String measname; + private String ggxh; + private String ylqxzcrbarmc; + private String zczbhhzbapzbh; + private String nameCode; + private String supName; + private String invName; + + /** + * 业务单生成后审核状态 1:草稿;2:未审核 + */ + private Integer busAuditStatus; + + + /** + * 出入库单生成后审核状态 1:草稿;2:已提交 + */ + private Integer auditStatus; +} diff --git a/src/main/java/com/glxp/api/service/basic/UdiRlSupService.java b/src/main/java/com/glxp/api/service/basic/UdiRlSupService.java index f13fabddb..81c076477 100644 --- a/src/main/java/com/glxp/api/service/basic/UdiRlSupService.java +++ b/src/main/java/com/glxp/api/service/basic/UdiRlSupService.java @@ -45,4 +45,7 @@ public interface UdiRlSupService { * @return */ boolean findExist(CompanyProductRelevanceRequest companyProductRelevanceRequest); + + UdiRlSupResponse findByRelUnitFk(String udiRlIdFk, String unitFk); + } diff --git a/src/main/java/com/glxp/api/service/basic/impl/UdiRlSupServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/UdiRlSupServiceImpl.java index 76be752c3..54cbbfea2 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/UdiRlSupServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/UdiRlSupServiceImpl.java @@ -1,5 +1,7 @@ package com.glxp.api.service.basic.impl; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.basic.UdiRlSupDao; @@ -131,4 +133,18 @@ public class UdiRlSupServiceImpl implements UdiRlSupService { Long count = udiRlSupDao.selectSupRlCount(companyProductRelevanceRequest); return null != count && count != 0; } + + @Override + public UdiRlSupResponse findByRelUnitFk(String udiRlIdFk, String unitFk) { + if (StrUtil.isEmpty(udiRlIdFk) || StrUtil.isEmpty(unitFk)) { + return null; + } + CompanyProductRelevanceRequest companyProductRelevanceRequest = new CompanyProductRelevanceRequest(); + companyProductRelevanceRequest.setId(udiRlIdFk); + companyProductRelevanceRequest.setCustomerId(unitFk); + List udiRlSupResponses = filterUdiGp(companyProductRelevanceRequest); + if (CollUtil.isNotEmpty(udiRlSupResponses)) + return udiRlSupResponses.get(0); + return null; + } } diff --git a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java index 217fb7fd7..5c25f92b5 100644 --- a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java @@ -922,11 +922,10 @@ public class IoAddInoutService { IoCodeTempEntity codeEntity = temps.get(0); InvProductDetailEntity invProductDetailEntity = invProductDetailService.selectLastInBatch(bussinessTypeEntity, codeEntity.getRelId() + "", codeEntity.getBatchNo(), codeEntity.getInvCode(), codeEntity.getMainAction()); Map lastCountMap = new HashMap<>(); - + invProductDetailEntity = invProductDetailService.selectFirstInBatch(bussinessTypeEntity, codeEntity.getRelId() + "", codeEntity.getBatchNo(), codeEntity.getInvCode(), ConstantType.TYPE_PUT); for (IoCodeTempEntity codeTempEntity : temps) { if (invProductDetailEntity == null) { //首次出库,获取入库最早批次 - invProductDetailEntity = invProductDetailService.selectFirstInBatch(bussinessTypeEntity, codeTempEntity.getRelId() + "", codeTempEntity.getBatchNo(), codeTempEntity.getInvCode(), ConstantType.TYPE_PUT); if (invProductDetailEntity != null) { int count = IntUtil.value(invProductDetailEntity.getCount()); int reCount = IntUtil.value(invProductDetailEntity.getReCount()); diff --git a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java index 02e665193..dbde1d13d 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java @@ -370,6 +370,8 @@ public class IoCheckInoutService { if (curCount > bizEntity.getCount()) { return "当前产品数量超出!"; } + if (bizEntity.getPrice() != null) + codeEntity.setPrice(bizEntity.getPrice()); return null; } @@ -393,6 +395,8 @@ public class IoCheckInoutService { if (curCount > bizEntity.getCount()) { return "当前产品数量超出!"; } + if (bizEntity.getPrice() != null) + codeTempEntity.setPrice(bizEntity.getPrice()); return null; } diff --git a/src/main/java/com/glxp/api/service/inout/IoGenInvService.java b/src/main/java/com/glxp/api/service/inout/IoGenInvService.java index 7f6e69bbe..f096c67f3 100644 --- a/src/main/java/com/glxp/api/service/inout/IoGenInvService.java +++ b/src/main/java/com/glxp/api/service/inout/IoGenInvService.java @@ -2,6 +2,7 @@ package com.glxp.api.service.inout; import com.glxp.api.service.inout.impl.IoCodeService; import com.glxp.api.service.inv.impl.InvProductDetailService; +import com.glxp.api.service.inv.impl.InvProductService; import org.springframework.beans.BeanUtils; import cn.hutool.core.util.StrUtil; import com.glxp.api.constant.BusinessType; diff --git a/src/main/java/com/glxp/api/service/inout/ReceiveService.java b/src/main/java/com/glxp/api/service/inout/ReceiveService.java deleted file mode 100644 index bd7aed7cb..000000000 --- a/src/main/java/com/glxp/api/service/inout/ReceiveService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.glxp.api.service.inout; - -import com.glxp.api.entity.basic.BasicProductsEntity; -import com.glxp.api.entity.inout.PurReceiveEntity; -import com.glxp.api.req.inout.FilterReceiveRequest; -import com.glxp.api.res.inout.ReceiveResponse; - -import java.util.List; - -/** - * - */ -public interface ReceiveService { - - PurReceiveEntity selectById(Long id); - - int insertOrder(PurReceiveEntity purReceiveEntity); - - int updateOrder(PurReceiveEntity purReceiveEntity); - - List filterList(FilterReceiveRequest filterReceiveRequest); - - boolean delReceive(String orderIdFk); - - - - -} diff --git a/src/main/java/com/glxp/api/service/inout/ReceivedetailService.java b/src/main/java/com/glxp/api/service/inout/ReceivedetailService.java deleted file mode 100644 index b097e0b36..000000000 --- a/src/main/java/com/glxp/api/service/inout/ReceivedetailService.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.glxp.api.service.inout; - -import com.glxp.api.entity.basic.BasicProductsEntity; -import com.glxp.api.entity.inout.PurReceiveDetailEntity; -import com.glxp.api.req.inout.FilterReceiveDetailRequest; -import com.glxp.api.req.inout.FilterReceiveRequest; -import com.glxp.api.req.inout.UpdateReceiveDetailRequest; -import com.glxp.api.res.inout.ReceiveDetailResponse; -import com.glxp.api.res.inout.ReceiveResponse; - -import java.util.List; - -public interface ReceivedetailService { - - - List selectByOrderId(String orderId); - - List filterList(FilterReceiveDetailRequest filterReceiveDetailRequest); - - int insert(PurReceiveDetailEntity receiveDetailEntity); - - boolean updateReceiveDetail(UpdateReceiveDetailRequest updateReceiveDetailRequest); - - boolean delDetail(String id); - - BasicProductsEntity selectIoOrderDetailBiz(long id); -} diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java index 52a7c9c7e..ce1266e1e 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java @@ -1,6 +1,7 @@ package com.glxp.api.service.inout.impl; import com.glxp.api.service.inv.impl.InvProductDetailService; +import com.glxp.api.service.inv.impl.InvProductService; import org.springframework.beans.BeanUtils; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.UUID; diff --git a/src/main/java/com/glxp/api/service/inout/impl/ReceiveDetailServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/ReceiveDetailService.java similarity index 88% rename from src/main/java/com/glxp/api/service/inout/impl/ReceiveDetailServiceImpl.java rename to src/main/java/com/glxp/api/service/inout/impl/ReceiveDetailService.java index 8e046072b..e29bfd860 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/ReceiveDetailServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/ReceiveDetailService.java @@ -1,15 +1,16 @@ package com.glxp.api.service.inout.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.inout.ReceiveDetailDao; +import com.glxp.api.dao.inv.InvProductRationMapper; import com.glxp.api.entity.basic.BasicProductsEntity; import com.glxp.api.entity.inout.PurReceiveDetailEntity; +import com.glxp.api.entity.inv.InvProductRationEntity; import com.glxp.api.req.inout.FilterReceiveDetailRequest; import com.glxp.api.req.inout.UpdateReceiveDetailRequest; import com.glxp.api.res.inout.ReceiveDetailResponse; -import com.glxp.api.service.inout.ReceivedetailService; -import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -19,17 +20,17 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class ReceiveDetailServiceImpl implements ReceivedetailService { +public class ReceiveDetailService extends ServiceImpl { @Resource ReceiveDetailDao receiveDetailDao; - @Override + public List selectByOrderId(String orderId) { return receiveDetailDao.selectList(new QueryWrapper().eq("orderIdFk", orderId)); } - @Override + public List filterList(FilterReceiveDetailRequest filterReceiveDetailRequest) { if (null == filterReceiveDetailRequest) { return Collections.emptyList(); @@ -40,23 +41,23 @@ public class ReceiveDetailServiceImpl implements ReceivedetailService { return receiveDetailDao.filterList(filterReceiveDetailRequest); } - @Override + public int insert(PurReceiveDetailEntity receiveDetailEntity) { return receiveDetailDao.insert(receiveDetailEntity); } - @Override + public boolean updateReceiveDetail(UpdateReceiveDetailRequest updateReceiveDetailRequest) { return receiveDetailDao.updateReceiveDetail(updateReceiveDetailRequest); } - @Override + public boolean delDetail(String id) { receiveDetailDao.deleteById(id); return true; } - @Override + public BasicProductsEntity selectIoOrderDetailBiz(long id) { return receiveDetailDao.selectIoOrderDetailBiz(id); } diff --git a/src/main/java/com/glxp/api/service/inout/impl/ReceiveServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/ReceiveService.java similarity index 86% rename from src/main/java/com/glxp/api/service/inout/impl/ReceiveServiceImpl.java rename to src/main/java/com/glxp/api/service/inout/impl/ReceiveService.java index cd5809e16..89a4170c6 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/ReceiveServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/ReceiveService.java @@ -1,6 +1,7 @@ package com.glxp.api.service.inout.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.inout.ReceiveDao; import com.glxp.api.dao.inout.ReceiveDetailDao; @@ -8,7 +9,6 @@ import com.glxp.api.entity.inout.PurReceiveDetailEntity; import com.glxp.api.entity.inout.PurReceiveEntity; import com.glxp.api.req.inout.FilterReceiveRequest; import com.glxp.api.res.inout.ReceiveResponse; -import com.glxp.api.service.inout.ReceiveService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -18,7 +18,7 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class ReceiveServiceImpl implements ReceiveService { +public class ReceiveService extends ServiceImpl { @Resource ReceiveDao receiveDao; @@ -26,24 +26,29 @@ public class ReceiveServiceImpl implements ReceiveService { @Resource ReceiveDetailDao receiveDetailDao; - @Override + + public PurReceiveEntity selectByBillNo(String billNo) { + return receiveDao.selectOne(new QueryWrapper().eq("billNo", billNo).last("limit 1")); + } + + public PurReceiveEntity selectById(Long id) { return receiveDao.selectById(id); } - @Override + public int insertOrder(PurReceiveEntity purReceiveEntity) { return receiveDao.insert(purReceiveEntity); } - @Override + public int updateOrder(PurReceiveEntity purReceiveEntity) { QueryWrapper ew = new QueryWrapper<>(); ew.eq("billNo", purReceiveEntity.getBillNo()); return receiveDao.update(purReceiveEntity, ew); } - @Override + public List filterList(FilterReceiveRequest filterReceiveRequest) { if (null == filterReceiveRequest) { return Collections.emptyList(); @@ -54,7 +59,7 @@ public class ReceiveServiceImpl implements ReceiveService { return receiveDao.filterList(filterReceiveRequest); } - @Override + public boolean delReceive(String orderIdFk) { QueryWrapper ew = new QueryWrapper<>(); ew.eq("billNo", orderIdFk); diff --git a/src/main/java/com/glxp/api/service/inv/InvProductRationService.java b/src/main/java/com/glxp/api/service/inv/InvProductRationService.java new file mode 100644 index 000000000..2a1ed95ba --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/InvProductRationService.java @@ -0,0 +1,433 @@ +package com.glxp.api.service.inv; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.github.pagehelper.PageHelper; +import com.glxp.api.constant.Constant; +import com.glxp.api.constant.ConstantStatus; +import com.glxp.api.entity.auth.InvWarehouseEntity; +import com.glxp.api.entity.basic.BasicBussinessTypeEntity; +import com.glxp.api.entity.inout.*; +import com.glxp.api.entity.purchase.*; +import com.glxp.api.req.inv.InvProductRationRequest; +import com.glxp.api.res.basic.UdiRlSupResponse; +import com.glxp.api.res.inv.InvProductRationResponse; +import com.glxp.api.service.auth.InvWarehouseService; +import com.glxp.api.service.basic.IBasicBussinessTypeService; +import com.glxp.api.service.basic.UdiRlSupService; +import com.glxp.api.service.inout.IoOrderDetailBizService; +import com.glxp.api.service.inout.IoOrderService; +import com.glxp.api.service.inout.impl.ReceiveDetailService; +import com.glxp.api.service.inout.impl.ReceiveService; +import com.glxp.api.service.purchase.PurOrderService; +import com.glxp.api.service.purchase.PurPlanService; +import com.glxp.api.service.purchase.impl.PurApplyDetailService; +import com.glxp.api.service.purchase.impl.PurApplyService; +import com.glxp.api.service.purchase.impl.PurOrderDetailService; +import com.glxp.api.service.purchase.impl.PurPlanDetailService; +import com.glxp.api.util.CustomUtil; +import com.glxp.api.util.GennerOrderUtils; +import com.glxp.api.util.IntUtil; +import com.glxp.api.util.OrderNoTypeBean; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.glxp.api.entity.inv.InvProductRationEntity; +import com.glxp.api.dao.inv.InvProductRationMapper; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +@Service +public class InvProductRationService extends ServiceImpl { + + @Resource + InvProductRationMapper invProductRationMapper; + + public List filterList(InvProductRationRequest invProductRationRequest) { + if (invProductRationRequest == null) { + return Collections.emptyList(); + } + if (invProductRationRequest.getPage() != null) { + int offset = (invProductRationRequest.getPage() - 1) * invProductRationRequest.getLimit(); + PageHelper.offsetPage(offset, invProductRationRequest.getLimit()); + } + List data = invProductRationMapper.filterList(invProductRationRequest); + return data; + } + + + public void genOrder(List invProductRationEntities) { + + //1.生成业务单 + Map> stringListMap = invProductRationEntities.stream() + .collect(Collectors.groupingBy(item -> item.getBusType() + ":" + item.getBusAuditStatus())); + stringListMap.forEach((key, rationEntityList) -> { + InvProductRationEntity invProductRationEntity = rationEntityList.get(0); + if (StrUtil.isNotEmpty(invProductRationEntity.getBusType())) { + switch (invProductRationEntity.getBusType()) { + case "HCLY": + genLyOrder(rationEntityList); + break; + case "CPSG": + genSgOrder(rationEntityList); + break; + case "CGJH": + genJhOrder(rationEntityList); + break; + case "CGDD": + genCgddOrder(rationEntityList); + break; + default: + break; + } + } + }); + + //2.生成出入库单 + Map> inoutList = invProductRationEntities.stream() + .collect(Collectors.groupingBy(item -> item.getScanType())); + for (String key : inoutList.keySet()) { + BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(key); + if (bussinessTypeEntity != null) { + if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_INNOR) { + genIoOrder(inoutList.get(key), bussinessTypeEntity); + } else if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_OUT) { + Map> listMap = inoutList.get(key).stream() + .collect(Collectors.groupingBy(item -> item.getSupId() + "")); + stringListMap.forEach((supId, rationEntityList) -> { + genIoOrder(listMap.get(supId), bussinessTypeEntity); + } + ); + } + } + + } + } + + + @Resource + GennerOrderUtils gennerOrderUtils; + @Resource + InvWarehouseService invWarehouseService; + @Resource + UdiRlSupService udiRlSupService; + + + @Resource + ReceiveService receiveService; + @Resource + ReceiveDetailService receivedetailService; + + /** + * 生成科室领用单据 + */ + public void genLyOrder(List invProductRationEntities) { + + InvProductRationEntity invProductRationEntity = invProductRationEntities.get(0); + InvWarehouseEntity curWarehouseEntity = invWarehouseService.findByInvSubByCode(invProductRationEntity.getCurInvCode()); + InvWarehouseEntity targetWarehouseEntity = invWarehouseService.findByInvSubByCode(invProductRationEntity.getLyInvCode()); + PurReceiveEntity purReceiveEntity = new PurReceiveEntity(); + purReceiveEntity.setStatus(invProductRationEntity.getBusAuditStatus()); + purReceiveEntity.setCreateUser(invProductRationEntity.getCreateUser()); + purReceiveEntity.setBillDate(new Date()); + purReceiveEntity.setCreateTime(new Date()); + purReceiveEntity.setUpdateTime(new Date()); + purReceiveEntity.setBillType("HCLY"); + String orderNo = gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.LIN_YONG, "yyyyMMdd")); + purReceiveEntity.setBillNo(orderNo); + purReceiveEntity.setInvCode(curWarehouseEntity.getCode()); + purReceiveEntity.setTargetDeptCode(targetWarehouseEntity.getCode()); + purReceiveEntity.setDeptCode(curWarehouseEntity.getParentId()); + purReceiveEntity.setTargetDeptCode(targetWarehouseEntity.getParentId()); + purReceiveEntity.setRemark("定量不足生成"); + + List purReceiveDetailEntities = new ArrayList<>(); + //生成单据详情 + for (InvProductRationEntity rationEntity : invProductRationEntities) { + if (StrUtil.isNotEmpty(rationEntity.getBusOrder())) { + PurReceiveEntity temp = receiveService.selectByBillNo(rationEntity.getBusOrder()); + if (temp != null && IntUtil.value(temp.getStatus()) <= 2) { + continue; + } + } + int count = IntUtil.value(rationEntity.getRationCount()) - IntUtil.value(rationEntity.getInvCount()); + if (count > 0) { + PurReceiveDetailEntity purReceiveDetailEntity = new PurReceiveDetailEntity(); + purReceiveDetailEntity.setOrderIdFk(purReceiveEntity.getBillNo()); + purReceiveDetailEntity.setRelIdFk(rationEntity.getRelId()); + UdiRlSupResponse udiRlSupResponse = udiRlSupService.findByRelUnitFk(rationEntity.getRelId() + "", rationEntity.getSupId() + ""); + purReceiveDetailEntity.setNameCode(udiRlSupResponse.getNameCode()); + purReceiveDetailEntity.setSupId(rationEntity.getSupId() + ""); + purReceiveDetailEntity.setCount(count); + purReceiveDetailEntities.add(purReceiveDetailEntity); + } + } + if (CollUtil.isNotEmpty(purReceiveDetailEntities)) { + receiveService.insertOrder(purReceiveEntity); + receivedetailService.saveBatch(purReceiveDetailEntities); + invProductRationEntity.setBusOrder(orderNo); + invProductRationMapper.updateById(invProductRationEntity); + } + } + + + @Resource + PurApplyService purApplyService; + @Resource + PurApplyDetailService purApplyDetailService; + + /** + * 生成产品申购单据 + */ + public void genSgOrder(List invProductRationEntities) { + + InvProductRationEntity invProductRationEntity = invProductRationEntities.get(0); + InvWarehouseEntity curWarehouseEntity = invWarehouseService.findByInvSubByCode(invProductRationEntity.getCurInvCode()); + InvWarehouseEntity targetWarehouseEntity = invWarehouseService.findByInvSubByCode(invProductRationEntity.getSgInvCode()); + PurApplyEntity purApplyEntity = new PurApplyEntity(); + purApplyEntity.setCreateUser(invProductRationEntity.getCreateUser()); + purApplyEntity.setBillDate(new Date()); + purApplyEntity.setCreateTime(new Date()); + purApplyEntity.setUpdateTime(new Date()); + purApplyEntity.setBillType(ConstantStatus.BUS_ORDER_CPSG); + purApplyEntity.setStatus(invProductRationEntity.getBusAuditStatus()); + String billNo = gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.SG_ORDER, "yyyyMMdd")); + purApplyEntity.setBillNo(billNo); + purApplyEntity.setInvCode(curWarehouseEntity.getCode()); + purApplyEntity.setTargetDeptCode(targetWarehouseEntity.getCode()); + purApplyEntity.setDeptCode(curWarehouseEntity.getParentId()); + purApplyEntity.setTargetDeptCode(targetWarehouseEntity.getParentId()); + purApplyEntity.setRemark("定量不足生成"); + + List purApplyDetailEntities = new ArrayList<>(); + //生成单据详情 + for (InvProductRationEntity rationEntity : invProductRationEntities) { + + if (StrUtil.isNotEmpty(rationEntity.getBusOrder())) { + PurApplyEntity temp = purApplyService.selectByBillNo(rationEntity.getBusOrder()); + if (temp != null && IntUtil.value(temp.getStatus()) <= 2) { + continue; + } + } + + int count = IntUtil.value(rationEntity.getRationCount()) - IntUtil.value(rationEntity.getInvCount()); + if (count > 0) { + PurApplyDetailEntity purApplyDetailEntity = new PurApplyDetailEntity(); + purApplyDetailEntity.setOrderIdFk(purApplyEntity.getBillNo()); + purApplyDetailEntity.setProductId(rationEntity.getRelId()); + UdiRlSupResponse udiRlSupResponse = udiRlSupService.findByRelUnitFk(rationEntity.getRelId() + "", rationEntity.getSupId() + ""); + purApplyDetailEntity.setProductName(udiRlSupResponse.getCpmctymc()); + purApplyDetailEntity.setCount(count); + purApplyDetailEntity.setZczbhhzbapzbh(udiRlSupResponse.getZczbhhzbapzbh()); + purApplyDetailEntity.setSupId(rationEntity.getSupId() + ""); + purApplyDetailEntities.add(purApplyDetailEntity); + } + } + + if (CollUtil.isNotEmpty(purApplyDetailEntities)) { + purApplyService.insert(purApplyEntity); + purApplyDetailService.saveBatch(purApplyDetailEntities); + invProductRationEntity.setBusOrder(billNo); + invProductRationMapper.updateById(invProductRationEntity); + } + } + + @Resource + PurPlanService purPlanService; + @Resource + PurPlanDetailService purPlanDetailService; + + /** + * 生成采购计划 + */ + public void genJhOrder(List invProductRationEntities) { + InvProductRationEntity invProductRationEntity = invProductRationEntities.get(0); + InvWarehouseEntity curWarehouseEntity = invWarehouseService.findByInvSubByCode(invProductRationEntity.getCurInvCode()); + InvWarehouseEntity targetWarehouseEntity = invWarehouseService.findByInvSubByCode(invProductRationEntity.getSgInvCode()); + PurPlanEntity purPlanEntity = new PurPlanEntity(); + purPlanEntity.setCreateUser(invProductRationEntity.getCreateUser()); + purPlanEntity.setBillDate(new Date()); + purPlanEntity.setCreateTime(new Date()); + purPlanEntity.setUpdateTime(new Date()); + purPlanEntity.setBillType(ConstantStatus.BUS_ORDER_CPSG); + purPlanEntity.setStatus(invProductRationEntity.getBusAuditStatus()); + String billNo = gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.SG_ORDER, "yyyyMMdd")); + purPlanEntity.setBillNo(billNo); + purPlanEntity.setInvCode(targetWarehouseEntity.getCode()); + purPlanEntity.setApplyInv(curWarehouseEntity.getCode()); + purPlanEntity.setDeptCode(targetWarehouseEntity.getParentId()); + purPlanEntity.setRemark("定量不足生成"); + + List purPlanDetailEntityList = new ArrayList<>(); + //生成单据详情 + for (InvProductRationEntity rationEntity : invProductRationEntities) { + int count = IntUtil.value(rationEntity.getRationCount()) - IntUtil.value(rationEntity.getInvCount()); + if (count > 0) { + PurPlanDetailEntity purPlanDetailEntity = new PurPlanDetailEntity(); + purPlanDetailEntity.setOrderIdFk(purPlanEntity.getBillNo()); + purPlanDetailEntity.setProductId(rationEntity.getRelId()); + UdiRlSupResponse udiRlSupResponse = udiRlSupService.findByRelUnitFk(rationEntity.getRelId() + "", rationEntity.getSupId() + ""); + purPlanDetailEntity.setProductName(udiRlSupResponse.getCpmctymc()); + purPlanDetailEntity.setCount(count); + purPlanDetailEntity.setZczbhhzbapzbh(udiRlSupResponse.getZczbhhzbapzbh()); + purPlanDetailEntity.setSupId(rationEntity.getSupId() + ""); + purPlanDetailEntityList.add(purPlanDetailEntity); + } + } + if (CollUtil.isNotEmpty(purPlanDetailEntityList)) { + purPlanService.insert(purPlanEntity); + purPlanDetailService.saveBatch(purPlanDetailEntityList); + } + } + + + @Resource + PurOrderService purOrderService; + @Resource + PurOrderDetailService purOrderDetailService; + + /** + * 生成采购订单 + */ + public void genCgddOrder(List invProductRationEntities) { + + Map> stringListMap = invProductRationEntities.stream() + .collect(Collectors.groupingBy(item -> item.getSupId() + "")); + stringListMap.forEach((key, rationEntityList) -> { + InvProductRationEntity invProductRationEntity = rationEntityList.get(0); + InvWarehouseEntity curWarehouseEntity = invWarehouseService.findByInvSubByCode(invProductRationEntity.getCurInvCode()); + InvWarehouseEntity targetWarehouseEntity = invWarehouseService.findByInvSubByCode(invProductRationEntity.getSgInvCode()); + PurOrderEntity purOrderEntity = new PurOrderEntity(); + purOrderEntity.setCreateUser(invProductRationEntity.getCreateUser()); + purOrderEntity.setBillDate(new Date()); + purOrderEntity.setCreateTime(new Date()); + purOrderEntity.setUpdateTime(new Date()); + purOrderEntity.setBillType(ConstantStatus.BUS_ORDER_CPSG); + purOrderEntity.setStatus(invProductRationEntity.getBusAuditStatus()); + String billNo = gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.SG_ORDER, "yyyyMMdd")); + purOrderEntity.setBillNo(billNo); + purOrderEntity.setInvCode(targetWarehouseEntity.getCode()); + purOrderEntity.setApplyInv(curWarehouseEntity.getCode()); + purOrderEntity.setDeptCode(targetWarehouseEntity.getParentId()); + purOrderEntity.setRemark("定量不足生成"); + + List purOrderDetailEntities = new ArrayList<>(); + //生成单据详情 + for (InvProductRationEntity rationEntity : rationEntityList) { + + if (StrUtil.isNotEmpty(rationEntity.getBusOrder())) { + PurOrderEntity temp = purOrderService.selectByBillNo(rationEntity.getBusOrder()); + if (temp != null && IntUtil.value(temp.getStatus()) <= 2) { + continue; + } + } + + int count = IntUtil.value(rationEntity.getRationCount()) - IntUtil.value(rationEntity.getInvCount()); + if (count > 0) { + PurOrderDetailEntity purOrderDetailEntity = new PurOrderDetailEntity(); + purOrderDetailEntity.setOrderIdFk(purOrderEntity.getBillNo()); + purOrderDetailEntity.setProductId(rationEntity.getRelId()); + UdiRlSupResponse udiRlSupResponse = udiRlSupService.findByRelUnitFk(rationEntity.getRelId() + "", rationEntity.getSupId() + ""); + purOrderDetailEntity.setProductName(udiRlSupResponse.getCpmctymc()); + purOrderDetailEntity.setCount(count); + purOrderDetailEntity.setZczbhhzbapzbh(udiRlSupResponse.getZczbhhzbapzbh()); + purOrderDetailEntity.setSupId(rationEntity.getSupId() + ""); + purOrderDetailEntities.add(purOrderDetailEntity); + } + } + if (CollUtil.isNotEmpty(purOrderDetailEntities)) { + purOrderService.insert(purOrderEntity); + purOrderDetailService.saveBatch(purOrderDetailEntities); + invProductRationEntity.setBusOrder(billNo); + invProductRationMapper.updateById(invProductRationEntity); + } + } + ); + } + + @Resource + private IoOrderService orderService; + @Resource + IoOrderDetailBizService orderDetailBizService; + @Resource + private IBasicBussinessTypeService basicBussinessTypeService; + + /** + * 生成出入库单 + */ + public void genIoOrder(List rationEntities, BasicBussinessTypeEntity bussinessTypeEntity) { + + InvProductRationEntity invProductRationEntity = rationEntities.get(0); + IoOrderEntity orderEntity = new IoOrderEntity(); + InvWarehouseEntity curWarehouseEntity = invWarehouseService.findByInvSubByCode(invProductRationEntity.getCurInvCode()); + if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_INNOR) { + InvWarehouseEntity targetWarehouseEntity = invWarehouseService.findByInvSubByCode(invProductRationEntity.getSgInvCode()); + orderEntity.setFromInvCode(targetWarehouseEntity.getCode()); + orderEntity.setFromDeptCode(targetWarehouseEntity.getParentId()); + } else { + orderEntity.setFromCorp(invProductRationEntity.getSupId() + ""); + } + String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(bussinessTypeEntity.getPrefix()), "yyyyMMdd")); + orderEntity.setBillNo(orderNo); + orderEntity.setCorpOrderId(CustomUtil.getId()); + orderEntity.setAction(bussinessTypeEntity.getAction()); + orderEntity.setMainAction(bussinessTypeEntity.getMainAction()); + orderEntity.setRemark("定量不足自动生成"); + orderEntity.setDeptCode(curWarehouseEntity.getParentId()); + orderEntity.setInvCode(curWarehouseEntity.getCode()); + orderEntity.setFromType(ConstantStatus.FROM_CHANGE); + orderEntity.setStatus(invProductRationEntity.getAuditStatus() == 1 ? 1 : 3); + orderEntity.setDealStatus(orderEntity.getStatus()); + orderEntity.setCreateUser(invProductRationEntity.getCreateUser()); + orderEntity.setCreateTime(new Date()); + orderEntity.setUpdateUser(invProductRationEntity.getCreateUser()); + orderEntity.setUpdateTime(new Date()); + orderEntity.setCustomerId("110"); + orderEntity.setOrderType(1); + orderEntity.setExportStatus(0); + + //生成单据详情 + List orderDetailBizEntities = new ArrayList<>(); + for (InvProductRationEntity rationEntity : rationEntities) { + + if (StrUtil.isNotEmpty(rationEntity.getScanOrder())) { + IoOrderEntity temp = orderService.findByBillNo(rationEntity.getScanOrder()); + if (temp != null && IntUtil.value(temp.getStatus()) < 2) { + continue; + } + } + + + int count = IntUtil.value(rationEntity.getRationCount()) - IntUtil.value(rationEntity.getInvCount()); + if (count > 0) { + IoOrderDetailBizEntity orderDetailBizEntity = new IoOrderDetailBizEntity(); + orderDetailBizEntity.setOrderIdFk(orderEntity.getBillNo()); + orderDetailBizEntity.setBindRlFk(rationEntity.getRelId()); + UdiRlSupResponse udiRlSupResponse = udiRlSupService.findByRelUnitFk(rationEntity.getRelId() + "", rationEntity.getSupId() + ""); + orderDetailBizEntity.setUuidFk(udiRlSupResponse.getUuid()); + orderDetailBizEntity.setNameCode(udiRlSupResponse.getNameCode()); + orderDetailBizEntity.setCoName(udiRlSupResponse.getCpmctymc()); + orderDetailBizEntity.setYlqxzcrbarmc(udiRlSupResponse.getYlqxzcrbarmc()); + orderDetailBizEntity.setManufacturer(udiRlSupResponse.getManufactory()); + orderDetailBizEntity.setMeasname(udiRlSupResponse.getMeasname()); + orderDetailBizEntity.setSpec(udiRlSupResponse.getGgxh()); + orderDetailBizEntity.setPrice(new BigDecimal(udiRlSupResponse.getPrice())); + orderDetailBizEntity.setCount(count); + orderDetailBizEntity.setCertCode(udiRlSupResponse.getZczbhhzbapzbh()); + orderDetailBizEntity.setSupId(rationEntity.getSupId() + ""); + orderDetailBizService.insert(orderDetailBizEntity); + orderDetailBizEntities.add(orderDetailBizEntity); + } + } + if (CollUtil.isNotEmpty(orderDetailBizEntities)) { + orderService.insertOrder(orderEntity); + invProductRationEntity.setScanOrder(orderNo); + invProductRationMapper.updateById(invProductRationEntity); + + } + } + + +} diff --git a/src/main/java/com/glxp/api/service/inv/InvProductService.java b/src/main/java/com/glxp/api/service/inv/InvProductService.java deleted file mode 100644 index 3018275dd..000000000 --- a/src/main/java/com/glxp/api/service/inv/InvProductService.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.glxp.api.service.inv; - -import com.glxp.api.entity.inv.InvProductEntity; -import com.glxp.api.req.inv.FilterInvProductRequest; -import com.glxp.api.res.inv.InvProductResponse; - -import java.math.BigDecimal; -import java.util.List; - -public interface InvProductService { - - int insert(InvProductEntity invProductEntity); - - int update(InvProductEntity invProductEntity); - - - boolean updateBatch(List invProductEntities); - - InvProductEntity selectByUnique(Long relId, String batchNo, String supId, String deptCode, String invCode, BigDecimal price); - - InvProductEntity selectByUnique(Long relId, String batchNo, String supId); - - /** - * 库存查询 - * - * @param filterInvProductRequest - * @return - */ - List filterList(FilterInvProductRequest filterInvProductRequest); - - /** - * 库存查询过滤零库存和负库存 - * - * @param filterInvProductRequest - * @return - */ - List filterListStock(FilterInvProductRequest filterInvProductRequest); - - /** - * 库存查询 - * - * @param filterInvProductRequest - * @return - */ - List filterListProduct(FilterInvProductRequest filterInvProductRequest); - - List findGroupBySpace(FilterInvProductRequest filterInvProductRequest); - - /** - * 根据ID查询库存 - * - * @param id - * @return - */ - InvProductEntity findById(String id); - - /** - * 删除库存 - * - * @param id - * @return - */ - boolean deleteById(String id); - - /** - * 库存统计 - * - * @param filterInvProductRequest - * @return - */ - List stockStatistics(FilterInvProductRequest filterInvProductRequest); - - /** - * 库存养护查询库存产品详情 - * - * @param filterInvProductRequest - * @return - */ - List getInvMAProducts(FilterInvProductRequest filterInvProductRequest); - - /** - * 盘点单据查询库存产品信息列表 - * - * @param filterInvProductRequest - * @return - */ - List getCountInvProduct(FilterInvProductRequest filterInvProductRequest); - - /** - * 查询库存产品名称列表 - * - * @param filterInvProductRequest - * @return - */ - List filterProductNames(FilterInvProductRequest filterInvProductRequest); - - boolean isExitByRelId(String relId); - -} diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvProductServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvProductService.java similarity index 94% rename from src/main/java/com/glxp/api/service/inv/impl/InvProductServiceImpl.java rename to src/main/java/com/glxp/api/service/inv/impl/InvProductService.java index 5ba92fa7b..729209cb9 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvProductServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvProductService.java @@ -2,13 +2,14 @@ package com.glxp.api.service.inv.impl; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.inv.InvProductDao; import com.glxp.api.dao.inv.InvProductDetailDao; import com.glxp.api.entity.inv.InvProductEntity; import com.glxp.api.req.inv.FilterInvProductRequest; import com.glxp.api.res.inv.InvProductResponse; -import com.glxp.api.service.inv.InvProductService; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -19,30 +20,30 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class InvProductServiceImpl implements InvProductService { +public class InvProductService extends ServiceImpl { @Resource InvProductDao invProductDao; @Resource InvProductDetailDao invProductDetailDao; - @Override + public int insert(InvProductEntity invProductEntity) { invProductEntity.setId(null); return invProductDao.insert(invProductEntity); } - @Override + public int update(InvProductEntity invProductEntity) { return invProductDao.updateById(invProductEntity); } - @Override + public boolean updateBatch(List invProductEntities) { return invProductDao.updateBatchById(invProductEntities); } - @Override + public InvProductEntity selectByUnique(Long relId, String batchNo, String supId, String deptCode, String invCode, BigDecimal price) { return invProductDao.selectOne(new QueryWrapper().eq("relIdFk", relId) .eq(StrUtil.isNotEmpty(batchNo), "batchNo", batchNo).isNull(StrUtil.isEmpty(batchNo), "batchNo") @@ -53,13 +54,13 @@ public class InvProductServiceImpl implements InvProductService { ); } - @Override + public InvProductEntity selectByUnique(Long relId, String batchNo, String supId) { return invProductDao.selectOne(new QueryWrapper().eq("relIdFk", relId).eq(StrUtil.isNotEmpty(batchNo), "batchNo", batchNo) .isNull(StrUtil.isEmpty(batchNo), "batchNo").eq("supId", supId).last("limit 1")); } - @Override + public List filterList(FilterInvProductRequest filterInvProductRequest) { if (null == filterInvProductRequest) { return Collections.emptyList(); @@ -70,7 +71,7 @@ public class InvProductServiceImpl implements InvProductService { return invProductDao.filterProductList(filterInvProductRequest); } - @Override + public List filterListStock(FilterInvProductRequest filterInvProductRequest) { if (null == filterInvProductRequest) { return Collections.emptyList(); @@ -82,7 +83,6 @@ public class InvProductServiceImpl implements InvProductService { } - @Override public List filterListProduct(FilterInvProductRequest filterInvProductRequest) { if (null == filterInvProductRequest) { return Collections.emptyList(); @@ -93,7 +93,7 @@ public class InvProductServiceImpl implements InvProductService { return invProductDao.filterList(filterInvProductRequest); } - @Override + public List findGroupBySpace(FilterInvProductRequest filterInvProductRequest) { if (null == filterInvProductRequest) { return Collections.emptyList(); @@ -105,17 +105,17 @@ public class InvProductServiceImpl implements InvProductService { } - @Override + public InvProductEntity findById(String id) { return invProductDao.selectById(id); } - @Override + public boolean deleteById(String id) { return invProductDao.deleteById(id) == 1 ? true : false; } - @Override + public List stockStatistics(FilterInvProductRequest filterInvProductRequest) { if (null == filterInvProductRequest) { return Collections.emptyList(); @@ -126,7 +126,7 @@ public class InvProductServiceImpl implements InvProductService { return invProductDao.stockStatistics(filterInvProductRequest); } - @Override + public List getInvMAProducts(FilterInvProductRequest filterInvProductRequest) { if (null == filterInvProductRequest) { return Collections.emptyList(); @@ -137,7 +137,7 @@ public class InvProductServiceImpl implements InvProductService { return invProductDao.getMAInvProducts(filterInvProductRequest); } - @Override + public List getCountInvProduct(FilterInvProductRequest filterInvProductRequest) { if (null == filterInvProductRequest) { return Collections.emptyList(); @@ -148,7 +148,7 @@ public class InvProductServiceImpl implements InvProductService { return invProductDao.getCountInvProduct(filterInvProductRequest); } - @Override + public List filterProductNames(FilterInvProductRequest filterInvProductRequest) { if (null == filterInvProductRequest) { return Collections.emptyList(); @@ -159,10 +159,19 @@ public class InvProductServiceImpl implements InvProductService { return invProductDao.filterProductNames(filterInvProductRequest); } - @Override + public boolean isExitByRelId(String relId) { return invProductDao.exists(new QueryWrapper().eq("relIdFk", relId)); } + /** + * 获取在库数量 + * + * @return + */ + public Integer selectExitCount(String invCode, Long supId, Long relIdFk) { + return invProductDao.selectExitCount(invCode, supId, relIdFk); + } + } diff --git a/src/main/java/com/glxp/api/service/purchase/PurApplyDetailService.java b/src/main/java/com/glxp/api/service/purchase/PurApplyDetailService.java deleted file mode 100644 index 269f50b6d..000000000 --- a/src/main/java/com/glxp/api/service/purchase/PurApplyDetailService.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.glxp.api.service.purchase; - - -import com.glxp.api.entity.purchase.PurApplyDetailEntity; -import com.glxp.api.req.purchase.PurApplyDetailRequest; -import com.glxp.api.res.purchase.PurOrderDetailResponse; - -import java.util.List; - -public interface PurApplyDetailService { - - List queryPageList(PurApplyDetailRequest purApplyRequest); - - List findByOrderId(String orderId); - - List joinQueryList(PurApplyDetailRequest purApplyRequest); - - - Boolean insert(PurApplyDetailEntity purApplyRequest); - - Boolean update(PurApplyDetailEntity purApplyRequest); - - Boolean deleteByIds(List ids); - - Boolean deleteByOrderId(String orderIdfK); - - List selectPurApplyDetailList(PurApplyDetailRequest purApplyRequest); - - boolean insertPurApplyDetailEntity(List purApplyDetailEntityList); - - /** - * 查询申购单据明细列表 - * - * @param purApplyDetailRequest - * @return - */ - List getDetailList(PurApplyDetailRequest purApplyDetailRequest); -} diff --git a/src/main/java/com/glxp/api/service/purchase/PurApplyService.java b/src/main/java/com/glxp/api/service/purchase/PurApplyService.java deleted file mode 100644 index 39e47983c..000000000 --- a/src/main/java/com/glxp/api/service/purchase/PurApplyService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.glxp.api.service.purchase; - - - -import com.glxp.api.entity.purchase.PurApplyEntity; -import com.glxp.api.req.purchase.PurApplyRequest; -import com.glxp.api.res.purchase.PurApplyResponse; - -import java.util.List; - -public interface PurApplyService { - - List queryPageList(PurApplyRequest purApplyRequest); - - Integer insert(PurApplyEntity purApplyEntity); - - Boolean update(PurApplyEntity purApplyRequest); - - Boolean deleteByIds(List ids); - - Boolean deleteById(long id); -} diff --git a/src/main/java/com/glxp/api/service/purchase/PurOrderDetailService.java b/src/main/java/com/glxp/api/service/purchase/PurOrderDetailService.java deleted file mode 100644 index 02e942442..000000000 --- a/src/main/java/com/glxp/api/service/purchase/PurOrderDetailService.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.glxp.api.service.purchase; - - -import com.glxp.api.entity.basic.BasicCorpEntity; -import com.glxp.api.entity.basic.BasicProductsEntity; -import com.glxp.api.entity.purchase.PurOrderDetailEntity; -import com.glxp.api.req.purchase.PurOrderDetailRequest; -import com.glxp.api.res.purchase.PurOrderDetailResponse; - -import java.util.List; - -public interface PurOrderDetailService { - - List joinQueryList(PurOrderDetailRequest purOrderDetailRequest); - - - List findByOrderId(String orderId); - - List queryPageList(PurOrderDetailRequest purOrderDetailRequest); - - List getPurOrderDetailEntityList(PurOrderDetailRequest purOrderDetailRequest); - - Boolean insert(PurOrderDetailEntity purOrderDetailEntity); - - Boolean update(PurOrderDetailEntity purOrderDetailEntity); - - Boolean deleteByIds(List ids); - - Boolean deleteByOrderId(String orderIdfK); - - boolean insertPurOrderDetailEntity(List purOrderDetailEntityList); - - BasicProductsEntity selectIoOrderDetailBiz(long id); - - List getDetailList(PurOrderDetailRequest purOrderDetailRequest); - - List selectsupList(PurOrderDetailEntity purOrderDetailEntity); -} diff --git a/src/main/java/com/glxp/api/service/purchase/PurPlanDetailService.java b/src/main/java/com/glxp/api/service/purchase/PurPlanDetailService.java deleted file mode 100644 index 4020566e8..000000000 --- a/src/main/java/com/glxp/api/service/purchase/PurPlanDetailService.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.glxp.api.service.purchase; - - -import com.glxp.api.entity.basic.BasicProductsEntity; -import com.glxp.api.entity.purchase.PurPlanDetailEntity; -import com.glxp.api.req.purchase.PurPlanDetailRequest; -import com.glxp.api.res.purchase.PurOrderDetailResponse; - -import java.util.List; - -public interface PurPlanDetailService { - - List joinQueryList(PurPlanDetailRequest purApplyRequest); - - - List findByOrderId(String orderId); - - List queryPageList(PurPlanDetailRequest purPlanDetailRequest); - - List getPurPlanDetailEntityList(PurPlanDetailRequest purPlanDetailRequest); - - Boolean insert(PurPlanDetailEntity purPlanDetailRequest); - - Boolean update(PurPlanDetailEntity purPlanDetailRequest); - - Boolean deleteByIds(List ids); - - Boolean deleteByOrderId(String orderIdfK); - - boolean insertPurPlanDetailEntity(List purPlanDetailEntityList); - - BasicProductsEntity selectIoOrderDetailBiz(long id); - - List getDetailList(PurPlanDetailRequest purPlanDetailRequest); -} diff --git a/src/main/java/com/glxp/api/service/purchase/impl/PurApplyDetailImplService.java b/src/main/java/com/glxp/api/service/purchase/impl/PurApplyDetailService.java similarity index 90% rename from src/main/java/com/glxp/api/service/purchase/impl/PurApplyDetailImplService.java rename to src/main/java/com/glxp/api/service/purchase/impl/PurApplyDetailService.java index 61dcc2da4..1bdcbf8b0 100644 --- a/src/main/java/com/glxp/api/service/purchase/impl/PurApplyDetailImplService.java +++ b/src/main/java/com/glxp/api/service/purchase/impl/PurApplyDetailService.java @@ -1,11 +1,13 @@ package com.glxp.api.service.purchase.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; +import com.glxp.api.dao.inv.InvProductRationMapper; import com.glxp.api.dao.purchase.PurApplyDetailDao; +import com.glxp.api.entity.inv.InvProductRationEntity; import com.glxp.api.entity.purchase.PurApplyDetailEntity; import com.glxp.api.req.purchase.PurApplyDetailRequest; import com.glxp.api.res.purchase.PurOrderDetailResponse; -import com.glxp.api.service.purchase.PurApplyDetailService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -15,13 +17,13 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class PurApplyDetailImplService implements PurApplyDetailService { +public class PurApplyDetailService extends ServiceImpl { @Resource PurApplyDetailDao purApplyDetailDao; - @Override + public List queryPageList(PurApplyDetailRequest purApplyRequest) { if (purApplyRequest == null) { return Collections.emptyList(); @@ -34,7 +36,7 @@ public class PurApplyDetailImplService implements PurApplyDetailService { return data; } - @Override + public List findByOrderId(String orderId) { if (orderId == null) { return null; @@ -45,7 +47,7 @@ public class PurApplyDetailImplService implements PurApplyDetailService { return data; } - @Override + public List joinQueryList(PurApplyDetailRequest purApplyRequest) { if (purApplyRequest == null) { return Collections.emptyList(); @@ -58,37 +60,37 @@ public class PurApplyDetailImplService implements PurApplyDetailService { return data; } - @Override - public Boolean insert(PurApplyDetailEntity purApplyRequest) { + + public int insert(PurApplyDetailEntity purApplyRequest) { return purApplyDetailDao.insert(purApplyRequest); } - @Override + public Boolean update(PurApplyDetailEntity purApplyRequest) { return purApplyDetailDao.update(purApplyRequest); } - @Override + public Boolean deleteByIds(List ids) { return purApplyDetailDao.deleteByIds(ids); } - @Override + public Boolean deleteByOrderId(String orderIdfK) { return purApplyDetailDao.deleteByOrderId(orderIdfK); } - @Override + public List selectPurApplyDetailList(PurApplyDetailRequest purApplyRequest) { return purApplyDetailDao.queryPageList(purApplyRequest); } - @Override + public boolean insertPurApplyDetailEntity(List purApplyDetailEntityList) { return purApplyDetailDao.insertPurApplyDetailEntity(purApplyDetailEntityList); } - @Override + public List getDetailList(PurApplyDetailRequest purApplyDetailRequest) { if (purApplyDetailRequest == null) { return Collections.emptyList(); @@ -102,5 +104,4 @@ public class PurApplyDetailImplService implements PurApplyDetailService { } - } diff --git a/src/main/java/com/glxp/api/service/purchase/impl/PurApplyServiceImpl.java b/src/main/java/com/glxp/api/service/purchase/impl/PurApplyService.java similarity index 75% rename from src/main/java/com/glxp/api/service/purchase/impl/PurApplyServiceImpl.java rename to src/main/java/com/glxp/api/service/purchase/impl/PurApplyService.java index e6a2717f2..600b5426b 100644 --- a/src/main/java/com/glxp/api/service/purchase/impl/PurApplyServiceImpl.java +++ b/src/main/java/com/glxp/api/service/purchase/impl/PurApplyService.java @@ -1,11 +1,14 @@ package com.glxp.api.service.purchase.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; +import com.glxp.api.dao.inout.ReceiveDao; import com.glxp.api.dao.purchase.PurApplyDao; +import com.glxp.api.entity.inout.PurReceiveEntity; import com.glxp.api.entity.purchase.PurApplyEntity; import com.glxp.api.req.purchase.PurApplyRequest; import com.glxp.api.res.purchase.PurApplyResponse; -import com.glxp.api.service.purchase.PurApplyService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -15,12 +18,16 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class PurApplyServiceImpl implements PurApplyService { +public class PurApplyService extends ServiceImpl { @Resource PurApplyDao purApplyDao; - @Override + + public PurApplyEntity selectByBillNo(String billNo) { + return purApplyDao.selectOne(new QueryWrapper().eq("billNo", billNo).last("limit 1")); + } + public List queryPageList(PurApplyRequest purApplyRequest) { if (purApplyRequest == null) { return Collections.emptyList(); @@ -33,22 +40,22 @@ public class PurApplyServiceImpl implements PurApplyService { return data; } - @Override + public Integer insert(PurApplyEntity purApplyEntity) { return purApplyDao.insert(purApplyEntity); } - @Override + public Boolean update(PurApplyEntity purApplyRequest) { return purApplyDao.update(purApplyRequest); } - @Override + public Boolean deleteByIds(List ids) { return purApplyDao.deleteByIds(ids); } - @Override + public Boolean deleteById(long id) { return purApplyDao.deleteById(id); } diff --git a/src/main/java/com/glxp/api/service/purchase/impl/PurOrderDetailServiceImpl.java b/src/main/java/com/glxp/api/service/purchase/impl/PurOrderDetailService.java similarity index 91% rename from src/main/java/com/glxp/api/service/purchase/impl/PurOrderDetailServiceImpl.java rename to src/main/java/com/glxp/api/service/purchase/impl/PurOrderDetailService.java index 02ccb226e..bf152441c 100644 --- a/src/main/java/com/glxp/api/service/purchase/impl/PurOrderDetailServiceImpl.java +++ b/src/main/java/com/glxp/api/service/purchase/impl/PurOrderDetailService.java @@ -1,13 +1,15 @@ package com.glxp.api.service.purchase.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; +import com.glxp.api.dao.inv.InvProductRationMapper; import com.glxp.api.dao.purchase.PurOrderDetailDao; import com.glxp.api.entity.basic.BasicCorpEntity; import com.glxp.api.entity.basic.BasicProductsEntity; +import com.glxp.api.entity.inv.InvProductRationEntity; import com.glxp.api.entity.purchase.PurOrderDetailEntity; import com.glxp.api.req.purchase.PurOrderDetailRequest; import com.glxp.api.res.purchase.PurOrderDetailResponse; -import com.glxp.api.service.purchase.PurOrderDetailService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -17,12 +19,12 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class PurOrderDetailServiceImpl implements PurOrderDetailService { +public class PurOrderDetailService extends ServiceImpl { @Resource PurOrderDetailDao purOrderDetailDao; - @Override + public List joinQueryList(PurOrderDetailRequest purOrderDetailRequest) { if (purOrderDetailRequest == null) { return Collections.emptyList(); @@ -35,7 +37,7 @@ public class PurOrderDetailServiceImpl implements PurOrderDetailService { return data; } - @Override + public List findByOrderId(String orderId) { PurOrderDetailRequest purOrderDetailRequest = new PurOrderDetailRequest(); purOrderDetailRequest.setOrderIdFk(orderId); @@ -43,7 +45,7 @@ public class PurOrderDetailServiceImpl implements PurOrderDetailService { return data; } - @Override + public List queryPageList(PurOrderDetailRequest purOrderDetailRequest) { if (purOrderDetailRequest == null) { return Collections.emptyList(); @@ -56,43 +58,43 @@ public class PurOrderDetailServiceImpl implements PurOrderDetailService { return data; } - @Override + public List getPurOrderDetailEntityList(PurOrderDetailRequest purOrderDetailRequest) { return purOrderDetailDao.queryPageList(purOrderDetailRequest); } - @Override + public Boolean insert(PurOrderDetailEntity purOrderDetailEntity) { - return purOrderDetailDao.insert(purOrderDetailEntity)>0 ? true:false; + return purOrderDetailDao.insert(purOrderDetailEntity) > 0 ? true : false; } - @Override + public Boolean update(PurOrderDetailEntity purOrderDetailEntity) { return purOrderDetailDao.update(purOrderDetailEntity); } - @Override + public Boolean deleteByIds(List ids) { return purOrderDetailDao.deleteByIds(ids); } - @Override + public Boolean deleteByOrderId(String orderIdfK) { return purOrderDetailDao.deleteByOrderId(orderIdfK); } - @Override + public boolean insertPurOrderDetailEntity(List purOrderDetailEntityList) { return purOrderDetailDao.insertPurOrderDetailEntity(purOrderDetailEntityList); } - @Override + public BasicProductsEntity selectIoOrderDetailBiz(long id) { return purOrderDetailDao.selectIoOrderDetailBiz(id); } - @Override + public List getDetailList(PurOrderDetailRequest purOrderDetailRequest) { if (null == purOrderDetailRequest) { return Collections.emptyList(); @@ -103,7 +105,7 @@ public class PurOrderDetailServiceImpl implements PurOrderDetailService { return purOrderDetailDao.selectDetailList(purOrderDetailRequest); } - @Override + public List selectsupList(PurOrderDetailEntity purOrderDetailEntity) { return purOrderDetailDao.selectsupList(purOrderDetailEntity); } diff --git a/src/main/java/com/glxp/api/service/purchase/impl/PurPlanDetailServiceImpl.java b/src/main/java/com/glxp/api/service/purchase/impl/PurPlanDetailService.java similarity index 90% rename from src/main/java/com/glxp/api/service/purchase/impl/PurPlanDetailServiceImpl.java rename to src/main/java/com/glxp/api/service/purchase/impl/PurPlanDetailService.java index 0f67cd611..e654fa199 100644 --- a/src/main/java/com/glxp/api/service/purchase/impl/PurPlanDetailServiceImpl.java +++ b/src/main/java/com/glxp/api/service/purchase/impl/PurPlanDetailService.java @@ -1,12 +1,14 @@ package com.glxp.api.service.purchase.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; +import com.glxp.api.dao.inv.InvProductRationMapper; import com.glxp.api.dao.purchase.PurPlanDetailDao; import com.glxp.api.entity.basic.BasicProductsEntity; +import com.glxp.api.entity.inv.InvProductRationEntity; import com.glxp.api.entity.purchase.PurPlanDetailEntity; import com.glxp.api.req.purchase.PurPlanDetailRequest; import com.glxp.api.res.purchase.PurOrderDetailResponse; -import com.glxp.api.service.purchase.PurPlanDetailService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -16,12 +18,12 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class PurPlanDetailServiceImpl implements PurPlanDetailService { +public class PurPlanDetailService extends ServiceImpl { @Resource PurPlanDetailDao purPlanDetailDao; - @Override + public List joinQueryList(PurPlanDetailRequest purApplyRequest) { if (purApplyRequest == null) { return Collections.emptyList(); @@ -34,7 +36,7 @@ public class PurPlanDetailServiceImpl implements PurPlanDetailService { return data; } - @Override + public List findByOrderId(String orderId) { PurPlanDetailRequest purPlanDetailRequest = new PurPlanDetailRequest(); purPlanDetailRequest.setOrderIdFk(orderId); @@ -42,7 +44,7 @@ public class PurPlanDetailServiceImpl implements PurPlanDetailService { return data; } - @Override + public List queryPageList(PurPlanDetailRequest purPlanDetailRequest) { if (purPlanDetailRequest == null) { return Collections.emptyList(); @@ -55,43 +57,43 @@ public class PurPlanDetailServiceImpl implements PurPlanDetailService { return data; } - @Override + public List getPurPlanDetailEntityList(PurPlanDetailRequest purPlanDetailRequest) { return purPlanDetailDao.queryPageList(purPlanDetailRequest); } - @Override - public Boolean insert(PurPlanDetailEntity purPlanDetailRequest) { + + public int insert(PurPlanDetailEntity purPlanDetailRequest) { return purPlanDetailDao.insert(purPlanDetailRequest); } - @Override + public Boolean update(PurPlanDetailEntity purPlanDetailRequest) { return purPlanDetailDao.update(purPlanDetailRequest); } - @Override + public Boolean deleteByIds(List ids) { return purPlanDetailDao.deleteByIds(ids); } - @Override + public Boolean deleteByOrderId(String orderIdfK) { return purPlanDetailDao.deleteByOrderId(orderIdfK); } - @Override + public boolean insertPurPlanDetailEntity(List purPlanDetailEntityList) { return purPlanDetailDao.insertPurPlanDetailEntity(purPlanDetailEntityList); } - @Override + public BasicProductsEntity selectIoOrderDetailBiz(long id) { return purPlanDetailDao.selectIoOrderDetailBiz(id); } - @Override + public List getDetailList(PurPlanDetailRequest purPlanDetailRequest) { if (null == purPlanDetailRequest) { return Collections.emptyList(); diff --git a/src/main/java/com/glxp/api/service/sync/UpBasicService.java b/src/main/java/com/glxp/api/service/sync/UpBasicService.java index 1c119e37b..28a879f04 100644 --- a/src/main/java/com/glxp/api/service/sync/UpBasicService.java +++ b/src/main/java/com/glxp/api/service/sync/UpBasicService.java @@ -1,6 +1,7 @@ package com.glxp.api.service.sync; import com.glxp.api.service.inout.impl.IoCodeService; +import com.glxp.api.service.purchase.impl.PurOrderDetailService; import org.springframework.beans.BeanUtils; import cn.hutool.core.collection.CollUtil; import com.glxp.api.constant.ConstantStatus; @@ -26,12 +27,10 @@ import com.glxp.api.service.basic.IBasicBusTypePreService; import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.inout.*; import com.glxp.api.service.inout.impl.IoOrderInvoiceService; -import com.glxp.api.service.purchase.PurOrderDetailService; import com.glxp.api.service.purchase.PurOrderService; import com.glxp.api.service.system.*; import com.glxp.api.service.thrsys.IThrBusTypeOriginService; import com.glxp.api.util.MsDateUtil; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; diff --git a/src/main/java/com/glxp/api/task/AsyncUdiTask.java b/src/main/java/com/glxp/api/task/AsyncInvRationTask.java similarity index 54% rename from src/main/java/com/glxp/api/task/AsyncUdiTask.java rename to src/main/java/com/glxp/api/task/AsyncInvRationTask.java index c00ae3170..a88c4f77e 100644 --- a/src/main/java/com/glxp/api/task/AsyncUdiTask.java +++ b/src/main/java/com/glxp/api/task/AsyncInvRationTask.java @@ -2,53 +2,65 @@ package com.glxp.api.task; import javax.annotation.Resource; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.thread.ThreadUtil; +import com.glxp.api.entity.inv.InvProductRationEntity; +import com.glxp.api.service.inv.InvProductRationService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import org.springframework.scheduling.support.CronTrigger; -import org.springframework.stereotype.Component; import com.glxp.api.dao.schedule.ScheduledDao; import com.glxp.api.entity.system.ScheduledEntity; import com.glxp.api.idc.service.IdcService; import com.glxp.api.req.system.ScheduledRequest; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + -// -//@Component -//@EnableScheduling -public class AsyncUdiTask implements SchedulingConfigurer { +@Component +@EnableScheduling +public class AsyncInvRationTask implements SchedulingConfigurer { - final Logger logger = LoggerFactory.getLogger(AsyncUdiTask.class); + final Logger logger = LoggerFactory.getLogger(AsyncInvRationTask.class); @Resource private ScheduledDao scheduledDao; - @Resource - private IdcService idcService; + InvProductRationService invProductRationService; @Override public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { scheduledTaskRegistrar.addTriggerTask(() -> process(), triggerContext -> { ScheduledRequest scheduledRequest = new ScheduledRequest(); - scheduledRequest.setCronName("syncIdcUdi"); - logger.info("syncIdcUdi----------------"); + scheduledRequest.setCronName("syncInvRation"); ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest); - String cron = scheduledEntity != null ? scheduledEntity.getCron() : "0 0/1 * * * ?"; - + String cron = scheduledEntity != null ? scheduledEntity.getCron() : "0 0/10 * * * ?"; if (cron.isEmpty()) { logger.error("cron is null"); } - logger.info("syncIdcUdi----------------"); return new CronTrigger(cron).nextExecutionTime(triggerContext); }); } private void process() { - logger.info("syncIdcUdi----process------------"); - idcService.asyncUdiTask(); + ThreadUtil.execAsync(() -> { + List invProductRationEntities = invProductRationService.list(); + if (CollUtil.isNotEmpty(invProductRationEntities)) { + Map> stringListMap = invProductRationEntities.stream() + .collect(Collectors.groupingBy(item -> item.getCurInvCode())); + stringListMap.forEach((key, rationEntityList) -> { + invProductRationService.genOrder(rationEntityList); + }); + } + }); } } diff --git a/src/main/java/com/glxp/api/task/VailInvTask.java b/src/main/java/com/glxp/api/task/VailInvTask.java index b1bb007ee..52ba06a00 100644 --- a/src/main/java/com/glxp/api/task/VailInvTask.java +++ b/src/main/java/com/glxp/api/task/VailInvTask.java @@ -12,13 +12,11 @@ import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.inv.InvProductResponse; import com.glxp.api.service.inv.InvPreProductService; import com.glxp.api.service.inv.InvPreinProductService; -import com.glxp.api.service.inv.InvProductService; +import com.glxp.api.service.inv.impl.InvProductService; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import org.springframework.scheduling.support.CronTrigger; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; diff --git a/src/main/resources/mybatis/mapper/inv/InvProductRationMapper.xml b/src/main/resources/mybatis/mapper/inv/InvProductRationMapper.xml new file mode 100644 index 000000000..d388d3e60 --- /dev/null +++ b/src/main/resources/mybatis/mapper/inv/InvProductRationMapper.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, relId, rationCount, invCount, busType, scanType, curInvCode, lyInvCode, sgInvCode, + jhInvCode, cgInvCode, fromInvCode, updateTime, updateUser, createTime, `createUser`, + remark + + + + + diff --git a/src/main/resources/mybatis/mapper/inv/invProductDao.xml b/src/main/resources/mybatis/mapper/inv/invProductDao.xml index ee7fb4730..d59f6db80 100644 --- a/src/main/resources/mybatis/mapper/inv/invProductDao.xml +++ b/src/main/resources/mybatis/mapper/inv/invProductDao.xml @@ -493,4 +493,20 @@ having reCount > 0 order by ip.updateTime desc + +