From 9c6b03fb1bd140191763cad7452d93040ce48d79 Mon Sep 17 00:00:00 2001 From: chenhc <2369838784@qq.com> Date: Mon, 15 Apr 2024 18:01:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9C=AF=E5=A3=AB=E5=A5=97=E5=8C=85?= =?UTF-8?q?=E3=80=81=E5=AE=9A=E6=95=B0=E5=8C=85=E5=8A=9F=E8=83=BD=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inout/IoOrderDetailBizController.java | 8 + .../inout/AddWarlockBagProductReqeust.java | 17 ++ .../service/basic/BasicSkProjectService.java | 13 ++ .../inout/IoOrderDetailBizService.java | 3 + .../IoDestinyProcessDetailServiceImpl.java | 6 +- .../impl/IoOrderDetailBizServiceImpl.java | 158 ++++++++++++++++++ src/main/resources/application-dev.yml | 2 +- 7 files changed, 203 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/glxp/api/req/inout/AddWarlockBagProductReqeust.java 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 2cd114e6a..2a696605a 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java @@ -810,5 +810,13 @@ public class IoOrderDetailBizController extends BaseController { return ResultVOUtils.page(pageInfo); } + //录入业务单据详情 + @AuthRuleAnnotation("") + @PostMapping("/udiwms/inout/order/addWarlockBagProduct") + @Log(title = "单据管理", businessType = BusinessType.INSERT) + public BaseResponse addWarlockBagProduct(@RequestBody AddWarlockBagProductReqeust addWarlockBagProductReqeust) { + IoOrderEntity orderEntity = orderDetailBizService.addWarlockBagProduct(addWarlockBagProductReqeust); + return ResultVOUtils.success(orderEntity); + } } diff --git a/src/main/java/com/glxp/api/req/inout/AddWarlockBagProductReqeust.java b/src/main/java/com/glxp/api/req/inout/AddWarlockBagProductReqeust.java new file mode 100644 index 000000000..54aff56a0 --- /dev/null +++ b/src/main/java/com/glxp/api/req/inout/AddWarlockBagProductReqeust.java @@ -0,0 +1,17 @@ +package com.glxp.api.req.inout; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.glxp.api.entity.inout.IoOrderEntity; +import lombok.Data; + +import java.util.List; + +@Data +public class AddWarlockBagProductReqeust { + + private IoOrderEntity orderEntity; + + @TableField(value = "id") + private String id; + +} diff --git a/src/main/java/com/glxp/api/service/basic/BasicSkProjectService.java b/src/main/java/com/glxp/api/service/basic/BasicSkProjectService.java index 5d97d4092..913f4a263 100644 --- a/src/main/java/com/glxp/api/service/basic/BasicSkProjectService.java +++ b/src/main/java/com/glxp/api/service/basic/BasicSkProjectService.java @@ -1,7 +1,11 @@ package com.glxp.api.service.basic; import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; +import com.glxp.api.dao.basic.BasicDestinyRelMapper; +import com.glxp.api.entity.basic.BasicSkPrescribeItemEntity; +import com.glxp.api.entity.basic.BasicSkProjectDetailEntity; import com.glxp.api.entity.thrsys.ThrProductsEntity; import com.glxp.api.req.basic.AddProductRequest; import com.glxp.api.req.basic.BasicSkProjectRequest; @@ -28,6 +32,8 @@ public class BasicSkProjectService extends ServiceImpl selectListByPId(String pId) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("pId", pId); + List basicSkPrescribeItemEntities = basicDestinyRelMapper.selectList(qw); + return basicSkPrescribeItemEntities; + } } diff --git a/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java b/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java index e168fc882..d0ee98d5d 100644 --- a/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java +++ b/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java @@ -2,6 +2,8 @@ package com.glxp.api.service.inout; import com.glxp.api.entity.inout.IoOrderDetailBizEntity; import com.glxp.api.entity.inout.IoOrderDetailResultEntity; +import com.glxp.api.entity.inout.IoOrderEntity; +import com.glxp.api.req.inout.AddWarlockBagProductReqeust; import com.glxp.api.req.inout.FilterOrderDetailBizRequest; import com.glxp.api.req.inout.FilterOrderDetailCodeRequest; import com.glxp.api.res.inout.IoOrderDetailBizResponse; @@ -62,4 +64,5 @@ public interface IoOrderDetailBizService { Boolean batchInsertBizs(List bizEntities); + IoOrderEntity addWarlockBagProduct(AddWarlockBagProductReqeust addWarlockBagProductReqeust); } diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoDestinyProcessDetailServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoDestinyProcessDetailServiceImpl.java index 8bc264265..3543aea5a 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoDestinyProcessDetailServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoDestinyProcessDetailServiceImpl.java @@ -131,12 +131,12 @@ public class IoDestinyProcessDetailServiceImpl implements IoDestinyProcessDetail String code = basicSkProjectEntity.getCode(); if (StrUtil.isNotEmpty(maxDestinyNo)){ //解析加1 - String newString = maxDestinyNo.replace(code, ""); + String newString = maxDestinyNo.replace("#"+code+"####", ""); long parseLong = Long.parseLong(newString); - return code+ StringUtils.padl(parseLong+1,8); + return "#"+code+"####"+ StringUtils.padl(parseLong+1,8); }else { //初始化 - return code+"00000001"; + return "#"+code+"####"+"00000001"; } } diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailBizServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailBizServiceImpl.java index a819046fc..0bd5dc16c 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailBizServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailBizServiceImpl.java @@ -5,29 +5,52 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.constant.Constant; +import com.glxp.api.constant.ConstantStatus; import com.glxp.api.dao.inout.IoOrderDetailBizDao; +import com.glxp.api.entity.auth.AuthAdmin; +import com.glxp.api.entity.auth.InvWarehouseEntity; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; +import com.glxp.api.entity.basic.BasicSkPrescribeItemEntity; +import com.glxp.api.entity.basic.BasicSkProjectDetailEntity; import com.glxp.api.entity.inout.IoOrderDetailBizEntity; import com.glxp.api.entity.inout.IoOrderDetailCodeEntity; import com.glxp.api.entity.inout.IoOrderDetailResultEntity; import com.glxp.api.entity.inout.IoOrderEntity; +import com.glxp.api.entity.system.SystemParamConfigEntity; +import com.glxp.api.exception.JsonException; +import com.glxp.api.req.inout.AddBizProductReqeust; +import com.glxp.api.req.inout.AddWarlockBagProductReqeust; import com.glxp.api.req.inout.FilterOrderDetailBizRequest; import com.glxp.api.req.inout.FilterOrderDetailCodeRequest; +import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.res.inout.IoOrderDetailBizResponse; import com.glxp.api.res.inout.IoOrderDetailCodeResponse; import com.glxp.api.res.inout.IoOrderDetailResultResponse; import com.glxp.api.res.inout.IoOrderInvoiceResponse; +import com.glxp.api.service.auth.CustomerService; +import com.glxp.api.service.auth.InvWarehouseService; +import com.glxp.api.service.basic.BasicSkPrescirbeDetailService; +import com.glxp.api.service.basic.BasicSkProjectService; import com.glxp.api.service.basic.IBasicBussinessTypeService; +import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.inout.IoCheckInoutService; import com.glxp.api.service.inout.IoOrderDetailBizService; import com.glxp.api.service.inout.IoOrderDetailCodeService; import com.glxp.api.service.inout.IoOrderService; +import com.glxp.api.service.system.SystemParamConfigService; +import com.glxp.api.util.GennerOrderUtils; +import com.glxp.api.util.IntUtil; +import com.glxp.api.util.OrderNoTypeBean; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Collections; +import java.util.Date; import java.util.List; @Service @@ -37,6 +60,23 @@ public class IoOrderDetailBizServiceImpl implements IoOrderDetailBizService { @Resource @Lazy IoOrderDetailBizDao ioOrderDetailBizDao; + @Resource + SystemParamConfigService systemParamConfigService; + @Resource + CustomerService customerService; + @Resource + private IBasicBussinessTypeService basicBussinessTypeService; + @Resource + InvWarehouseService invWarehouseService; + @Resource + GennerOrderUtils gennerOrderUtils; + @Resource + BasicSkProjectService basicSkProjectService; + @Resource + private UdiRelevanceService udiRelevanceService; + @Resource + IoOrderDetailBizService orderDetailBizService; + @Override public IoOrderDetailBizEntity selectById(Long id) { @@ -154,6 +194,124 @@ public class IoOrderDetailBizServiceImpl implements IoOrderDetailBizService { return ioOrderDetailBizDao.insertBatch(bizEntities); } + @Override + public IoOrderEntity addWarlockBagProduct(AddWarlockBagProductReqeust addWarlockBagProductReqeust) { + SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey("vail_product_cert"); +// boolean isVailCert = systemParamConfigEntity.getParamValue().equals("1") ? true : false; + AuthAdmin authAdmin = customerService.getUserBean(); + if (addWarlockBagProductReqeust.getId() == null ) + throw new JsonException("未选择术士组套信息"); + if (addWarlockBagProductReqeust.getOrderEntity() == null) + throw new JsonException(500, "未指定订单"); + IoOrderEntity orderEntity = addWarlockBagProductReqeust.getOrderEntity(); + IoOrderEntity isExit = orderService.findByBillNo(orderEntity.getBillNo()); + if (StrUtil.isEmpty(orderEntity.getBillNo()) || isExit == null) { + BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction()); + InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(orderEntity.getInvCode()); + String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(bussinessTypeEntity.getPrefix()), "yyyyMMdd")); + orderEntity.setBillNo(orderNo); + orderEntity.setCreateUser(authAdmin.getId() + ""); + orderEntity.setCreateTime(new Date()); + orderEntity.setMainAction(bussinessTypeEntity.getMainAction()); + if (StrUtil.isNotEmpty(orderEntity.getFromInvCode())) { + InvWarehouseEntity fromEntity = invWarehouseService.findByInvSubByCode(orderEntity.getInvCode()); + orderEntity.setFromDeptCode(fromEntity.getParentId()); + } + orderEntity.setFromType(ConstantStatus.FROM_WEBNEW); + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE); + orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_DRAFT); + orderEntity.setCreateUser(authAdmin.getId() + ""); + orderEntity.setCreateTime(new Date()); + orderEntity.setUpdateUser(authAdmin.getId() + ""); + orderEntity.setUpdateTime(new Date()); + orderEntity.setCustomerId(authAdmin.getCustomerId() + ""); + orderEntity.setDeptCode(invWarehouseEntity.getParentId()); + orderEntity.setInvCode(orderEntity.getInvCode()); + orderEntity.setBusType(bussinessTypeEntity.getBusType()); + orderService.insertOrder(orderEntity); + } + String pId = addWarlockBagProductReqeust.getId(); + List list = basicSkProjectService.selectListByPId(pId); + if (CollUtil.isEmpty(list)) throw new JsonException("术士套包数据为空!"); + List datas = new ArrayList<>(); + list.forEach( x -> { + AddBizProductReqeust addBizProductReqeust = new AddBizProductReqeust(); + addBizProductReqeust.setOrderEntity(orderEntity); + addBizProductReqeust.setSupId(String.valueOf(x.getSupId())); + addBizProductReqeust.setRelId(x.getRelId()); + // TODO: 2024/4/15 单据数量 需要添加进去 页面效果需要优化 其他页面需要使用到 术士组套 该功能 + datas.add(addBizProductReqeust); + }); + + for (AddBizProductReqeust item : datas) { + UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectSupGroupById(item.getRelId(), item.getSupId()); + BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction()); + + //是否校验产品采购类型 :1:校验;2.无需校验 + if(IntUtil.value(bussinessTypeEntity.getVailProductAttributes()) == 1){ + Integer purType = IntUtil.value(udiRelevanceResponse.getPurType()); //1:普通入账产品;2.预验收产品。3:寄售产品 + int actionType = IntUtil.value(bussinessTypeEntity.getActionType()); //1:带票(正常);2.预验收。3:寄售 + if (purType != actionType){ + //包装友好提示 + String msg = ""; + switch (actionType) { + case 1: + msg = "普通入账产品"; + break; + case 2: + msg = "预验收产品"; + break; + case 3: + msg = "寄售产品"; + break; + } + String msg2 = ""; + switch (purType) { + case 1: + msg2 = "普通入账产品"; + break; + case 2: + msg2 = "预验收产品"; + break; + case 3: + msg2 = "寄售产品"; + break; + } + throw new JsonException( "单据只允许录入" + msg +",当前录入产品为"+msg2+",请检查后重试!"); + } + } + + + IoOrderDetailBizEntity ioOrderDetailBizEntity = new IoOrderDetailBizEntity(); + ioOrderDetailBizEntity.setOrderIdFk(orderEntity.getBillNo()); + ioOrderDetailBizEntity.setBindRlFk(udiRelevanceResponse.getId()); + ioOrderDetailBizEntity.setUuidFk(udiRelevanceResponse.getUuid()); + ioOrderDetailBizEntity.setNameCode(udiRelevanceResponse.getNameCode()); + ioOrderDetailBizEntity.setCoName(udiRelevanceResponse.getCpmctymc()); + ioOrderDetailBizEntity.setYlqxzcrbarmc(udiRelevanceResponse.getYlqxzcrbarmc()); + ioOrderDetailBizEntity.setManufacturer(udiRelevanceResponse.getManufactory()); + ioOrderDetailBizEntity.setMeasname(udiRelevanceResponse.getMeasname()); + ioOrderDetailBizEntity.setSpec(udiRelevanceResponse.getGgxh()); + ioOrderDetailBizEntity.setPrice(udiRelevanceResponse.getPrice()); + ioOrderDetailBizEntity.setProductDate(item.getProductDate()); + ioOrderDetailBizEntity.setExpireDate(item.getExpireDate()); + ioOrderDetailBizEntity.setBatchNo(item.getBatchNo()); + ioOrderDetailBizEntity.setSupId(item.getSupId()); +// if (null == addBizProductReqeust.getZczbhhzbapzbh() || "".equals(addBizProductReqeust.getZczbhhzbapzbh())) { +// ioOrderDetailBizEntity.setCertCode(udiRelevanceResponse.getZczbhhzbapzbh()); +// } else { +// ioOrderDetailBizEntity.setCertCode(addBizProductReqeust.getZczbhhzbapzbh()); +// } + + orderDetailBizService.insert(ioOrderDetailBizEntity); + } + + orderEntity.setUpdateTime(new Date()); + orderEntity.setUpdateUser(authAdmin.getId() + ""); + orderService.update(orderEntity); + return orderEntity; + } + @Override public IoOrderDetailBizEntity selectByBatchNoAndBindRlFk(String batchNo, String bindRlFk) { QueryWrapper ew = new QueryWrapper<>(); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index b18222f52..149ccc6b6 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -4,7 +4,7 @@ server: spring: datasource: driver-class-name: com.p6spy.engine.spy.P6SpyDriver - jdbc-url: jdbc:p6spy:mysql://192.168.0.166:3306/udi_wms_pt?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + jdbc-url: jdbc:p6spy:mysql://192.168.0.43:3306/udi_wms_ct?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true username: root password: 123456 hikari: