From 9dba3326487fbc19e12f6a8da6f86e0d580a60c7 Mon Sep 17 00:00:00 2001 From: anthonywj Date: Mon, 4 Dec 2023 09:23:44 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E5=88=87=E6=8D=A2=E5=88=86=E6=94=AF?= =?UTF-8?q?=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inv/InvPreinOrderController.java | 56 +++++-- .../purchase/PurOrderPrintController.java | 6 +- .../api/req/inout/CheckPreInInvRequest.java | 149 ++++++++++++++++++ 3 files changed, 193 insertions(+), 18 deletions(-) create mode 100644 src/main/java/com/glxp/api/req/inout/CheckPreInInvRequest.java diff --git a/src/main/java/com/glxp/api/controller/inv/InvPreinOrderController.java b/src/main/java/com/glxp/api/controller/inv/InvPreinOrderController.java index 7b4862cde..b15ec40e1 100644 --- a/src/main/java/com/glxp/api/controller/inv/InvPreinOrderController.java +++ b/src/main/java/com/glxp/api/controller/inv/InvPreinOrderController.java @@ -15,6 +15,7 @@ import com.glxp.api.entity.inout.IoCodeTempEntity; import com.glxp.api.entity.inv.InvPreInProductDetailEntity; import com.glxp.api.entity.inv.InvPreinDetailEntity; import com.glxp.api.entity.inv.InvProductDetailEntity; +import com.glxp.api.req.inout.CheckPreInInvRequest; import com.glxp.api.req.inv.FilterInvPreinDetailRequest; import com.glxp.api.req.inv.FilterInvPreinRequest; import com.glxp.api.req.inv.FilterInvProductDetailRequest; @@ -24,6 +25,8 @@ import com.glxp.api.res.inv.InvPreinDetailResponse; import com.glxp.api.res.inv.InvPreinOrderResponse; import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.basic.IBasicBussinessTypeService; +import com.glxp.api.service.inout.IoCodeTempService; +import com.glxp.api.service.inout.impl.IoCodeService; import com.glxp.api.service.inv.InvPreProductDetailService; import com.glxp.api.service.inv.InvPreinDetailService; import com.glxp.api.service.inv.InvPreinOrderService; @@ -84,27 +87,46 @@ public class InvPreinOrderController extends BaseController { } + @Resource + IoCodeTempService codeTempService; + @Resource + IoCodeService codeService; @AuthRuleAnnotation("") @PostMapping("spms/prein/inv/products/getDetaiByCode") - public BaseResponse getDetaiByCode(@RequestBody IoCodeTempEntity codeTempEntity) { + public BaseResponse getDetaiByCode(@RequestBody CheckPreInInvRequest checkPreInInvRequest) { InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_PREIN); - BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(codeTempEntity.getAction()); + BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(checkPreInInvRequest.getAction()); + + if (bussinessTypeEntity.getBackPreinType() == 1 && bussinessTypeEntity.isPreInBack()) {//按单出库&& bussinessTypeEntity.isPreInBack() + String orderIds = checkPreInInvRequest.getCheckPreInOrders(); + if (StrUtil.isNotEmpty(orderIds)) { + String[] orderIdArray = orderIds.split(","); + List orderList = CollUtil.toList(orderIdArray); + int count = codeService.findByOrderIdsCount(orderList, checkPreInInvRequest.getCode()); + if (count <= 0) { + return ResultVOUtils.error(500, "非预验收单产品或预验收库存数量不足!"); + } + } else { + return ResultVOUtils.error(500, "未选择预验收入库单,请先选择预验收入库单!"); + } + } + int count = 0; if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) { - if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) { - count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), null, codeTempEntity.getCode()); + if (StrUtil.isNotEmpty(checkPreInInvRequest.getSerialNo())) { + count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), null, checkPreInInvRequest.getCode()); } else - count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), null); + count = invPreinProductDetailService.vailStockCount(checkPreInInvRequest.getRelId(), checkPreInInvRequest.getBatchNo(), checkPreInInvRequest.getSupId(), null, invWarehouseEntity.getCode(), null); } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) { - if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) { - count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), codeTempEntity.getPreInSpaceCode(), codeTempEntity.getCode()); + if (StrUtil.isNotEmpty(checkPreInInvRequest.getSerialNo())) { + count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), checkPreInInvRequest.getPreInSpaceCode(), checkPreInInvRequest.getCode()); } else - count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), codeTempEntity.getPreInSpaceCode()); + count = invPreinProductDetailService.vailStockCount(checkPreInInvRequest.getRelId(), checkPreInInvRequest.getBatchNo(), checkPreInInvRequest.getSupId(), null, invWarehouseEntity.getCode(), checkPreInInvRequest.getPreInSpaceCode()); } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) { //按指定货位出库 - if (StrUtil.isEmpty(codeTempEntity.getPreSpaceCode())) { - List invProductDetailEntities = invPreinProductDetailService.findByGroupCode(invWarehouseEntity.getCode(), codeTempEntity.getCode()); + if (StrUtil.isEmpty(checkPreInInvRequest.getPreSpaceCode())) { + List invProductDetailEntities = invPreinProductDetailService.findByGroupCode(invWarehouseEntity.getCode(), checkPreInInvRequest.getCode()); if (CollUtil.isNotEmpty(invProductDetailEntities) && invProductDetailEntities.size() > 1) { BaseResponse baseResponse = ResultVOUtils.error(511, "存在多个货位,请指定当前货位!"); baseResponse.setData(invProductDetailEntities); @@ -112,24 +134,24 @@ public class InvPreinOrderController extends BaseController { } else if (invProductDetailEntities.size() == 1) { InvPlaceDetailResponse invPlaceDetailResponse = invProductDetailEntities.get(0); count = invPlaceDetailResponse.getReCount(); - codeTempEntity.setPreSpaceCode(invPlaceDetailResponse.getInvSpaceCode()); + checkPreInInvRequest.setPreSpaceCode(invPlaceDetailResponse.getInvSpaceCode()); } else { return ResultVOUtils.error(500, "添加失败,该产品未上架货位!"); } } else { - if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) { - count = invPreinProductDetailService.vailStockCountByCode(null, codeTempEntity.getInvCode(), codeTempEntity.getPreInSpaceCode(), codeTempEntity.getCode()); + if (StrUtil.isNotEmpty(checkPreInInvRequest.getSerialNo())) { + count = invPreinProductDetailService.vailStockCountByCode(null, checkPreInInvRequest.getInvCode(), checkPreInInvRequest.getPreInSpaceCode(), checkPreInInvRequest.getCode()); } else - count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, codeTempEntity.getInvCode(), codeTempEntity.getPreInSpaceCode()); + count = invPreinProductDetailService.vailStockCount(checkPreInInvRequest.getRelId(), checkPreInInvRequest.getBatchNo(), checkPreInInvRequest.getSupId(), null, checkPreInInvRequest.getInvCode(), checkPreInInvRequest.getPreInSpaceCode()); } } - InvPreInProductDetailEntity invPreinDetailEntity = invPreinProductDetailService.findUseOneByCode(codeTempEntity.getCode()); + InvPreInProductDetailEntity invPreinDetailEntity = invPreinProductDetailService.findUseOneByCode(checkPreInInvRequest.getCode()); if (count <= 0) { return ResultVOUtils.error(500, "预验收库存数量不足!"); } else { - if (invPreinDetailEntity != null && StrUtil.isNotEmpty(invPreinDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(codeTempEntity.getBatchNo()) - && !invPreinDetailEntity.getBatchNo().equals(codeTempEntity.getBatchNo())) { + if (invPreinDetailEntity != null && StrUtil.isNotEmpty(invPreinDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(checkPreInInvRequest.getBatchNo()) + && !invPreinDetailEntity.getBatchNo().equals(checkPreInInvRequest.getBatchNo())) { return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!"); } } diff --git a/src/main/java/com/glxp/api/controller/purchase/PurOrderPrintController.java b/src/main/java/com/glxp/api/controller/purchase/PurOrderPrintController.java index f5ff1ca62..365add0a2 100644 --- a/src/main/java/com/glxp/api/controller/purchase/PurOrderPrintController.java +++ b/src/main/java/com/glxp/api/controller/purchase/PurOrderPrintController.java @@ -178,7 +178,7 @@ public class PurOrderPrintController { Map data = new HashMap<>(1); List list = new ArrayList<>(); PurApplyDetailRequest purApplyDetailRequest = new PurApplyDetailRequest(); - purApplyDetailRequest.setOrderIdFk(purOrderPrintRequest.getBillNo()); + purApplyDetailRequest.setOrderIdFk(purApplyResponse.getId() + ""); List responseList = purApplyDetailService.joinQueryList(purApplyDetailRequest); int i = 1; if (CollUtil.isNotEmpty(responseList)) { @@ -208,6 +208,10 @@ public class PurOrderPrintController { supData.put("supName", obj.getSupName()); supData.put("ylqxzcrbarmc", obj.getYlqxzcrbarmc()); supData.put("zczbhhzbapzbh", obj.getZczbhhzbapzbh()); + supData.put("arrivalTime", MsDateUtil.formatDate(purApplyResponse.getArrivalTime(), "yyyy-MM-dd")); + supData.put("remark1", sysPdfTemplateRelevanceBizEntity.getRemark1() == null ? ' ' : sysPdfTemplateRelevanceBizEntity.getRemark1()); + supData.put("remark2", sysPdfTemplateRelevanceBizEntity.getRemark2() == null ? ' ' : sysPdfTemplateRelevanceBizEntity.getRemark2()); + supData.put("remark3", sysPdfTemplateRelevanceBizEntity.getRemark3() == null ? ' ' : sysPdfTemplateRelevanceBizEntity.getRemark3()); list.add(supData); i++; } diff --git a/src/main/java/com/glxp/api/req/inout/CheckPreInInvRequest.java b/src/main/java/com/glxp/api/req/inout/CheckPreInInvRequest.java new file mode 100644 index 000000000..49b23c8ef --- /dev/null +++ b/src/main/java/com/glxp/api/req/inout/CheckPreInInvRequest.java @@ -0,0 +1,149 @@ +package com.glxp.api.req.inout; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +@Data +public class CheckPreInInvRequest { + + + private Integer id; + + /** + * UDI码 + */ + private String code; + + /** + * 主单据类型(入库,出库) + */ + private String mainAction; + + /** + * 单据类型 + */ + private String action; + + /** + * 订单号外键 + */ + private String orderId; + + /** + * 手持终端订单号 + */ + private String corpOrderId; + + /** + * DI标识 + */ + private String nameCode; + + + /** + * 批次号 + */ + private String batchNo; + + /** + * 生产日期 + */ + private String produceDate; + + /** + * 失效日期 + */ + private String expireDate; + + /** + * 序列号 + */ + private String serialNo; + + /** + * 包装级别 + */ + private String packageLevel; + + /** + * 供应商ID外键 + */ + private String supId; + + /** + * 耗材字典ID外键 + */ + private Long relId; + + /** + * 扫码数量 + */ + private Integer count; + + /** + * 实际数量 + */ + private Integer reCount; + + /** + * 部门编码外键 + */ + private String deptCode; + + /** + * 仓库编码外键 + */ + private String invCode; + + /** + * 货位编码外键 + */ + private String warehouseCode; + + /** + * 预验收,寄售所在货位编码 + */ + private String preSpaceCode; + + private String preInSpaceCode; + + /** + * 更新日期 + */ + private Date updateTime; + + /** + * 创建日期 + */ + private Date createTime; + /** + * 入院批号 + */ + private String inBatchNo; + private String checkPreInOrders; + + + private int status; //条码校验状态 + private int checkStatus; //1:多余条码;2.同一产品条码超出 + private String mySupId; //更新供应商 + + private BigDecimal price; + private boolean checkSuccess; //临时字段校验是否成功 + + public int getMyCount() { + if (count == null) + return 0; + return count; + } + + public int getMyReCount() { + if (reCount == null) { + return 0; + } + return reCount; + } +} From 7ef66921cfa0b6fc2d4b71626c52274d4144e0be Mon Sep 17 00:00:00 2001 From: anthonywj Date: Tue, 5 Dec 2023 13:11:22 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E5=88=87=E6=8D=A2=E5=88=86=E6=94=AF?= =?UTF-8?q?=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/glxp/api/http/ErpBasicClient.java | 23 ++++ .../api/req/thrsys/PostRelProductRequest.java | 15 +++ .../thrsys/impl/ThrProductsServiceImpl.java | 45 ++++++- .../com/glxp/api/task/SyncThirdSysTask.java | 12 +- src/main/resources/application-dev.yml | 2 +- .../mybatis/mapper/basic/UdiRelevanceDao.xml | 126 +++++++++--------- 6 files changed, 150 insertions(+), 73 deletions(-) create mode 100644 src/main/java/com/glxp/api/req/thrsys/PostRelProductRequest.java diff --git a/src/main/java/com/glxp/api/http/ErpBasicClient.java b/src/main/java/com/glxp/api/http/ErpBasicClient.java index d8de4fa27..41feb863b 100644 --- a/src/main/java/com/glxp/api/http/ErpBasicClient.java +++ b/src/main/java/com/glxp/api/http/ErpBasicClient.java @@ -153,6 +153,29 @@ public class ErpBasicClient { } } + + /** + * 提交第三方产品信息 + * + * @param postRelProductRequest + * @return + */ + public BaseResponse postRelProduct(PostRelProductRequest postRelProductRequest) { + ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectByThirdId("thirdId"); + String url = basicThirdSysEntity.getThridUrl() + "/udiwms/erp/post/udiRel/product"; + try { + String response = httpOkClient.uCloudPost(url, postRelProductRequest); + BaseResponse listBaseResponse = + JSONObject.parseObject(response, new TypeReference>() { + }); + + return listBaseResponse; + } catch (Exception e) { + log.error("提交第三产品信息异常" + postRelProductRequest.getDatas().size(), e); + return ResultVOUtils.error(500, "连接第三方系统接口服务出错"); + } + } + //测试连通性 public BaseResponse testConnection(ThrSystemEntity thrSystemEntity) { String response = httpOkClient.uCloudPost(thrSystemEntity.getThridUrl() + "/udiwms/erp/testLocal", "{}"); diff --git a/src/main/java/com/glxp/api/req/thrsys/PostRelProductRequest.java b/src/main/java/com/glxp/api/req/thrsys/PostRelProductRequest.java new file mode 100644 index 000000000..8affbbace --- /dev/null +++ b/src/main/java/com/glxp/api/req/thrsys/PostRelProductRequest.java @@ -0,0 +1,15 @@ +package com.glxp.api.req.thrsys; + +import com.glxp.api.res.basic.UdiRelevanceResponse; +import lombok.Data; + +import java.util.List; + +@Data +public class PostRelProductRequest { + + private String uploadType; + private String thirdSys; + List datas; + +} diff --git a/src/main/java/com/glxp/api/service/thrsys/impl/ThrProductsServiceImpl.java b/src/main/java/com/glxp/api/service/thrsys/impl/ThrProductsServiceImpl.java index 1e44bca1f..aa11d6d6f 100644 --- a/src/main/java/com/glxp/api/service/thrsys/impl/ThrProductsServiceImpl.java +++ b/src/main/java/com/glxp/api/service/thrsys/impl/ThrProductsServiceImpl.java @@ -1,6 +1,12 @@ package com.glxp.api.service.thrsys.impl; import cn.hutool.core.bean.BeanUtil; +import com.glxp.api.req.basic.FilterUdiRelRequest; +import com.glxp.api.req.thrsys.PostRelProductRequest; +import com.glxp.api.service.basic.UdiRelevanceService; +import com.glxp.api.util.BeanCopyUtils; +import com.glxp.api.util.CustomUtil; +import org.apache.regexp.RE; import org.springframework.beans.BeanUtils; import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.collection.CollUtil; @@ -41,6 +47,7 @@ import javax.annotation.Resource; import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** *

@@ -313,18 +320,48 @@ public class ThrProductsServiceImpl extends ServiceImpl udiRelevanceResponses = udiRelevanceService.filterUdiJoinSup(filterUdiRelRequest); + if (CollUtil.isNotEmpty(udiRelevanceResponses)) { + List filteredList = udiRelevanceResponses.stream() + .filter(item -> + { + if (StrUtil.isNotEmpty(item.getNameCode()) || StrUtil.isNotEmpty(item.getBasicPrductRemak8())) { + return true; + } else return false; + } + ) + .collect(Collectors.toList()); + + List> splitList = CustomUtil.splitList(filteredList, 10); + for (List temps : splitList) { + PostRelProductRequest postRelProductRequest = new PostRelProductRequest(); + postRelProductRequest.setUploadType("1"); + postRelProductRequest.setThirdSys(thrSystemDetailEntity.getThirdSysFk()); + postRelProductRequest.setDatas(temps); + //上传第三方产品信息 + BaseResponse baseResponse = erpBasicClient.postRelProduct(postRelProductRequest); + if (baseResponse.getCode() != 20000) { + return ResultVOUtils.error(500, "上传失败!" + baseResponse.getMessage()); + } + } + redisUtil.set("THR_PI_UPLOAD_TIME", currentTime); + return ResultVOUtils.success("上传成功"); + } } - return null; + return ResultVOUtils.error(500, "上传失败!"); } /** diff --git a/src/main/java/com/glxp/api/task/SyncThirdSysTask.java b/src/main/java/com/glxp/api/task/SyncThirdSysTask.java index a22ea3230..c1d0dafb4 100644 --- a/src/main/java/com/glxp/api/task/SyncThirdSysTask.java +++ b/src/main/java/com/glxp/api/task/SyncThirdSysTask.java @@ -126,6 +126,7 @@ public class SyncThirdSysTask implements SchedulingConfigurer { downloadThrOrder(thrSystemDetailEntity); break; case ThirdSysConstant.PI_SUBMIT_URL: + postRelProduct(thrSystemDetailEntity); break; default: //其他接口暂不处理 @@ -271,25 +272,24 @@ public class SyncThirdSysTask implements SchedulingConfigurer { } } - /** - * 上传第三方产品信息 + * 上传已关联产品信息 * * @param thrSystemDetailEntity */ - private void submitThrProduct(ThrSystemDetailEntity thrSystemDetailEntity) { + private void postRelProduct(ThrSystemDetailEntity thrSystemDetailEntity) { //校验任务并更新redis数据执行标识 if (verifyTask(thrSystemDetailEntity)) { getExecutor().submit(() -> { - log.info("开始下载第三方业务单据"); + log.info("开始上传关联第三方产品信息"); try { thrProductsService.uploadThrProduct(thrSystemDetailEntity); } catch (Exception e) { - log.error("下载第三方业务单据", e); + log.error("开始上传关联第三方产品信息", e); } finally { updateTask(getTaskKey(thrSystemDetailEntity)); } - log.info("第三方业务单据下载完成"); + log.info("开始上传关联第三方产品信息完成"); }); } } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index b2df4abe2..eff144325 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://127.0.0.1:3306/udi_wms_pt?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_wms_ct?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true username: root password: 123456 hikari: diff --git a/src/main/resources/mybatis/mapper/basic/UdiRelevanceDao.xml b/src/main/resources/mybatis/mapper/basic/UdiRelevanceDao.xml index ae46a4eb6..993cf15d1 100644 --- a/src/main/resources/mybatis/mapper/basic/UdiRelevanceDao.xml +++ b/src/main/resources/mybatis/mapper/basic/UdiRelevanceDao.xml @@ -334,7 +334,8 @@ basic_products.categoryName, company_product_relevance.unitFk, basic_corp.erpId as customerId, - basic_corp.name companyName + basic_corp.name companyName, + th.hsmc hslbName FROM basic_udirel inner JOIN basic_products ON basic_products.uuid = basic_udirel.uuid @@ -345,6 +346,7 @@ left join thr_products tp on tp.code = basic_udirel.mainId left join basic_product_category_rel on basic_product_category_rel.relId = basic_udirel.id left join basic_product_category on basic_product_category_rel.code = basic_product_category.code + left join thr_hslb th on basic_products.basicPrductRemak8 = th.hsbm AND basic_products.ylqxzcrbarmc LIKE concat('%', #{ylqxzcrbarmc}, '%') @@ -1713,7 +1715,7 @@ select basic_udirel.*, - basic_products.originUuid, - basic_products.nameCode, - basic_products.deviceRecordKey, - basic_products.packRatio, - basic_products.packUnit, - basic_products.packLevel, - basic_products.bhxjsl, - basic_products.bhzxxsbzsl, - basic_products.zxxsbzbhsydysl, - basic_products.bhxjcpbm, - basic_products.bzcj, - basic_products.cpmctymc, - basic_products.cplb, - basic_products.flbm, - basic_products.ggxh, - basic_products.qxlb, - basic_products.tyshxydm, - basic_products.ylqxzcrbarmc, - basic_products.zczbhhzbapzbh, - basic_products.ylqxzcrbarywmc, - basic_products.sydycpbs, - basic_products.sjcpbm, - basic_products.versionNumber, - basic_products.diType, - basic_products.ybbm, - basic_products.sptm, - basic_products.manufactory, - basic_products.measname, - basic_products.productType, - basic_products.scbssfbhph, - basic_products.scbssfbhxlh, - basic_products.scbssfbhscrq, - basic_products.scbssfbhsxrq, - basic_products.cpms, - basic_products.allowNoBatch, - basic_products.allowNoExpire, - basic_products.allowNoProduct, - basic_products.allowNoSerial, - basic_products.spmc, - basic_products.cplx, - basic_products.hchzsb, - basic_products.cpdls, - basic_products.basicPrductRemak1, - basic_products.basicPrductRemak2, - basic_products.basicPrductRemak3, - basic_products.basicPrductRemak4, - basic_products.basicPrductRemak5, - basic_products.basicPrductRemak6, - basic_products.basicPrductRemak7, - basic_products.basicPrductRemak8, - basic_products.sfwblztlcp, - basic_products.cgzmraqxgxx, - basic_products.sfbjwycxsy, - basic_products.zdcfsycs, - basic_products.sfwwjbz, - basic_products.syqsfxyjxmj, - basic_products.mjfs, - basic_products.categoryName + basic_products.originUuid, + basic_products.nameCode, + basic_products.deviceRecordKey, + basic_products.packRatio, + basic_products.packUnit, + basic_products.packLevel, + basic_products.bhxjsl, + basic_products.bhzxxsbzsl, + basic_products.zxxsbzbhsydysl, + basic_products.bhxjcpbm, + basic_products.bzcj, + basic_products.cpmctymc, + basic_products.cplb, + basic_products.flbm, + basic_products.ggxh, + basic_products.qxlb, + basic_products.tyshxydm, + basic_products.ylqxzcrbarmc, + basic_products.zczbhhzbapzbh, + basic_products.ylqxzcrbarywmc, + basic_products.sydycpbs, + basic_products.sjcpbm, + basic_products.versionNumber, + basic_products.diType, + basic_products.ybbm, + basic_products.sptm, + basic_products.manufactory, + basic_products.measname, + basic_products.productType, + basic_products.scbssfbhph, + basic_products.scbssfbhxlh, + basic_products.scbssfbhscrq, + basic_products.scbssfbhsxrq, + basic_products.cpms, + basic_products.allowNoBatch, + basic_products.allowNoExpire, + basic_products.allowNoProduct, + basic_products.allowNoSerial, + basic_products.spmc, + basic_products.cplx, + basic_products.hchzsb, + basic_products.cpdls, + basic_products.basicPrductRemak1, + basic_products.basicPrductRemak2, + basic_products.basicPrductRemak3, + basic_products.basicPrductRemak4, + basic_products.basicPrductRemak5, + basic_products.basicPrductRemak6, + basic_products.basicPrductRemak7, + basic_products.basicPrductRemak8, + basic_products.sfwblztlcp, + basic_products.cgzmraqxgxx, + basic_products.sfbjwycxsy, + basic_products.zdcfsycs, + basic_products.sfwwjbz, + basic_products.syqsfxyjxmj, + basic_products.mjfs, + basic_products.categoryName FROM basic_udirel - inner JOIN basic_products - ON basic_products.uuid = basic_udirel.uuid + inner JOIN basic_products + ON basic_products.uuid = basic_udirel.uuid AND basic_udirel.id = #{id} From 81a57129f8a01c8bfc5152f89b0b019528959c0d Mon Sep 17 00:00:00 2001 From: anthonywj Date: Thu, 7 Dec 2023 14:22:45 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/req/thrsys/PostRelProductRequest.java | 1 + .../api/service/inout/IoAddInoutService.java | 8 +- .../thrsys/impl/ThrProductsServiceImpl.java | 25 +- src/main/resources/application-dev.yml | 2 +- .../mybatis/mapper/basic/UdiRelevanceDao.xml | 433 +++++++++--------- 5 files changed, 238 insertions(+), 231 deletions(-) diff --git a/src/main/java/com/glxp/api/req/thrsys/PostRelProductRequest.java b/src/main/java/com/glxp/api/req/thrsys/PostRelProductRequest.java index 8affbbace..032722529 100644 --- a/src/main/java/com/glxp/api/req/thrsys/PostRelProductRequest.java +++ b/src/main/java/com/glxp/api/req/thrsys/PostRelProductRequest.java @@ -11,5 +11,6 @@ public class PostRelProductRequest { private String uploadType; private String thirdSys; List datas; + UdiRelevanceResponse udiRelevanceResponse; } 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 46b1eb11d..9c099a957 100644 --- a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java @@ -499,10 +499,10 @@ public class IoAddInoutService { BaseResponse baseResponse = checkInv(bussinessTypeEntity, pdaPostOrderRequest.getOrderDetailBizEntities(), orderEntity, pdaPostOrderRequest.getCodeTempEntities()); if (baseResponse != null) return baseResponse; - + List codeTempEntities = BeanUtil.copyToList(pdaPostOrderRequest.getCodeTempEntities(), IoCodeTempEntity.class); String priceFifo = systemParamConfigService.selectValueByParamKey("price_fifo"); if (IntUtil.value(priceFifo) > 0 && bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { - List codeTempEntities = BeanUtil.copyToList(pdaPostOrderRequest.getCodeTempEntities(), IoCodeTempEntity.class); + List resultList = new ArrayList<>(); for (IoCodeTempEntity codeTempEntity : codeTempEntities) { resultList = checkPrice(codeTempEntity, bussinessTypeEntity, resultList); @@ -520,10 +520,10 @@ public class IoAddInoutService { orderService.insertOrder(orderEntity); if (CollUtil.isNotEmpty(pdaPostOrderRequest.getCodeTempEntities())) { - for (IoCodeTempEntity codeTempEntity : pdaPostOrderRequest.getCodeTempEntities()) { + for (IoCodeTempEntity codeTempEntity : codeTempEntities) { codeTempEntity.setOrderId(orderNo); } - codeTempService.insertBatch(pdaPostOrderRequest.getCodeTempEntities()); + codeTempService.insertBatch(codeTempEntities); } dealProcess(orderEntity); diff --git a/src/main/java/com/glxp/api/service/thrsys/impl/ThrProductsServiceImpl.java b/src/main/java/com/glxp/api/service/thrsys/impl/ThrProductsServiceImpl.java index aa11d6d6f..439f57692 100644 --- a/src/main/java/com/glxp/api/service/thrsys/impl/ThrProductsServiceImpl.java +++ b/src/main/java/com/glxp/api/service/thrsys/impl/ThrProductsServiceImpl.java @@ -4,8 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import com.glxp.api.req.basic.FilterUdiRelRequest; import com.glxp.api.req.thrsys.PostRelProductRequest; import com.glxp.api.service.basic.UdiRelevanceService; -import com.glxp.api.util.BeanCopyUtils; -import com.glxp.api.util.CustomUtil; +import com.glxp.api.util.*; import org.apache.regexp.RE; import org.springframework.beans.BeanUtils; import cn.hutool.core.bean.copier.CopyOptions; @@ -32,8 +31,6 @@ import com.glxp.api.res.thrsys.ThrProductsResponse; import com.glxp.api.service.basic.UdiContrastService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.service.thrsys.ThrProductsService; -import com.glxp.api.util.IntUtil; -import com.glxp.api.util.RedisUtil; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.SqlSession; @@ -327,8 +324,8 @@ public class ThrProductsServiceImpl extends ServiceImpl filteredList = udiRelevanceResponses.stream() .filter(item -> { - if (StrUtil.isNotEmpty(item.getNameCode()) || StrUtil.isNotEmpty(item.getBasicPrductRemak8())) { + if ((StrUtil.isNotEmpty(item.getNameCode()) && StrUtil.isEmpty(item.getMainId()) + || (StrUtil.isNotEmpty(item.getNameCode()) && StrUtil.isNotEmpty(item.getMainId()) && StrUtil.isNotEmpty(item.getBasicPrductRemak8())) + )) { return true; } else return false; } ) .collect(Collectors.toList()); - List> splitList = CustomUtil.splitList(filteredList, 10); - for (List temps : splitList) { +// List> splitList = CustomUtil.splitList(filteredList, 10); + for (UdiRelevanceResponse udiRelevanceResponse : filteredList) { PostRelProductRequest postRelProductRequest = new PostRelProductRequest(); postRelProductRequest.setUploadType("1"); postRelProductRequest.setThirdSys(thrSystemDetailEntity.getThirdSysFk()); - postRelProductRequest.setDatas(temps); + postRelProductRequest.setUdiRelevanceResponse(udiRelevanceResponse); //上传第三方产品信息 BaseResponse baseResponse = erpBasicClient.postRelProduct(postRelProductRequest); if (baseResponse.getCode() != 20000) { return ResultVOUtils.error(500, "上传失败!" + baseResponse.getMessage()); + } else { + String thirdCode = (String) baseResponse.getData(); + UdiRelevanceEntity udiRelevanceEntity = udiRelevanceDao.selectById(udiRelevanceResponse.getId()); + udiRelevanceEntity.setThirdId(thirdCode); + udiRelevanceEntity.setMainId(thirdCode); + udiRelevanceDao.updateById(udiRelevanceEntity); } } redisUtil.set("THR_PI_UPLOAD_TIME", currentTime); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index eff144325..e7acbb9df 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://127.0.0.1:3306/udi_wms_ct?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_wms_ph?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true username: root password: 123456 hikari: diff --git a/src/main/resources/mybatis/mapper/basic/UdiRelevanceDao.xml b/src/main/resources/mybatis/mapper/basic/UdiRelevanceDao.xml index 993cf15d1..87f4990a3 100644 --- a/src/main/resources/mybatis/mapper/basic/UdiRelevanceDao.xml +++ b/src/main/resources/mybatis/mapper/basic/UdiRelevanceDao.xml @@ -412,7 +412,8 @@ = DATE_FORMAT(#{lastUpdateTime}, '%Y-%m-%d %H:%i:%S') + and DATE_FORMAT(basic_udirel.updateTime, '%Y-%m-%d %H:%i:%S') >= + DATE_FORMAT(#{lastUpdateTime}, '%Y-%m-%d %H:%i:%S') ]]> @@ -1218,70 +1219,70 @@ replace - INTO basic_udirel - (id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable, - isLock, - lockStatus, isAdavence, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser, - updateUser, - remark, useExpireTime, dispatch, groupBuy, needCert) + INTO basic_udirel + (id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable, + isLock, + lockStatus, isAdavence, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser, + updateUser, + remark, useExpireTime, dispatch, groupBuy, needCert) values (#{id}, - #{uuid}, - #{mainId}, - #{thirdId}, - #{thirdId1}, - #{thirdId2}, - #{thirdId3}, - #{thirdId4}, - #{udplatCode}, - #{isUseDy}, - #{isDisable}, - #{isLock}, - #{lockStatus}, - #{isAdavence}, - #{useMuti}, - #{useNum}, - #{supName}, - #{createTime}, - #{updateTime}, - #{modifyTime}, - #{createUser}, - #{updateUser}, - #{remark}, #{useExpireTime}, #{dispatch}, #{groupBuy}, #{needCert}) + #{uuid}, + #{mainId}, + #{thirdId}, + #{thirdId1}, + #{thirdId2}, + #{thirdId3}, + #{thirdId4}, + #{udplatCode}, + #{isUseDy}, + #{isDisable}, + #{isLock}, + #{lockStatus}, + #{isAdavence}, + #{useMuti}, + #{useNum}, + #{supName}, + #{createTime}, + #{updateTime}, + #{modifyTime}, + #{createUser}, + #{updateUser}, + #{remark}, #{useExpireTime}, #{dispatch}, #{groupBuy}, #{needCert}) insert - ignore + ignore INTO basic_udirel - (id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable, - isLock, - lockStatus, isAdavence, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser, - updateUser, - remark, useExpireTime, dispatch, groupBuy, needCert) + (id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable, + isLock, + lockStatus, isAdavence, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser, + updateUser, + remark, useExpireTime, dispatch, groupBuy, needCert) values (#{id}, - #{uuid}, - #{mainId}, - #{thirdId}, - #{thirdId1}, - #{thirdId2}, - #{thirdId3}, - #{thirdId4}, - #{udplatCode}, - #{isUseDy}, - #{isDisable}, - #{isLock}, - #{lockStatus}, - #{isAdavence}, - #{useMuti}, - #{useNum}, - #{supName}, - #{createTime}, - #{updateTime}, - #{modifyTime}, - #{createUser}, - #{updateUser}, - #{remark}, #{useExpireTime}, #{dispatch}, #{groupBuy}, #{needCert}) + #{uuid}, + #{mainId}, + #{thirdId}, + #{thirdId1}, + #{thirdId2}, + #{thirdId3}, + #{thirdId4}, + #{udplatCode}, + #{isUseDy}, + #{isDisable}, + #{isLock}, + #{lockStatus}, + #{isAdavence}, + #{useMuti}, + #{useNum}, + #{supName}, + #{createTime}, + #{updateTime}, + #{modifyTime}, + #{createUser}, + #{updateUser}, + #{remark}, #{useExpireTime}, #{dispatch}, #{groupBuy}, #{needCert}) @@ -1422,106 +1423,106 @@ replace - into basic_udirel - (id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable, - isLock, - lockStatus, isAdavence, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser, - updateUser, - remark, useExpireTime, dispatch, groupBuy, needCert) - values + into basic_udirel + (id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable, + isLock, + lockStatus, isAdavence, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser, + updateUser, + remark, useExpireTime, dispatch, groupBuy, needCert) + values (#{item.id}, - #{item.uuid}, - #{item.mainId}, - #{item.thirdId}, - #{item.thirdId1}, - #{item.thirdId2}, - #{item.thirdId3}, - #{item.thirdId4}, - #{item.udplatCode}, - #{item.isUseDy}, - #{item.isDisable}, - #{item.isLock}, - #{item.lockStatus}, - #{item.isAdavence}, - #{item.useMuti}, - #{item.useNum}, - #{item.supName}, - #{item.createTime}, - #{item.updateTime}, - #{item.modifyTime}, - #{item.createUser}, - #{item.updateUser}, - #{item.remark}, #{item.useExpireTime}, #{item.dispatch}, #{item.groupBuy}, #{item.needCert}) + #{item.uuid}, + #{item.mainId}, + #{item.thirdId}, + #{item.thirdId1}, + #{item.thirdId2}, + #{item.thirdId3}, + #{item.thirdId4}, + #{item.udplatCode}, + #{item.isUseDy}, + #{item.isDisable}, + #{item.isLock}, + #{item.lockStatus}, + #{item.isAdavence}, + #{item.useMuti}, + #{item.useNum}, + #{item.supName}, + #{item.createTime}, + #{item.updateTime}, + #{item.modifyTime}, + #{item.createUser}, + #{item.updateUser}, + #{item.remark}, #{item.useExpireTime}, #{item.dispatch}, #{item.groupBuy}, #{item.needCert}) select basic_products.cpmctymc from basic_udirel - left join basic_products on basic_udirel.uuid = basic_products.uuid + left join basic_products on basic_udirel.uuid = basic_products.uuid where basic_udirel.id = #{relId} update - basic_udirel + basic_udirel set `relCode` = #{item.relCode} where id = #{item.id} @@ -1572,79 +1573,79 @@ + SELECT * + FROM thr_product_type + + + AND (code LIKE concat('%', #{key}, '%') or name LIKE concat('%', #{key}, '%') + ) + + + AND code = #{code} + + + + diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql index 35049876b..6481ee33c 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -103,3 +103,11 @@ UPDATE `auth_menu` SET `menu_name` = '耗材字典维护', `parent_id` = 1644, ` UPDATE `auth_menu` SET `menu_name` = '产品信息导出', `parent_id` = 1616, `order_num` = 2, `path` = 'basic/product/product', `component` = 'basic/product/product', `query_param` = '{\"vueRouteSource\":2}', `is_frame` = 1, `is_cache` = 0, `menu_type` = 'C', `visible` = '0', `status` = '0', `perms` = 'thirdSys:product:export', `icon` = '', `create_by` = '超级用户', `create_time` = '2022-12-28 11:30:58', `update_by` = NULL, `update_time` = NULL, `remark` = NULL WHERE `menu_id` = 1618; +CREATE TABLE IF NOT EXISTS `thr_product_type` ( + `id` int NOT NULL, + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '类别编码', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '类别名称', + `thirdSys` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '第三系统标识', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;