diff --git a/src/main/java/com/glxp/mipsdl/client/ptxhyy/PtxhyyClient.java b/src/main/java/com/glxp/mipsdl/client/ptxhyy/PtxhyyClient.java index 961e18c..5087a36 100644 --- a/src/main/java/com/glxp/mipsdl/client/ptxhyy/PtxhyyClient.java +++ b/src/main/java/com/glxp/mipsdl/client/ptxhyy/PtxhyyClient.java @@ -1,7 +1,9 @@ package com.glxp.mipsdl.client.ptxhyy; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.glxp.mipsdl.client.CommonHttpClient; import com.glxp.mipsdl.config.ThirdSysConfig; import com.glxp.mipsdl.constant.ConstantType; @@ -12,34 +14,40 @@ import com.glxp.mipsdl.dao.basic.BasicCorpDao; import com.glxp.mipsdl.dao.inout.IoCodeDao; import com.glxp.mipsdl.dao.inout.IoOrderDao; import com.glxp.mipsdl.dao.inout.IoOrderDetailBizDao; -import com.glxp.mipsdl.dao.thrsys.ThrBustypeOriginDao; import com.glxp.mipsdl.dao.thrsys.ThrInvWarehouseDao; +import com.glxp.mipsdl.dao.thrsys.ThrProductsDao; import com.glxp.mipsdl.dao.thrsys.ThrSystemBusApiDao; import com.glxp.mipsdl.entity.auth.AuthWarehouseEntity; import com.glxp.mipsdl.entity.basic.BasicBussinessTypeEntity; import com.glxp.mipsdl.entity.inout.IoCodeEntity; import com.glxp.mipsdl.entity.inout.IoOrderDetailBizEntity; import com.glxp.mipsdl.entity.inout.IoOrderEntity; +import com.glxp.mipsdl.entity.inout.IoOrderInvoiceEntity; import com.glxp.mipsdl.entity.thrsys.ThrCorpEntity; import com.glxp.mipsdl.entity.thrsys.ThrInvWarehouseEntity; import com.glxp.mipsdl.entity.thrsys.ThrSystemBusApiEntity; -import com.glxp.mipsdl.http.HttpClient; -import com.glxp.mipsdl.req.base.*; +import com.glxp.mipsdl.req.base.UdiwmsOrderDetailRequest; +import com.glxp.mipsdl.req.base.UdiwmsOrderRequest; +import com.glxp.mipsdl.req.ptxhyy.PtxhyyOrderDetailRequest; +import com.glxp.mipsdl.req.ptxhyy.PtxhyyOrderRequest; import com.glxp.mipsdl.res.BaseResponse; import com.glxp.mipsdl.service.auth.AuthWarehouseService; import com.glxp.mipsdl.service.thrsys.ThrCorpService; -import com.glxp.mipsdl.service.thrsys.ThrSystemDetailService; import com.glxp.mipsdl.util.DateUtil; import com.glxp.mipsdl.util.ResultVOUtils; import com.glxp.mipsdl.util.SubmitOrderUtil; -import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; /** @@ -63,6 +71,7 @@ public class PtxhyyClient extends CommonHttpClient { private final IoCodeDao codeDao; private final IoOrderDetailBizDao orderDetailBizDao; private final SubmitOrderUtil submitOrderUtil; + private final ThrProductsDao thrProductsDao; @Override public BaseResponse submitOrders(UdiwmsOrderRequest udiwmsOrderRequest) { @@ -160,15 +169,62 @@ public class PtxhyyClient extends CommonHttpClient { //查询业务单据详情 List detailBizEntities = orderDetailBizDao.selectList(new LambdaQueryWrapper().eq(IoOrderDetailBizEntity::getOrderIdFk, orderEntity.getBillNo())); + //单据金额 + BigDecimal djje = detailBizEntities.stream().map(IoOrderDetailBizEntity::getPrice).reduce(BigDecimal.ONE, BigDecimal::add); + List ioOrderInvoiceEntities = IoOrderInvoiceEntity.builder().build().selectList(Wrappers.lambdaQuery(IoOrderInvoiceEntity.class).eq(IoOrderInvoiceEntity::getOrderIdFk, orderEntity.getId())); + PtxhyyOrderRequest ptxhyyOrderRequest = PtxhyyOrderRequest + .builder() + .kfxh(udiwmsOrderRequest.getLocInvCode()) + .lzdh(udiwmsOrderRequest.getBillNo()) + .czgh("udi_" + orderEntity.getCreateUser()) + .lzfs(udiwmsOrderRequest.getBillType()) + .dwxh(udiwmsOrderRequest.getCorpId()) + .rkrq(LocalDate.parse(udiwmsOrderRequest.getBillDate())) + .djje(djje) + .fpbz(CollectionUtil.isNotEmpty(ioOrderInvoiceEntities) && ioOrderInvoiceEntities.size() > 0) + .zdrq(LocalDateTime.parse(udiwmsOrderRequest.getBillDate())) + .lsje(djje) + .fpzs(CollectionUtil.isNotEmpty(ioOrderInvoiceEntities) ? ioOrderInvoiceEntities.size() : 0) + .udixh(udiwmsOrderRequest.getBillNo()) + .build(); setOrderDetailList(ioCodeEntities, items, detailBizEntities); Collections.reverse(items); - //云霄使用items字段,其他医院使用item字段 - udiwmsOrderRequest.setItem(items); + for (UdiwmsOrderDetailRequest i : items) { + String udim = ""; + if (CollectionUtil.isNotEmpty(i.getCodeList())) { + udim = i.getCodeList().stream().map(UdiwmsOrderDetailRequest.CodeDetailEntity::getCode).collect(Collectors.joining(",")); + } + String fphm = ""; + LocalDateTime fprq = null; + if (CollectionUtil.isNotEmpty(ioOrderInvoiceEntities)) { + List invoiceList = ioOrderInvoiceEntities.stream().filter(s -> i.getBindRlFk().equals(s.getBindRlFk()) && i.getBatchNo().equals(s.getBatchNo())) + .sorted(Comparator.comparing(IoOrderInvoiceEntity::getInvoiceDate, Comparator.reverseOrder())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(invoiceList)) { + fphm = invoiceList.stream().map(IoOrderInvoiceEntity::getInvoiceCode).collect(Collectors.joining(",")); + fprq = LocalDateTime.parse(DateUtil.formatDateTime(invoiceList.get(0).getInvoiceDate())); + ioOrderInvoiceEntities.removeAll(invoiceList); + } + } + PtxhyyOrderDetailRequest detailRequest = PtxhyyOrderDetailRequest.builder() + .wzxh(i.getProductId()) + .cjxh(i.getSupCode()) + .bzdw(i.getMeasname()) + .bzsl(i.getCount()) + .wzjg(i.getPrice()) + .lsje(i.getPrice()) + .udim(udim) + .hsfl(i.getManufactoryCode()) + .wzph(i.getBatchNo()) + .fphm(fphm) + .fprq(fprq) + .build(); + ptxhyyOrderRequest.getDetailList().add(detailRequest); + } - return submitOrderUtil.submitOrder(orderEntity, udiwmsOrderRequest); + return submitOrderUtil.submitOrder(orderEntity, ptxhyyOrderRequest); } /** diff --git a/src/main/java/com/glxp/mipsdl/dao/inout/IoOrderInvoiceDao.java b/src/main/java/com/glxp/mipsdl/dao/inout/IoOrderInvoiceDao.java new file mode 100644 index 0000000..8209543 --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/dao/inout/IoOrderInvoiceDao.java @@ -0,0 +1,9 @@ +package com.glxp.mipsdl.dao.inout; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.glxp.mipsdl.entity.inout.IoOrderInvoiceEntity; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface IoOrderInvoiceDao extends BaseMapper { +} diff --git a/src/main/java/com/glxp/mipsdl/entity/inout/IoOrderInvoiceEntity.java b/src/main/java/com/glxp/mipsdl/entity/inout/IoOrderInvoiceEntity.java new file mode 100644 index 0000000..92a91a2 --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/entity/inout/IoOrderInvoiceEntity.java @@ -0,0 +1,123 @@ +package com.glxp.mipsdl.entity.inout; + +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@TableName(value = "io_order_invoice") +public class IoOrderInvoiceEntity extends Model { + @TableId(value = "id", type = IdType.INPUT) + private Long id; + + /** + * 订单号外键 + */ + @TableField(value = "orderIdFk") + private String orderIdFk; + + /** + * 机器编码 + */ + @TableField(value = "machineNo") + private String machineNo; + + /** + * 发票代码 + */ + @TableField(value = "invoiceCode") + private String invoiceCode; + + /** + * 发票编码 + */ + @TableField(value = "invoiceEncode") + private String invoiceEncode; + + /** + * 开票日期 + */ + @TableField(value = "invoiceDate") + private Date invoiceDate; + + /** + * 发票价格 + */ + @TableField(value = "price") + private String price; + + /** + * 更新是日期 + */ + @TableField(value = "updateTime") + private Date updateTime; + + /** + * 更新时间 + */ + @TableField(value = "`createUser`") + private String createUser; + + /** + * 创建时间 + */ + @TableField(value = "createTime") + private Date createTime; + + /** + * 更新人 + */ + @TableField(value = "updateUser") + private String updateUser; + + @TableField(value = "bindRlFk") + private String bindRlFk; + + /** + * 批次号 + */ + @TableField(value = "batchNo") + private String batchNo; + + /** + * 生产日期 + */ + @TableField(value = "productDate") + private String productDate; + + /** + * 失效日期 + */ + @TableField(value = "expireDate") + private String expireDate; + + @TableField(value = "licenseUrl") + private String licenseUrl; + + + @TableField(value = "remark") + private String remark; + + @TableField(value = "bizIdFk") + private Long bizIdFk; + + @TableField(exist = false) + private Integer regId; + + + @TableField(exist = false) + private List list; + +} diff --git a/src/main/java/com/glxp/mipsdl/entity/thrsys/ThrProductsEntity.java b/src/main/java/com/glxp/mipsdl/entity/thrsys/ThrProductsEntity.java index f97bf28..bb50888 100644 --- a/src/main/java/com/glxp/mipsdl/entity/thrsys/ThrProductsEntity.java +++ b/src/main/java/com/glxp/mipsdl/entity/thrsys/ThrProductsEntity.java @@ -4,13 +4,14 @@ 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 com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.Data; import java.util.Date; @Data @TableName(value = "thr_products") -public class ThrProductsEntity { +public class ThrProductsEntity extends Model { @TableId(value = "id", type = IdType.INPUT) private Long id; @@ -195,4 +196,16 @@ public class ThrProductsEntity { @TableField(value = "updateUser") private String updateUser; + /** + * 生产厂家编码 + */ + @TableField("manufactoryCode") + private String manufactoryCode; + + /** + * 配送企业编码 + */ + @TableField("supCode") + private String supCode; + } \ No newline at end of file diff --git a/src/main/java/com/glxp/mipsdl/req/base/UdiwmsOrderDetailRequest.java b/src/main/java/com/glxp/mipsdl/req/base/UdiwmsOrderDetailRequest.java index 84a7c6a..a276832 100644 --- a/src/main/java/com/glxp/mipsdl/req/base/UdiwmsOrderDetailRequest.java +++ b/src/main/java/com/glxp/mipsdl/req/base/UdiwmsOrderDetailRequest.java @@ -1,5 +1,6 @@ package com.glxp.mipsdl.req.base; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; import java.math.BigDecimal; @@ -21,6 +22,11 @@ public class UdiwmsOrderDetailRequest { */ private String productName; + /** + * 耗材字典ID外键 + */ + private String bindRlFk; + /** * 单价 */ @@ -121,6 +127,18 @@ public class UdiwmsOrderDetailRequest { */ private String serialNo; + + + /** + * 生产厂家编码 + */ + private String manufactoryCode; + + /** + * 配送企业编码 + */ + private String supCode; + /** * 码明细 */ diff --git a/src/main/java/com/glxp/mipsdl/req/ptxhyy/PtxhyyOrderDetailRequest.java b/src/main/java/com/glxp/mipsdl/req/ptxhyy/PtxhyyOrderDetailRequest.java new file mode 100644 index 0000000..98c3806 --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/req/ptxhyy/PtxhyyOrderDetailRequest.java @@ -0,0 +1,85 @@ +package com.glxp.mipsdl.req.ptxhyy; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 平潭协和医院 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class PtxhyyOrderDetailRequest { + + /** + * 单据序号 + */ +// private String djxh; + + /** + * 物资序号 + */ + private String wzxh; + + /** + * 厂家序号 + */ + private String cjxh; + + /** + * 标准数量单位 + */ + private String bzdw; + + /** + * 标准数量 + */ + private Integer bzsl; + + /** + * 单价 + */ + private BigDecimal wzjg; + + /** + * 零售金额 + */ + private BigDecimal lsje; + + /** + * 单据日期 + */ + private LocalDate djrq; + + /** + * UDI追溯码 + */ + private String udim; + + /** + * 核算分类 + */ + private String hsfl; + + /** + * 物资批号 + */ + private String wzph; + + /** + * 发票号码 + */ + private String fphm; + + /** + * 发票日期 + */ + private LocalDateTime fprq; +} diff --git a/src/main/java/com/glxp/mipsdl/req/ptxhyy/PtxhyyOrderRequest.java b/src/main/java/com/glxp/mipsdl/req/ptxhyy/PtxhyyOrderRequest.java new file mode 100644 index 0000000..61f4e6b --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/req/ptxhyy/PtxhyyOrderRequest.java @@ -0,0 +1,89 @@ +package com.glxp.mipsdl.req.ptxhyy; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +/** + * 平潭协和医院 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class PtxhyyOrderRequest { + + /** + * 库房序号 + */ + private String kfxh; + + /** + * 账簿类别 default:1 + */ + private final Integer zblb = 1; + + /** + * 入库单号 + */ + private String lzdh; + + /** + * 操作工号 + */ + private String czgh; + + /** + * 入库方式 + */ + private String lzfs; + + /** + * 单位序号 + */ + private String dwxh; + + /** + * 入库日期 + */ + private LocalDate rkrq; + + /** + * 单据金额 + */ + private BigDecimal djje; + + /** + * 是否开发票 0否 1是 + */ + private boolean fpbz; + + /** + * 制单日期 + */ + private LocalDateTime zdrq; + + /** + * 零售金额 + */ + private BigDecimal lsje; + + /** + * 发票张数 + */ + private Integer fpzs; + + /** + * UDI的单据唯一标识码 + */ + private String udixh; + + private List detailList = new ArrayList<>(100); +} diff --git a/src/main/java/com/glxp/mipsdl/util/SubmitOrderUtil.java b/src/main/java/com/glxp/mipsdl/util/SubmitOrderUtil.java index bf865d1..c40b676 100644 --- a/src/main/java/com/glxp/mipsdl/util/SubmitOrderUtil.java +++ b/src/main/java/com/glxp/mipsdl/util/SubmitOrderUtil.java @@ -5,7 +5,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.glxp.mipsdl.config.ThirdSysConfig; import com.glxp.mipsdl.constant.Constants; import com.glxp.mipsdl.dao.basic.BasicProductsDao; @@ -22,7 +22,6 @@ import com.glxp.mipsdl.entity.inout.IoOrderUploadLogEntity; import com.glxp.mipsdl.entity.thrsys.ThrProductsEntity; import com.glxp.mipsdl.http.HttpClient; import com.glxp.mipsdl.req.base.UdiwmsOrderDetailRequest; -import com.glxp.mipsdl.req.base.UdiwmsOrderRequest; import com.glxp.mipsdl.res.BaseResponse; import com.glxp.mipsdl.service.thrsys.ThrSystemDetailService; import lombok.extern.slf4j.Slf4j; @@ -106,7 +105,7 @@ public class SubmitOrderUtil { public UdiwmsOrderDetailRequest buildProductInfo(IoOrderDetailBizEntity detailBizEntity) { //查询产品信息 BasicUdirelEntity basicUdirel = basicUdirelDao.selectById(detailBizEntity.getBindRlFk()); - BasicProductsEntity basicProducts = basicProductsDao.selectOne(new QueryWrapper().eq("uuid", basicUdirel.getUuid())); + BasicProductsEntity basicProducts = basicProductsDao.selectOne(new LambdaQueryWrapper().eq(BasicProductsEntity::getUuid, basicUdirel.getUuid())); UdiwmsOrderDetailRequest item = new UdiwmsOrderDetailRequest(); BeanUtil.copyProperties(detailBizEntity, item); @@ -117,16 +116,19 @@ public class SubmitOrderUtil { String thirdProductId = (String) ReflectUtil.getFieldValue(basicUdirel, thirdSysConfig.getThirdId()); item.setProductId(thirdProductId); //产品ID //查询第三方产品名称 - ThrProductsEntity thrProductsEntity = thrProductsDao.selectOne(new QueryWrapper() - .eq("code", thirdProductId)); + ThrProductsEntity thrProductsEntity = thrProductsDao.selectOne(new LambdaQueryWrapper() + .eq(ThrProductsEntity::getCode, thirdProductId)); item.setProductName(thrProductsEntity.getName()); //产品名称 + item.setBindRlFk(detailBizEntity.getBindRlFk()); item.setStandard(detailBizEntity.getSpec()); //规格型号 item.setBillNo(detailBizEntity.getOrderIdFk()); //单据号 item.setRegisterNo(basicProducts.getZczbhhzbapzbh()); //注册/备案证号 item.setManufactory(basicProducts.getManufactory()); //生产厂家 item.setMeasname(basicProducts.getMeasname()); //计量单位 item.setAllowNoBatch(basicProducts.getAllowNoBatch()); //是否允许无批次号 + item.setManufactoryCode(thrProductsEntity.getManufactoryCode()); + item.setSupCode(thrProductsEntity.getSupCode()); return item; } @@ -137,7 +139,7 @@ public class SubmitOrderUtil { * @param udiwmsOrderRequest * @return */ - public BaseResponse submitOrder(IoOrderEntity orderEntity, UdiwmsOrderRequest udiwmsOrderRequest) { + public BaseResponse submitOrder(IoOrderEntity orderEntity, Object udiwmsOrderRequest) { //记录日志 IoOrderUploadLogEntity uploadLog = new IoOrderUploadLogEntity(); uploadLog.setBillDate(orderEntity.getCreateTime());