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/controller/thrsys/ThrProductTypeCotroller.java b/src/main/java/com/glxp/api/controller/thrsys/ThrProductTypeCotroller.java new file mode 100644 index 000000000..e377a0e07 --- /dev/null +++ b/src/main/java/com/glxp/api/controller/thrsys/ThrProductTypeCotroller.java @@ -0,0 +1,47 @@ +package com.glxp.api.controller.thrsys; + +import com.github.pagehelper.PageInfo; +import com.glxp.api.annotation.AuthRuleAnnotation; +import com.glxp.api.common.enums.ResultEnum; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.entity.thrsys.ThrHslbEntity; +import com.glxp.api.entity.thrsys.ThrProductTypeEntity; +import com.glxp.api.req.thrsys.FilterThrHslbRequest; +import com.glxp.api.req.thrsys.FilterThrProductTypeRequest; +import com.glxp.api.res.PageSimpleResponse; +import com.glxp.api.service.thrsys.ThrHslbService; +import com.glxp.api.service.thrsys.ThrProductTypeService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +@Slf4j +@RestController +public class ThrProductTypeCotroller { + + @Resource + ThrProductTypeService thrProductTypeService; + + @AuthRuleAnnotation("") + @GetMapping("/udiwms/thrsys/getHslbs") + public BaseResponse getProductTypes(FilterThrProductTypeRequest filterThrProductTypeRequest, + BindingResult bindingResult) { + + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + List thrProductTypeEntityList + = thrProductTypeService.getProductTypes(filterThrProductTypeRequest); + PageInfo pageInfo; + pageInfo = new PageInfo(thrProductTypeEntityList); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setList(thrProductTypeEntityList); + return ResultVOUtils.success(pageSimpleResponse); + } +} diff --git a/src/main/java/com/glxp/api/controller/thrsys/ThrProductsController.java b/src/main/java/com/glxp/api/controller/thrsys/ThrProductsController.java index 5c728e0c0..ff36e68a8 100644 --- a/src/main/java/com/glxp/api/controller/thrsys/ThrProductsController.java +++ b/src/main/java/com/glxp/api/controller/thrsys/ThrProductsController.java @@ -1,6 +1,7 @@ package com.glxp.api.controller.thrsys; +import com.glxp.api.res.basic.UdiRelevanceResponse; import org.springframework.beans.BeanUtils; import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.collection.CollUtil; @@ -296,8 +297,6 @@ public class ThrProductsController { if (null == filterThrProductsRequest) { return ResultVOUtils.error(500, "参数不能为空"); } - - ThreadUtil.execAsync(() -> { try { thrProductsService.downloadByRequest(filterThrProductsRequest); @@ -310,4 +309,24 @@ public class ThrProductsController { return ResultVOUtils.success("后台正在下载,请稍后刷新查看!"); } + + /** + * 上传第三方产品信息 + * + * @param udiRelevanceResponse + * @return + */ + @PostMapping("/udiwms/thrsys/products/post") + public BaseResponse postThirdData(@RequestBody UdiRelevanceResponse udiRelevanceResponse) { + if (null == udiRelevanceResponse) { + return ResultVOUtils.error(500, "参数不能为空"); + } + if (StrUtil.isEmpty(udiRelevanceResponse.getOriginUuid())) { + return ResultVOUtils.error(500, "产品未关联DI"); + } + + return thrProductsService.postThrProduct(udiRelevanceResponse, "thirdId"); + } + + } diff --git a/src/main/java/com/glxp/api/dao/thrsys/ThrProductTypeMapper.java b/src/main/java/com/glxp/api/dao/thrsys/ThrProductTypeMapper.java new file mode 100644 index 000000000..c3112ab22 --- /dev/null +++ b/src/main/java/com/glxp/api/dao/thrsys/ThrProductTypeMapper.java @@ -0,0 +1,16 @@ +package com.glxp.api.dao.thrsys; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.glxp.api.entity.thrsys.ThrProductTypeEntity; +import com.glxp.api.req.thrsys.FilterThrHslbRequest; +import com.glxp.api.req.thrsys.FilterThrProductTypeRequest; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface ThrProductTypeMapper extends BaseMapper { + + List getProductTypes(FilterThrProductTypeRequest filterThrProductTypeRequest); + +} diff --git a/src/main/java/com/glxp/api/entity/thrsys/ThrProductTypeEntity.java b/src/main/java/com/glxp/api/entity/thrsys/ThrProductTypeEntity.java new file mode 100644 index 000000000..febde5a88 --- /dev/null +++ b/src/main/java/com/glxp/api/entity/thrsys/ThrProductTypeEntity.java @@ -0,0 +1,55 @@ +package com.glxp.api.entity.thrsys; + +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 lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@ApiModel(value="com-glxp-api-entity-thrsys-ThrProductType") +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@TableName(value = "thr_product_type") +public class ThrProductTypeEntity implements Serializable { + @TableId(value = "id", type = IdType.INPUT) + @ApiModelProperty(value="") + private Integer id; + + /** + * 类别编码 + */ + @TableField(value = "code") + @ApiModelProperty(value="类别编码") + private String code; + + /** + * 类别名称 + */ + @TableField(value = "`name`") + @ApiModelProperty(value="类别名称") + private String name; + + /** + * 第三系统标识 + */ + @TableField(value = "thirdSys") + @ApiModelProperty(value="第三系统标识") + private String thirdSys; + + /** + * 备注 + */ + @TableField(value = "remark") + @ApiModelProperty(value="备注") + private String remark; + + private static final long serialVersionUID = 1L; +} diff --git a/src/main/java/com/glxp/api/http/ErpBasicClient.java b/src/main/java/com/glxp/api/http/ErpBasicClient.java index d8de4fa27..083744ca7 100644 --- a/src/main/java/com/glxp/api/http/ErpBasicClient.java +++ b/src/main/java/com/glxp/api/http/ErpBasicClient.java @@ -153,6 +153,30 @@ 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"; + String response = ""; + try { + response = httpOkClient.uCloudPost(url, postRelProductRequest); + BaseResponse listBaseResponse = + JSONObject.parseObject(response, new TypeReference>() { + }); + + return listBaseResponse; + } catch (Exception e) { + log.error("提交第三产品信息异常" + response, 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/http/sync/SpGetHttpClient.java b/src/main/java/com/glxp/api/http/sync/SpGetHttpClient.java index b2d77ef35..f6d3930fc 100644 --- a/src/main/java/com/glxp/api/http/sync/SpGetHttpClient.java +++ b/src/main/java/com/glxp/api/http/sync/SpGetHttpClient.java @@ -10,6 +10,7 @@ import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.BasicExportTypeEnum; import com.glxp.api.constant.SyncDelType; import com.glxp.api.entity.basic.ProductInfoEntity; +import com.glxp.api.entity.basic.UdiRelevanceEntity; import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.sync.BasicExportStatusEntity; import com.glxp.api.entity.sync.IOOrderStatusEntity; @@ -620,4 +621,14 @@ public class SpGetHttpClient { } + public BaseResponse postBasicRl(UdiRelevanceEntity udiRelevanceEntity) { + String json = JSONUtil.toJsonStr(udiRelevanceEntity); + String result = okHttpCli.doPostJson(getIpUrl() + "/directToSpms" + "/spssync/basic/udirl/update", json, buildHeader()); + BaseResponse response = + JSONObject.parseObject(result, new TypeReference>() { + }); + return response; + } + + } 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; + } +} diff --git a/src/main/java/com/glxp/api/req/thrsys/FilterThrProductTypeRequest.java b/src/main/java/com/glxp/api/req/thrsys/FilterThrProductTypeRequest.java new file mode 100644 index 000000000..1a33d253d --- /dev/null +++ b/src/main/java/com/glxp/api/req/thrsys/FilterThrProductTypeRequest.java @@ -0,0 +1,28 @@ +package com.glxp.api.req.thrsys; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.glxp.api.util.page.ListPageRequest; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class FilterThrProductTypeRequest extends ListPageRequest { + + + /** + * 类别编码 + */ + private String code; + + /** + * 类别名称 + */ + private String name; + + /** + * 第三系统标识 + */ + private String thirdSys; + + private String key; +} 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..032722529 --- /dev/null +++ b/src/main/java/com/glxp/api/req/thrsys/PostRelProductRequest.java @@ -0,0 +1,16 @@ +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; + 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/ThrProductTypeService.java b/src/main/java/com/glxp/api/service/thrsys/ThrProductTypeService.java new file mode 100644 index 000000000..54ec5a904 --- /dev/null +++ b/src/main/java/com/glxp/api/service/thrsys/ThrProductTypeService.java @@ -0,0 +1,32 @@ +package com.glxp.api.service.thrsys; + +import com.github.pagehelper.PageHelper; +import com.glxp.api.entity.thrsys.ThrHslbEntity; +import com.glxp.api.req.thrsys.FilterThrHslbRequest; +import com.glxp.api.req.thrsys.FilterThrProductTypeRequest; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.glxp.api.entity.thrsys.ThrProductTypeEntity; +import com.glxp.api.dao.thrsys.ThrProductTypeMapper; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +@Service +public class ThrProductTypeService extends ServiceImpl { + @Resource + ThrProductTypeMapper thrProductTypeMapper; + + public List getProductTypes(FilterThrProductTypeRequest filterThrProductTypeRequest) { + if (filterThrProductTypeRequest == null) { + return Collections.emptyList(); + } + if (filterThrProductTypeRequest.getPage() != null) { + int offset = (filterThrProductTypeRequest.getPage() - 1) * filterThrProductTypeRequest.getLimit(); + PageHelper.offsetPage(offset, filterThrProductTypeRequest.getLimit()); + } + List data = thrProductTypeMapper.getProductTypes(filterThrProductTypeRequest); + return data; + } +} diff --git a/src/main/java/com/glxp/api/service/thrsys/ThrProductsService.java b/src/main/java/com/glxp/api/service/thrsys/ThrProductsService.java index 943091b3b..ae930ebef 100644 --- a/src/main/java/com/glxp/api/service/thrsys/ThrProductsService.java +++ b/src/main/java/com/glxp/api/service/thrsys/ThrProductsService.java @@ -74,7 +74,7 @@ public interface ThrProductsService extends IService { * @param filterThrProductsRequest * @return */ - BaseResponse downloadByRequest(FilterThrProductsRequest filterThrProductsRequest); + BaseResponse downloadByRequest(FilterThrProductsRequest filterThrProductsRequest); ThrProductsEntity filterThrProductsByMainId(String relId); @@ -83,5 +83,7 @@ public interface ThrProductsService extends IService { * * @return */ - BaseResponse uploadThrProduct(ThrSystemDetailEntity thrSystemDetailEntity); + void uploadThrProduct(ThrSystemDetailEntity thrSystemDetailEntity); + + BaseResponse postThrProduct(UdiRelevanceResponse udiRelevanceResponse, String thirdSyS); } 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..9479ac69f 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.http.sync.SpGetHttpClient; +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.*; +import org.apache.regexp.RE; import org.springframework.beans.BeanUtils; import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.collection.CollUtil; @@ -26,8 +32,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; @@ -41,6 +45,7 @@ import javax.annotation.Resource; import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** *

@@ -313,20 +318,70 @@ public class ThrProductsServiceImpl extends ServiceImpl udiRelevanceResponses = udiRelevanceService.filterUdiJoinSup(filterUdiRelRequest); + if (CollUtil.isNotEmpty(udiRelevanceResponses)) { + List filteredList = udiRelevanceResponses.stream() + .filter(item -> + { + if ((StrUtil.isNotEmpty(item.getOriginUuid()) && StrUtil.isEmpty(item.getMainId()) + || (StrUtil.isNotEmpty(item.getOriginUuid()) && StrUtil.isNotEmpty(item.getMainId()) && StrUtil.isNotEmpty(item.getBasicPrductRemak8())) + )) { + return true; + } else return false; + } + ) + .collect(Collectors.toList()); +// List> splitList = CustomUtil.splitList(filteredList, 10); + for (UdiRelevanceResponse udiRelevanceResponse : filteredList) { + BaseResponse baseResponse = postThrProduct(udiRelevanceResponse, thrSystemDetailEntity.getThirdSysFk()); + if (baseResponse.getCode() != 20000) { + log.error(udiRelevanceResponse.getNameCode() + "," + udiRelevanceResponse.getId() + "第三方产品信息上传失败:" + baseResponse.getMessage()); + } + } + redisUtil.set("THR_PI_UPLOAD_TIME", currentTime); + } + } + } - //下载第三方产品信息 + @Resource + SpGetHttpClient spGetHttpClient; + @Override + public BaseResponse postThrProduct(UdiRelevanceResponse udiRelevanceResponse, String thirdSyS) { + + PostRelProductRequest postRelProductRequest = new PostRelProductRequest(); + postRelProductRequest.setUploadType("1"); + postRelProductRequest.setThirdSys(thirdSyS); + 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); + spGetHttpClient.postBasicRl(udiRelevanceEntity); } - return null; + return ResultVOUtils.success("上传成功"); + } + /** * 校验拉取的第三方数据是否有更新 * 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..87f4990a3 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}, '%') @@ -410,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') ]]> @@ -1216,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}) @@ -1420,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} @@ -1570,79 +1573,79 @@ SELECT b2.id FROM basic_products b1 - LEFT JOIN basic_udirel b2 ON b1.uuid = b2.uuid + LEFT JOIN basic_udirel b2 ON b1.uuid = b2.uuid AND b1.cpmctymc like concat('%', #{productName}, '%') @@ -1725,67 +1728,67 @@ + 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 6ec1f263e..6481ee33c 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -99,3 +99,15 @@ CALL Pro_Temp_ColumnWork('io_order_detail_result', 'sterBatchNo', 'varchar(255)' CALL Pro_Temp_ColumnWork('io_order_detail_result', 'sterDate', 'varchar(255)', 1); +UPDATE `auth_menu` SET `menu_name` = '耗材字典维护', `parent_id` = 1644, `order_num` = 1, `path` = 'maintain', `component` = 'basic/product/product', `query_param` = '{\"vueRouteSource\":1}', `is_frame` = 1, `is_cache` = 0, `menu_type` = 'C', `visible` = '0', `status` = '0', `perms` = 'basic:product:maintain', `icon` = NULL, `create_by` = '超级用户', `create_time` = '2023-01-11 17:02:20', `update_by` = NULL, `update_time` = NULL, `remark` = NULL WHERE `menu_id` = 1646; +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;