From 4409ea42e3d69ab75a7b466d01a1542908ca66f9 Mon Sep 17 00:00:00 2001 From: anthonywj Date: Thu, 1 Aug 2024 09:15:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8D=AF=E5=93=81=E5=AD=97=E5=85=B8=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basic/BasicOrderPrintController.java | 1 - .../basic/UdiContrastController.java | 47 +- .../inout/IoOrderMutiController.java | 12 +- .../controller/inout/IoSplitController.java | 21 +- .../controller/inv/UdiTraceController.java | 2 - .../thrsys/ThrProductsController.java | 6 +- .../api/entity/basic/UdiProductEntity.java | 102 ++++- .../api/entity/basic/UdiRelevanceEntity.java | 3 + .../java/com/glxp/api/http/NmpaUdiClient.java | 4 +- .../glxp/api/req/basic/AddProductRequest.java | 9 +- .../api/req/basic/FilterUdiRelRequest.java | 2 +- .../api/req/basic/UpdateLevelDrugRequest.java | 35 ++ .../res/inout/IoSplitCodeDetailResponse.java | 13 + .../api/service/basic/UdiProductService.java | 419 ++++++++++++++++-- .../BasicProductsImportLogServiceImpl.java | 3 +- .../basic/impl/UdiProductServiceImpl.java | 350 --------------- .../impl/InvInnerOrderPrintServiceImpl.java | 3 +- .../glxp/api/util/udi/UdiCalCountUtil.java | 1 - .../com/glxp/api/util/udi/UdiInfoUtil.java | 1 - .../mapper/basic/BasicSkPrescribeMapper.xml | 28 +- .../mapper/inout/IoSplitCodeDetailMapper.xml | 10 +- src/main/resources/schemas/schema_v2.4.sql | 4 + 22 files changed, 595 insertions(+), 481 deletions(-) create mode 100644 src/main/java/com/glxp/api/req/basic/UpdateLevelDrugRequest.java delete mode 100644 src/main/java/com/glxp/api/service/basic/impl/UdiProductServiceImpl.java diff --git a/src/main/java/com/glxp/api/controller/basic/BasicOrderPrintController.java b/src/main/java/com/glxp/api/controller/basic/BasicOrderPrintController.java index a10281cd4..7a6cca87d 100644 --- a/src/main/java/com/glxp/api/controller/basic/BasicOrderPrintController.java +++ b/src/main/java/com/glxp/api/controller/basic/BasicOrderPrintController.java @@ -19,7 +19,6 @@ import com.glxp.api.entity.system.SystemPDFTemplateEntity; import com.glxp.api.req.basic.FilterOrderPrintRequest; import com.glxp.api.req.inout.FilterOrderRequest; import com.glxp.api.res.basic.UdiRelevanceResponse; -import com.glxp.api.res.inout.IoOrderDetailCodeResponse; import com.glxp.api.res.inout.IoOrderResponse; import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.basic.UdiProductService; diff --git a/src/main/java/com/glxp/api/controller/basic/UdiContrastController.java b/src/main/java/com/glxp/api/controller/basic/UdiContrastController.java index ab08699ab..74f23672c 100644 --- a/src/main/java/com/glxp/api/controller/basic/UdiContrastController.java +++ b/src/main/java/com/glxp/api/controller/basic/UdiContrastController.java @@ -1,9 +1,5 @@ package com.glxp.api.controller.basic; -import com.glxp.api.req.basic.AddProductRequest; -import com.glxp.api.service.inout.IoOrderDetailCodeService; -import com.glxp.api.util.IntUtil; -import org.springframework.beans.BeanUtils; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; @@ -13,26 +9,26 @@ import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.BusinessType; import com.glxp.api.constant.ConstantStatus; -import com.glxp.api.entity.basic.CompanyProductRelevanceEntity; import com.glxp.api.entity.basic.ProductInfoEntity; import com.glxp.api.entity.basic.UdiProductEntity; import com.glxp.api.entity.basic.UdiRelevanceEntity; -import com.glxp.api.entity.system.CompanyEntity; import com.glxp.api.entity.thrsys.ThrProductsEntity; import com.glxp.api.entity.thrsys.ThrSystemEntity; import com.glxp.api.http.NmpaUdiClient; -import com.glxp.api.req.basic.UdiCombineRequest; -import com.glxp.api.req.basic.ProductInfoFilterRequest; -import com.glxp.api.req.basic.RemoveUdiRelRequest; +import com.glxp.api.req.basic.*; import com.glxp.api.req.thrsys.FilterBasicThirdSysRequest; import com.glxp.api.res.PageSimpleResponse; 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.system.CompanyService; +import com.glxp.api.service.basic.ProductInfoService; +import com.glxp.api.service.basic.UdiContrastService; +import com.glxp.api.service.basic.UdiProductService; +import com.glxp.api.service.basic.UdiRelevanceService; +import com.glxp.api.service.inout.IoOrderDetailCodeService; import com.glxp.api.service.thrsys.ThrDataService; import com.glxp.api.service.thrsys.ThrSystemService; import com.glxp.api.util.CustomUtil; +import com.glxp.api.util.IntUtil; import com.glxp.api.util.udi.UdiInfoUtil; import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.GetMapping; @@ -325,22 +321,29 @@ public class UdiContrastController { @AuthRuleAnnotation("") @PostMapping("/udi/udirel/addDrug") public BaseResponse addDrug(@RequestBody AddProductRequest addProductRequest) { - if (addProductRequest.getRelId() != null) - udiProductService.addDrug(addProductRequest); - else { - udiProductService.addDrug(addProductRequest); - } - return ResultVOUtils.success(); + AddProductRequest udiRelevanceEntity = udiProductService.addDrug(addProductRequest); + return ResultVOUtils.success(udiRelevanceEntity); } @PostMapping("/udi/udirel/updatetDrug") public BaseResponse updatetDrug(@RequestBody AddProductRequest addProductRequest) { - UdiProductEntity udiProductEntity = new UdiProductEntity(); - udiProductEntity.setPrice(addProductRequest.getPrice().toString()); - BeanUtils.copyProperties(addProductRequest, udiProductEntity); - boolean b = udiProductService.updateUdiInfo(udiProductEntity); - return ResultVOUtils.success(); + AddProductRequest udiRelevanceEntity = udiProductService.addDrug(addProductRequest); + return ResultVOUtils.success(udiRelevanceEntity); + } + + @PostMapping("/udi/udirel/updateLevelDrug") + public BaseResponse updateLevelDrug(@RequestBody UpdateLevelDrugRequest updateLevelDrugRequest) { + udiProductService.saveOrUpadateLevelDrug(updateLevelDrugRequest); + return ResultVOUtils.success("更新成功"); + + } + + + @PostMapping("/udi/udirel/drug/delLevel") + public BaseResponse delLevel(@RequestBody AddProductRequest addProductRequest) { + boolean b = udiProductService.deleteByNameCode(addProductRequest.getNameCode()); + return ResultVOUtils.success("删除成功!"); } diff --git a/src/main/java/com/glxp/api/controller/inout/IoOrderMutiController.java b/src/main/java/com/glxp/api/controller/inout/IoOrderMutiController.java index 2f4c69610..0fbed8f7a 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderMutiController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderMutiController.java @@ -1,5 +1,6 @@ package com.glxp.api.controller.inout; +import com.glxp.api.service.basic.UdiProductService; import org.springframework.beans.BeanUtils; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; @@ -7,38 +8,27 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageInfo; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; -import com.glxp.api.constant.Constant; -import com.glxp.api.constant.ConstantStatus; -import com.glxp.api.constant.ConstantType; 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.UdiEntity; import com.glxp.api.entity.basic.UdiProductEntity; import com.glxp.api.entity.inout.*; -import com.glxp.api.req.basic.FilterUdiRelRequest; import com.glxp.api.req.inout.IoOrderMutiRequest; -import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.res.inout.IoOrderMutiResponse; -import com.glxp.api.res.inout.IoOrderMutiSetResponse; import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.basic.IBasicBussinessTypeService; -import com.glxp.api.service.basic.UdiProductService; import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.inout.*; import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.OrderNoTypeBean; import com.glxp.api.util.RedisUtil; import com.glxp.api.util.udi.FilterUdiUtils; -import org.springframework.beans.BeanUtils; 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 java.lang.reflect.InvocationTargetException; import java.util.*; @RestController diff --git a/src/main/java/com/glxp/api/controller/inout/IoSplitController.java b/src/main/java/com/glxp/api/controller/inout/IoSplitController.java index 0e6c61fbe..e2872dd69 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoSplitController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoSplitController.java @@ -52,7 +52,7 @@ public class IoSplitController extends BaseController { } /** - * 器械拆零按处方查询 + * 器械拆零按处方查询赋码明细 * * @return */ @@ -70,5 +70,24 @@ public class IoSplitController extends BaseController { return ResultVOUtils.success(pageSimpleResponse); } + /** + * 器械拆零按扫码查询处方赋码明细 + * + * @return + */ + @GetMapping("/udiwms/ioSplit/material/tagCode/filter") + public BaseResponse filterByTagCode(IoSplitDetailCodeRequest splitDetailCodeRequest, + BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + List splitCodeEntities = splitCodeDetailService.filterList(splitDetailCodeRequest); + PageInfo pageInfo = new PageInfo<>(splitCodeEntities); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setList(splitCodeEntities); + return ResultVOUtils.success(pageSimpleResponse); + } + } diff --git a/src/main/java/com/glxp/api/controller/inv/UdiTraceController.java b/src/main/java/com/glxp/api/controller/inv/UdiTraceController.java index c6501e5a4..881d46c07 100644 --- a/src/main/java/com/glxp/api/controller/inv/UdiTraceController.java +++ b/src/main/java/com/glxp/api/controller/inv/UdiTraceController.java @@ -3,7 +3,6 @@ package com.glxp.api.controller.inv; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.enums.SqlLike; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; import com.glxp.api.common.res.BaseResponse; @@ -25,7 +24,6 @@ import com.glxp.api.service.inout.IoOrderService; import com.glxp.api.service.inv.impl.InvProductDetailService; import com.glxp.api.util.MsDateUtil; import com.glxp.api.util.udi.FilterUdiUtils; -import net.sf.jasperreports.engine.xml.JRPenFactory; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; 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 fe1e35b23..7697a294c 100644 --- a/src/main/java/com/glxp/api/controller/thrsys/ThrProductsController.java +++ b/src/main/java/com/glxp/api/controller/thrsys/ThrProductsController.java @@ -2,9 +2,9 @@ package com.glxp.api.controller.thrsys; import com.glxp.api.res.basic.UdiRelevanceResponse; +import com.glxp.api.service.basic.UdiProductService; import com.glxp.api.util.IntUtil; import org.springframework.beans.BeanUtils; -import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.IdUtil; @@ -15,23 +15,19 @@ 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.basic.UdiProductEntity; -import com.glxp.api.entity.system.SystemParamConfigEntity; import com.glxp.api.entity.thrsys.ThrProductsEntity; import com.glxp.api.entity.thrsys.ThrSystemDetailEntity; import com.glxp.api.http.ErpBasicClient; import com.glxp.api.req.system.DeleteRequest; import com.glxp.api.req.thrsys.FilterThrProductsRequest; import com.glxp.api.req.thrsys.PostThrProductsRequest; -import com.glxp.api.req.thrsys.ThrOnhandRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.thrsys.ThrProductsResponse; import com.glxp.api.service.auth.CustomerService; -import com.glxp.api.service.basic.UdiProductService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.service.thrsys.ThrProductsService; import com.glxp.api.service.thrsys.ThrSystemDetailService; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; diff --git a/src/main/java/com/glxp/api/entity/basic/UdiProductEntity.java b/src/main/java/com/glxp/api/entity/basic/UdiProductEntity.java index dff2182aa..8466536d3 100644 --- a/src/main/java/com/glxp/api/entity/basic/UdiProductEntity.java +++ b/src/main/java/com/glxp/api/entity/basic/UdiProductEntity.java @@ -1,6 +1,7 @@ package com.glxp.api.entity.basic; import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -12,101 +13,182 @@ import java.util.Date; * 耗材字典信息表 */ @Data +@TableName("basic_products") public class UdiProductEntity { private Long id; + @TableField(value = "uuid") private String uuid; + @TableField(value = "originUuid") private String originUuid; + @TableField(value = "nameCode") private String nameCode; + @TableField(value = "deviceRecordKey") private String deviceRecordKey; + @TableField(value = "packRatio") private String packRatio; + @TableField(value = "packLevel") private String packLevel; + @TableField(value = "packUnit") private String packUnit; + @TableField(value = "bhxjsl") private Integer bhxjsl; + @TableField(value = "bhzxxsbzsl") private Integer bhzxxsbzsl; + @TableField(value = "zxxsbzbhsydysl") private Integer zxxsbzbhsydysl; + @TableField(value = "bhxjcpbm") private String bhxjcpbm; + @TableField(value = "bzcj") private String bzcj; + @TableField(value = "cpmctymc") private String cpmctymc; + @TableField(value = "cplb") private String cplb; + @TableField(value = "flbm") private String flbm; + @TableField(value = "ggxh") private String ggxh; + @TableField(value = "qxlb") private String qxlb; + @TableField(value = "tyshxydm") private String tyshxydm; + @TableField(value = "ylqxzcrbarmc") private String ylqxzcrbarmc; + @TableField(value = "zczbhhzbapzbh") private String zczbhhzbapzbh; + @TableField(value = "ylqxzcrbarywmc") private String ylqxzcrbarywmc; + @TableField(value = "sydycpbs") private String sydycpbs; + @TableField(value = "sjcpbm") private String sjcpbm; + @TableField(value = "versionNumber") private Integer versionNumber; + @TableField(value = "diType") private Integer diType; + @TableField(value = "ybbm") private String ybbm; + @TableField(value = "sptm") private String sptm; + @TableField(value = "manufactory") private String manufactory; + @TableField(value = "measname") private String measname; + @TableField(value = "productType") private Integer productType; + @TableField(value = "scbssfbhph") private String scbssfbhph; + @TableField(value = "scbssfbhxlh") private String scbssfbhxlh; + @TableField(value = "scbssfbhscrq") private String scbssfbhscrq; + @TableField(value = "scbssfbhsxrq") private String scbssfbhsxrq; + @TableField(value = "cpms") private String cpms; + @TableField(value = "allowNoBatch") private Boolean allowNoBatch; + @TableField(value = "allowNoExpire") private Boolean allowNoExpire; + @TableField(value = "allowNoProduct") private Boolean allowNoProduct; + @TableField(value = "allowNoSerial") private Boolean allowNoSerial; + @TableField(value = "spmc") private String spmc; + @TableField(value = "cplx") private String cplx; + @TableField(value = "hchzsb") private String hchzsb; + @TableField(value = "cpdls") private String cpdls; + @TableField(value = "basicPrductRemak1") private String basicPrductRemak1; + @TableField(value = "basicPrductRemak2") private String basicPrductRemak2; + @TableField(value = "basicPrductRemak3") private String basicPrductRemak3; + @TableField(value = "basicPrductRemak4") private String basicPrductRemak4; + @TableField(value = "basicPrductRemak5") private String basicPrductRemak5; + @TableField(value = "basicPrductRemak6") private String basicPrductRemak6; + @TableField(value = "basicPrductRemak7") private String basicPrductRemak7; + @TableField(value = "basicPrductRemak8") private String basicPrductRemak8; + @TableField(value = "price") private String price; - + @TableField(exist = false) //本地生成信息 private String batchNo; + @TableField(exist = false) private String produceDate; + @TableField(exist = false) private String expireDate; + @TableField(exist = false) private String serialNo; + @TableField(exist = false) private String udi; + @TableField(exist = false) private String code; + @TableField(exist = false) private Integer count; + @TableField(exist = false) private String warehouseCode; + @TableField(exist = false) private String deptCode; + @TableField(exist = false) private String udplatCode; + @TableField(exist = false) private String relId;//关联ID主键 + @TableField(exist = false) private Integer status; + @TableField(exist = false) private String supId; - + @TableField(exist = false) private Boolean useMuti; //是否多次使用 + @TableField(exist = false) private Long relSupId; - private Integer zdcfsycs; + @TableField(value = "pinyinInitial") private String pinyinInitial; + @TableField(value = "zdcfsycs") + private Integer zdcfsycs; - + @TableField(value = "sfwblztlcp") private String sfwblztlcp; + @TableField(value = "cgzmraqxgxx") private String cgzmraqxgxx; + @TableField(value = "sfbjwycxsy") private String sfbjwycxsy; + @TableField(value = "sfwwjbz") private String sfwwjbz; + @TableField(value = "syqsfxyjxmj") private String syqsfxyjxmj; + @TableField(value = "mjfs") private String mjfs; + @TableField(value = "categoryName") private String categoryName; + @TableField(value = "updateTime") private Date updateTime; + @TableField(value = "useNum") private Integer useNum; + @TableField(value = "updateUser") private String updateUser; + @TableField(value = "createTime") private Date createTime; + @TableField(value = "createUser") private String createUser; + @TableField(value = "destinyType") private Integer destinyType; /** * 包装规格 */ + @TableField(value = "bzgg") private String bzgg; /** @@ -136,15 +218,14 @@ public class UdiProductEntity { @TableField(value = "matrial") @ApiModelProperty(value = "耗材材质") private String matrial; - + @TableField(exist = false) private Integer purType; - + @TableField(exist = false) private Integer hcType; - + @TableField(value = "requireScanCode") private Integer requireScanCode; - /** * 产品类型 1:药品 2:耗材 */ @@ -210,7 +291,7 @@ public class UdiProductEntity { private Integer physicType; /** - *制剂规格 + * 制剂规格 */ @TableField(value = "prepnSpec") private String prepnSpec; @@ -222,14 +303,13 @@ public class UdiProductEntity { private Integer majorType; - /** * 医保分类 1:甲类;2:乙类;3:丙类 */ @TableField(value = "medicareType") private Integer medicareType; - + @TableField(value = "majorStatus") private Integer majorStatus; } diff --git a/src/main/java/com/glxp/api/entity/basic/UdiRelevanceEntity.java b/src/main/java/com/glxp/api/entity/basic/UdiRelevanceEntity.java index b9e7af9c0..4f0a8c29f 100644 --- a/src/main/java/com/glxp/api/entity/basic/UdiRelevanceEntity.java +++ b/src/main/java/com/glxp/api/entity/basic/UdiRelevanceEntity.java @@ -250,4 +250,7 @@ public class UdiRelevanceEntity { @TableField(value = "payFeeCode") private String payFeeCode; + @TableField(value = "productsType") + private Integer productsType; + } diff --git a/src/main/java/com/glxp/api/http/NmpaUdiClient.java b/src/main/java/com/glxp/api/http/NmpaUdiClient.java index 550a1bf86..c61ef2fc4 100644 --- a/src/main/java/com/glxp/api/http/NmpaUdiClient.java +++ b/src/main/java/com/glxp/api/http/NmpaUdiClient.java @@ -1,15 +1,13 @@ package com.glxp.api.http; +import com.glxp.api.service.basic.UdiProductService; import org.springframework.beans.BeanUtils; -import cn.hutool.core.collection.CollUtil; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.entity.basic.ProductInfoEntity; import com.glxp.api.entity.basic.UdiProductEntity; import com.glxp.api.req.basic.ProductInfoFilterRequest; import com.glxp.api.service.basic.ProductInfoService; -import com.glxp.api.service.basic.UdiProductService; import com.glxp.api.util.UuidUtils; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; diff --git a/src/main/java/com/glxp/api/req/basic/AddProductRequest.java b/src/main/java/com/glxp/api/req/basic/AddProductRequest.java index 6094cd2aa..9aef9bae2 100644 --- a/src/main/java/com/glxp/api/req/basic/AddProductRequest.java +++ b/src/main/java/com/glxp/api/req/basic/AddProductRequest.java @@ -159,10 +159,6 @@ public class AddProductRequest { //商品名称 private String spmc; - /** - * 包装单位 - */ - private String packUnit; /** * 产品类型 1:药品 2:耗材 @@ -259,10 +255,13 @@ public class AddProductRequest { private String uuid; private String nameCode; private String cpmctymc; - private List drugLevelLists; + private List drugLevelLists; /** * 关联表主键 */ private Long relId; + + + private Long id; } diff --git a/src/main/java/com/glxp/api/req/basic/FilterUdiRelRequest.java b/src/main/java/com/glxp/api/req/basic/FilterUdiRelRequest.java index f5ca701b6..df7d7b358 100644 --- a/src/main/java/com/glxp/api/req/basic/FilterUdiRelRequest.java +++ b/src/main/java/com/glxp/api/req/basic/FilterUdiRelRequest.java @@ -116,7 +116,7 @@ public class FilterUdiRelRequest extends ListPageRequest { //药品参数 private String cpms; - private Integer productsType = 1;//默认是耗材 + private Integer productsType;//默认是耗材 } diff --git a/src/main/java/com/glxp/api/req/basic/UpdateLevelDrugRequest.java b/src/main/java/com/glxp/api/req/basic/UpdateLevelDrugRequest.java new file mode 100644 index 000000000..9d6c86a76 --- /dev/null +++ b/src/main/java/com/glxp/api/req/basic/UpdateLevelDrugRequest.java @@ -0,0 +1,35 @@ +package com.glxp.api.req.basic; + +import lombok.Data; + +@Data +public class UpdateLevelDrugRequest { + + private Long id; + /** + * 层级标识 + */ + private String nameCode; + /** + * 包装级别 + */ + private Integer packLevel; + /** + * 包装层级 + */ + private String packUnit; + /** + * 上级产品编码 + */ + private String sjcpbm; + /** + * 下级产品编码 + */ + private String bhxjcpbm; + /** + * 包含下级数量 + */ + private Integer bhxjsl; + private Long relId; + private String uuid; +} diff --git a/src/main/java/com/glxp/api/res/inout/IoSplitCodeDetailResponse.java b/src/main/java/com/glxp/api/res/inout/IoSplitCodeDetailResponse.java index 93b0ae942..bc4518c29 100644 --- a/src/main/java/com/glxp/api/res/inout/IoSplitCodeDetailResponse.java +++ b/src/main/java/com/glxp/api/res/inout/IoSplitCodeDetailResponse.java @@ -71,4 +71,17 @@ public class IoSplitCodeDetailResponse { private String expireDate; private String serialNo; private String orderId; + + + private String thrId; + private String prescribeCode; + private String relId; + private String itemName; + private String measureCount; + private String measureUnit; + private String category; + private String frequency; + private String price; + private String amount; + private String ggxh; } diff --git a/src/main/java/com/glxp/api/service/basic/UdiProductService.java b/src/main/java/com/glxp/api/service/basic/UdiProductService.java index 925accd09..9f4f7818d 100644 --- a/src/main/java/com/glxp/api/service/basic/UdiProductService.java +++ b/src/main/java/com/glxp/api/service/basic/UdiProductService.java @@ -1,77 +1,422 @@ package com.glxp.api.service.basic; +import cn.hutool.core.collection.CollUtil; +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.constant.ConstantStatus; +import com.glxp.api.dao.basic.UdiProductDao; +import com.glxp.api.dao.basic.UdiRelevanceDao; import com.glxp.api.entity.basic.UdiProductEntity; +import com.glxp.api.entity.basic.UdiRelevanceEntity; +import com.glxp.api.exception.JsonException; import com.glxp.api.req.basic.AddProductRequest; import com.glxp.api.req.basic.FilterUdiRelRequest; import com.glxp.api.req.basic.UdiInfoRequest; +import com.glxp.api.req.basic.UpdateLevelDrugRequest; import com.glxp.api.res.basic.UdiRelevanceResponse; -import org.apache.ibatis.annotations.Param; +import com.glxp.api.service.auth.CustomerService; +import com.glxp.api.util.*; +import com.glxp.api.util.udi.FilterUdiUtils; +import org.apache.commons.lang3.exception.ExceptionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import java.util.List; +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; -/** - * 耗材字典-字典信息 - */ -public interface UdiProductService { +@Service +@Transactional(rollbackFor = Exception.class) +public class UdiProductService { + @Resource + private CustomerService customerService; + @Resource + UdiProductDao udiProductDao; + @Resource + UdiRelevanceDao udiRelevanceDao; + @Resource + GennerOrderUtils gennerOrderUtils; + @Resource + private com.glxp.api.service.system.ClassifyCodeService classifyCodeService; - List filterUdiInfo(FilterUdiRelRequest filterUdiRelRequest); + private static final Logger logger = LoggerFactory.getLogger(UdiProductService.class); - UdiProductEntity findBySptm(String sptm); + public List filterUdiInfo(FilterUdiRelRequest filterUdiRelRequest) { + if (filterUdiRelRequest == null) { + return Collections.emptyList(); + } + if (filterUdiRelRequest.getPage() != null) { + int offset = (filterUdiRelRequest.getPage() - 1) * filterUdiRelRequest.getLimit(); + PageHelper.offsetPage(offset, filterUdiRelRequest.getLimit()); + } - List filterUdiInfo2(FilterUdiRelRequest filterUdiRelRequest); + List data = udiProductDao.filterUdiInfo(filterUdiRelRequest); + return data; + } - UdiRelevanceResponse filterUdiInfoById(String id); - List filterAllUdiInfo(FilterUdiRelRequest filterUdiRelRequest); + public UdiProductEntity findBySptm(String sptm) { + FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); + filterUdiRelRequest.setSptm(sptm); + List data = udiProductDao.filterUdiInfo(filterUdiRelRequest); + if (CollUtil.isNotEmpty(data)) { + return data.get(0); + } + return null; + } - UdiProductEntity findByNameCode(String nameCode); + public List filterUdiInfo2(FilterUdiRelRequest filterUdiRelRequest) { + if (filterUdiRelRequest == null) { + return Collections.emptyList(); + } + if (filterUdiRelRequest.getPage() != null) { + int offset = (filterUdiRelRequest.getPage() - 1) * filterUdiRelRequest.getLimit(); + PageHelper.offsetPage(offset, filterUdiRelRequest.getLimit()); + } - UdiProductEntity findById(@Param("id") String id); + List data = udiProductDao.filterUdiInfo2(filterUdiRelRequest); + return data; + } - UdiProductEntity findByUuid(String uuid); + public UdiRelevanceResponse filterUdiInfoById(String id) { + return udiProductDao.filterUdiInfoById(id); + } - List findByOriginUuid(String originUuid); + public List filterAllUdiInfo(FilterUdiRelRequest filterUdiRelRequest) { + if (filterUdiRelRequest == null) { + return Collections.emptyList(); + } + List data = udiProductDao.filterUdiInfo(filterUdiRelRequest); + return data; + } - UdiProductEntity findOneByOriginUuid(String originUuid); + public UdiProductEntity findByNameCode(String nameCode) { + String prefix = FilterUdiUtils.getDiStr(nameCode); + return udiProductDao.findByNameCode(prefix); + } - List findByUuids(String uuid); + public UdiProductEntity findById(String id) { + return udiProductDao.findById(id); + } - boolean insertUdiInfo(UdiProductEntity udiProductEntity); + public UdiProductEntity findByUuid(String uuid) { + return udiProductDao.findByUuid(uuid); + } - boolean insertUdiInfos(List udiInfoEntities); + public List findByOriginUuid(String originUuid) { + return udiProductDao.findByOriginUuid(originUuid); + } - boolean updateUdiInfo(UdiProductEntity udiProductEntity); - boolean updateUdiInfoByUuid(UdiProductEntity udiProductEntity); + public UdiProductEntity findOneByOriginUuid(String originUuid) { + List udiProductEntities = findByOriginUuid(originUuid); + if (CollUtil.isNotEmpty(udiProductEntities)) + return udiProductEntities.get(0); + return null; + } - boolean updateUdiInfoById(UdiProductEntity udiProductEntity); + public List findByUuids(String uuid) { + return udiProductDao.findByUuids(uuid); + } - boolean deleteById(String id); + public boolean insertUdiInfo(UdiProductEntity udiProductEntity) { + if (udiProductEntity.getId() == null) { + udiProductEntity.setId(IdUtil.getSnowflakeNextId()); + } + if (StrUtil.isNotBlank(udiProductEntity.getCpmctymc()) && StrUtil.isBlank(udiProductEntity.getPinyinInitial())) { + try { + String pinyin = PinyinUtils.converterToFirstSpell(udiProductEntity.getCpmctymc()); + udiProductEntity.setPinyinInitial(pinyin); + } catch (Exception e) { + logger.error(ExceptionUtils.getStackTrace(e)); + e.printStackTrace(); + } - boolean deleteByUuid(String uuid); + } + return udiProductDao.insertUdiInfo(udiProductEntity); + } + + public boolean insertUdiInfos(List udiInfoEntities) { + return udiProductDao.insertUdiInfos(udiInfoEntities); + } + + public boolean updateUdiInfo(UdiProductEntity udiProductEntity) { + if (StrUtil.isEmpty(udiProductEntity.getNameCode())) + return false; + return udiProductDao.updateUdiInfo(udiProductEntity); + } + + public boolean updateUdiInfoByUuid(UdiProductEntity udiProductEntity) { + if (StrUtil.isEmpty(udiProductEntity.getUuid())) + return false; + return udiProductDao.updateUdiInfoByUuid(udiProductEntity); + } + + public boolean updateUdiInfoById(UdiProductEntity udiProductEntity) { + return udiProductDao.updateUdiInfoById(udiProductEntity); + } + + + public boolean deleteById(String id) { + return udiProductDao.deleteById(id); + } + + public boolean deleteByUuid(String uuid) { + return udiProductDao.deleteByUuid(uuid); + } + + public boolean deleteByNameCode(String nameCode) { + return udiProductDao.delete(new QueryWrapper().eq("nameCode", nameCode)) > 0; + } + + public List getGgxhList(String relId) { + return udiProductDao.selectGgxhList(relId); + } + + public boolean updateUdiInfoNotAll(UdiInfoRequest udiInfoRequest) { + if (StrUtil.isEmpty(udiInfoRequest.getUuid())) + return false; + return udiProductDao.updateUdiInfoNotAll(udiInfoRequest); + } + + public UdiProductEntity getAllowNoBatch(String nameCode) { + String di = FilterUdiUtils.getDiStr(nameCode); + return udiProductDao.selectAllowNoBatch(di); + } + + public UdiProductEntity selectUdiByName(String nameCode) { + return udiProductDao.selectUdiByName(nameCode); + } + + public UdiProductEntity selectMinUdiByUuid(String uuid, Integer diType) { + FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); + filterUdiRelRequest.setUuid(uuid); + filterUdiRelRequest.setDiType(diType); + List udiProductEntities = udiProductDao.filterUdiInfo(filterUdiRelRequest); + if (CollUtil.isNotEmpty(udiProductEntities)) + return udiProductEntities.get(0); + return null; + } + + public void addProduct(AddProductRequest addProductRequest) { + UdiProductEntity udiProductEntity = new UdiProductEntity(); + BeanUtils.copyProperties(addProductRequest, udiProductEntity); + long relId = gennerOrderUtils.getRelId(); + udiProductEntity.setId(relId); + String code = addProductRequest.getCode(); + if (StrUtil.isEmpty(code)) { + udiProductEntity.setNameCode(relId + ""); + } else { + udiProductEntity.setNameCode(code); + } + udiProductEntity.setUuid(IdUtil.getSnowflakeNextId() + ""); + + udiProductEntity.setCpmctymc(addProductRequest.getName()); + udiProductEntity.setGgxh(addProductRequest.getSpec()); + udiProductEntity.setZczbhhzbapzbh(addProductRequest.getRegisterNo()); + udiProductEntity.setDiType(ConstantStatus.DI_TYPE_MAIN); + + UdiRelevanceEntity udiRelevanceEntity = new UdiRelevanceEntity(); + udiRelevanceEntity.setId(IdUtil.getSnowflakeNextId()); + udiRelevanceEntity.setIsDisable(false); + udiRelevanceEntity.setIsUseDy(false); + udiRelevanceEntity.setUuid(udiProductEntity.getUuid()); + udiRelevanceEntity.setNeedCert(false); + udiRelevanceEntity.setPurType(1); + udiRelevanceEntity.setAttributeType(addProductRequest.getAttributeType()); + udiRelevanceEntity.setHcType(addProductRequest.getHcType()); + // TODO: 2024/2/27 初始化其他字段 + setUpdateInfo(udiProductEntity, udiRelevanceEntity); + //处理是否需要扫码字段 + classifyCodeService.updateRequireScanCode(udiProductEntity); + udiProductDao.insertUdiInfo(udiProductEntity); + udiRelevanceDao.insertUdiRelevance(udiRelevanceEntity); + } /** - * 查询产品规格型号列表 + * 新增/编辑药品信息 * - * @param relId + * @param addProductRequest * @return */ - List getGgxhList(String relId); + public AddProductRequest addDrug(AddProductRequest addProductRequest) { + + UdiRelevanceEntity udiRelevanceEntity; + //编辑保存 + if (addProductRequest.getRelId() != null) { + udiRelevanceEntity = udiRelevanceDao.selectById(addProductRequest.getRelId()); + List udiProductEntities = udiProductDao.findByUuids(udiRelevanceEntity.getUuid()); + for (UdiProductEntity udiProductEntity : udiProductEntities) { + addProductRequest.setNameCode(udiProductEntity.getNameCode()); + BeanUtils.copyProperties(addProductRequest, udiProductEntity); + udiProductEntity.setCpmctymc(addProductRequest.getCpmctymc()); + udiProductEntity.setProductsType(2); + udiProductEntity.setGgxh(addProductRequest.getSpec()); + udiProductEntity.setPrice(addProductRequest.getPrice() == null ? "0" : addProductRequest.getPrice().toString()); + udiProductEntity.setZczbhhzbapzbh(addProductRequest.getRegisterNo()); + if (IntUtil.value(udiProductEntity.getPackLevel()) == 1) { + udiProductEntity.setDiType(1); + } + udiProductDao.updateById(udiProductEntity); + } + } else { + udiRelevanceEntity = new UdiRelevanceEntity(); + udiRelevanceEntity.setId(IdUtil.getSnowflakeNextId()); + udiRelevanceEntity.setIsDisable(false); + udiRelevanceEntity.setIsUseDy(false); + udiRelevanceEntity.setUuid(IdUtil.getSnowflakeNextId() + ""); + udiRelevanceEntity.setNeedCert(false); + udiRelevanceEntity.setPurType(1); + udiRelevanceEntity.setProductsType(2); + udiRelevanceEntity.setAttributeType(addProductRequest.getAttributeType()); + udiRelevanceEntity.setHcType(addProductRequest.getHcType()); + + if (CollUtil.isNotEmpty(addProductRequest.getDrugLevelLists())) { + for (UpdateLevelDrugRequest updateLevelDrugRequest : addProductRequest.getDrugLevelLists()) { + UdiProductEntity udiProductEntity1 = udiProductDao.findByNameCode(updateLevelDrugRequest.getNameCode()); + if (udiProductEntity1 != null) { + throw new JsonException(500, "层级编码已存在!"); + } + UdiProductEntity udiProductEntity = new UdiProductEntity(); + BeanUtils.copyProperties(updateLevelDrugRequest, udiProductEntity); + udiProductEntity.setCpmctymc(addProductRequest.getCpmctymc()); + udiProductEntity.setUuid(udiRelevanceEntity.getUuid()); + udiProductEntity.setProductsType(2); + udiProductEntity.setGgxh(addProductRequest.getSpec()); + udiProductEntity.setPrice(addProductRequest.getPrice() == null ? "0" : addProductRequest.getPrice().toString()); + udiProductEntity.setZczbhhzbapzbh(addProductRequest.getRegisterNo()); + udiProductEntity.setPackLevel(updateLevelDrugRequest.getPackLevel() + ""); + udiProductEntity.setUuid(udiProductEntity.getUuid()); + if (IntUtil.value(udiProductEntity.getPackLevel()) == 1 || addProductRequest.getDrugLevelLists().size() == 1) { + udiProductEntity.setDiType(1); + if (IntUtil.value(udiProductEntity.getPackLevel()) == 1) { + calculateDistCount(udiProductEntity, udiRelevanceEntity); + calculateUseCount(udiProductEntity, udiRelevanceEntity); + } + } + setUpdateInfo(udiProductEntity, udiRelevanceEntity); + udiProductEntity.setId(IdUtil.getSnowflakeNextId()); + udiProductDao.insert(udiProductEntity); + } + + } + udiRelevanceDao.insertUdiRelevance(udiRelevanceEntity); + } + return addProductRequest; + } + + /** + * 添加或更新层级药品信息 + */ + public void saveOrUpadateLevelDrug(UpdateLevelDrugRequest updateLevelDrugRequest) { + //编辑保存 + if (updateLevelDrugRequest.getRelId() != null) { + UdiRelevanceEntity udiRelevanceEntity = udiRelevanceDao.selectById(updateLevelDrugRequest.getRelId()); - boolean updateUdiInfoNotAll(UdiInfoRequest udiInfoRequest); + UdiProductEntity udiProductEntity1 = udiProductDao.findByNameCode(updateLevelDrugRequest.getNameCode()); + if (udiProductEntity1 != null) { + //更新 + udiProductEntity1.setNameCode(updateLevelDrugRequest.getNameCode()); + udiProductEntity1.setPackLevel(updateLevelDrugRequest.getPackLevel() + ""); + udiProductEntity1.setPackUnit(updateLevelDrugRequest.getPackUnit()); + udiProductEntity1.setSjcpbm(updateLevelDrugRequest.getSjcpbm()); + udiProductEntity1.setBhxjcpbm(updateLevelDrugRequest.getBhxjcpbm()); + udiProductEntity1.setBhxjsl(updateLevelDrugRequest.getBhxjsl()); + udiProductDao.updateById(udiProductEntity1); + } else { + //新增 + udiProductEntity1 = udiProductDao.findByUuid(udiRelevanceEntity.getUuid()); + udiProductEntity1.setNameCode(updateLevelDrugRequest.getNameCode()); + udiProductEntity1.setPackLevel(updateLevelDrugRequest.getPackLevel() + ""); + udiProductEntity1.setPackUnit(updateLevelDrugRequest.getPackUnit()); + udiProductEntity1.setSjcpbm(updateLevelDrugRequest.getSjcpbm()); + udiProductEntity1.setBhxjcpbm(updateLevelDrugRequest.getBhxjcpbm()); + udiProductEntity1.setBhxjsl(updateLevelDrugRequest.getBhxjsl()); + udiProductEntity1.setUuid(udiRelevanceEntity.getUuid()); + udiProductEntity1.setId(IdUtil.getSnowflakeNextId()); + udiProductDao.insert(udiProductEntity1); + } + } else { + //必须先提交后才能保存 + UdiProductEntity udiProductEntity1 = udiProductDao.findByNameCode(updateLevelDrugRequest.getNameCode()); + if (udiProductEntity1 != null) { + throw new JsonException(500, "层级编码已存在!"); + } + } + } /** - * 根据DI查询此产品是否允许无批次号 - * - * @param nameCode - * @return + * 根据当前层级标识计算流通拆零数量 */ - UdiProductEntity getAllowNoBatch(String nameCode); + public void calculateDistCount(UdiProductEntity udiProductEntity, UdiRelevanceEntity udiRelevanceEntity) { + List udiProductEntities = udiProductDao.findByOriginUuid(udiProductEntity.getUuid()); + CountWrapper xjCountWrapper = new CountWrapper(); + findUltimateEntity(udiProductEntity, udiProductEntities, xjCountWrapper); + udiRelevanceEntity.setDistributeLevelDi(udiProductEntity.getNameCode()); + udiRelevanceEntity.setDistributeLevelUnit(udiProductEntity.getPackUnit()); + udiRelevanceEntity.setDistributeLevelCount(xjCountWrapper.getCount()); + } + + /** + * 根据当前层级标识计算使用拆零数量 + */ + public void calculateUseCount(UdiProductEntity udiProductEntity, UdiRelevanceEntity udiRelevanceEntity) { + List udiProductEntities = udiProductDao.findByOriginUuid(udiProductEntity.getUuid()); + CountWrapper xjCountWrapper = new CountWrapper(); + findUltimateEntity(udiProductEntity, udiProductEntities, xjCountWrapper); + udiRelevanceEntity.setUseLevelDi(udiProductEntity.getNameCode()); + udiRelevanceEntity.setUseLevelUnit(udiProductEntity.getPackUnit()); + udiRelevanceEntity.setUseLeverCount(xjCountWrapper.getCount()); + } + + public static UdiProductEntity findUltimateEntity(UdiProductEntity udiProductEntity, List udiProductEntities, CountWrapper xjCountWrapper) { + if (StrUtil.isEmpty(udiProductEntity.getBhxjcpbm())) { + xjCountWrapper.addCount(udiProductEntity.getBhxjsl()); + return udiProductEntity; + } + + Optional nextEntityOptional = udiProductEntities.stream() + .filter(item -> item.getNameCode().equals(udiProductEntity.getBhxjcpbm())) + .findFirst(); + + nextEntityOptional.ifPresent(entity -> xjCountWrapper.addCount(udiProductEntity.getBhxjsl())); + + return nextEntityOptional + .map(entity -> findUltimateEntity(entity, udiProductEntities, xjCountWrapper)) + .orElse(null); + } + + + private void setUpdateInfo(UdiProductEntity udiProductEntity, UdiRelevanceEntity udiRelevanceEntity) { + Date now = new Date(); + String userId = String.valueOf(customerService.getUserBean().getId()); + udiProductEntity.setUpdateTime(now); + udiProductEntity.setUpdateUser(userId); + udiRelevanceEntity.setModifyTime(now); + udiRelevanceEntity.setUpdateTime(now); + udiRelevanceEntity.setUpdateUser(userId); + } + + public static class CountWrapper { + private int count; - UdiProductEntity selectUdiByName(String nameCode); + public CountWrapper() { + this.count = 1; + } - UdiProductEntity selectMinUdiByUuid(String uuid, Integer diType); + public int getCount() { + return count; + } - void addProduct(AddProductRequest addProductRequest); - void addDrug(AddProductRequest addProductRequest); + public void addCount(int value) { + if (value == 0) + value = 1; + this.count = this.count * value; + } + } } diff --git a/src/main/java/com/glxp/api/service/basic/impl/BasicProductsImportLogServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/BasicProductsImportLogServiceImpl.java index 34374c30a..428f19054 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/BasicProductsImportLogServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/BasicProductsImportLogServiceImpl.java @@ -1,5 +1,6 @@ package com.glxp.api.service.basic.impl; +import com.glxp.api.service.basic.UdiProductService; import org.springframework.beans.BeanUtils; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; @@ -21,7 +22,6 @@ import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.service.basic.BasicProductsImportDetailService; import com.glxp.api.service.basic.BasicProductsImportLogService; -import com.glxp.api.service.basic.UdiProductService; import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.service.thrsys.ThrDataService; @@ -30,7 +30,6 @@ import com.glxp.api.util.CustomUtil; import com.glxp.api.util.MsDateUtil; import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.HttpClient; -import org.springframework.beans.BeanUtils; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/glxp/api/service/basic/impl/UdiProductServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/UdiProductServiceImpl.java deleted file mode 100644 index e2d1b707a..000000000 --- a/src/main/java/com/glxp/api/service/basic/impl/UdiProductServiceImpl.java +++ /dev/null @@ -1,350 +0,0 @@ -package com.glxp.api.service.basic.impl; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.StrUtil; -import com.github.pagehelper.PageHelper; -import com.glxp.api.constant.ConstantStatus; -import com.glxp.api.dao.basic.UdiProductDao; -import com.glxp.api.dao.basic.UdiRelevanceDao; -import com.glxp.api.entity.basic.BasicBusTypeChangeEntity; -import com.glxp.api.entity.basic.UdiProductEntity; -import com.glxp.api.entity.basic.UdiRelevanceEntity; -import com.glxp.api.idc.service.impl.IdcServiceImpl; -import com.glxp.api.req.basic.AddProductRequest; -import com.glxp.api.req.basic.FilterUdiRelRequest; -import com.glxp.api.req.basic.UdiInfoRequest; -import com.glxp.api.res.basic.UdiRelevanceResponse; -import com.glxp.api.service.auth.CustomerService; -import com.glxp.api.service.basic.UdiProductService; -import com.glxp.api.service.basic.UdiRelevanceService; -import com.glxp.api.util.BeanCopyUtils; -import com.glxp.api.util.GennerOrderUtils; -import com.glxp.api.util.HardWareUtils; -import com.glxp.api.util.PinyinUtils; -import com.glxp.api.util.udi.FilterUdiUtils; -import org.apache.commons.lang3.exception.ExceptionUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.util.Collections; -import java.util.Date; -import java.util.List; - -@Service -@Transactional(rollbackFor = Exception.class) -public class UdiProductServiceImpl implements UdiProductService { - @Resource - private CustomerService customerService; - @Resource - UdiProductDao udiProductDao; - @Resource - UdiRelevanceDao udiRelevanceDao; - @Resource - GennerOrderUtils gennerOrderUtils; - @Resource - private com.glxp.api.service.system.ClassifyCodeService classifyCodeService; - - private static final Logger logger = LoggerFactory.getLogger(UdiProductServiceImpl.class); - - @Override - public List filterUdiInfo(FilterUdiRelRequest filterUdiRelRequest) { - if (filterUdiRelRequest == null) { - return Collections.emptyList(); - } - if (filterUdiRelRequest.getPage() != null) { - int offset = (filterUdiRelRequest.getPage() - 1) * filterUdiRelRequest.getLimit(); - PageHelper.offsetPage(offset, filterUdiRelRequest.getLimit()); - } - - List data = udiProductDao.filterUdiInfo(filterUdiRelRequest); - return data; - } - - - @Override - public UdiProductEntity findBySptm(String sptm) { - FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); - filterUdiRelRequest.setSptm(sptm); - List data = udiProductDao.filterUdiInfo(filterUdiRelRequest); - if (CollUtil.isNotEmpty(data)) { - return data.get(0); - } - return null; - } - - @Override - public List filterUdiInfo2(FilterUdiRelRequest filterUdiRelRequest) { - if (filterUdiRelRequest == null) { - return Collections.emptyList(); - } - if (filterUdiRelRequest.getPage() != null) { - int offset = (filterUdiRelRequest.getPage() - 1) * filterUdiRelRequest.getLimit(); - PageHelper.offsetPage(offset, filterUdiRelRequest.getLimit()); - } - - List data = udiProductDao.filterUdiInfo2(filterUdiRelRequest); - return data; - } - - @Override - public UdiRelevanceResponse filterUdiInfoById(String id) { - return udiProductDao.filterUdiInfoById(id); - } - - @Override - public List filterAllUdiInfo(FilterUdiRelRequest filterUdiRelRequest) { - if (filterUdiRelRequest == null) { - return Collections.emptyList(); - } - List data = udiProductDao.filterUdiInfo(filterUdiRelRequest); - return data; - } - - @Override - public UdiProductEntity findByNameCode(String nameCode) { - String prefix = FilterUdiUtils.getDiStr(nameCode); - return udiProductDao.findByNameCode(prefix); - } - - @Override - public UdiProductEntity findById(String id) { - return udiProductDao.findById(id); - } - - @Override - public UdiProductEntity findByUuid(String uuid) { - return udiProductDao.findByUuid(uuid); - } - - @Override - public List findByOriginUuid(String originUuid) { - return udiProductDao.findByOriginUuid(originUuid); - } - - - @Override - public UdiProductEntity findOneByOriginUuid(String originUuid) { - List udiProductEntities = findByOriginUuid(originUuid); - if (CollUtil.isNotEmpty(udiProductEntities)) - return udiProductEntities.get(0); - return null; - } - - @Override - public List findByUuids(String uuid) { - return udiProductDao.findByUuids(uuid); - } - - @Override - public boolean insertUdiInfo(UdiProductEntity udiProductEntity) { - if (udiProductEntity.getId() == null) { - udiProductEntity.setId(IdUtil.getSnowflakeNextId()); - } - if (StrUtil.isNotBlank(udiProductEntity.getCpmctymc()) && StrUtil.isBlank(udiProductEntity.getPinyinInitial())) { - try { - String pinyin = PinyinUtils.converterToFirstSpell(udiProductEntity.getCpmctymc()); - udiProductEntity.setPinyinInitial(pinyin); - } catch (Exception e) { - logger.error(ExceptionUtils.getStackTrace(e)); - e.printStackTrace(); - } - - } - return udiProductDao.insertUdiInfo(udiProductEntity); - } - - @Override - public boolean insertUdiInfos(List udiInfoEntities) { - return udiProductDao.insertUdiInfos(udiInfoEntities); - } - - @Override - public boolean updateUdiInfo(UdiProductEntity udiProductEntity) { - if (StrUtil.isEmpty(udiProductEntity.getNameCode())) - return false; - return udiProductDao.updateUdiInfo(udiProductEntity); - } - - @Override - public boolean updateUdiInfoByUuid(UdiProductEntity udiProductEntity) { - if (StrUtil.isEmpty(udiProductEntity.getUuid())) - return false; - return udiProductDao.updateUdiInfoByUuid(udiProductEntity); - } - - @Override - public boolean updateUdiInfoById(UdiProductEntity udiProductEntity) { - return udiProductDao.updateUdiInfoById(udiProductEntity); - } - - - @Override - public boolean deleteById(String id) { - return udiProductDao.deleteById(id); - } - - @Override - public boolean deleteByUuid(String uuid) { - return udiProductDao.deleteByUuid(uuid); - } - - @Override - public List getGgxhList(String relId) { - return udiProductDao.selectGgxhList(relId); - } - - @Override - public boolean updateUdiInfoNotAll(UdiInfoRequest udiInfoRequest) { - if (StrUtil.isEmpty(udiInfoRequest.getUuid())) - return false; - return udiProductDao.updateUdiInfoNotAll(udiInfoRequest); - } - - @Override - public UdiProductEntity getAllowNoBatch(String nameCode) { - String di = FilterUdiUtils.getDiStr(nameCode); - return udiProductDao.selectAllowNoBatch(di); - } - - @Override - public UdiProductEntity selectUdiByName(String nameCode) { - return udiProductDao.selectUdiByName(nameCode); - } - - @Override - public UdiProductEntity selectMinUdiByUuid(String uuid, Integer diType) { - FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); - filterUdiRelRequest.setUuid(uuid); - filterUdiRelRequest.setDiType(diType); - List udiProductEntities = udiProductDao.filterUdiInfo(filterUdiRelRequest); - if (CollUtil.isNotEmpty(udiProductEntities)) - return udiProductEntities.get(0); - return null; - } - - @Override - public void addProduct(AddProductRequest addProductRequest) { - UdiProductEntity udiProductEntity = new UdiProductEntity(); - BeanUtils.copyProperties(addProductRequest, udiProductEntity); - long relId = gennerOrderUtils.getRelId(); - udiProductEntity.setId(relId); - String code = addProductRequest.getCode(); - if (StrUtil.isEmpty(code)) { - udiProductEntity.setNameCode(relId + ""); - } else { - udiProductEntity.setNameCode(code); - } - udiProductEntity.setUuid(IdUtil.getSnowflakeNextId() + ""); - - udiProductEntity.setCpmctymc(addProductRequest.getName()); - udiProductEntity.setGgxh(addProductRequest.getSpec()); - udiProductEntity.setZczbhhzbapzbh(addProductRequest.getRegisterNo()); - udiProductEntity.setDiType(ConstantStatus.DI_TYPE_MAIN); - - UdiRelevanceEntity udiRelevanceEntity = new UdiRelevanceEntity(); - udiRelevanceEntity.setId(IdUtil.getSnowflakeNextId()); - udiRelevanceEntity.setIsDisable(false); - udiRelevanceEntity.setIsUseDy(false); - udiRelevanceEntity.setUuid(udiProductEntity.getUuid()); - udiRelevanceEntity.setNeedCert(false); - udiRelevanceEntity.setPurType(1); - udiRelevanceEntity.setAttributeType(addProductRequest.getAttributeType()); - udiRelevanceEntity.setHcType(addProductRequest.getHcType()); - // TODO: 2024/2/27 初始化其他字段 - setUpdateInfo(udiProductEntity, udiRelevanceEntity); - //处理是否需要扫码字段 - classifyCodeService.updateRequireScanCode(udiProductEntity); - udiProductDao.insertUdiInfo(udiProductEntity); - udiRelevanceDao.insertUdiRelevance(udiRelevanceEntity); - } - - @Override - public void addDrug(AddProductRequest addProductRequest) { - UdiProductEntity udiProductEntity = new UdiProductEntity(); - BeanUtils.copyProperties(addProductRequest, udiProductEntity); - long relId = gennerOrderUtils.getRelId(); - udiProductEntity.setId(relId); - String code = addProductRequest.getCode(); - if (StrUtil.isEmpty(code)) { - udiProductEntity.setNameCode(relId + ""); - } else { - udiProductEntity.setNameCode(code); - } - udiProductEntity.setUuid(IdUtil.getSnowflakeNextId() + ""); - - udiProductEntity.setCpmctymc(addProductRequest.getCpmctymc()); - udiProductEntity.setGgxh(addProductRequest.getSpec()); - udiProductEntity.setPrice(addProductRequest.getPrice().toString()); - udiProductEntity.setZczbhhzbapzbh(addProductRequest.getRegisterNo()); - udiProductEntity.setDiType(ConstantStatus.DI_TYPE_MAIN); - - UdiRelevanceEntity udiRelevanceEntity = new UdiRelevanceEntity(); - udiRelevanceEntity.setId(IdUtil.getSnowflakeNextId()); - udiRelevanceEntity.setIsDisable(false); - udiRelevanceEntity.setIsUseDy(false); - udiRelevanceEntity.setUuid(udiProductEntity.getUuid()); - udiRelevanceEntity.setNeedCert(false); - udiRelevanceEntity.setPurType(1); - udiRelevanceEntity.setAttributeType(addProductRequest.getAttributeType()); - udiRelevanceEntity.setHcType(addProductRequest.getHcType()); - // TODO: 2024/2/27 初始化其他字段 - setUpdateInfo(udiProductEntity, udiRelevanceEntity); - //处理是否需要扫码字段 - classifyCodeService.updateRequireScanCode(udiProductEntity); - udiProductDao.insertUdiInfo(udiProductEntity); - udiRelevanceDao.insertUdiRelevance(udiRelevanceEntity); - } - - /** - * 添加或更新层级药品信息 - * - * @param addProductRequest - */ - @Override - public void saveOrUpadateLevelDrug(AddProductRequest addProductRequest) { - UdiProductEntity udiProductEntity = new UdiProductEntity(); - BeanUtils.copyProperties(addProductRequest, udiProductEntity); - if (addProductRequest.getRelId() != null) { - UdiRelevanceEntity udiRelevanceEntity = udiRelevanceDao.selectById(addProductRequest.getRelId()); - if (udiRelevanceEntity != null) { - udiProductEntity.setUuid(udiRelevanceEntity.getUuid()); - } - } else { - udiProductEntity.setUuid(IdUtil.getSnowflakeNextId() + ""); - } - udiProductEntity.setCpmctymc(addProductRequest.getCpmctymc()); - udiProductEntity.setGgxh(addProductRequest.getSpec()); - udiProductEntity.setPrice(addProductRequest.getPrice().toString()); - udiProductEntity.setZczbhhzbapzbh(addProductRequest.getRegisterNo()); - udiProductEntity.setDiType(ConstantStatus.DI_TYPE_MAIN); - - //处理是否需要扫码字段 - classifyCodeService.updateRequireScanCode(udiProductEntity); - - UdiProductEntity udiProductEntity1 = udiProductDao.findByNameCode(udiProductEntity.getNameCode()); - if (udiProductEntity1 != null) { - udiProductDao.updateUdiInfoById(udiProductEntity); - } else - udiProductDao.insertUdiInfo(udiProductEntity); - } - - - private void setUpdateInfo(UdiProductEntity udiProductEntity, UdiRelevanceEntity udiRelevanceEntity) { - Date now = new Date(); - String userId = String.valueOf(customerService.getUserBean().getId()); - udiProductEntity.setUpdateTime(now); - udiProductEntity.setUpdateUser(userId); - udiProductEntity.setCreateTime(now); - udiProductEntity.setCreateUser(userId); - udiRelevanceEntity.setModifyTime(now); - udiRelevanceEntity.setUpdateTime(now); - udiRelevanceEntity.setUpdateUser(userId); - udiRelevanceEntity.setCreateTime(now); - udiRelevanceEntity.setCreateUser(userId); - } -} diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvInnerOrderPrintServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvInnerOrderPrintServiceImpl.java index c5131d94f..84c2014b1 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvInnerOrderPrintServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvInnerOrderPrintServiceImpl.java @@ -1,5 +1,6 @@ package com.glxp.api.service.inv.impl; +import com.glxp.api.service.basic.UdiProductService; import com.glxp.api.util.udi.UdiCalCountUtil; import org.springframework.beans.BeanUtils; import cn.hutool.core.collection.CollUtil; @@ -23,7 +24,6 @@ import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.res.inv.InnerOrderPrintResponse; import com.glxp.api.service.auth.CustomerService; -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.inv.InnerOrderDetailService; @@ -34,7 +34,6 @@ import com.glxp.api.service.system.SystemPDFModuleService; import com.glxp.api.service.system.SystemPDFTemplateService; import com.glxp.api.util.CustomUtil; import com.glxp.api.util.FileUtils; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/glxp/api/util/udi/UdiCalCountUtil.java b/src/main/java/com/glxp/api/util/udi/UdiCalCountUtil.java index b8f02894e..a34ad5500 100644 --- a/src/main/java/com/glxp/api/util/udi/UdiCalCountUtil.java +++ b/src/main/java/com/glxp/api/util/udi/UdiCalCountUtil.java @@ -7,7 +7,6 @@ import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.service.basic.UdiProductService; import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.util.IntUtil; -import org.eclipse.jdt.internal.compiler.ast.NullLiteral; import org.springframework.stereotype.Service; import javax.annotation.Resource; diff --git a/src/main/java/com/glxp/api/util/udi/UdiInfoUtil.java b/src/main/java/com/glxp/api/util/udi/UdiInfoUtil.java index 3e96de848..7c6084096 100644 --- a/src/main/java/com/glxp/api/util/udi/UdiInfoUtil.java +++ b/src/main/java/com/glxp/api/util/udi/UdiInfoUtil.java @@ -5,7 +5,6 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.entity.basic.UdiProductEntity; -import com.glxp.api.service.basic.impl.UdiProductServiceImpl; import com.glxp.api.util.PinyinUtils; import org.apache.commons.lang3.exception.ExceptionUtils; import org.slf4j.Logger; diff --git a/src/main/resources/mybatis/mapper/basic/BasicSkPrescribeMapper.xml b/src/main/resources/mybatis/mapper/basic/BasicSkPrescribeMapper.xml index 471c2051e..e2805c009 100644 --- a/src/main/resources/mybatis/mapper/basic/BasicSkPrescribeMapper.xml +++ b/src/main/resources/mybatis/mapper/basic/BasicSkPrescribeMapper.xml @@ -1,39 +1,17 @@ - - - - - - - - - - - - - - - - - - - - id, code, prescribeDate, createDr, deptCode, deptName, diagnosis, sickerIdFk, remark, - `createUser`, createTime, updateUser, updateTime - - - SELECT iscd.*,code,batchNo,produceDate,expireDate,serialNo,orderId + SELECT iscd.*, + code, + batchNo, + produceDate, + expireDate, + serialNo, + orderId, + bsp.* FROM io_split_code_detail iscd left join io_split_code isc on iscd.codeIdFk = isc.id + left join basic_sk_prescribe_item bsp on iscd.prescribeNum = bsp.prescribeCode AND iscd.sickerCode LIKE #{sickerCode} diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql index 72138e419..eebb9993a 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -3949,6 +3949,10 @@ CALL Pro_Temp_ColumnWork('basic_udirel', 'useLevelUnit', CALL Pro_Temp_ColumnWork('basic_udirel', 'useLeverCount', 'int NULL DEFAULT NULL COMMENT ''使用是当前层级包含计量单元数量''', 1); + +CALL Pro_Temp_ColumnWork('basic_udirel', 'productsType', + ' tinyint NULL DEFAULT b''1'' COMMENT ''产品类型 1:耗材 2:药品''', + 1); CALL Pro_Temp_ColumnWork('io_order', 'workPlaceCode', 'varchar(20)', 1);