瀏覽代碼

feat: pkg contract name

shc 9 月之前
父節點
當前提交
7e7e9a9bd1

+ 3 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/SysDept.java

@@ -41,6 +41,9 @@ public class SysDept implements Serializable {
     @NotBlank(message = "部门名称不能为空")
     private String name;
 
+    // 缩写
+    private String abbr;
+
     /**
      * 排序
      */

+ 6 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmDaDrugEntDrugtable.java

@@ -27,6 +27,12 @@ public class WmDaDrugEntDrugtable extends Model<WmDaDrugEntDrugtable> {
 
 	@TableId
 	private String id;
+
+	/**
+	 * 药品简称
+	 */
+	private String abbr;
+
 	/**
 	 * 药品名称
 	 */

+ 2 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmPackageContract.java

@@ -30,5 +30,7 @@ public class WmPackageContract implements Serializable {
 
     private Integer fileId;
 
+    private String sn;
+
     private LocalDateTime createTime;
 }

+ 38 - 12
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/listener/PackageContractEventListener.java

@@ -1,8 +1,10 @@
 package com.qunzhixinxi.hnqz.admin.listener;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysEntContractInfo;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmDaDrugEntDrugtable;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmPackageContract;
@@ -10,6 +12,7 @@ import com.qunzhixinxi.hnqz.admin.api.entity.WmPackageTaskTypeQty;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.event.PackageContractEvent;
 import com.qunzhixinxi.hnqz.admin.mapper.SysEntContractInfoMapper;
+import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
 import com.qunzhixinxi.hnqz.admin.service.SysFileService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaDrugEntDrugtableService;
 import com.qunzhixinxi.hnqz.admin.service.WmPackageContractService;
@@ -28,6 +31,7 @@ import org.springframework.scheduling.annotation.Async;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Arrays;
@@ -51,13 +55,13 @@ public class PackageContractEventListener {
     @AllArgsConstructor
     private enum MAH {
 
-        ENT_1("长春祈健生物制品有限公司", "长春市高新开发区火炬路1号", "蔡岩", "", "0431-85089081", "", BankInfo.E1),
-        ENT_2("上海生物制品研究所有限责任公司", "上海市奉贤区广丰路758号", "李秀玲", "张光中", "021-22132888", "", BankInfo.E2),
-        ENT_3("武汉生物制品研究所有限责任公司", "武汉市江夏区郑店黄金工业园路1号", "段凯", "", "027-88840477", "027-88913353", BankInfo.E3),
-        ENT_4("北京生物制品研究所有限责任公司", "北京市北京经济技术开发区博兴二路9号院4号楼2层205室", "张云涛", "赵增虎", "010-60963039", "010-60963311", BankInfo.E4),
-        ENT_5("长春生物制品研究所有限责任公司", "长春市高新技术开发区创新路1616号", "顾建阳", "马俊刚", "0431-87914066", "", BankInfo.E5),
-        ENT_6("成都生物制品研究所有限责任公司", "成都市锦江区锦华路三段379号", "葛永红", "徐澜方", "028-84418827", "028-84418201", BankInfo.E6),
-        ENT_7("兰州生物制品研究所有限责任公司", "甘肃省兰州市城关区盐场路888号", "邹勇", "马忠山", "0931-8316777", "0931-8343199", BankInfo.E7);
+        ENT_1("长春祈健生物制品有限公司", "长春祈健", "长春市高新开发区火炬路1号", "蔡岩", "", "0431-85089081", "", BankInfo.E1),
+        ENT_2("上海生物制品研究所有限责任公司", "上海公司", "上海市奉贤区广丰路758号", "李秀玲", "张光中", "021-22132888", "", BankInfo.E2),
+        ENT_3("武汉生物制品研究所有限责任公司", "武汉公司", "武汉市江夏区郑店黄金工业园路1号", "段凯", "", "027-88840477", "027-88913353", BankInfo.E3),
+        ENT_4("北京生物制品研究所有限责任公司", "北京公司", "北京市北京经济技术开发区博兴二路9号院4号楼2层205室", "张云涛", "赵增虎", "010-60963039", "010-60963311", BankInfo.E4),
+        ENT_5("长春生物制品研究所有限责任公司", "长春公司", "长春市高新技术开发区创新路1616号", "顾建阳", "马俊刚", "0431-87914066", "", BankInfo.E5),
+        ENT_6("成都生物制品研究所有限责任公司", "成都公司", "成都市锦江区锦华路三段379号", "葛永红", "徐澜方", "028-84418827", "028-84418201", BankInfo.E6),
+        ENT_7("兰州生物制品研究所有限责任公司", "兰州公司", "甘肃省兰州市城关区盐场路888号", "邹勇", "马忠山", "0931-8316777", "0931-8343199", BankInfo.E7);
 
 
         public static MAH get(String entName) {
@@ -66,6 +70,7 @@ public class PackageContractEventListener {
 
 
         private final String name;
+        private final String abbr;
         private final String address;
         private final String respName;
         private final String contractName;
@@ -103,6 +108,7 @@ public class PackageContractEventListener {
     private final WmScorePackageService packageService;
     private final WmDaDrugEntDrugtableService drugEntDrugtableService;
     private final SysEntContractInfoMapper entContractInfoMapper;
+    private final SysDeptService deptService;
 
 
     /**
@@ -149,6 +155,7 @@ public class PackageContractEventListener {
         WmPackageContract pc = new WmPackageContract();
         pc.setPackageId(pkgId);
         pc.setFileId(Integer.valueOf(fileId));
+        pc.setSn(params.get("contract_no"));
         pc.setCreateTime(now);
 
         packageContractService.save(pc);
@@ -163,15 +170,19 @@ public class PackageContractEventListener {
         WmScorePackage pkg = packageService.getById(event.getPackageId().toString());
         log.info("pkg_info:【{}】", pkg);
 
+        // 获取区域信息
+        SysDept cso1 = deptService.getById(Integer.valueOf(pkg.getSendPackageDeptId()));
+
+        // 获取服务商信息
+        SysDept service = deptService.getById(Integer.getInteger(pkg.getDeptId()));
+
         // 通过药品获取甲方信息
         String[] drugtable = pkg.getDrugtable();
         List<WmDaDrugEntDrugtable> drugtables = drugEntDrugtableService.listByIds(Arrays.stream(drugtable).collect(Collectors.toSet()));
-        String drugEntName = drugtables.get(0).getDrugEntName();
+        WmDaDrugEntDrugtable drug = drugtables.get(0);
+        String drugEntName = drug.getDrugEntName();
         MAH mah = MAH.get(drugEntName);
 
-        // 合同号
-        String pkgSn = StrUtil.isNotBlank(pkg.getPackageSn()) ? pkg.getPackageSn().toUpperCase() : DateTimeFormatter.ofPattern(DatePattern.PURE_DATETIME_MS_PATTERN).format(LocalDateTime.now());
-        params.put("contract_no", pkgSn);
 
         // 甲方信息
         if (mah != null) {
@@ -200,11 +211,26 @@ public class PackageContractEventListener {
             params.put("party_b_reg_code", contractInfo.getRegCode());
         }
 
+        // 合同号 生产企业简称+“服务字"+年度-【省区简称]-001(待补充映射表逻辑)-服务季度Q1\Q4-服务商简称(待补充映射表)-产品简称(待补充映射表)-若存在同服务商
+        // String pkgSn = StrUtil.isNotBlank(pkg.getPackageSn()) ? pkg.getPackageSn().toUpperCase() : DateTimeFormatter.ofPattern(DatePattern.PURE_DATETIME_MS_PATTERN).format(LocalDateTime.now());
+        LocalDate endTime = pkg.getEndTime();
+        int month = endTime.getMonthValue();
+        int quarter = (month == 3 ? 1 : month == 6 ? 2 : month == 9 ? 3 : 4);
+        String pkgSn = String.format("%s服务字%s-[%s]-%s-Q%s-%s-%s", mah.abbr, endTime.getYear(), cso1.getAbbr(), "001", quarter, drug.getAbbr(), service.getAbbr());
+
+        // 判断是否是补充包
+        List<WmPackageContract> list = packageContractService.list(Wrappers.<WmPackageContract>lambdaQuery().likeRight(WmPackageContract::getSn, pkgSn));
+
+        if (CollUtil.isNotEmpty(list)) {
+            pkgSn += "-BC" + list.size();
+        }
+
+        params.put("contract_no", pkgSn);
         params.put("agreement_no", pkgSn);
 
         // 合同岂止时间
         params.put("issue_date", DateTimeFormatter.ofPattern(DatePattern.CHINESE_DATE_PATTERN).format(pkg.getCreateTime()));
-        params.put("expiry_date", DateTimeFormatter.ofPattern(DatePattern.CHINESE_DATE_PATTERN).format(pkg.getEndTime()));
+        params.put("expiry_date", DateTimeFormatter.ofPattern(DatePattern.CHINESE_DATE_PATTERN).format(endTime));
 
 
         // 任务数量统计