Compare commits

...

70 Commits

Author SHA1 Message Date
shusir
0b2d10e662 fix:物料入库、物料库存相关接口 2026-02-06 18:02:00 +08:00
wxr
a7e82da877 来源品位赋值 2026-02-06 16:58:45 +08:00
wxr
6c90826af3 匹配修改 2026-02-06 15:56:31 +08:00
wxr
600540862a 配料取数及设置修改 2026-02-06 15:04:52 +08:00
shusir
c6f4034685 fix:物料新增入库 2026-02-05 18:02:28 +08:00
wxr
e29c43032c 样品委托提交时参数中配置了默认值,业务参数添加默认值 2026-02-05 17:24:39 +08:00
wxr
83fe91812d 任务分配报错bug修复 2026-02-05 17:18:10 +08:00
shusir
50cfdea28d Merge remote-tracking branch 'origin/test' into test 2026-02-05 08:32:13 +08:00
wxr
7d8a5c1e88 荧光线、分析时间等修改 2026-02-04 19:31:41 +08:00
FCL
9014e8bcc8 Merge remote-tracking branch 'origin/test' into test 2026-02-04 18:21:51 +08:00
FCL
fa43a6579a 报告增加属性 2026-02-04 18:07:42 +08:00
shusir
d5b40bfba0 feat:准备物料入库接口 2026-02-04 18:03:51 +08:00
wxr
33b5ec7be5 Merge branch 'test' of https://git.will-way.cn/zgty/zt-qms into test 2026-02-04 16:18:01 +08:00
wxr
5a82d9abd8 任务分配及分析任务提交时配料值赋值 2026-02-04 16:17:51 +08:00
shusir
a96fa0ed9b fix:物料验收流程 2026-02-03 18:02:09 +08:00
shusir
8121c7a97f fix:调整物料验收接口 2026-02-02 18:09:24 +08:00
wxr
a8330ade63 方法变更修改 2026-02-02 17:54:20 +08:00
wxr
e9259122b7 人工配料bug修复 2026-01-31 14:51:58 +08:00
wxr
fbd13f50d4 任务单添加配料方式 2026-01-31 13:43:58 +08:00
shusir
58ab9961c4 feat:物料验收流程接口 2026-01-30 17:16:02 +08:00
wxr
3302a2ee7c 补正系数修改 2026-01-30 16:58:32 +08:00
FCL
1bbfa9a950 Merge remote-tracking branch 'origin/test' into test 2026-01-30 14:57:29 +08:00
shusir
57bf9b0cd5 Merge remote-tracking branch 'origin/test' into test 2026-01-30 14:17:21 +08:00
shusir
5bf435b08e fix:完善批次接口,准备物料验收入库模块及验收新建接口。 2026-01-30 14:16:54 +08:00
FCL
3bf8ee09b7 Merge remote-tracking branch 'origin/test' into test 2026-01-30 14:09:44 +08:00
FCL
4444d9e3c0 fix:报告编制细节修复 2026-01-30 14:09:32 +08:00
wxr
9348c33f1b 补正系数、人工还是自动配料 2026-01-30 09:31:58 +08:00
wxr
969fb2edf7 公式计算bug修复 2026-01-29 19:05:28 +08:00
wxr
e6d08d975f Merge branch 'test' of https://git.will-way.cn/zgty/zt-qms into test 2026-01-29 19:05:01 +08:00
wxr
3cd25f68ef 复检时分析的任务节点修改 2026-01-29 19:01:42 +08:00
shusir
5a03ed1cab fix:新增物料批次提交,物料大类删除校验。 2026-01-29 17:56:30 +08:00
shusir
1c5588a05a fix:调整物料批次接口 2026-01-29 15:39:16 +08:00
FCL
2111c8b3ad feat:设备管理流程类功能开发 2026-01-29 15:25:45 +08:00
shusir
675e1fe850 fix:接口完善,新增库存管理的物料分页列表 2026-01-28 18:01:06 +08:00
FCL
c7d4399e53 feat:设备流程接口 2026-01-28 17:43:19 +08:00
FCL
2fae2ccac2 fix:供应商接口去除权限注解 2026-01-28 16:27:40 +08:00
shusir
533b96fb6a fix:接口完善 2026-01-28 09:00:33 +08:00
shusir
525d588c20 fix:调整物料分类/大类创建接口,新家删除和详情接口 2026-01-27 12:00:20 +08:00
wxr
be2f28cef5 Merge branch 'test' of https://git.will-way.cn/zgty/zt-qms into test 2026-01-27 11:18:20 +08:00
wxr
ce9aff5583 中铜国贸商检委托也提前生成样品编号,与来样编号一致 2026-01-27 11:18:11 +08:00
FCL
71206f43a3 fix:代码调试 2026-01-27 11:15:23 +08:00
shusir
0d164c660e fix:新增物料批次接口及批次拆分及接口。 2026-01-26 18:05:23 +08:00
wxr
2336c370fa 检验委托的一般委托和仲裁委托修改 2026-01-26 17:54:27 +08:00
wxr
a578426458 样品收样不再判断样品在那个分析室 2026-01-26 14:02:35 +08:00
wxr
892596fc2e Merge branch 'test' of https://git.will-way.cn/zgty/zt-qms into test 2026-01-26 13:37:07 +08:00
wxr
50a868e0a0 班组送样等bug修复 2026-01-26 13:36:56 +08:00
shusir
99b6521c19 Merge remote-tracking branch 'origin/test' into test 2026-01-26 09:03:02 +08:00
shusir
215ec8b5aa feat:新增物料分类,物料大类的新建与树列表及分页列表。 2026-01-26 08:59:16 +08:00
wxr
b408d1e726 修改pom文件,liteflow版本管理前移,防止被父liteflow版本覆盖 2026-01-24 11:15:19 +08:00
wxr
23babc6795 交叉审核报错等修改 2026-01-24 09:45:45 +08:00
FCL
6d7caf5738 Merge remote-tracking branch 'origin/test' into test 2026-01-20 17:54:54 +08:00
FCL
3cb93ce84c fix:设备接口调整 2026-01-20 17:54:50 +08:00
houjunxiang
ac44920fa7 feat:报告签名时间格式化调整 2026-01-19 16:53:49 +08:00
FCL
53d40a4b27 Merge branch 'refs/heads/zt-test' into test
# Conflicts:
#	pom.xml
#	zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/framework/datapermission/QMSMultiDataPermissionHandler.java
#	zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/framework/mybatis/QMSDataPermissionConfig.java
2026-01-19 10:59:08 +08:00
ranke
7d8b8c55f1 修改私服地址 2026-01-15 10:03:48 +08:00
ranke
b529df9860 修改版本号,新增快照发布设置 2026-01-15 09:18:02 +08:00
FCL
34277c921a feat:qms阶段性提交 2026-01-13 11:21:28 +08:00
FCL
0b936b7b8f feat:数据权限修改。增加qms数据权限注解 2026-01-13 09:12:50 +08:00
wxr
e20827cd0e 还原QMSMultiDataPermissionHandler 2026-01-12 16:55:02 +08:00
wxr
e64c3a8791 分析回退、结果判定自动报出、结果报出复检修改 2026-01-12 16:50:31 +08:00
FCL
ae34b13023 fix:自动火试金地址更换 2026-01-12 15:34:02 +08:00
FCL
ccfa341429 fix:流程回调接口增加DeptDataPermissionIgnore注解 2026-01-09 14:10:20 +08:00
FCL
7e7295cb74 feat:qms阶段性提交 2026-01-09 11:26:52 +08:00
FCL
10716a0ec5 feat:qms阶段性提交 2026-01-07 11:00:12 +08:00
FCL
b7db2d34ac 部署调试 2026-01-04 18:48:53 +08:00
FCL
8fa11eb44c feat:qms阶段性更新 2026-01-04 16:53:52 +08:00
chenbowen
8c3a1bdff8 1. 升级版本 2025-12-23 10:50:23 +08:00
FCL
212a28059c feat:更新tio,支持redis指定用户名 2025-12-04 10:39:19 +08:00
FCL
9323bb3706 Merge remote-tracking branch 'origin/test' into test 2025-11-28 15:23:00 +08:00
FCL
b2c34982f9 feat:阶段性代码提交 2025-11-28 15:22:17 +08:00
239 changed files with 5335 additions and 6610 deletions

51
pom.xml
View File

@@ -17,7 +17,10 @@
<url>https://github.com/YunaiV/ruoyi-vue-pro</url> <url>https://github.com/YunaiV/ruoyi-vue-pro</url>
<properties> <properties>
<revision>3.0.46</revision> <revision>3.0.47-SNAPSHOT</revision>
<!-- qms服务相关 -->
<zzjc.tio.version>3.9.1.v20251204-RELEASE</zzjc.tio.version>
<liteflow.version>2.15.3</liteflow.version>
<!-- Maven 相关 --> <!-- Maven 相关 -->
<java.version>17</java.version> <java.version>17</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source> <maven.compiler.source>${java.version}</maven.compiler.source>
@@ -41,6 +44,40 @@
<type>pom</type> <type>pom</type>
<scope>import</scope> <scope>import</scope>
</dependency> </dependency>
<!-- liteflow -->
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-spring-boot-starter</artifactId>
<version>${liteflow.version}</version>
</dependency>
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-javax-pro</artifactId>
<version>${liteflow.version}</version>
</dependency>
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-groovy</artifactId>
<version>${liteflow.version}</version>
</dependency>
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-qlexpress</artifactId>
<version>${liteflow.version}</version>
</dependency>
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-graaljs</artifactId>
<version>${liteflow.version}</version>
</dependency>
<!-- tio -->
<dependency>
<groupId>tech.zzjc.tio</groupId>
<artifactId>zzjc-tio-spring-boot-starter</artifactId>
<version>${zzjc.tio.version}</version>
</dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>
@@ -143,7 +180,7 @@
<repository> <repository>
<id>ZT</id> <id>ZT</id>
<name>中铜 ZStack 私服</name> <name>中铜 ZStack 私服</name>
<url>http://172.16.46.63:30708/repository/test/</url> <url>http://172.16.46.63:30708/repository/zt-cloud/</url>
<releases> <releases>
<updatePolicy>always</updatePolicy> <updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy> <checksumPolicy>warn</checksumPolicy>
@@ -161,11 +198,11 @@
<name>中铜 ZStack 私服</name> <name>中铜 ZStack 私服</name>
<url>http://172.16.46.63:30708/repository/test/</url> <url>http://172.16.46.63:30708/repository/test/</url>
</repository> </repository>
<!-- <snapshotRepository>--> <snapshotRepository>
<!-- <id>ZT</id>--> <id>ZT-snap</id>
<!-- <name>中铜 ZStack 私服</name>--> <name>中铜 ZStack 私服</name>
<!-- <url>https://your-nexus.example.com/repository/maven-snapshots/</url>--> <url>http://172.16.46.63:30708/repository/test-snap/</url>
<!-- </snapshotRepository>--> </snapshotRepository>
</distributionManagement> </distributionManagement>
<profiles> <profiles>

View File

@@ -24,7 +24,7 @@ spring:
config: config:
import: import:
- optional:classpath:application-${spring.profiles.active}.yaml # 加载【本地】配置 # - optional:classpath:application-${spring.profiles.active}.yaml # 加载【本地】配置
- optional:nacos:${spring.application.name}-${spring.profiles.active}.yaml # 加载【Nacos】的配置 - optional:nacos:${spring.application.name}-${spring.profiles.active}.yaml # 加载【Nacos】的配置
# Servlet 配置 # Servlet 配置

View File

@@ -171,24 +171,34 @@ public interface ErrorCodeConstants {
ErrorCode DEVICE_CONFIG_FLOW_NOT_EXISTS = new ErrorCode(1_032_150_000, "设备通用流程配置不存在"); ErrorCode DEVICE_CONFIG_FLOW_NOT_EXISTS = new ErrorCode(1_032_150_000, "设备通用流程配置不存在");
// -------------物料试剂------------- // -------------物料试剂-------------
ErrorCode MATERIAL_INFOMATION_NOT_EXISTS = new ErrorCode(1_032_150_000, "试剂耗材不存在"); ErrorCode MATERIAL_INFOMATION_NOT_EXISTS = new ErrorCode(1_032_160_000, "试剂耗材不存在");
ErrorCode MATERIAL_PRODUCT_NOT_EXISTS = new ErrorCode(1_032_150_000, "试剂耗材大类不存在"); ErrorCode MATERIAL_PRODUCT_NOT_EXISTS = new ErrorCode(1_032_160_000, "物料分类/大类不存在");
ErrorCode MATERIAL_LIFECYCLE_DETAIL_NOT_EXISTS = new ErrorCode(1_032_150_000, "物料通用流程明细不存在"); ErrorCode MATERIAL_PRODUCT_PARENT_NOT_EXISTS = new ErrorCode(1_032_160_000, "物料分类/大类的父类不存在");
ErrorCode MATERIAL_LIFECYCLE_NOT_EXISTS = new ErrorCode(1_032_150_000, "物料通用流程不存在"); ErrorCode MATERIAL_PRODUCT_CODE_EXISTED = new ErrorCode(1_032_160_000, "物料大类编码重复");
ErrorCode MATERIAL_CATEGORY_EXISTS_CHILDREN = new ErrorCode(1_032_160_000, "分类下含有子分类或物料大类,不可删除");
ErrorCode MATERIAL_PRODUCT_EXISTS_BATCH = new ErrorCode(1_032_160_000, "物料大类下存在物料批次,不可删除");
ErrorCode MATERIAL_PRODUCTS_EXISTS_CATEGORY = new ErrorCode(1_032_160_000, "物料大类列表中存在分类数据");
ErrorCode MATERIAL_LIFECYCLE_DETAIL_NOT_EXISTS = new ErrorCode(1_032_160_000, "物料通用流程明细不存在");
ErrorCode MATERIAL_LIFECYCLE_NOT_EXISTS = new ErrorCode(1_032_160_000, "物料通用流程不存在");
ErrorCode MATERIAL_BATCH_NOT_EXISTS = new ErrorCode(1_032_150_000, "物料批次不存在"); ErrorCode MATERIAL_BATCH_NOT_EXISTS = new ErrorCode(1_032_160_000, "物料批次不存在");
ErrorCode MATERIAL_BATCH_ASSIGN_NOT_EXISTS = new ErrorCode(1_032_150_000, "物料批次分发不存在"); ErrorCode MATERIAL_BATCH_GONG_NOT_EXISTS = new ErrorCode(1_032_160_000, "物料批次工段不存在");
ErrorCode MATERIAL_INVENTORY_INBOUND_NOT_EXISTS = new ErrorCode(1_032_150_000, "入库,出库不存在"); ErrorCode MATERIAL_BATCH_ASSIGN_END = new ErrorCode(1_032_160_000, "物料批次已拆分,不可操作");
ErrorCode MATERIAL_INVENTORY_INBOUND_DETAIL_NOT_EXISTS = new ErrorCode(1_032_150_000, "入库明细,出库明细等不存在"); ErrorCode GONGDUAN_BELONG_MATERIAL_BATCH_NOT_EQUAL = new ErrorCode(1_032_160_000, "工段所属的物料批次不一致");
ErrorCode GONGDUAN_QUANTITY_MATERIAL_BATCH_NOT_EQUAL = new ErrorCode(1_032_160_000, "工段累加数量和批次数量不一致");
ErrorCode MATERIAL_BATCH_NOT_ASSIGN_FOR_SUBMIT = new ErrorCode(1_032_160_000, "物料批次未拆分,不可提交");
ErrorCode MATERIAL_BATCH_ASSIGN_NOT_EXISTS = new ErrorCode(1_032_160_000, "物料批次分发不存在");
ErrorCode MATERIAL_INVENTORY_INBOUND_NOT_EXISTS = new ErrorCode(1_032_160_000, "入库,出库不存在");
ErrorCode MATERIAL_INVENTORY_INBOUND_DETAIL_NOT_EXISTS = new ErrorCode(1_032_160_000, "入库明细,出库明细等不存在");
ErrorCode SYSTEM_VERSION_MANAGEMENT_NOT_EXISTS = new ErrorCode(1_032_150_000, "客户端版本管理不存在"); ErrorCode SYSTEM_VERSION_MANAGEMENT_NOT_EXISTS = new ErrorCode(1_032_160_000, "客户端版本管理不存在");
ErrorCode MATERIAL_LOCATION_NOT_EXISTS = new ErrorCode(1_032_150_000, "存放位置不存在"); ErrorCode MATERIAL_LOCATION_NOT_EXISTS = new ErrorCode(1_032_160_000, "存放位置不存在");
ErrorCode MATERIAL_INVENTORY_CHECK_NOT_EXISTS = new ErrorCode(1_032_150_000, "库存盘点不存在"); ErrorCode MATERIAL_INVENTORY_CHECK_NOT_EXISTS = new ErrorCode(1_032_160_000, "库存盘点不存在");
ErrorCode MATERIAL_INVENTORY_CHECK_BATCH_NOT_EXISTS = new ErrorCode(1_032_150_000, "库存盘点项不存在"); ErrorCode MATERIAL_INVENTORY_CHECK_BATCH_NOT_EXISTS = new ErrorCode(1_032_160_000, "库存盘点项不存在");
ErrorCode MATERIAL_INVENTORY_CHECK_DETAIL_NOT_EXISTS = new ErrorCode(1_032_150_000, "库存盘点明细不存在"); ErrorCode MATERIAL_INVENTORY_CHECK_DETAIL_NOT_EXISTS = new ErrorCode(1_032_160_000, "库存盘点明细不存在");
ErrorCode MATERIAL_INVENTORY_OUTBOUND_NOT_EXISTS = new ErrorCode(1_032_150_000, "出库不存在"); ErrorCode MATERIAL_INVENTORY_OUTBOUND_NOT_EXISTS = new ErrorCode(1_032_160_000, "出库不存在");
ErrorCode MATERIAL_INVENTORY_OUTBOUND_DETAIL_NOT_EXISTS = new ErrorCode(1_032_150_000, "出库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等不存在"); ErrorCode MATERIAL_INVENTORY_OUTBOUND_DETAIL_NOT_EXISTS = new ErrorCode(1_032_160_000, "出库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等不存在");

View File

@@ -77,6 +77,9 @@ public interface QmsCommonConstant {
/** 已驳回 **/ /** 已驳回 **/
String REJECTED = "rejected"; String REJECTED = "rejected";
/** 已拒绝 **/
String REFUSED = "refused";
/** 作废 **/ /** 作废 **/
String VOID = "void"; String VOID = "void";
@@ -208,6 +211,8 @@ public interface QmsCommonConstant {
/** 允许提交 **/ /** 允许提交 **/
String ALLOW_SUBMIT = "allow_submit"; String ALLOW_SUBMIT = "allow_submit";
/** 临时数据标识 **/
String TEMP_DATA_CODE = "-1";
} }

View File

@@ -16,9 +16,12 @@ public interface QmsPermissionConstant {
//目标权限类型-自定义 //目标权限类型-自定义
String TARGET_TYPE_CUSTOM = "custom"; String TARGET_TYPE_CUSTOM = "custom";
String DEPT_DATA_AND_SUB = "ytjyDeptAndSub"; //部门
//======================各业务模块权限常量============================= //======================各业务模块权限常量=============================
String REPORT_DOCUMENT_TYPE_START = "report_document_type_start"; //报告发起权限 String REPORT_DOCUMENT_TYPE_START = "report_document_type_start"; //报告发起权限
String SAMPLE_WAREHOUSE_ADMIN = "sample_warehouse_admin"; //样品库管理员 String SAMPLE_WAREHOUSE_ADMIN = "sample_warehouse_admin"; //样品库管理员
String DEVICE_MANAGER = "qms_device_manager"; //设备管理员
} }

View File

@@ -16,10 +16,7 @@
<description> <description>
QMS模块。 QMS模块。
</description> </description>
<properties>
<zzjc.tio.version>3.9.1.v20251204-RELEASE</zzjc.tio.version>
<liteflow.version>2.15.2</liteflow.version>
</properties>
<dependencies> <dependencies>
<!-- Spring Cloud 基础 --> <!-- Spring Cloud 基础 -->
<dependency> <dependency>
@@ -142,27 +139,22 @@
<dependency> <dependency>
<groupId>com.yomahub</groupId> <groupId>com.yomahub</groupId>
<artifactId>liteflow-spring-boot-starter</artifactId> <artifactId>liteflow-spring-boot-starter</artifactId>
<version>${liteflow.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.yomahub</groupId> <groupId>com.yomahub</groupId>
<artifactId>liteflow-script-javax-pro</artifactId> <artifactId>liteflow-script-javax-pro</artifactId>
<version>${liteflow.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.yomahub</groupId> <groupId>com.yomahub</groupId>
<artifactId>liteflow-script-groovy</artifactId> <artifactId>liteflow-script-groovy</artifactId>
<version>${liteflow.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.yomahub</groupId> <groupId>com.yomahub</groupId>
<artifactId>liteflow-script-qlexpress</artifactId> <artifactId>liteflow-script-qlexpress</artifactId>
<version>${liteflow.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.yomahub</groupId> <groupId>com.yomahub</groupId>
<artifactId>liteflow-script-graaljs</artifactId> <artifactId>liteflow-script-graaljs</artifactId>
<version>${liteflow.version}</version>
</dependency> </dependency>
<!-- pdfbox --> <!-- pdfbox -->
@@ -199,7 +191,6 @@
<dependency> <dependency>
<groupId>tech.zzjc.tio</groupId> <groupId>tech.zzjc.tio</groupId>
<artifactId>zzjc-tio-spring-boot-starter</artifactId> <artifactId>zzjc-tio-spring-boot-starter</artifactId>
<version>${zzjc.tio.version}</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -29,6 +29,8 @@ import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIg
import static com.zt.plat.framework.common.pojo.CommonResult.success; import static com.zt.plat.framework.common.pojo.CommonResult.success;
import com.zt.plat.framework.excel.core.util.ExcelUtils; import com.zt.plat.framework.excel.core.util.ExcelUtils;
import com.zt.plat.framework.security.core.LoginUser;
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
import com.zt.plat.module.qms.business.bus.controller.vo.*; import com.zt.plat.module.qms.business.bus.controller.vo.*;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessHandoverRecordSubDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessHandoverRecordSubDO;
import com.zt.plat.module.qms.business.bus.service.BusinessHandoverRecordSubService; import com.zt.plat.module.qms.business.bus.service.BusinessHandoverRecordSubService;
@@ -92,6 +94,11 @@ public class BusinessHandoverRecordSubController implements BusinessControllerMa
@Operation(summary = "获得子样交接记录业务分页") @Operation(summary = "获得子样交接记录业务分页")
//@PreAuthorize("@ss.hasPermission('qms:business-handover-record-sub:query')") //@PreAuthorize("@ss.hasPermission('qms:business-handover-record-sub:query')")
public CommonResult<PageResult<BusinessHandoverRecordSubExtendRespVO>> getBusinessHandoverRecordSubPage(@Valid BusinessHandoverRecordSubPageReqVO pageReqVO) { public CommonResult<PageResult<BusinessHandoverRecordSubExtendRespVO>> getBusinessHandoverRecordSubPage(@Valid BusinessHandoverRecordSubPageReqVO pageReqVO) {
if (pageReqVO.getDeptId() == null) {
//当前登录用户
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
pageReqVO.setDeptId(loginUser.getVisitDeptId());
}
PageResult<BusinessHandoverRecordSubExtendRespVO> pageResult = businessHandoverRecordSubService.getBusinessHandoverRecordSubPage(pageReqVO); PageResult<BusinessHandoverRecordSubExtendRespVO> pageResult = businessHandoverRecordSubService.getBusinessHandoverRecordSubPage(pageReqVO);
return success(pageResult); return success(pageResult);
} }

View File

@@ -28,6 +28,8 @@ import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIg
import static com.zt.plat.framework.common.pojo.CommonResult.success; import static com.zt.plat.framework.common.pojo.CommonResult.success;
import com.zt.plat.framework.excel.core.util.ExcelUtils; import com.zt.plat.framework.excel.core.util.ExcelUtils;
import com.zt.plat.framework.security.core.LoginUser;
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
import com.zt.plat.module.qms.business.bus.controller.vo.*; import com.zt.plat.module.qms.business.bus.controller.vo.*;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleHandoverDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleHandoverDO;
import com.zt.plat.module.qms.business.bus.service.BusinessSampleHandoverService; import com.zt.plat.module.qms.business.bus.service.BusinessSampleHandoverService;
@@ -100,6 +102,11 @@ public class BusinessSampleHandoverController {
@Operation(summary = "获得样品交接单业务分页") @Operation(summary = "获得样品交接单业务分页")
//@PreAuthorize("@ss.hasPermission('qms:business-sample-handover:query')") //@PreAuthorize("@ss.hasPermission('qms:business-sample-handover:query')")
public CommonResult<PageResult<BusinessSampleHandoverRespVO>> getBusinessSampleHandoverPage(@Valid BusinessSampleHandoverPageReqVO pageReqVO) { public CommonResult<PageResult<BusinessSampleHandoverRespVO>> getBusinessSampleHandoverPage(@Valid BusinessSampleHandoverPageReqVO pageReqVO) {
if (pageReqVO.getDeptId() == null) {
//当前登录用户
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
pageReqVO.setDeptId(loginUser.getVisitDeptId());
}
PageResult<BusinessSampleHandoverDO> pageResult = businessSampleHandoverService.getBusinessSampleHandoverPage(pageReqVO); PageResult<BusinessSampleHandoverDO> pageResult = businessSampleHandoverService.getBusinessSampleHandoverPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, BusinessSampleHandoverRespVO.class)); return success(BeanUtils.toBean(pageResult, BusinessSampleHandoverRespVO.class));
} }

View File

@@ -12,6 +12,7 @@ import com.zt.plat.framework.business.interceptor.BusinessControllerMarker;
import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore; import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore;
import com.zt.plat.module.qms.business.bus.controller.vo.*; import com.zt.plat.module.qms.business.bus.controller.vo.*;
import com.zt.plat.module.qms.business.bus.controller.vo.BatchAssessmentDataReportingReqVO.BusinessSubSampleIdAndRetestCount;
import com.zt.plat.module.qms.business.bus.service.SampleAnalysisAuditService; import com.zt.plat.module.qms.business.bus.service.SampleAnalysisAuditService;
import com.zt.plat.module.qms.enums.QmsCommonConstant; import com.zt.plat.module.qms.enums.QmsCommonConstant;
@@ -39,7 +40,7 @@ public class SampleAnalysisAuditController implements BusinessControllerMarker {
*/ */
@PostMapping("/crossAudit") @PostMapping("/crossAudit")
public CommonResult<?> crossAudit(Long businessAssayTaskId, String auditStatus) { public CommonResult<?> crossAudit(Long businessAssayTaskId, String auditStatus) {
sampleAnalysisAuditService.crossAuditByByTaskId(businessAssayTaskId, auditStatus); sampleAnalysisAuditService.crossAuditByTaskId(businessAssayTaskId, auditStatus);
return success("成功"); return success("成功");
} }
@@ -88,23 +89,23 @@ public class SampleAnalysisAuditController implements BusinessControllerMarker {
//判定数据上报 //判定数据上报
@PostMapping("/assessmentDataReporting") @PostMapping("/assessmentDataReporting")
public CommonResult<?> assessmentDataReporting(Long businessSubSampleId, Long configAssayMethodId) { public CommonResult<?> assessmentDataReporting(Long businessSubSampleId, Long configAssayMethodId, Integer retestCount) {
sampleAnalysisAuditService.assessmentDataReporting(businessSubSampleId, configAssayMethodId); sampleAnalysisAuditService.assessmentDataReporting(businessSubSampleId, configAssayMethodId, retestCount);
return success("成功"); return success("成功");
} }
@PostMapping("/batchAssessmentDataReporting") @PostMapping("/batchAssessmentDataReporting")
public CommonResult<?> batchAssessmentDataReporting(@RequestBody BatchAssessmentDataReportingReqVO reqVO) { public CommonResult<?> batchAssessmentDataReporting(@RequestBody BatchAssessmentDataReportingReqVO reqVO) {
for (Long businessSubSampleId : reqVO.getBusinessSubSampleIds()) { for (BusinessSubSampleIdAndRetestCount businessSubSampleIdAndRetestCount : reqVO.getBusinessSubSampleIdAndRetestCounts()) {
sampleAnalysisAuditService.assessmentDataReporting(businessSubSampleId, reqVO.getConfigAssayMethodId()); sampleAnalysisAuditService.assessmentDataReporting(businessSubSampleIdAndRetestCount.getBusinessSubSampleId(), reqVO.getConfigAssayMethodId(), businessSubSampleIdAndRetestCount.getRetestCount());
} }
return success("成功"); return success("成功");
} }
//重新创建复检委托 //重新创建复检委托
@PostMapping("/createReAnalysis") @PostMapping("/createReAnalysis")
public CommonResult<?> createReAnalysis(Long businessSubSampleId, Long configAssayMethodId) { public CommonResult<?> createReAnalysis(Long businessSubSampleId, Long configAssayMethodId, Integer retestCount) {
sampleAnalysisAuditService.createReAnalysis(businessSubSampleId, configAssayMethodId); sampleAnalysisAuditService.createReAnalysis(businessSubSampleId, configAssayMethodId, retestCount);
return success("成功"); return success("成功");
} }

View File

@@ -57,13 +57,21 @@ public class SampleAnalysisController implements BusinessControllerMarker {
return success("成功"); return success("成功");
} }
//下发配料 //下发配料(自动火试金配料)
@PostMapping("/issuedIngredients") @PostMapping("/issuedIngredients")
public CommonResult<?> issuedIngredients(Long businessAssayTaskId) { public CommonResult<?> issuedIngredients(Long businessAssayTaskId) {
sampleAnalysisService.issuedIngredients(businessAssayTaskId); sampleAnalysisService.issuedIngredients(businessAssayTaskId);
return success("成功"); return success("成功");
} }
//人工配料
@PostMapping("/manualIngredients")
public CommonResult<?> manualIngredients(Long businessAssayTaskId) {
sampleAnalysisService.manualIngredients(businessAssayTaskId);
return success("成功");
}
//提交分析
@PostMapping("/submitSampleAnalysisByTaskId") @PostMapping("/submitSampleAnalysisByTaskId")
public CommonResult<?> submitSampleAnalysisByTaskId(Long businessAssayTaskId) { public CommonResult<?> submitSampleAnalysisByTaskId(Long businessAssayTaskId) {
sampleAnalysisService.submitSampleAnalysisByTaskId(businessAssayTaskId); sampleAnalysisService.submitSampleAnalysisByTaskId(businessAssayTaskId);

View File

@@ -41,7 +41,7 @@ public class SampleReportDataQueryController {
@Operation(summary = "委托单详情数据") @Operation(summary = "委托单详情数据")
@GetMapping("/crossAuditByTaskId") @GetMapping("/crossAuditByTaskId")
public CommonResult<?> crossAuditByTaskId(Long businessAssayTaskId) { public CommonResult<?> crossAuditByTaskId(Long businessAssayTaskId) {
JSONObject result = sampleAnalysisAuditService.crossAuditByTaskId(businessAssayTaskId); JSONObject result = sampleAnalysisAuditService.getCrossAuditDataByTaskId(businessAssayTaskId);
return success(result); return success(result);
} }
} }

View File

@@ -25,7 +25,6 @@ import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignSample
import com.zt.plat.module.qms.business.bus.service.SampleTaskAssignService; import com.zt.plat.module.qms.business.bus.service.SampleTaskAssignService;
import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO;
import cn.hutool.core.collection.CollUtil;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;

View File

@@ -46,20 +46,22 @@ public class TestController {
bzr.setNodeKey("flw_team_receive"); bzr.setNodeKey("flw_team_receive");
bzr.setSort(3300); bzr.setSort(3300);
SampleFlowNode ypbm = new SampleFlowNode(); // SampleFlowNode ypbm = new SampleFlowNode();
ypbm.setNodeName("样品编密"); // ypbm.setNodeName("样品编密");
ypbm.setNodeKey("flw_sample_encrypt"); // ypbm.setNodeKey("flw_sample_encrypt");
ypbm.setSort(3400); // ypbm.setSort(3400);
// SampleFlowNode fxr = new SampleFlowNode(); // SampleFlowNode fxr = new SampleFlowNode();
// fxr.setNodeName("分析收样"); // fxr.setNodeName("分析收样");
// fxr.setNodeKey("flw_analysis_receive"); // fxr.setNodeKey("flw_analysis_receive");
// fxr.setSort(3500); // fxr.setSort(3500);
// //
SampleFlowNode fx = new SampleFlowNode();
fx.setNodeName("样品分析"); // SampleFlowNode fx = new SampleFlowNode();
fx.setNodeKey("flw_analysis"); // fx.setNodeName("样品分析");
fx.setSort(3550); // fx.setNodeKey("flw_analysis");
// fx.setSort(3550);
// //
// SampleFlowNode fxs = new SampleFlowNode(); // SampleFlowNode fxs = new SampleFlowNode();
// fxs.setNodeName("分析送样"); // fxs.setNodeName("分析送样");
@@ -101,19 +103,20 @@ public class TestController {
private static final long serialVersionUID = 6376704859477839016L; private static final long serialVersionUID = 6376704859477839016L;
{ {
add(BeanUtils.toBean(ypbm,SampleFlowNode.class).setCondition("subSampleEncrypt"));//样品需要编密并且没编密过 add(BeanUtils.toBean(bzs,SampleFlowNode.class).setIsDefault(true));//
add(BeanUtils.toBean(fx,SampleFlowNode.class).setCondition("subSampleNotEncrypt"));//样品无需编密或样品已编密过 // add(BeanUtils.toBean(ypbm,SampleFlowNode.class).setCondition("subSampleEncrypt"));//样品需要编密并且没编密过
// add(BeanUtils.toBean(bzs,SampleFlowNode.class).setCondition("subSampleNotEncrypt"));//样品无需编密或样品已编密过
}}); }});
flowNodeList.add(bzr); flowNodeList.add(bzr);
ypbm.setNextFlowNodeList(new ArrayList<>() { // ypbm.setNextFlowNodeList(new ArrayList<>() {
private static final long serialVersionUID = 1014984817516902869L; // private static final long serialVersionUID = 1014984817516902869L;
//
{ // {
add(BeanUtils.toBean(fx,SampleFlowNode.class).setIsDefault(true)); // add(BeanUtils.toBean(bzs,SampleFlowNode.class).setIsDefault(true));
}}); // }});
flowNodeList.add(ypbm); // flowNodeList.add(ypbm);
// fxr.setNextFlowNodeList(new ArrayList<>() {{ // fxr.setNextFlowNodeList(new ArrayList<>() {{
@@ -127,13 +130,13 @@ public class TestController {
// }}); // }});
// flowNodeList.add(fxs); // flowNodeList.add(fxs);
fx.setNextFlowNodeList(new ArrayList<>() { // fx.setNextFlowNodeList(new ArrayList<>() {
private static final long serialVersionUID = -610440034210287957L; // private static final long serialVersionUID = -610440034210287957L;
//
{ // {
add(BeanUtils.toBean(bzs,SampleFlowNode.class).setIsDefault(true).setCondition("当前部门任务已全部分析完")); // add(BeanUtils.toBean(bzs,SampleFlowNode.class).setIsDefault(true).setCondition("当前部门任务已全部分析完"));
}}); // }});
flowNodeList.add(fx); // flowNodeList.add(fx);
bzs.setNextFlowNodeList(new ArrayList<>() { bzs.setNextFlowNodeList(new ArrayList<>() {
private static final long serialVersionUID = -5057434004685743838L; private static final long serialVersionUID = -5057434004685743838L;

View File

@@ -17,6 +17,8 @@ public class AssayMethodProjectRespVO {
private String dictionaryProjectShowName; private String dictionaryProjectShowName;
private String assayType;
private Long configAssayMethodId; private Long configAssayMethodId;
private String configAssayMethodName; private String configAssayMethodName;

View File

@@ -1,13 +1,35 @@
package com.zt.plat.module.qms.business.bus.controller.vo; package com.zt.plat.module.qms.business.bus.controller.vo;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import cn.hutool.core.collection.CollUtil;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
@Data @Data
public class BatchAssessmentDataReportingReqVO { public class BatchAssessmentDataReportingReqVO {
private List<Long> businessSubSampleIds; private List<BusinessSubSampleIdAndRetestCount> businessSubSampleIdAndRetestCounts;
public List<Long> getBusinessSubSampleIds() {
if (CollUtil.isEmpty(this.businessSubSampleIdAndRetestCounts)) {
return null;
}
return this.businessSubSampleIdAndRetestCounts.stream().map(m -> m.getBusinessSubSampleId()).collect(Collectors.toList());
}
private Long configAssayMethodId; private Long configAssayMethodId;
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class BusinessSubSampleIdAndRetestCount {
private Long businessSubSampleId;
private Integer retestCount;
}
} }

View File

@@ -1,13 +1,34 @@
package com.zt.plat.module.qms.business.bus.controller.vo; package com.zt.plat.module.qms.business.bus.controller.vo;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import cn.hutool.core.collection.CollUtil;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
@Data @Data
public class BatchResultDataReportingReqVO { public class BatchResultDataReportingReqVO {
private List<Long> businessSubParentSampleIds; private List<BusinessSubParentSampleIdAndRetestCount> businessSubParentSampleIdAndRetestCounts;
private Long configAssayMethodId; private Long configAssayMethodId;
public List<Long> getBusinessSubParentSampleIds() {
if (CollUtil.isEmpty(this.businessSubParentSampleIdAndRetestCounts)) {
return null;
}
return this.businessSubParentSampleIdAndRetestCounts.stream().map(m -> m.getBusinessSubParentSampleId()).collect(Collectors.toList());
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class BusinessSubParentSampleIdAndRetestCount {
private Long businessSubParentSampleId;
private Integer retestCount;
}
} }

View File

@@ -9,6 +9,9 @@ public class BusinessAssayProjectDataExtendRespVO extends BusinessAssayProjectDa
@Schema(description = "样品主样ID", example = "23293") @Schema(description = "样品主样ID", example = "23293")
private Long businessBaseSampleId; private Long businessBaseSampleId;
@Schema(description = "主样配置ID")
private Long configBaseSampleId;
@Schema(description = "样品分样ID", example = "15024") @Schema(description = "样品分样ID", example = "15024")
private Long businessSubParentSampleId; private Long businessSubParentSampleId;

View File

@@ -5,6 +5,8 @@ import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import com.zt.plat.framework.common.pojo.PageParam; import com.zt.plat.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -31,6 +33,15 @@ public class BusinessAssayProjectDataPageReqVO extends PageParam {
@Schema(description = "") @Schema(description = "")
private String value; private String value;
@Schema(description = "补正系数ID", example = "1008")
private Long configAssayMethodProjectCoefficientId;
@Schema(description = "补正系数")
private BigDecimal coefficient;
@Schema(description = "补正后的值")
private String valueAfter;
@Schema(description = "数据类型,字典表【T_DIC_BSN】string-字符串int-整数decimal-小数,date-日期datetime-时间", example = "2") @Schema(description = "数据类型,字典表【T_DIC_BSN】string-字符串int-整数decimal-小数,date-日期datetime-时间", example = "2")
private String dataType; private String dataType;

View File

@@ -5,6 +5,8 @@ import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import com.zt.plat.framework.common.pojo.PageParam; import com.zt.plat.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -37,6 +39,15 @@ public class BusinessAssayProjectDataReqVO {
@Schema(description = "") @Schema(description = "")
private String value; private String value;
@Schema(description = "补正系数ID", example = "1008")
private Long configAssayMethodProjectCoefficientId;
@Schema(description = "补正系数")
private BigDecimal coefficient;
@Schema(description = "补正后的值")
private String valueAfter;
@Schema(description = "数据类型,【字典】【jy_sample_data_type】string-字符串int-整数decimal-小数,date-日期datetime-时间", example = "1") @Schema(description = "数据类型,【字典】【jy_sample_data_type】string-字符串int-整数decimal-小数,date-日期datetime-时间", example = "1")
private String dataType; private String dataType;

View File

@@ -4,6 +4,8 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*; import com.alibaba.excel.annotation.*;
@@ -38,6 +40,15 @@ public class BusinessAssayProjectDataRespVO {
@ExcelProperty("") @ExcelProperty("")
private String value; private String value;
@Schema(description = "补正系数ID", example = "1008")
private Long configAssayMethodProjectCoefficientId;
@Schema(description = "补正系数")
private BigDecimal coefficient;
@Schema(description = "补正后的值")
private String valueAfter;
@Schema(description = "数据类型,字典表【T_DIC_BSN】string-字符串int-整数decimal-小数,date-日期datetime-时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @Schema(description = "数据类型,字典表【T_DIC_BSN】string-字符串int-整数decimal-小数,date-日期datetime-时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("数据类型,字典表【T_DIC_BSN】string-字符串int-整数decimal-小数,date-日期datetime-时间") @ExcelProperty("数据类型,字典表【T_DIC_BSN】string-字符串int-整数decimal-小数,date-日期datetime-时间")
private String dataType; private String dataType;

View File

@@ -2,6 +2,8 @@ package com.zt.plat.module.qms.business.bus.controller.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
@@ -27,6 +29,15 @@ public class BusinessAssayProjectDataSaveReqVO {
@Schema(description = "") @Schema(description = "")
private String value; private String value;
@Schema(description = "补正系数ID", example = "1008")
private Long configAssayMethodProjectCoefficientId;
@Schema(description = "补正系数")
private BigDecimal coefficient;
@Schema(description = "补正后的值")
private String valueAfter;
@Schema(description = "数据类型,字典表【T_DIC_BSN】string-字符串int-整数decimal-小数,date-日期datetime-时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @Schema(description = "数据类型,字典表【T_DIC_BSN】string-字符串int-整数decimal-小数,date-日期datetime-时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotEmpty(message = "数据类型,字典表【T_DIC_BSN】string-字符串int-整数decimal-小数,date-日期datetime-时间不能为空") @NotEmpty(message = "数据类型,字典表【T_DIC_BSN】string-字符串int-整数decimal-小数,date-日期datetime-时间不能为空")
private String dataType; private String dataType;

View File

@@ -47,6 +47,9 @@ public class BusinessAssayTaskAnalysisSampleAndQcProjectRespVO {
@Schema(description = "是否配料,1-是0-否") @Schema(description = "是否配料,1-是0-否")
private Integer isIngredients; private Integer isIngredients;
@Schema(description = "配料方式,初始状态-initial、自动配料-automatic、人工配料-manual")
private String ingredientsWay;
@Schema(description = "配料状态,初始状态-initial、等待配料-in_progress、可提交-allow_submit", example = "2") @Schema(description = "配料状态,初始状态-initial、等待配料-in_progress、可提交-allow_submit", example = "2")
private String ingredientsStatus; private String ingredientsStatus;

View File

@@ -21,6 +21,9 @@ public class BusinessAssayTaskDataExtendRespVO extends BusinessAssayTaskDataResp
@Schema(description = "检测方法配置名称及类别") @Schema(description = "检测方法配置名称及类别")
private String configAssayMethodNameAndCategory; private String configAssayMethodNameAndCategory;
@Schema(description = "主样配置id")
private Long configBaseSampleId;
@Schema(description = "子样配置id") @Schema(description = "子样配置id")
private Long configSubSampleId; private Long configSubSampleId;
@@ -41,4 +44,7 @@ public class BusinessAssayTaskDataExtendRespVO extends BusinessAssayTaskDataResp
private Integer asmtIsRecheck; private Integer asmtIsRecheck;
private String asmtReportedStatus; private String asmtReportedStatus;
@Schema(description = "配料信息")
private String ingredientInfo;
} }

View File

@@ -51,6 +51,9 @@ public class BusinessAssayTaskPageReqVO extends PageParam {
@Schema(description = "是否配料,1-是0-否") @Schema(description = "是否配料,1-是0-否")
private Integer isIngredients; private Integer isIngredients;
@Schema(description = "配料方式,初始状态-initial、自动配料-automatic、人工配料-manual")
private String ingredientsWay;
@Schema(description = "配料状态,初始状态-initial、等待配料-in_progress、可提交-allow_submit", example = "2") @Schema(description = "配料状态,初始状态-initial、等待配料-in_progress、可提交-allow_submit", example = "2")
private String ingredientsStatus; private String ingredientsStatus;

View File

@@ -0,0 +1,30 @@
package com.zt.plat.module.qms.business.bus.controller.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class BusinessAssayTaskParameterDataExtendRespVO extends BusinessAssayTaskParameterDataRespVO {
@Schema(description = "检测方法ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "29823")
@ExcelProperty("检测方法ID")
private Long configAssayMethodId;
@Schema(description = "参数名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@ExcelProperty("参数名称")
private String parameterName;
@Schema(description = "参数简称", example = "张三")
@ExcelProperty("参数简称")
private String shortName;
@Schema(description = "参数序号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("参数序号")
private Integer no;
@Schema(description = "键值")
@ExcelProperty("键值")
private String key;
}

View File

@@ -50,6 +50,9 @@ public class BusinessAssayTaskReqVO {
@Schema(description = "是否配料,1-是0-否") @Schema(description = "是否配料,1-是0-否")
private Integer isIngredients; private Integer isIngredients;
@Schema(description = "配料方式,初始状态-initial、自动配料-automatic、人工配料-manual")
private String ingredientsWay;
@Schema(description = "配料状态,初始状态-initial、等待配料-in_progress、可提交-allow_submit", example = "2") @Schema(description = "配料状态,初始状态-initial、等待配料-in_progress、可提交-allow_submit", example = "2")
private String ingredientsStatus; private String ingredientsStatus;

View File

@@ -62,6 +62,9 @@ public class BusinessAssayTaskRespVO {
@Schema(description = "是否配料,1-是0-否") @Schema(description = "是否配料,1-是0-否")
private Integer isIngredients; private Integer isIngredients;
@Schema(description = "配料方式,初始状态-initial、自动配料-automatic、人工配料-manual")
private String ingredientsWay;
@Schema(description = "配料状态,初始状态-initial、等待配料-in_progress、可提交-allow_submit", example = "2") @Schema(description = "配料状态,初始状态-initial、等待配料-in_progress、可提交-allow_submit", example = "2")
private String ingredientsStatus; private String ingredientsStatus;

View File

@@ -60,6 +60,9 @@ public class BusinessAssayTaskSaveReqVO {
@Schema(description = "是否配料,1-是0-否") @Schema(description = "是否配料,1-是0-否")
private Integer isIngredients; private Integer isIngredients;
@Schema(description = "配料方式,初始状态-initial、自动配料-automatic、人工配料-manual")
private String ingredientsWay;
@Schema(description = "配料状态,初始状态-initial、等待配料-in_progress、可提交-allow_submit", example = "2") @Schema(description = "配料状态,初始状态-initial、等待配料-in_progress、可提交-allow_submit", example = "2")
private String ingredientsStatus; private String ingredientsStatus;

View File

@@ -20,6 +20,9 @@ public class BusinessSubParentSampleAssessmentProjectRespVO {
@ExcelProperty("样品分样ID") @ExcelProperty("样品分样ID")
private Long businessSubParentSampleId; private Long businessSubParentSampleId;
@Schema(description = "班组判定数据业务ID")
private Long businessSubParentSampleAssessmentId;
@Schema(description = "检测项目ID,字典表【T_DIC_PRJ】", requiredMode = Schema.RequiredMode.REQUIRED, example = "17642") @Schema(description = "检测项目ID,字典表【T_DIC_PRJ】", requiredMode = Schema.RequiredMode.REQUIRED, example = "17642")
@ExcelProperty("检测项目ID,字典表【T_DIC_PRJ】") @ExcelProperty("检测项目ID,字典表【T_DIC_PRJ】")
private Long dictionaryProjectId; private Long dictionaryProjectId;

View File

@@ -145,6 +145,9 @@ public class BusinessSubSamplePageReqVO extends PageParam {
@Schema(description = "分析部门状态") @Schema(description = "分析部门状态")
private String assayDepartmentStatus; private String assayDepartmentStatus;
@Schema(description = "分析部门状态列表")
private List<String> assayDepartmentStatusList;
@Schema(description = "是否已送样") @Schema(description = "是否已送样")
private Integer isSendSample; private Integer isSendSample;

View File

@@ -32,6 +32,14 @@ public class BusinessXRFDataPageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] sampleTime; private LocalDateTime[] sampleTime;
@Schema(description = "样品开始时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] sampleStartTime;
@Schema(description = "样品结束时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] sampleEndTime;
@Schema(description = "分析人") @Schema(description = "分析人")
private String assayOperator; private String assayOperator;

View File

@@ -35,6 +35,14 @@ public class BusinessXRFDataReqVO {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] sampleTime; private LocalDateTime[] sampleTime;
@Schema(description = "样品开始时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] sampleStartTime;
@Schema(description = "样品结束时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] sampleEndTime;
@Schema(description = "分析人") @Schema(description = "分析人")
private String assayOperator; private String assayOperator;

View File

@@ -40,6 +40,14 @@ public class BusinessXRFDataRespVO {
@ExcelProperty("样品时间") @ExcelProperty("样品时间")
private LocalDateTime sampleTime; private LocalDateTime sampleTime;
@Schema(description = "样品开始时间")
@ExcelProperty("样品开始时间")
private LocalDateTime sampleStartTime;
@Schema(description = "样品结束时间")
@ExcelProperty("样品结束时间")
private LocalDateTime sampleEndTime;
@Schema(description = "分析人") @Schema(description = "分析人")
@ExcelProperty("分析人") @ExcelProperty("分析人")
private String assayOperator; private String assayOperator;

View File

@@ -34,6 +34,12 @@ public class BusinessXRFDataSaveReqVO {
@Schema(description = "样品时间") @Schema(description = "样品时间")
private LocalDateTime sampleTime; private LocalDateTime sampleTime;
@Schema(description = "样品开始时间")
private LocalDateTime sampleStartTime;
@Schema(description = "样品结束时间")
private LocalDateTime sampleEndTime;
@Schema(description = "分析人") @Schema(description = "分析人")
private String assayOperator; private String assayOperator;

View File

@@ -2,7 +2,7 @@ package com.zt.plat.module.qms.business.bus.dal.dataobject;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
import java.time.LocalDateTime; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO;
@@ -62,6 +62,21 @@ public class BusinessAssayProjectDataDO extends BusinessBaseDO {
@TableField(value = "VAL", updateStrategy = FieldStrategy.ALWAYS) @TableField(value = "VAL", updateStrategy = FieldStrategy.ALWAYS)
private String value; private String value;
/** /**
* 补正系数ID
*/
@TableField(value = "CFG_ASY_MTHD_PRJ_COEF_ID", updateStrategy = FieldStrategy.ALWAYS)
private Long configAssayMethodProjectCoefficientId;
/**
* 补正系数
*/
@TableField(value = "COEF", updateStrategy = FieldStrategy.ALWAYS)
private BigDecimal coefficient;
/**
* 补正后的值
*/
@TableField(value = "VAL_AFT", updateStrategy = FieldStrategy.ALWAYS)
private String valueAfter;
/**
* 数据类型,字典表【T_DIC_BSN】string-字符串int-整数decimal-小数,date-日期datetime-时间 * 数据类型,字典表【T_DIC_BSN】string-字符串int-整数decimal-小数,date-日期datetime-时间
*/ */
@TableField("DAT_TP") @TableField("DAT_TP")

View File

@@ -90,6 +90,11 @@ public class BusinessAssayTaskDO extends BusinessBaseDO {
@TableField("IS_IGDT") @TableField("IS_IGDT")
private Integer isIngredients; private Integer isIngredients;
/** /**
* 配料方式,初始状态-initial、自动配料-automatic、人工配料-manual
*/
@TableField("IGDT_WY")
private String ingredientsWay;
/**
* 配料状态,初始状态-initial、等待配料-in_progress、可提交-allow_submit * 配料状态,初始状态-initial、等待配料-in_progress、可提交-allow_submit
*/ */
@TableField("IGDT_STS") @TableField("IGDT_STS")

View File

@@ -3,9 +3,6 @@ package com.zt.plat.module.qms.business.bus.dal.dataobject;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO;
/** /**
@@ -64,6 +61,16 @@ public class BusinessXRFDataDO extends BusinessBaseDO {
@TableField("SMP_TM") @TableField("SMP_TM")
private LocalDateTime sampleTime; private LocalDateTime sampleTime;
/** /**
* 样品开始时间
*/
@TableField("SMP_STRT_TM")
private LocalDateTime sampleStartTime;
/**
* 样品结束时间
*/
@TableField("SMP_END_TM")
private LocalDateTime sampleEndTime;
/**
* 分析人 * 分析人
*/ */
@TableField("ASY_OPTR") @TableField("ASY_OPTR")

View File

@@ -108,4 +108,15 @@ public interface BusinessAssayParameterDataMapper extends BaseMapperX<BusinessAs
.eq(ConfigAssayMethodProjectParameterDO::getKey, parameterKey)); .eq(ConfigAssayMethodProjectParameterDO::getKey, parameterKey));
} }
default BusinessAssayParameterDataDO selectByBusinessAssayProjectDataIdAndProjectSimpleNameAndParameterKey(Long businessAssayProjectDataId, String projectSimpleName, String parameterKey) {
return selectJoinOne(BusinessAssayParameterDataDO.class, new MPJLambdaWrapperX<BusinessAssayParameterDataDO>()
.leftJoin(ConfigAssayMethodProjectParameterDO.class, ConfigAssayMethodProjectParameterDO::getId, BusinessAssayParameterDataDO::getConfigAssayMethodProjectParameterId)
.leftJoin(BusinessAssayProjectDataDO.class, BusinessAssayProjectDataDO::getId, BusinessAssayParameterDataDO::getBusinessAssayProjectDataId)
.leftJoin(ConfigAssayMethodProjectDO.class, ConfigAssayMethodProjectDO::getId, BusinessAssayProjectDataDO::getConfigAssayMethodProjectId)
.leftJoin(DictionaryProjectDO.class, DictionaryProjectDO::getId, BusinessAssayProjectDataDO::getDictionaryProjectId)
.eq(BusinessAssayParameterDataDO::getBusinessAssayProjectDataId, businessAssayProjectDataId)
.eq(DictionaryProjectDO::getSimpleName, projectSimpleName)
.eq(ConfigAssayMethodProjectParameterDO::getKey, parameterKey));
}
} }

View File

@@ -8,6 +8,7 @@ import com.zt.plat.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.zt.plat.module.qms.business.bus.controller.vo.*; import com.zt.plat.module.qms.business.bus.controller.vo.*;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayProjectDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayProjectDataDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessBaseSampleDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleDO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodProjectDO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodProjectDO;
import com.zt.plat.module.qms.business.dic.dal.dataobject.DictionaryProjectDO; import com.zt.plat.module.qms.business.dic.dal.dataobject.DictionaryProjectDO;
@@ -56,6 +57,9 @@ public interface BusinessAssayProjectDataMapper extends BaseMapperX<BusinessAssa
.eqIfPresent(BusinessAssayProjectDataDO::getUsage, reqVO.getUsage()) .eqIfPresent(BusinessAssayProjectDataDO::getUsage, reqVO.getUsage())
.eqIfPresent(BusinessAssayProjectDataDO::getSymbol, reqVO.getSymbol()) .eqIfPresent(BusinessAssayProjectDataDO::getSymbol, reqVO.getSymbol())
.eqIfPresent(BusinessAssayProjectDataDO::getValue, reqVO.getValue()) .eqIfPresent(BusinessAssayProjectDataDO::getValue, reqVO.getValue())
.eqIfPresent(BusinessAssayProjectDataDO::getConfigAssayMethodProjectCoefficientId, reqVO.getConfigAssayMethodProjectCoefficientId())
.eqIfPresent(BusinessAssayProjectDataDO::getCoefficient, reqVO.getCoefficient())
.eqIfPresent(BusinessAssayProjectDataDO::getValueAfter, reqVO.getValueAfter())
.eqIfPresent(BusinessAssayProjectDataDO::getDataType, reqVO.getDataType()) .eqIfPresent(BusinessAssayProjectDataDO::getDataType, reqVO.getDataType())
.eqIfPresent(BusinessAssayProjectDataDO::getDecimalPosition, reqVO.getDecimalPosition()) .eqIfPresent(BusinessAssayProjectDataDO::getDecimalPosition, reqVO.getDecimalPosition())
.eqIfPresent(BusinessAssayProjectDataDO::getIsNotAssessment, reqVO.getIsNotAssessment()) .eqIfPresent(BusinessAssayProjectDataDO::getIsNotAssessment, reqVO.getIsNotAssessment())
@@ -75,6 +79,9 @@ public interface BusinessAssayProjectDataMapper extends BaseMapperX<BusinessAssa
.eqIfPresent(BusinessAssayProjectDataDO::getUsage, reqVO.getUsage()) .eqIfPresent(BusinessAssayProjectDataDO::getUsage, reqVO.getUsage())
.eqIfPresent(BusinessAssayProjectDataDO::getSymbol, reqVO.getSymbol()) .eqIfPresent(BusinessAssayProjectDataDO::getSymbol, reqVO.getSymbol())
.eqIfPresent(BusinessAssayProjectDataDO::getValue, reqVO.getValue()) .eqIfPresent(BusinessAssayProjectDataDO::getValue, reqVO.getValue())
.eqIfPresent(BusinessAssayProjectDataDO::getConfigAssayMethodProjectCoefficientId, reqVO.getConfigAssayMethodProjectCoefficientId())
.eqIfPresent(BusinessAssayProjectDataDO::getCoefficient, reqVO.getCoefficient())
.eqIfPresent(BusinessAssayProjectDataDO::getValueAfter, reqVO.getValueAfter())
.eqIfPresent(BusinessAssayProjectDataDO::getDataType, reqVO.getDataType()) .eqIfPresent(BusinessAssayProjectDataDO::getDataType, reqVO.getDataType())
.eqIfPresent(BusinessAssayProjectDataDO::getDecimalPosition, reqVO.getDecimalPosition()) .eqIfPresent(BusinessAssayProjectDataDO::getDecimalPosition, reqVO.getDecimalPosition())
.eqIfPresent(BusinessAssayProjectDataDO::getIsNotAssessment, reqVO.getIsNotAssessment()) .eqIfPresent(BusinessAssayProjectDataDO::getIsNotAssessment, reqVO.getIsNotAssessment())
@@ -100,17 +107,43 @@ public interface BusinessAssayProjectDataMapper extends BaseMapperX<BusinessAssa
default List<BusinessAssayProjectDataExtendRespVO> selectByBusinessAssayTaskDataId(Long businessAssayTaskDataId) { default List<BusinessAssayProjectDataExtendRespVO> selectByBusinessAssayTaskDataId(Long businessAssayTaskDataId) {
return selectJoinList(BusinessAssayProjectDataExtendRespVO.class, new MPJLambdaWrapperX<BusinessAssayProjectDataDO>() return selectJoinList(BusinessAssayProjectDataExtendRespVO.class, new MPJLambdaWrapperX<BusinessAssayProjectDataDO>()
.leftJoin(BusinessAssayTaskDataDO.class, BusinessAssayTaskDataDO::getId, BusinessAssayProjectDataDO::getBusinessAssayTaskDataId)
.leftJoin(DictionaryProjectDO.class, DictionaryProjectDO::getId, BusinessAssayProjectDataDO::getDictionaryProjectId) .leftJoin(DictionaryProjectDO.class, DictionaryProjectDO::getId, BusinessAssayProjectDataDO::getDictionaryProjectId)
.selectAll(BusinessAssayProjectDataDO.class) .selectAll(BusinessAssayProjectDataDO.class)
.selectAs(BusinessAssayTaskDataDO::getAssayOperator, BusinessAssayProjectDataExtendRespVO::getAssayOperator)
.selectAs(BusinessAssayTaskDataDO::getRecheckCount, BusinessAssayProjectDataExtendRespVO::getRecheckCount)
.selectAs(BusinessAssayTaskDataDO::getRetestCount, BusinessAssayProjectDataExtendRespVO::getRetestCount)
.selectAs(BusinessAssayTaskDataDO::getBusinessBaseSampleId, BusinessAssayProjectDataExtendRespVO::getBusinessBaseSampleId)
.selectAs(BusinessAssayTaskDataDO::getBusinessSubParentSampleId, BusinessAssayProjectDataExtendRespVO::getBusinessSubParentSampleId)
.selectAs(BusinessAssayTaskDataDO::getBusinessSubSampleId, BusinessAssayProjectDataExtendRespVO::getBusinessSubSampleId)
.selectAs(DictionaryProjectDO::getKey, BusinessAssayProjectDataExtendRespVO::getDictionaryProjectKey) .selectAs(DictionaryProjectDO::getKey, BusinessAssayProjectDataExtendRespVO::getDictionaryProjectKey)
.selectAs(DictionaryProjectDO::getSimpleName, BusinessAssayProjectDataExtendRespVO::getSimpleName) .selectAs(DictionaryProjectDO::getSimpleName, BusinessAssayProjectDataExtendRespVO::getSimpleName)
.selectAs(DictionaryProjectDO::getShowName, BusinessAssayProjectDataExtendRespVO::getShowName) .selectAs(DictionaryProjectDO::getShowName, BusinessAssayProjectDataExtendRespVO::getShowName)
.eq(BusinessAssayProjectDataDO::getBusinessAssayTaskDataId, businessAssayTaskDataId)); .eq(BusinessAssayProjectDataDO::getBusinessAssayTaskDataId, businessAssayTaskDataId));
} }
default List<BusinessAssayProjectDataExtendRespVO> selectByBusinessBaseSampleIdAndConfigAssayMethodId(Long businessBaseSampleId, Long configAssayMethodId) {
return selectJoinList(BusinessAssayProjectDataExtendRespVO.class, new MPJLambdaWrapperX<BusinessAssayProjectDataDO>()
.leftJoin(BusinessAssayTaskDataDO.class, BusinessAssayTaskDataDO::getId, BusinessAssayProjectDataDO::getBusinessAssayTaskDataId)
.leftJoin(DictionaryProjectDO.class, DictionaryProjectDO::getId, BusinessAssayProjectDataDO::getDictionaryProjectId)
.selectAll(BusinessAssayProjectDataDO.class)
.selectAs(BusinessAssayTaskDataDO::getAssayOperator, BusinessAssayProjectDataExtendRespVO::getAssayOperator)
.selectAs(BusinessAssayTaskDataDO::getRecheckCount, BusinessAssayProjectDataExtendRespVO::getRecheckCount)
.selectAs(BusinessAssayTaskDataDO::getRetestCount, BusinessAssayProjectDataExtendRespVO::getRetestCount)
.selectAs(BusinessAssayTaskDataDO::getBusinessBaseSampleId, BusinessAssayProjectDataExtendRespVO::getBusinessBaseSampleId)
.selectAs(BusinessAssayTaskDataDO::getBusinessSubParentSampleId, BusinessAssayProjectDataExtendRespVO::getBusinessSubParentSampleId)
.selectAs(BusinessAssayTaskDataDO::getBusinessSubSampleId, BusinessAssayProjectDataExtendRespVO::getBusinessSubSampleId)
.selectAs(DictionaryProjectDO::getKey, BusinessAssayProjectDataExtendRespVO::getDictionaryProjectKey)
.selectAs(DictionaryProjectDO::getSimpleName, BusinessAssayProjectDataExtendRespVO::getSimpleName)
.selectAs(DictionaryProjectDO::getShowName, BusinessAssayProjectDataExtendRespVO::getShowName)
.eq(BusinessAssayTaskDataDO::getBusinessBaseSampleId, businessBaseSampleId)
.eq(BusinessAssayTaskDataDO::getConfigAssayMethodId, configAssayMethodId));
}
default List<BusinessAssayProjectDataExtendRespVO> selectByBusinessAssayTaskDataIds(List<Long> businessAssayTaskDataIds) { default List<BusinessAssayProjectDataExtendRespVO> selectByBusinessAssayTaskDataIds(List<Long> businessAssayTaskDataIds) {
return selectJoinList(BusinessAssayProjectDataExtendRespVO.class, new MPJLambdaWrapperX<BusinessAssayProjectDataDO>() return selectJoinList(BusinessAssayProjectDataExtendRespVO.class, new MPJLambdaWrapperX<BusinessAssayProjectDataDO>()
.leftJoin(BusinessAssayTaskDataDO.class, BusinessAssayTaskDataDO::getId, BusinessAssayProjectDataDO::getBusinessAssayTaskDataId) .leftJoin(BusinessAssayTaskDataDO.class, BusinessAssayTaskDataDO::getId, BusinessAssayProjectDataDO::getBusinessAssayTaskDataId)
.leftJoin(BusinessBaseSampleDO.class, BusinessBaseSampleDO::getId, BusinessAssayTaskDataDO::getBusinessBaseSampleId)
.leftJoin(DictionaryProjectDO.class, DictionaryProjectDO::getId, BusinessAssayProjectDataDO::getDictionaryProjectId) .leftJoin(DictionaryProjectDO.class, DictionaryProjectDO::getId, BusinessAssayProjectDataDO::getDictionaryProjectId)
.selectAll(BusinessAssayProjectDataDO.class) .selectAll(BusinessAssayProjectDataDO.class)
.selectAs(DictionaryProjectDO::getKey, BusinessAssayProjectDataExtendRespVO::getDictionaryProjectKey) .selectAs(DictionaryProjectDO::getKey, BusinessAssayProjectDataExtendRespVO::getDictionaryProjectKey)
@@ -122,6 +155,7 @@ public interface BusinessAssayProjectDataMapper extends BaseMapperX<BusinessAssa
.selectAs(BusinessAssayTaskDataDO::getBusinessBaseSampleId, BusinessAssayProjectDataExtendRespVO::getBusinessBaseSampleId) .selectAs(BusinessAssayTaskDataDO::getBusinessBaseSampleId, BusinessAssayProjectDataExtendRespVO::getBusinessBaseSampleId)
.selectAs(BusinessAssayTaskDataDO::getBusinessSubParentSampleId, BusinessAssayProjectDataExtendRespVO::getBusinessSubParentSampleId) .selectAs(BusinessAssayTaskDataDO::getBusinessSubParentSampleId, BusinessAssayProjectDataExtendRespVO::getBusinessSubParentSampleId)
.selectAs(BusinessAssayTaskDataDO::getBusinessSubSampleId, BusinessAssayProjectDataExtendRespVO::getBusinessSubSampleId) .selectAs(BusinessAssayTaskDataDO::getBusinessSubSampleId, BusinessAssayProjectDataExtendRespVO::getBusinessSubSampleId)
.selectAs(BusinessBaseSampleDO::getConfigBaseSampleId, BusinessAssayProjectDataExtendRespVO::getConfigBaseSampleId)
.in(BusinessAssayProjectDataDO::getBusinessAssayTaskDataId, businessAssayTaskDataIds)); .in(BusinessAssayProjectDataDO::getBusinessAssayTaskDataId, businessAssayTaskDataIds));
} }

View File

@@ -13,6 +13,7 @@ import com.zt.plat.module.qms.business.bus.controller.vo.BusinessAssayTaskDataGr
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessAssayTaskDataPageReqVO; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessAssayTaskDataPageReqVO;
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessAssayTaskDataReqVO; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessAssayTaskDataReqVO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessBaseSampleDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleAnalysisGroupDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleAnalysisGroupDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleAssessmentDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleAssessmentDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleDO;
@@ -289,6 +290,7 @@ public interface BusinessAssayTaskDataMapper extends BaseMapperX<BusinessAssayTa
.selectAs(BusinessSubSampleDO::getSampleName, BusinessAssayTaskDataExtendRespVO::getSampleName) .selectAs(BusinessSubSampleDO::getSampleName, BusinessAssayTaskDataExtendRespVO::getSampleName)
.selectAs(BusinessSubSampleDO::getSampleCode, BusinessAssayTaskDataExtendRespVO::getSampleCode) .selectAs(BusinessSubSampleDO::getSampleCode, BusinessAssayTaskDataExtendRespVO::getSampleCode)
.selectAs(BusinessSubSampleDO::getSampleAssayCode, BusinessAssayTaskDataExtendRespVO::getSampleAssayCode) .selectAs(BusinessSubSampleDO::getSampleAssayCode, BusinessAssayTaskDataExtendRespVO::getSampleAssayCode)
.selectAs(BusinessSubSampleDO::getConfigSubSampleId, BusinessAssayTaskDataExtendRespVO::getConfigSubSampleId)
.in(BusinessSubSampleDO::getSampleAssayCode, sampleAssayCodes) .in(BusinessSubSampleDO::getSampleAssayCode, sampleAssayCodes)
.eq(ConfigAssayMethodDO::getDictionaryBusinessKey, configAssayMethodDictionaryBusinessKey) .eq(ConfigAssayMethodDO::getDictionaryBusinessKey, configAssayMethodDictionaryBusinessKey)
.eq(BusinessAssayTaskDataDO::getIsReported, QmsCommonConstant.NO)); .eq(BusinessAssayTaskDataDO::getIsReported, QmsCommonConstant.NO));
@@ -366,6 +368,21 @@ public interface BusinessAssayTaskDataMapper extends BaseMapperX<BusinessAssayTa
.eq(BusinessAssayTaskDataDO::getBusinessAssayTaskId, businessAssayTaskId)); .eq(BusinessAssayTaskDataDO::getBusinessAssayTaskId, businessAssayTaskId));
} }
/**
* 根据任务分配单id查询分析任务
* @param businessAssayTaskId 任务分配单id
* @return
*/
default List<BusinessAssayTaskDataExtendRespVO> selectExtendByBusinessAssayTaskId(Long businessAssayTaskId) {
return selectJoinList(BusinessAssayTaskDataExtendRespVO.class, new MPJLambdaWrapperX<BusinessAssayTaskDataDO>()
.leftJoin(BusinessSubSampleDO.class, BusinessSubSampleDO::getId, BusinessAssayTaskDataDO::getBusinessSubSampleId)
.leftJoin(BusinessBaseSampleDO.class, BusinessBaseSampleDO::getId, BusinessAssayTaskDataDO::getBusinessBaseSampleId)
.selectAll(BusinessAssayTaskDataDO.class)
.selectAs(BusinessBaseSampleDO::getConfigBaseSampleId, BusinessAssayTaskDataExtendRespVO::getConfigBaseSampleId)
.selectAs(BusinessSubSampleDO::getConfigSubSampleId, BusinessAssayTaskDataExtendRespVO::getConfigSubSampleId)
.eq(BusinessAssayTaskDataDO::getBusinessAssayTaskId, businessAssayTaskId));
}
/** /**
* 根据子样查询分析任务 * 根据子样查询分析任务
* @param businessSubSampleId 子样id * @param businessSubSampleId 子样id
@@ -376,6 +393,31 @@ public interface BusinessAssayTaskDataMapper extends BaseMapperX<BusinessAssayTa
.eq(BusinessAssayTaskDataDO::getBusinessSubSampleId, businessSubSampleId)); .eq(BusinessAssayTaskDataDO::getBusinessSubSampleId, businessSubSampleId));
} }
/**
* 根据子样及分析方法Key查询分析任务
* @param businessSubSampleId 子样id
* @param methodKey 分析方法key
* @return
*/
default List<BusinessAssayTaskDataDO> selectByBusinessSubSampleIdAndMethodKey(Long businessSubSampleId, String methodKey) {
String inSql = "SELECT tcam.ID FROM T_CFG_ASY_MTHD tcam WHERE tcam.DELETED = 0 AND tcam.DIC_BSN_KY = '" + methodKey + "'";
return selectList(new LambdaQueryWrapperX<BusinessAssayTaskDataDO>()
.eq(BusinessAssayTaskDataDO::getBusinessSubSampleId, businessSubSampleId)
.inSql(BusinessAssayTaskDataDO::getConfigAssayMethodId, inSql));
}
/**
* 根据正样样Id列表及分析方法Key查询分析任务
* @param businessBaseSampleIdList 正样id列表
* @param methodKey 分析方法key
* @return
*/
default List<BusinessAssayTaskDataDO> selectByBusinessBaseSampleIdsAndMethodKey(List<Long> businessBaseSampleIdList, String methodKey) {
String inSql = "SELECT tcam.ID FROM T_CFG_ASY_MTHD tcam WHERE tcam.DELETED = 0 AND tcam.DIC_BSN_KY = '" + methodKey + "'";
return selectList(new LambdaQueryWrapperX<BusinessAssayTaskDataDO>()
.in(BusinessAssayTaskDataDO::getBusinessBaseSampleId, businessBaseSampleIdList)
.inSql(BusinessAssayTaskDataDO::getConfigAssayMethodId, inSql));
}
/** /**
* 根据子样及分析部门查询分析任务 * 根据子样及分析部门查询分析任务
@@ -441,16 +483,18 @@ public interface BusinessAssayTaskDataMapper extends BaseMapperX<BusinessAssayTa
* @param excludeIds 排除的id列表 * @param excludeIds 排除的id列表
* @param businessSubSampleId 子样id * @param businessSubSampleId 子样id
* @param configAssayMethodId 分析方法id * @param configAssayMethodId 分析方法id
* @param retestCount 复测次数
* @param isReported 是否上报 * @param isReported 是否上报
* @return * @return
*/ */
default List<BusinessAssayTaskDataDO> selectIsReportedList(List<Long> excludeIds, Long businessSubSampleId, Long configAssayMethodId, Integer isReported) { default List<BusinessAssayTaskDataDO> selectIsReportedList(List<Long> excludeIds, Long businessSubSampleId, Long configAssayMethodId, Integer retestCount, Integer isReported) {
LambdaQueryWrapper<BusinessAssayTaskDataDO> queryWrapper = new LambdaQueryWrapperX<BusinessAssayTaskDataDO>(); LambdaQueryWrapper<BusinessAssayTaskDataDO> queryWrapper = new LambdaQueryWrapperX<BusinessAssayTaskDataDO>();
if (CollUtil.isNotEmpty(excludeIds)) { if (CollUtil.isNotEmpty(excludeIds)) {
queryWrapper.notIn(BusinessAssayTaskDataDO::getId, excludeIds); queryWrapper.notIn(BusinessAssayTaskDataDO::getId, excludeIds);
} }
queryWrapper.eq(BusinessAssayTaskDataDO::getBusinessSubSampleId, businessSubSampleId) queryWrapper.eq(BusinessAssayTaskDataDO::getBusinessSubSampleId, businessSubSampleId)
.eq(BusinessAssayTaskDataDO::getConfigAssayMethodId, configAssayMethodId) .eq(BusinessAssayTaskDataDO::getConfigAssayMethodId, configAssayMethodId)
.eq(BusinessAssayTaskDataDO::getRetestCount, retestCount)
.eq(BusinessAssayTaskDataDO::getIsReported, isReported); .eq(BusinessAssayTaskDataDO::getIsReported, isReported);
return selectList(queryWrapper); return selectList(queryWrapper);
} }

View File

@@ -88,6 +88,11 @@ public interface BusinessAssayTaskDetailMapper extends BaseMapperX<BusinessAssay
.eqIfPresent(BusinessAssayTaskDetailDO::getBusinessAssayTaskId, businessAssayTaskId)); .eqIfPresent(BusinessAssayTaskDetailDO::getBusinessAssayTaskId, businessAssayTaskId));
} }
default Long selectCountByBusinessAssayTaskId(Long businessAssayTaskId) {
return selectCount(new LambdaQueryWrapperX<BusinessAssayTaskDetailDO>()
.eqIfPresent(BusinessAssayTaskDetailDO::getBusinessAssayTaskId, businessAssayTaskId));
}
/** /**
* 物理批量删除删除 * 物理批量删除删除
* @param idList * @param idList

View File

@@ -42,6 +42,7 @@ public interface BusinessAssayTaskMapper extends BaseMapperX<BusinessAssayTaskDO
.eqIfPresent(BusinessAssayTaskDO::getTaskAssignStatus, reqVO.getTaskAssignStatus()) .eqIfPresent(BusinessAssayTaskDO::getTaskAssignStatus, reqVO.getTaskAssignStatus())
.betweenIfPresent(BusinessAssayTaskDO::getTaskAssignSubmitTime, reqVO.getTaskAssignSubmitTime()) .betweenIfPresent(BusinessAssayTaskDO::getTaskAssignSubmitTime, reqVO.getTaskAssignSubmitTime())
.eqIfPresent(BusinessAssayTaskDO::getIsIngredients, reqVO.getIsIngredients()) .eqIfPresent(BusinessAssayTaskDO::getIsIngredients, reqVO.getIsIngredients())
.eqIfPresent(BusinessAssayTaskDO::getIngredientsWay, reqVO.getIngredientsWay())
.eqIfPresent(BusinessAssayTaskDO::getIngredientsStatus, reqVO.getIngredientsStatus()) .eqIfPresent(BusinessAssayTaskDO::getIngredientsStatus, reqVO.getIngredientsStatus())
.eqIfPresent(BusinessAssayTaskDO::getAssayOperator, reqVO.getAssayOperator()) .eqIfPresent(BusinessAssayTaskDO::getAssayOperator, reqVO.getAssayOperator())
.eqIfPresent(BusinessAssayTaskDO::getAssayOperatorId, reqVO.getAssayOperatorId()) .eqIfPresent(BusinessAssayTaskDO::getAssayOperatorId, reqVO.getAssayOperatorId())
@@ -89,6 +90,7 @@ public interface BusinessAssayTaskMapper extends BaseMapperX<BusinessAssayTaskDO
.eqIfPresent(BusinessAssayTaskDO::getTaskAssignStatus, reqVO.getTaskAssignStatus()) .eqIfPresent(BusinessAssayTaskDO::getTaskAssignStatus, reqVO.getTaskAssignStatus())
.betweenIfPresent(BusinessAssayTaskDO::getTaskAssignSubmitTime, reqVO.getTaskAssignSubmitTime()) .betweenIfPresent(BusinessAssayTaskDO::getTaskAssignSubmitTime, reqVO.getTaskAssignSubmitTime())
.eqIfPresent(BusinessAssayTaskDO::getIsIngredients, reqVO.getIsIngredients()) .eqIfPresent(BusinessAssayTaskDO::getIsIngredients, reqVO.getIsIngredients())
.eqIfPresent(BusinessAssayTaskDO::getIngredientsWay, reqVO.getIngredientsWay())
.eqIfPresent(BusinessAssayTaskDO::getIngredientsStatus, reqVO.getIngredientsStatus()) .eqIfPresent(BusinessAssayTaskDO::getIngredientsStatus, reqVO.getIngredientsStatus())
.eqIfPresent(BusinessAssayTaskDO::getAssayOperator, reqVO.getAssayOperator()) .eqIfPresent(BusinessAssayTaskDO::getAssayOperator, reqVO.getAssayOperator())
.eqIfPresent(BusinessAssayTaskDO::getAssayOperatorId, reqVO.getAssayOperatorId()) .eqIfPresent(BusinessAssayTaskDO::getAssayOperatorId, reqVO.getAssayOperatorId())

View File

@@ -61,4 +61,18 @@ public interface BusinessAssayTaskParameterDataMapper extends BaseMapperX<Busine
.orderByAsc(ConfigAssayMethodParameterDO::getSortNo)); .orderByAsc(ConfigAssayMethodParameterDO::getSortNo));
} }
default List<BusinessAssayTaskParameterDataExtendRespVO> selectExtendByBusinessAssayTaskDataIds(List<Long> businessAssayTaskDataIdList) {
return selectJoinList(BusinessAssayTaskParameterDataExtendRespVO.class, new MPJLambdaWrapperX<BusinessAssayTaskParameterDataDO>()
.leftJoin(ConfigAssayMethodParameterDO.class, ConfigAssayMethodParameterDO::getId, BusinessAssayTaskParameterDataDO::getConfigAssayMethodParameterId)
.selectAll(BusinessAssayTaskParameterDataDO.class)
.selectAs(ConfigAssayMethodParameterDO::getConfigAssayMethodId, BusinessAssayTaskParameterDataExtendRespVO::getConfigAssayMethodId)
.selectAs(ConfigAssayMethodParameterDO::getParameterName, BusinessAssayTaskParameterDataExtendRespVO::getParameterName)
.selectAs(ConfigAssayMethodParameterDO::getShortName, BusinessAssayTaskParameterDataExtendRespVO::getShortName)
.selectAs(ConfigAssayMethodParameterDO::getKey, BusinessAssayTaskParameterDataExtendRespVO::getKey)
.selectAs(ConfigAssayMethodParameterDO::getNo, BusinessAssayTaskParameterDataExtendRespVO::getNo)
.in(BusinessAssayTaskParameterDataDO::getBusinessAssayTaskDataId, businessAssayTaskDataIdList)
);
}
} }

View File

@@ -45,10 +45,11 @@ public interface BusinessSubParentSampleAssessmentMapper extends BaseMapperX<Bus
.in(BusinessSubParentSampleAssessmentDO::getBusinessSubParentSampleId, businessSubParentSampleIds)); .in(BusinessSubParentSampleAssessmentDO::getBusinessSubParentSampleId, businessSubParentSampleIds));
} }
default BusinessSubParentSampleAssessmentDO selectByBusinessSubParentSampleIdAndConfigAssayMethodId(Long businessSubParentSampleId, Long configAssayMethodId) { default BusinessSubParentSampleAssessmentDO selectByBusinessSubParentSampleIdAndConfigAssayMethodIdAndRetestCount(Long businessSubParentSampleId, Long configAssayMethodId, Integer retestCount) {
return selectOne(new LambdaQueryWrapperX<BusinessSubParentSampleAssessmentDO>() return selectOne(new LambdaQueryWrapperX<BusinessSubParentSampleAssessmentDO>()
.eq(BusinessSubParentSampleAssessmentDO::getBusinessSubParentSampleId, businessSubParentSampleId) .eq(BusinessSubParentSampleAssessmentDO::getBusinessSubParentSampleId, businessSubParentSampleId)
.eq(BusinessSubParentSampleAssessmentDO::getConfigAssayMethodId, configAssayMethodId)); .eq(BusinessSubParentSampleAssessmentDO::getConfigAssayMethodId, configAssayMethodId)
.eq(BusinessSubParentSampleAssessmentDO::getRetestCount, retestCount));
} }
default List<BusinessSubParentSampleAssessmentExtendRespVO> selectByBusinessSubParentSampleIdsAndConfigAssayMethodId(List<Long> businessSubParentSampleIds, Long configAssayMethodId) { default List<BusinessSubParentSampleAssessmentExtendRespVO> selectByBusinessSubParentSampleIdsAndConfigAssayMethodId(List<Long> businessSubParentSampleIds, Long configAssayMethodId) {

View File

@@ -75,12 +75,19 @@ public interface BusinessSubParentSampleAssessmentProjectMapper extends BaseMapp
.eq(BusinessSubParentSampleAssessmentProjectDO::getConfigAssayMethodId, configAssayMethodId)); .eq(BusinessSubParentSampleAssessmentProjectDO::getConfigAssayMethodId, configAssayMethodId));
} }
default List<BusinessSubParentSampleAssessmentProjectDO> selectByBusinessSubParentSampleAssessmentIdAndDictionaryProjectIds(Long businessSubParentSampleAssessmentId, List<Long> recheckDictionaryProjectIdList) { default List<BusinessSubParentSampleAssessmentProjectDO> selectByBusinessSubParentSampleAssessmentIdAndDictionaryProjectIds(Long businessSubParentSampleAssessmentId, List<Long> recheckDictionaryProjectIdList) {
return selectList(new LambdaQueryWrapper<BusinessSubParentSampleAssessmentProjectDO>() return selectList(new LambdaQueryWrapper<BusinessSubParentSampleAssessmentProjectDO>()
.eq(BusinessSubParentSampleAssessmentProjectDO::getBusinessSubParentSampleAssessmentId, businessSubParentSampleAssessmentId) .eq(BusinessSubParentSampleAssessmentProjectDO::getBusinessSubParentSampleAssessmentId, businessSubParentSampleAssessmentId)
.in(BusinessSubParentSampleAssessmentProjectDO::getDictionaryProjectId, recheckDictionaryProjectIdList)); .in(BusinessSubParentSampleAssessmentProjectDO::getDictionaryProjectId, recheckDictionaryProjectIdList));
} }
default List<BusinessSubParentSampleAssessmentProjectDO> selectByBusinessSubParentSampleAssessmentId(Long businessSubParentSampleAssessmentId) {
return selectList(new LambdaQueryWrapper<BusinessSubParentSampleAssessmentProjectDO>()
.eq(BusinessSubParentSampleAssessmentProjectDO::getBusinessSubParentSampleAssessmentId, businessSubParentSampleAssessmentId));
}
List<NoReportSubParentSampleAssessmentRespVO> selectNoReportSubParentSampleAssessment(@Param("reqVO") BusinessSubParentSampleAssessmentGroupReqVO reqVO); List<NoReportSubParentSampleAssessmentRespVO> selectNoReportSubParentSampleAssessment(@Param("reqVO") BusinessSubParentSampleAssessmentGroupReqVO reqVO);
List<RecheckSubSampleParentMethodRespVO> getRecheckAssayMethodList(@Param("baseSampleId") Long baseSampleId, @Param("businessSubParentSampleId") Long businessSubParentSampleId, @Param("configAssayMethodId") Long configAssayMethodId, @Param("assayDepartmentId") Long assayDepartmentId); List<RecheckSubSampleParentMethodRespVO> getRecheckAssayMethodList(@Param("baseSampleId") Long baseSampleId, @Param("businessSubParentSampleId") Long businessSubParentSampleId, @Param("configAssayMethodId") Long configAssayMethodId, @Param("assayDepartmentId") Long assayDepartmentId);

View File

@@ -50,12 +50,14 @@ public interface BusinessSubSampleAssessmentMapper extends BaseMapperX<BusinessS
.eq(BusinessSubSampleAssessmentDO::getConfigAssayMethodId, configAssayMethodId)); .eq(BusinessSubSampleAssessmentDO::getConfigAssayMethodId, configAssayMethodId));
} }
default BusinessSubSampleAssessmentDO selectByBusinessSubSampleIdAndConfigAssayMethodId(Long businessSubSampleId, Long configAssayMethodId) { default BusinessSubSampleAssessmentDO selectByBusinessSubSampleIdAndConfigAssayMethodIdAndRetestCount(Long businessSubSampleId, Long configAssayMethodId, Integer retestCount) {
return selectOne(new LambdaQueryWrapperX<BusinessSubSampleAssessmentDO>() return selectOne(new LambdaQueryWrapperX<BusinessSubSampleAssessmentDO>()
.eq(BusinessSubSampleAssessmentDO::getBusinessSubSampleId, businessSubSampleId) .eq(BusinessSubSampleAssessmentDO::getBusinessSubSampleId, businessSubSampleId)
.eq(BusinessSubSampleAssessmentDO::getConfigAssayMethodId, configAssayMethodId)); .eq(BusinessSubSampleAssessmentDO::getConfigAssayMethodId, configAssayMethodId)
.eq(BusinessSubSampleAssessmentDO::getRetestCount, retestCount));
} }
@Deprecated
default List<BusinessSubSampleAssessmentDO> selectByBusinessSubSampleIdsAndConfigAssayMethodIdAndRetestCount(List<Long> businessSubSampleIds, Long configAssayMethodId, Integer retestCount) { default List<BusinessSubSampleAssessmentDO> selectByBusinessSubSampleIdsAndConfigAssayMethodIdAndRetestCount(List<Long> businessSubSampleIds, Long configAssayMethodId, Integer retestCount) {
return selectList(new LambdaQueryWrapperX<BusinessSubSampleAssessmentDO>() return selectList(new LambdaQueryWrapperX<BusinessSubSampleAssessmentDO>()
.in(BusinessSubSampleAssessmentDO::getBusinessSubSampleId, businessSubSampleIds) .in(BusinessSubSampleAssessmentDO::getBusinessSubSampleId, businessSubSampleIds)

View File

@@ -100,8 +100,11 @@ public interface BusinessSubSampleAssessmentProjectMapper extends BaseMapperX<Bu
.eq(BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodId, configAssayMethodId)); .eq(BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodId, configAssayMethodId));
} }
@Deprecated
default List<BusinessSubSampleAssessmentProjectExtendRespVO> selectByBusinessSubSampleIdAndConfigAssayMethodId(Long businessSubSampleId, Long configAssayMethodId) { default List<BusinessSubSampleAssessmentProjectExtendRespVO> selectByBusinessSubSampleIdAndConfigAssayMethodId(Long businessSubSampleId, Long configAssayMethodId) {
return selectJoinList(BusinessSubSampleAssessmentProjectExtendRespVO.class, new MPJLambdaWrapperX<BusinessSubSampleAssessmentProjectDO>() return selectJoinList(BusinessSubSampleAssessmentProjectExtendRespVO.class, new MPJLambdaWrapperX<BusinessSubSampleAssessmentProjectDO>()
.leftJoin(BusinessSubSampleAssessmentDO.class, BusinessSubSampleAssessmentDO::getId, BusinessSubSampleAssessmentProjectDO::getBusinessSubSampleAssessmentId)
.leftJoin(ConfigAssayMethodDO.class, ConfigAssayMethodDO::getId, BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodId)
.leftJoin(ConfigAssayMethodProjectDO.class, ConfigAssayMethodProjectDO::getId, BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodProjectId) .leftJoin(ConfigAssayMethodProjectDO.class, ConfigAssayMethodProjectDO::getId, BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodProjectId)
.leftJoin(DictionaryProjectDO.class, DictionaryProjectDO::getId, BusinessSubSampleAssessmentProjectDO::getDictionaryProjectId) .leftJoin(DictionaryProjectDO.class, DictionaryProjectDO::getId, BusinessSubSampleAssessmentProjectDO::getDictionaryProjectId)
.selectAll(BusinessSubSampleAssessmentProjectDO.class) .selectAll(BusinessSubSampleAssessmentProjectDO.class)
@@ -113,6 +116,22 @@ public interface BusinessSubSampleAssessmentProjectMapper extends BaseMapperX<Bu
.eq(BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodId, configAssayMethodId)); .eq(BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodId, configAssayMethodId));
} }
default List<BusinessSubSampleAssessmentProjectExtendRespVO> selectByBusinessSubSampleIdAndConfigAssayMethodIdAndRetestCount(Long businessSubSampleId, Long configAssayMethodId, Integer retestCount) {
return selectJoinList(BusinessSubSampleAssessmentProjectExtendRespVO.class, new MPJLambdaWrapperX<BusinessSubSampleAssessmentProjectDO>()
.leftJoin(BusinessSubSampleAssessmentDO.class, BusinessSubSampleAssessmentDO::getId, BusinessSubSampleAssessmentProjectDO::getBusinessSubSampleAssessmentId)
.leftJoin(ConfigAssayMethodDO.class, ConfigAssayMethodDO::getId, BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodId)
.leftJoin(ConfigAssayMethodProjectDO.class, ConfigAssayMethodProjectDO::getId, BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodProjectId)
.leftJoin(DictionaryProjectDO.class, DictionaryProjectDO::getId, BusinessSubSampleAssessmentProjectDO::getDictionaryProjectId)
.selectAll(BusinessSubSampleAssessmentProjectDO.class)
.selectAs(ConfigAssayMethodProjectDO::getDictionaryProjectUnit, BusinessSubSampleAssessmentProjectExtendRespVO::getDictionaryProjectUnit)
.selectAs(DictionaryProjectDO::getKey, BusinessSubSampleAssessmentProjectExtendRespVO::getDictionaryProjectKey)
.selectAs(DictionaryProjectDO::getSimpleName, BusinessSubSampleAssessmentProjectExtendRespVO::getSimpleName)
.selectAs(DictionaryProjectDO::getShowName, BusinessSubSampleAssessmentProjectExtendRespVO::getShowName)
.eq(BusinessSubSampleAssessmentProjectDO::getBusinessSubSampleId, businessSubSampleId)
.eq(BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodId, configAssayMethodId)
.eq(BusinessSubSampleAssessmentDO::getRetestCount, retestCount));
}
default BusinessSubSampleAssessmentProjectDO selectByBusinessSubSampleIdAndConfigAssayMethodIdAndConfigAssayMethodProjectId(Long businessSubSampleId, Long configAssayMethodId, Long configAssayMethodProjectId) { default BusinessSubSampleAssessmentProjectDO selectByBusinessSubSampleIdAndConfigAssayMethodIdAndConfigAssayMethodProjectId(Long businessSubSampleId, Long configAssayMethodId, Long configAssayMethodProjectId) {
return selectOne(new LambdaQueryWrapperX<BusinessSubSampleAssessmentProjectDO>() return selectOne(new LambdaQueryWrapperX<BusinessSubSampleAssessmentProjectDO>()
.eq(BusinessSubSampleAssessmentProjectDO::getBusinessSubSampleId, businessSubSampleId) .eq(BusinessSubSampleAssessmentProjectDO::getBusinessSubSampleId, businessSubSampleId)

View File

@@ -144,6 +144,7 @@ public interface BusinessSubSampleMapper extends BaseMapperX<BusinessSubSampleDO
.eqIfPresent(BusinessSubSampleAnalysisGroupDO::getAssayDepartmentId, reqVO.getAssayDepartmentId()) .eqIfPresent(BusinessSubSampleAnalysisGroupDO::getAssayDepartmentId, reqVO.getAssayDepartmentId())
.eqIfPresent(BusinessSubSampleAnalysisGroupDO::getAssayDepartmentName, reqVO.getAssayDepartmentName()) .eqIfPresent(BusinessSubSampleAnalysisGroupDO::getAssayDepartmentName, reqVO.getAssayDepartmentName())
.eqIfPresent(BusinessSubSampleAnalysisGroupDO::getSampleStatus, reqVO.getAssayDepartmentStatus()) .eqIfPresent(BusinessSubSampleAnalysisGroupDO::getSampleStatus, reqVO.getAssayDepartmentStatus())
.inIfPresent(BusinessSubSampleAnalysisGroupDO::getSampleStatus, reqVO.getAssayDepartmentStatusList())
.eqIfPresent(BusinessSubSampleAnalysisGroupDO::getIsSend, reqVO.getIsSendSample()) .eqIfPresent(BusinessSubSampleAnalysisGroupDO::getIsSend, reqVO.getIsSendSample())
.orderByDesc(BusinessSubSampleDO::getSampleFlowNodeTime).orderByAsc(BusinessSubSampleDO::getSampleCode)); .orderByDesc(BusinessSubSampleDO::getSampleFlowNodeTime).orderByAsc(BusinessSubSampleDO::getSampleCode));
} }

View File

@@ -2,6 +2,8 @@ package com.zt.plat.module.qms.business.bus.liteflow.sample.entrust;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -83,6 +85,18 @@ public class SampleEntrustCreateDataCmp extends NodeComponent {
List<BusinessSampleAssayResultDO> sampleAssayResultList = new ArrayList<>(); List<BusinessSampleAssayResultDO> sampleAssayResultList = new ArrayList<>();
//提取委托单号
String year = null;
String number = null;
Pattern pattern = Pattern.compile("\\((\\d+)\\)第(\\d+)号");
//一般委托或仲裁委托才提取
if ("xsqywtybwt".equals(configEntrustSource.getKey()) || "xsqywtzcwt".equals(configEntrustSource.getKey())) {
Matcher matcher = pattern.matcher(sampleEntrustRegistration.getEntrustNumber());
if (matcher.find()) {
year = matcher.group(1); // "2026"
number = matcher.group(2); // "0027"
}
}
List<BusinessSampleEntrustDetailDO> sampleEntrustDetailList = sampleEntrustContext.getSampleEntrustDetailList(); List<BusinessSampleEntrustDetailDO> sampleEntrustDetailList = sampleEntrustContext.getSampleEntrustDetailList();
for (BusinessSampleEntrustDetailDO businessSampleEntrustDetail : sampleEntrustDetailList) { for (BusinessSampleEntrustDetailDO businessSampleEntrustDetail : sampleEntrustDetailList) {
businessSampleEntrustDetail.setBusinessSampleEntrustRegistrationId(sampleEntrustRegistration.getId()); businessSampleEntrustDetail.setBusinessSampleEntrustRegistrationId(sampleEntrustRegistration.getId());
@@ -93,6 +107,17 @@ public class SampleEntrustCreateDataCmp extends NodeComponent {
sampleAssayResult.setData(businessSampleEntrustDetail.getForecastResult()); sampleAssayResult.setData(businessSampleEntrustDetail.getForecastResult());
sampleAssayResultList.add(sampleAssayResult); sampleAssayResultList.add(sampleAssayResult);
} }
//一般委托
if ("xsqywtybwt".equals(configEntrustSource.getKey())) {
String sampleCode = "W" + year + number + "-" + StringUtils.leftPad(businessSampleEntrustDetail.getSort().toString(), 2, "0");
businessSampleEntrustDetail.setSampleCode(sampleCode);
} else if ("xsqywtzcwt".equals(configEntrustSource.getKey())) {//仲裁委托
String sampleCode = "ZW" + year + number + "-" + StringUtils.leftPad(businessSampleEntrustDetail.getSort().toString(), 2, "0");
businessSampleEntrustDetail.setSampleCode(sampleCode);
} else if ("ztgmwt".equals(configEntrustSource.getKey())) {//中铜国贸商检委托,来样编号与样品编号一致
businessSampleEntrustDetail.setSampleCode(businessSampleEntrustDetail.getEntrustSampleCode());//样品编号与来样编号一致
}
} }
List<BusinessSampleEntrustProjectDO> sampleEntrustProjectList = sampleEntrustContext.getSampleEntrustProjectList(); List<BusinessSampleEntrustProjectDO> sampleEntrustProjectList = sampleEntrustContext.getSampleEntrustProjectList();

View File

@@ -54,6 +54,7 @@ import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleEntrustContext;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigAssayMethodProjectExtendRespVO; import com.zt.plat.module.qms.business.config.controller.vo.ConfigAssayMethodProjectExtendRespVO;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigSubSampleMethodConfAdd; import com.zt.plat.module.qms.business.config.controller.vo.ConfigSubSampleMethodConfAdd;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigSubSampleMethodConfInfo; import com.zt.plat.module.qms.business.config.controller.vo.ConfigSubSampleMethodConfInfo;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigSubSampleMethodConfItem;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigSubSampleMethodExtendRespVO; import com.zt.plat.module.qms.business.config.controller.vo.ConfigSubSampleMethodExtendRespVO;
import com.zt.plat.module.qms.business.config.dal.dataobject.BaseSampleDO; import com.zt.plat.module.qms.business.config.dal.dataobject.BaseSampleDO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodDO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodDO;
@@ -334,7 +335,9 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent {
businessBaseSampleDO.setDictionaryBusinessId(businessSampleEntrustDetailDO.getSampleTypeDictionaryBusinessId()); businessBaseSampleDO.setDictionaryBusinessId(businessSampleEntrustDetailDO.getSampleTypeDictionaryBusinessId());
//生成样品编号 //生成样品编号
String sampleCode = businessSampleEntrustDetailDO.getEntrustSampleCode();//默认取来样编号 String sampleCode = businessSampleEntrustDetailDO.getEntrustSampleCode();//默认取来样编号
if (StringUtils.isNotBlank(configBaseSample.getCodeRule())) {//如果配置了样品编号生成规则,则以生成规则为准 if (StringUtils.isNotBlank(businessSampleEntrustDetailDO.getSampleCode())) {//如果已经提前生成,
sampleCode = businessSampleEntrustDetailDO.getSampleCode();
} else if (StringUtils.isNotBlank(configBaseSample.getCodeRule())) {//如果配置了样品编号生成规则,则以生成规则为准
sampleCode = sequenceUtil.genCode(configBaseSample.getCodeRule()); sampleCode = sequenceUtil.genCode(configBaseSample.getCodeRule());
} }
businessBaseSampleDO.setSampleCode(sampleCode); businessBaseSampleDO.setSampleCode(sampleCode);
@@ -444,9 +447,11 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent {
//扩展配置信息 //扩展配置信息
String configInfomation = configSubSampleMethodDO.getConfigInfomation(); String configInfomation = configSubSampleMethodDO.getConfigInfomation();
List<ConfigSubSampleMethodConfItem> getParamList = null;
if (StringUtils.isNotBlank(configInfomation)) { if (StringUtils.isNotBlank(configInfomation)) {
ConfigSubSampleMethodConfInfo configSubSampleMethodConfInfo = JSON.parseObject(configInfomation, ConfigSubSampleMethodConfInfo.class); ConfigSubSampleMethodConfInfo configSubSampleMethodConfInfo = JSON.parseObject(configInfomation, ConfigSubSampleMethodConfInfo.class);
ConfigSubSampleMethodConfAdd addAssayTask = configSubSampleMethodConfInfo.getAddAssayTask(); ConfigSubSampleMethodConfAdd addAssayTask = configSubSampleMethodConfInfo.getAddAssayTask();
getParamList = configSubSampleMethodConfInfo.getGetParam();
if (addAssayTask != null) {//需要添加任务 if (addAssayTask != null) {//需要添加任务
List<Long> conditionProjectIdList = addAssayTask.getConditionProjectIdList(); List<Long> conditionProjectIdList = addAssayTask.getConditionProjectIdList();
@@ -572,9 +577,9 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent {
businessAssayTaskDataDO.setConfigAssayMethodId(configAssayMethodId); businessAssayTaskDataDO.setConfigAssayMethodId(configAssayMethodId);
businessAssayTaskDataDO.setAssayType(assayType); businessAssayTaskDataDO.setAssayType(assayType);
businessAssayTaskDataDO.setTaskType("常规"); businessAssayTaskDataDO.setTaskType("常规");
businessAssayTaskDataDO.setConfigSampleFlowId(configSampleFlowSub.getId()); // businessAssayTaskDataDO.setConfigSampleFlowId(configSampleFlowSub.getId());
businessAssayTaskDataDO.setSampleFlowNodeKey(sampleFlowNodeSub.getNodeKey()); // businessAssayTaskDataDO.setSampleFlowNodeKey(sampleFlowNodeSub.getNodeKey());
businessAssayTaskDataDO.setSampleFlowNodeTime(currentDateTime); // businessAssayTaskDataDO.setSampleFlowNodeTime(currentDateTime);
businessAssayTaskDataDO.setAssayDepartmentId(configAssayMethodDO.getAssayDepartmentId()); businessAssayTaskDataDO.setAssayDepartmentId(configAssayMethodDO.getAssayDepartmentId());
businessAssayTaskDataDO.setAssayDepartmentName(configAssayMethodDO.getAssayDepartmentName()); businessAssayTaskDataDO.setAssayDepartmentName(configAssayMethodDO.getAssayDepartmentName());
@@ -641,7 +646,24 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent {
businessAssayParameterDataDO.setDictionaryParameterId(configAssayMethodProjectParameterDO.getDictionaryParameterId()); businessAssayParameterDataDO.setDictionaryParameterId(configAssayMethodProjectParameterDO.getDictionaryParameterId());
businessAssayParameterDataDO.setDataType(configAssayMethodProjectParameterDO.getDataType()); businessAssayParameterDataDO.setDataType(configAssayMethodProjectParameterDO.getDataType());
businessAssayParameterDataDO.setDecimalPosition(configAssayMethodProjectParameterDO.getDecimalPosition()); businessAssayParameterDataDO.setDecimalPosition(configAssayMethodProjectParameterDO.getDecimalPosition());
if (StringUtils.isNotBlank(configAssayMethodProjectParameterDO.getDefaultValue())) {
businessAssayParameterDataDO.setValue(configAssayMethodProjectParameterDO.getDefaultValue());
}
if (getParamList != null) {
List<String> targetParameterList = getParamList.stream().filter(f -> f.getTarget().getProject().contains(configAssayMethodProjectDO.getSimpleName())).map(m -> m.getTarget().getParameter()).collect(Collectors.toList());
String forecastResult = businessSampleEntrustDetailDO.getForecastResult();
if (StringUtils.isNotBlank(forecastResult)) {
JSONArray array = JSON.parseArray(forecastResult);
for (int forecIndex = 0; forecIndex < array.size(); forecIndex++) {
JSONObject item = array.getJSONObject(forecIndex);
if (targetParameterList.contains(item.getString("simpleName"))) {
businessAssayParameterDataDO.setValue(item.getString("value"));
break;
}
}
}
}
businessAssayParameterDataDOList.add(businessAssayParameterDataDO); businessAssayParameterDataDOList.add(businessAssayParameterDataDO);
} }
@@ -659,7 +681,24 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent {
businessAssayParameterDataDO.setDictionaryParameterId(configAssayMethodProjectParameterDO.getDictionaryParameterId()); businessAssayParameterDataDO.setDictionaryParameterId(configAssayMethodProjectParameterDO.getDictionaryParameterId());
businessAssayParameterDataDO.setDataType(configAssayMethodProjectParameterDO.getDataType()); businessAssayParameterDataDO.setDataType(configAssayMethodProjectParameterDO.getDataType());
businessAssayParameterDataDO.setDecimalPosition(configAssayMethodProjectParameterDO.getDecimalPosition()); businessAssayParameterDataDO.setDecimalPosition(configAssayMethodProjectParameterDO.getDecimalPosition());
if (StringUtils.isNotBlank(configAssayMethodProjectParameterDO.getDefaultValue())) {
businessAssayParameterDataDO.setValue(configAssayMethodProjectParameterDO.getDefaultValue());
}
if (getParamList != null) {
List<String> targetParameterList = getParamList.stream().filter(f -> f.getTarget().getProject().contains(configAssayMethodProjectDO.getSimpleName())).map(m -> m.getTarget().getParameter()).collect(Collectors.toList());
String forecastResult = businessSampleEntrustDetailDO.getForecastResult();
if (StringUtils.isNotBlank(forecastResult)) {
JSONArray array = JSON.parseArray(forecastResult);
for (int forecIndex = 0; forecIndex < array.size(); forecIndex++) {
JSONObject item = array.getJSONObject(forecIndex);
if (targetParameterList.contains(item.getString("simpleName"))) {
businessAssayParameterDataDO.setValue(item.getString("value"));
break;
}
}
}
}
businessAssayParameterDataDOList.add(businessAssayParameterDataDO); businessAssayParameterDataDOList.add(businessAssayParameterDataDO);
} }
@@ -832,9 +871,9 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent {
businessAssayTaskDataDO.setConfigAssayMethodId(addAssayTaskConfigAssayMethod.getId()); businessAssayTaskDataDO.setConfigAssayMethodId(addAssayTaskConfigAssayMethod.getId());
businessAssayTaskDataDO.setAssayType(assayType); businessAssayTaskDataDO.setAssayType(assayType);
businessAssayTaskDataDO.setTaskType("常规"); businessAssayTaskDataDO.setTaskType("常规");
businessAssayTaskDataDO.setConfigSampleFlowId(configSampleFlowSub.getId()); // businessAssayTaskDataDO.setConfigSampleFlowId(configSampleFlowSub.getId());
businessAssayTaskDataDO.setSampleFlowNodeKey(sampleFlowNodeSub.getNodeKey()); // businessAssayTaskDataDO.setSampleFlowNodeKey(sampleFlowNodeSub.getNodeKey());
businessAssayTaskDataDO.setSampleFlowNodeTime(currentDateTime); // businessAssayTaskDataDO.setSampleFlowNodeTime(currentDateTime);
businessAssayTaskDataDO.setAssayDepartmentId(addAssayTaskConfigAssayMethod.getAssayDepartmentId()); businessAssayTaskDataDO.setAssayDepartmentId(addAssayTaskConfigAssayMethod.getAssayDepartmentId());
businessAssayTaskDataDO.setAssayDepartmentName(addAssayTaskConfigAssayMethod.getAssayDepartmentName()); businessAssayTaskDataDO.setAssayDepartmentName(addAssayTaskConfigAssayMethod.getAssayDepartmentName());
@@ -902,6 +941,9 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent {
businessAssayParameterDataDO.setDictionaryParameterId(configAssayMethodProjectParameterDO.getDictionaryParameterId()); businessAssayParameterDataDO.setDictionaryParameterId(configAssayMethodProjectParameterDO.getDictionaryParameterId());
businessAssayParameterDataDO.setDataType(configAssayMethodProjectParameterDO.getDataType()); businessAssayParameterDataDO.setDataType(configAssayMethodProjectParameterDO.getDataType());
businessAssayParameterDataDO.setDecimalPosition(configAssayMethodProjectParameterDO.getDecimalPosition()); businessAssayParameterDataDO.setDecimalPosition(configAssayMethodProjectParameterDO.getDecimalPosition());
if (StringUtils.isNotBlank(configAssayMethodProjectParameterDO.getDefaultValue())) {
businessAssayParameterDataDO.setValue(configAssayMethodProjectParameterDO.getDefaultValue());
}
businessAssayParameterDataDOList.add(businessAssayParameterDataDO); businessAssayParameterDataDOList.add(businessAssayParameterDataDO);
@@ -920,6 +962,9 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent {
businessAssayParameterDataDO.setDictionaryParameterId(configAssayMethodProjectParameterDO.getDictionaryParameterId()); businessAssayParameterDataDO.setDictionaryParameterId(configAssayMethodProjectParameterDO.getDictionaryParameterId());
businessAssayParameterDataDO.setDataType(configAssayMethodProjectParameterDO.getDataType()); businessAssayParameterDataDO.setDataType(configAssayMethodProjectParameterDO.getDataType());
businessAssayParameterDataDO.setDecimalPosition(configAssayMethodProjectParameterDO.getDecimalPosition()); businessAssayParameterDataDO.setDecimalPosition(configAssayMethodProjectParameterDO.getDecimalPosition());
if (StringUtils.isNotBlank(configAssayMethodProjectParameterDO.getDefaultValue())) {
businessAssayParameterDataDO.setValue(configAssayMethodProjectParameterDO.getDefaultValue());
}
businessAssayParameterDataDOList.add(businessAssayParameterDataDO); businessAssayParameterDataDOList.add(businessAssayParameterDataDO);

View File

@@ -2,6 +2,8 @@ package com.zt.plat.module.qms.business.bus.liteflow.sample.entrust;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -47,6 +49,8 @@ public class SampleEntrustUpdateDataCmp extends NodeComponent {
SampleEntrustContext sampleEntrustContext = this.getContextBean(SampleEntrustContext.class); SampleEntrustContext sampleEntrustContext = this.getContextBean(SampleEntrustContext.class);
//样品委托 //样品委托
BusinessSampleEntrustRegistrationDO sampleEntrustRegistration = sampleEntrustContext.getSampleEntrustRegistration(); BusinessSampleEntrustRegistrationDO sampleEntrustRegistration = sampleEntrustContext.getSampleEntrustRegistration();
BusinessSampleEntrustRegistrationDO oldSampleEntrustRegistration = businessSampleEntrustRegistrationMapper.selectById(sampleEntrustRegistration.getId());
sampleEntrustRegistration.setEntrustNumber(oldSampleEntrustRegistration.getEntrustNumber());//重新赋值委托单号
//获取委托来源配置 //获取委托来源配置
ConfigEntrustSourceDO configEntrustSource = sampleEntrustContext.getConfigEntrustSourceById(sampleEntrustRegistration.getConfigEntrustSourceId()); ConfigEntrustSourceDO configEntrustSource = sampleEntrustContext.getConfigEntrustSourceById(sampleEntrustRegistration.getConfigEntrustSourceId());
@@ -81,7 +85,18 @@ public class SampleEntrustUpdateDataCmp extends NodeComponent {
//保存更新新的 //保存更新新的
List<BusinessSampleAssayResultDO> sampleAssayResultList = new ArrayList<>(); List<BusinessSampleAssayResultDO> sampleAssayResultList = new ArrayList<>();
//提取委托单号
String year = null;
String number = null;
Pattern pattern = Pattern.compile("\\((\\d+)\\)第(\\d+)号");
//一般委托或仲裁委托才提取
if ("xsqywtybwt".equals(configEntrustSource.getKey()) || "xsqywtzcwt".equals(configEntrustSource.getKey())) {
Matcher matcher = pattern.matcher(sampleEntrustRegistration.getEntrustNumber());
if (matcher.find()) {
year = matcher.group(1); // "2026"
number = matcher.group(2); // "0027"
}
}
List<BusinessSampleEntrustDetailDO> sampleEntrustDetailList = sampleEntrustContext.getSampleEntrustDetailList(); List<BusinessSampleEntrustDetailDO> sampleEntrustDetailList = sampleEntrustContext.getSampleEntrustDetailList();
for (BusinessSampleEntrustDetailDO businessSampleEntrustDetail : sampleEntrustDetailList) { for (BusinessSampleEntrustDetailDO businessSampleEntrustDetail : sampleEntrustDetailList) {
businessSampleEntrustDetail.setBusinessSampleEntrustRegistrationId(sampleEntrustRegistration.getId()); businessSampleEntrustDetail.setBusinessSampleEntrustRegistrationId(sampleEntrustRegistration.getId());
@@ -92,6 +107,18 @@ public class SampleEntrustUpdateDataCmp extends NodeComponent {
sampleAssayResult.setData(businessSampleEntrustDetail.getForecastResult()); sampleAssayResult.setData(businessSampleEntrustDetail.getForecastResult());
sampleAssayResultList.add(sampleAssayResult); sampleAssayResultList.add(sampleAssayResult);
} }
//一般委托
if ("xsqywtybwt".equals(configEntrustSource.getKey())) {
String sampleCode = "W" + year + number + "-" + StringUtils.leftPad(businessSampleEntrustDetail.getSort().toString(), 2, "0");
businessSampleEntrustDetail.setSampleCode(sampleCode);
} else if ("xsqywtzcwt".equals(configEntrustSource.getKey())) {//仲裁委托
String sampleCode = "ZW" + year + number + "-" + StringUtils.leftPad(businessSampleEntrustDetail.getSort().toString(), 2, "0");
businessSampleEntrustDetail.setSampleCode(sampleCode);
} else if ("ztgmwt".equals(configEntrustSource.getKey())) {//中铜国贸商检委托,来样编号与样品编号一致
businessSampleEntrustDetail.setSampleCode(businessSampleEntrustDetail.getEntrustSampleCode());//样品编号与来样编号一致
}
} }
List<BusinessSampleEntrustProjectDO> sampleEntrustProjectList = sampleEntrustContext.getSampleEntrustProjectList(); List<BusinessSampleEntrustProjectDO> sampleEntrustProjectList = sampleEntrustContext.getSampleEntrustProjectList();

View File

@@ -1,5 +1,6 @@
package com.zt.plat.module.qms.business.bus.liteflow.sample.flow; package com.zt.plat.module.qms.business.bus.liteflow.sample.flow;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -19,6 +20,8 @@ import com.zt.plat.module.qms.business.bus.liteflow.param.SampleFlowInfo;
import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleFlowContext; import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleFlowContext;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigSubSampleDO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigSubSampleDO;
import com.zt.plat.module.qms.business.config.dal.mapper.ConfigSubSampleMapper; import com.zt.plat.module.qms.business.config.dal.mapper.ConfigSubSampleMapper;
import com.zt.plat.module.qms.enums.QmsCommonConstant;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@LiteflowComponent(id = "sampleSubCheckCmp", name = "子样检查") @LiteflowComponent(id = "sampleSubCheckCmp", name = "子样检查")
@@ -62,7 +65,11 @@ public class SampleSubCheckCmp extends NodeComponent {
List<Long> configSubSampleIdList = businessSubSampleDOList.stream().map(m -> m.getConfigSubSampleId()).distinct().collect(Collectors.toList()); List<Long> configSubSampleIdList = businessSubSampleDOList.stream().map(m -> m.getConfigSubSampleId()).distinct().collect(Collectors.toList());
List<ConfigSubSampleDO> configSubSampleList = configSubSampleMapper.selectByIds(configSubSampleIdList); List<ConfigSubSampleDO> configSubSampleList = configSubSampleMapper.selectByIds(configSubSampleIdList);
List<BusinessAssayTaskDataDO> businessAssayTaskDataList = businessAssayTaskDataMapper.selectList(new LambdaQueryWrapperX<BusinessAssayTaskDataDO>().in(BusinessAssayTaskDataDO::getBusinessSubSampleId, sampleIdList)); List<BusinessAssayTaskDataDO> businessAssayTaskDataList = new ArrayList<>();
//如果是班组收样或者内部简码时,才需要更新分析任务节点
if (QmsCommonConstant.FLOW_NODE_TEAM_RECEIVE.equals(currentSampleFlowKey) || QmsCommonConstant.FlOW_NODE_SAMPLE_ENCRYPT.equals(currentSampleFlowKey)) {
businessAssayTaskDataList = businessAssayTaskDataMapper.selectList(new LambdaQueryWrapperX<BusinessAssayTaskDataDO>().in(BusinessAssayTaskDataDO::getBusinessSubSampleId, sampleIdList));
}
//上一次交接记录 //上一次交接记录
List<Long> upSampleRecordIdList = businessSubSampleDOList.stream().filter(f -> f.getUpSampleRecordId() != null).map(m -> m.getUpSampleRecordId()).collect(Collectors.toList()); List<Long> upSampleRecordIdList = businessSubSampleDOList.stream().filter(f -> f.getUpSampleRecordId() != null).map(m -> m.getUpSampleRecordId()).collect(Collectors.toList());

View File

@@ -98,8 +98,8 @@ public class SampleSubProcessUpdateCmp extends NodeComponent {
if (CollUtil.isNotEmpty(businessSubSampleAnalysisGroupDOList)) { if (CollUtil.isNotEmpty(businessSubSampleAnalysisGroupDOList)) {
List<BusinessSubSampleAnalysisGroupDO> curSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupDOList.stream().filter(f -> f.getBusinessSubSampleId().equals(businessSubSample.getId())).collect(Collectors.toList()); List<BusinessSubSampleAnalysisGroupDO> curSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupDOList.stream().filter(f -> f.getBusinessSubSampleId().equals(businessSubSample.getId())).collect(Collectors.toList());
Boolean hasAllDeptAnalyzed = curSubSampleAnalysisGroupDOList.stream().allMatch(m -> "已完成".equals(m.getSampleStatus())); Boolean hasAllDeptAnalyzed = curSubSampleAnalysisGroupDOList.stream().allMatch(m -> ( "已完成".equals(m.getSampleStatus()) || "已收样".equals(m.getSampleStatus()) ) );
Boolean hasCurDeptAnalyzed = curSubSampleAnalysisGroupDOList.stream().filter(f -> f.getAssayDepartmentId().equals(loginUser.getVisitDeptId())).allMatch(m -> "已完成".equals(m.getSampleStatus())); Boolean hasCurDeptAnalyzed = curSubSampleAnalysisGroupDOList.stream().filter(f -> f.getAssayDepartmentId().equals(loginUser.getVisitDeptId())).allMatch(m -> ( "已完成".equals(m.getSampleStatus()) || "已收样".equals(m.getSampleStatus()) ) );
context.put("hasAllDeptAnalyzed", hasAllDeptAnalyzed); context.put("hasAllDeptAnalyzed", hasAllDeptAnalyzed);
context.put("hasCurDeptAnalyzed", hasCurDeptAnalyzed); context.put("hasCurDeptAnalyzed", hasCurDeptAnalyzed);
} }
@@ -127,7 +127,7 @@ public class SampleSubProcessUpdateCmp extends NodeComponent {
List<BusinessAssayTaskDataDO> subSampleAssayTaskDataList = businessAssayTaskDataList.stream().filter(f -> f.getBusinessSubSampleId().equals(businessSubSample.getId())).collect(Collectors.toList()); List<BusinessAssayTaskDataDO> subSampleAssayTaskDataList = businessAssayTaskDataList.stream().filter(f -> f.getBusinessSubSampleId().equals(businessSubSample.getId())).collect(Collectors.toList());
for (BusinessAssayTaskDataDO businessAssayTaskDataDO : subSampleAssayTaskDataList) { for (BusinessAssayTaskDataDO businessAssayTaskDataDO : subSampleAssayTaskDataList) {
businessAssayTaskDataDO.setSampleFlowNodeKey(nextFlowNode.getNodeKey()); businessAssayTaskDataDO.setSampleFlowNodeKey(QmsCommonConstant.FLOW_NODE_ANALYSIS);//样品分析
businessAssayTaskDataDO.setSampleFlowNodeTime(currentDateTime); businessAssayTaskDataDO.setSampleFlowNodeTime(currentDateTime);
} }
@@ -145,7 +145,7 @@ public class SampleSubProcessUpdateCmp extends NodeComponent {
} }
//如果是班组送样,需要更新分析班组表 //如果是班组送样,需要更新分析班组表
if (QmsCommonConstant.FLOW_NODE_ANALYSIS_SEND.equals(currentSampleFlowKey)) { if (QmsCommonConstant.FLOW_NODE_TEAM_SEND.equals(currentSampleFlowKey)) {
List<BusinessSubSampleAnalysisGroupDO> curDeptSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupDOList.stream().filter(f -> f.getAssayDepartmentId().equals(loginUser.getVisitDeptId())).collect(Collectors.toList()); List<BusinessSubSampleAnalysisGroupDO> curDeptSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupDOList.stream().filter(f -> f.getAssayDepartmentId().equals(loginUser.getVisitDeptId())).collect(Collectors.toList());
for (BusinessSubSampleAnalysisGroupDO businessSubSampleAnalysisGroupDO : curDeptSubSampleAnalysisGroupDOList) { for (BusinessSubSampleAnalysisGroupDO businessSubSampleAnalysisGroupDO : curDeptSubSampleAnalysisGroupDOList) {
businessSubSampleAnalysisGroupDO.setIsSend(QmsCommonConstant.YES); businessSubSampleAnalysisGroupDO.setIsSend(QmsCommonConstant.YES);

View File

@@ -1,17 +1,30 @@
package com.zt.plat.module.qms.business.bus.service; package com.zt.plat.module.qms.business.bus.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.zt.plat.module.qms.business.bus.controller.vo.*; import com.zt.plat.module.qms.business.bus.controller.vo.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import com.zt.plat.module.qms.business.bus.controller.vo.*; import com.zt.plat.module.qms.business.bus.controller.vo.*;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataDO;
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayParameterDataMapper;
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayProjectDataMapper;
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskDataMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskDataMapper;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigSubSampleMethodConfInfo;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigSubSampleMethodConfItem;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigSubSampleMethodConfPoint;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigSubSampleMethodExtendRespVO;
import com.zt.plat.module.qms.business.config.dal.mapper.ConfigSubSampleMethodMapper;
import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.pojo.PageResult;
import com.alibaba.fastjson2.JSON;
import com.zt.plat.framework.common.pojo.PageParam; import com.zt.plat.framework.common.pojo.PageParam;
import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.framework.security.core.LoginUser; import com.zt.plat.framework.security.core.LoginUser;
@@ -35,6 +48,15 @@ public class BusinessAssayTaskDataServiceImpl implements BusinessAssayTaskDataSe
@Resource @Resource
private BusinessAssayTaskDataMapper businessAssayTaskDataMapper; private BusinessAssayTaskDataMapper businessAssayTaskDataMapper;
@Resource
private BusinessAssayProjectDataMapper businessAssayProjectDataMapper;
@Resource
private BusinessAssayParameterDataMapper businessAssayParameterDataMapper;
@Resource
private ConfigSubSampleMethodMapper configSubSampleMethodMapper;
@Override @Override
public BusinessAssayTaskDataRespVO createBusinessAssayTaskData(BusinessAssayTaskDataSaveReqVO createReqVO) { public BusinessAssayTaskDataRespVO createBusinessAssayTaskData(BusinessAssayTaskDataSaveReqVO createReqVO) {
// 插入 // 插入
@@ -100,12 +122,98 @@ public class BusinessAssayTaskDataServiceImpl implements BusinessAssayTaskDataSe
@Override @Override
public List<BusinessAssayTaskDataExtendRespVO> getBusinessAssayTaskDataList(BusinessAssayTaskDataReqVO reqVO) { public List<BusinessAssayTaskDataExtendRespVO> getBusinessAssayTaskDataList(BusinessAssayTaskDataReqVO reqVO) {
return businessAssayTaskDataMapper.selectList(reqVO); List<BusinessAssayTaskDataExtendRespVO> list = businessAssayTaskDataMapper.selectList(reqVO);
if (CollUtil.isEmpty(list)) {
return list;
}
List<Long> configSubSampleIdList = list.stream().map(m -> m.getConfigSubSampleId()).collect(Collectors.toList());
List<ConfigSubSampleMethodExtendRespVO> configSubSampleMethodList = configSubSampleMethodMapper.selectByConfigSubSampleIdsAndConfigAssayMethodId(configSubSampleIdList, reqVO.getConfigAssayMethodId());
List<Long> businessAssayTaskDataIdList = list.stream().map(m -> m.getId()).collect(Collectors.toList());
//查询检测项目
List<BusinessAssayProjectDataExtendRespVO> businessAssayProjectDataList = businessAssayProjectDataMapper.selectByBusinessAssayTaskDataIds(businessAssayTaskDataIdList);
List<Long> businessAssayProjectDataIdList = businessAssayProjectDataList.stream().map(m -> m.getId()).collect(Collectors.toList());
//查询检测项目参数
List<BusinessAssayParameterDataExtendRespVO> businessAssayParameterDataList = businessAssayParameterDataMapper.selectExtendByBusinessAssayProjectDataIds(businessAssayProjectDataIdList);
for (BusinessAssayTaskDataExtendRespVO businessAssayTaskData : list) {
ConfigSubSampleMethodExtendRespVO configSubSampleMethod = configSubSampleMethodList.stream().filter(f -> f.getConfigSubSampleId().equals(businessAssayTaskData.getConfigSubSampleId()) && f.getConfigAssayMethodId().equals(businessAssayTaskData.getConfigAssayMethodId())).findFirst().orElse(null);
String configInfomation = configSubSampleMethod.getConfigInfomation();
if (StringUtils.isNotBlank(configInfomation)) {
ConfigSubSampleMethodConfInfo configSubSampleMethodConfInfo = JSON.parseObject(configInfomation, ConfigSubSampleMethodConfInfo.class);
List<ConfigSubSampleMethodConfItem> getParamList = configSubSampleMethodConfInfo.getGetParam();
StringBuilder ingredientInfoBuilder = new StringBuilder();
for (ConfigSubSampleMethodConfItem configSubSampleMethodConfItem : getParamList) {
ConfigSubSampleMethodConfPoint target = configSubSampleMethodConfItem.getTarget();
List<String> projectList = Arrays.asList(target.getProject().split(","));//来源可以有多个
for (String project : projectList) {
String parameter = target.getParameter();
BusinessAssayProjectDataExtendRespVO currentBusinessAssayProjectData = businessAssayProjectDataList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(businessAssayTaskData.getId()) && project.equals(f.getSimpleName())).findFirst().orElse(null);
if (currentBusinessAssayProjectData == null) {//如果检测项目为空,则跳出当前循环
continue;
}
BusinessAssayParameterDataExtendRespVO currentBusinessAssayParameterData = businessAssayParameterDataList.stream().filter(f -> f.getBusinessAssayProjectDataId().equals(currentBusinessAssayProjectData.getId()) && parameter.equals(f.getParameterKey())).findFirst().orElse(null);
if (currentBusinessAssayParameterData != null && StringUtils.isNotBlank(currentBusinessAssayParameterData.getValue())) {
ingredientInfoBuilder.append(currentBusinessAssayParameterData.getParameterName()).append("").append(currentBusinessAssayParameterData.getValue()).append("");
break;
}
}
}
if (ingredientInfoBuilder.length() > 0) {
ingredientInfoBuilder.delete(ingredientInfoBuilder.length() - 1, ingredientInfoBuilder.length());
}
businessAssayTaskData.setIngredientInfo(ingredientInfoBuilder.toString());
}
}
return list;
} }
@Override @Override
public PageResult<BusinessAssayTaskDataExtendRespVO> getBusinessAssayTaskDataPage(BusinessAssayTaskDataPageReqVO pageReqVO) { public PageResult<BusinessAssayTaskDataExtendRespVO> getBusinessAssayTaskDataPage(BusinessAssayTaskDataPageReqVO pageReqVO) {
return businessAssayTaskDataMapper.selectPage(pageReqVO); PageResult<BusinessAssayTaskDataExtendRespVO> page = businessAssayTaskDataMapper.selectPage(pageReqVO);
List<BusinessAssayTaskDataExtendRespVO> list = page.getList();
if (CollUtil.isEmpty(list)) {
return page;
}
List<Long> configSubSampleIdList = list.stream().map(m -> m.getConfigSubSampleId()).collect(Collectors.toList());
List<ConfigSubSampleMethodExtendRespVO> configSubSampleMethodList = configSubSampleMethodMapper.selectByConfigSubSampleIdsAndConfigAssayMethodId(configSubSampleIdList, pageReqVO.getConfigAssayMethodId());
List<Long> businessAssayTaskDataIdList = list.stream().map(m -> m.getId()).collect(Collectors.toList());
//查询检测项目
List<BusinessAssayProjectDataExtendRespVO> businessAssayProjectDataList = businessAssayProjectDataMapper.selectByBusinessAssayTaskDataIds(businessAssayTaskDataIdList);
List<Long> businessAssayProjectDataIdList = businessAssayProjectDataList.stream().map(m -> m.getId()).collect(Collectors.toList());
//查询检测项目参数
List<BusinessAssayParameterDataExtendRespVO> businessAssayParameterDataList = businessAssayParameterDataMapper.selectExtendByBusinessAssayProjectDataIds(businessAssayProjectDataIdList);
for (BusinessAssayTaskDataExtendRespVO businessAssayTaskData : list) {
ConfigSubSampleMethodExtendRespVO configSubSampleMethod = configSubSampleMethodList.stream().filter(f -> f.getConfigSubSampleId().equals(businessAssayTaskData.getConfigSubSampleId()) && f.getConfigAssayMethodId().equals(businessAssayTaskData.getConfigAssayMethodId())).findFirst().orElse(null);
String configInfomation = configSubSampleMethod.getConfigInfomation();
if (StringUtils.isNotBlank(configInfomation)) {
ConfigSubSampleMethodConfInfo configSubSampleMethodConfInfo = JSON.parseObject(configInfomation, ConfigSubSampleMethodConfInfo.class);
List<ConfigSubSampleMethodConfItem> getParamList = configSubSampleMethodConfInfo.getGetParam();
StringBuilder ingredientInfoBuilder = new StringBuilder();
for (ConfigSubSampleMethodConfItem configSubSampleMethodConfItem : getParamList) {
ConfigSubSampleMethodConfPoint target = configSubSampleMethodConfItem.getTarget();
List<String> projectList = Arrays.asList(target.getProject().split(","));//来源可以有多个
for (String project : projectList) {
String parameter = target.getParameter();
BusinessAssayProjectDataExtendRespVO currentBusinessAssayProjectData = businessAssayProjectDataList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(businessAssayTaskData.getId()) && project.equals(f.getSimpleName())).findFirst().orElse(null);
if (currentBusinessAssayProjectData == null) {//如果检测项目为空,则跳出当前循环
continue;
}
BusinessAssayParameterDataExtendRespVO currentBusinessAssayParameterData = businessAssayParameterDataList.stream().filter(f -> f.getBusinessAssayProjectDataId().equals(currentBusinessAssayProjectData.getId()) && parameter.equals(f.getParameterKey())).findFirst().orElse(null);
if (currentBusinessAssayParameterData != null && StringUtils.isNotBlank(currentBusinessAssayParameterData.getValue())) {
ingredientInfoBuilder.append(currentBusinessAssayParameterData.getParameterName()).append("").append(currentBusinessAssayParameterData.getValue()).append("");
break;
}
}
}
if (ingredientInfoBuilder.length() > 0) {
ingredientInfoBuilder.delete(ingredientInfoBuilder.length() - 1, ingredientInfoBuilder.length());
}
businessAssayTaskData.setIngredientInfo(ingredientInfoBuilder.toString());
}
}
return page;
} }
} }

View File

@@ -243,9 +243,9 @@ public class BusinessSubSampleServiceImpl implements BusinessSubSampleService {
return subSample; return subSample;
} }
List<BusinessSubSampleAnalysisGroupDO> businessSubSampleAnalysisGroupList = businessSubSampleAnalysisGroupMapper.selectByBusinessSubSampleId(subSample.getId()); List<BusinessSubSampleAnalysisGroupDO> businessSubSampleAnalysisGroupList = businessSubSampleAnalysisGroupMapper.selectByBusinessSubSampleId(subSample.getId());
BusinessSubSampleAnalysisGroupDO receiveSample = businessSubSampleAnalysisGroupList.stream().filter(f -> "已收样".equals(f.getSampleStatus()) && !f.getAssayDepartmentId().equals(loginUser.getVisitDeptId())).findFirst().orElse(null); BusinessSubSampleAnalysisGroupDO receiveSample = businessSubSampleAnalysisGroupList.stream().filter(f -> f.getAssayDepartmentId().equals(loginUser.getVisitDeptId())).findFirst().orElse(null);
if (receiveSample != null) { if (receiveSample == null) {
throw new ServiceException(1_032_100_000, "当前样品在" + receiveSample.getAssayDepartmentName() + ",不允许收样!"); throw new ServiceException(1_032_100_000, "当前样品" + loginUser.getVisitDeptName() + ",不允许收样!");
} }
} else { } else {
subSample = businessSubSampleMapper.getBySampleCodeAndFlowKey(reqVO); subSample = businessSubSampleMapper.getBySampleCodeAndFlowKey(reqVO);

View File

@@ -10,9 +10,9 @@ import com.zt.plat.module.qms.business.bus.controller.vo.BusinessAssayTaskDataRe
*/ */
public interface SampleAnalysisAuditService { public interface SampleAnalysisAuditService {
JSONObject crossAuditByTaskId(Long businessAssayTaskId); JSONObject getCrossAuditDataByTaskId(Long businessAssayTaskId);
void crossAuditByByTaskId(Long businessAssayTaskId, String auditStatus); void crossAuditByTaskId(Long businessAssayTaskId, String auditStatus);
JSONObject getSampleResultAssessmentList(BusinessAssayTaskDataReqVO reqVO); JSONObject getSampleResultAssessmentList(BusinessAssayTaskDataReqVO reqVO);
@@ -20,9 +20,9 @@ public interface SampleAnalysisAuditService {
JSONObject getDoubleCupResultAssessment(Long businessSubParentSampleId, Long configAssayMethodId); JSONObject getDoubleCupResultAssessment(Long businessSubParentSampleId, Long configAssayMethodId);
void assessmentDataReporting(Long businessSubSampleId, Long configAssayMethodId); void assessmentDataReporting(Long businessSubSampleId, Long configAssayMethodId, Integer retestCount);
void createReAnalysis(Long businessSubSampleId, Long configAssayMethodId); void createReAnalysis(Long businessSubSampleId, Long configAssayMethodId, Integer retestCount);
JSONObject modifyParallelResultAssessment(Long businessSubSampleId, Long configAssayMethodId, Long businessSubSampleAssessmentId, List<Long> businessAssayProjectDataIds); JSONObject modifyParallelResultAssessment(Long businessSubSampleId, Long configAssayMethodId, Long businessSubSampleAssessmentId, List<Long> businessAssayProjectDataIds);

View File

@@ -31,6 +31,7 @@ import com.zt.plat.framework.common.exception.ServiceException;
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
import com.zt.plat.module.qms.business.bus.controller.vo.*; import com.zt.plat.module.qms.business.bus.controller.vo.*;
import com.zt.plat.module.qms.business.bus.controller.vo.BatchResultDataReportingReqVO.BusinessSubParentSampleIdAndRetestCount;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayParameterDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayParameterDataDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayProjectDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayProjectDataDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDO;
@@ -67,10 +68,12 @@ import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleAssessmen
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleMapper;
import com.zt.plat.module.qms.business.config.controller.vo.*; import com.zt.plat.module.qms.business.config.controller.vo.*;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodProjectAssessmentDO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodProjectAssessmentDO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodProjectCoefficientDO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigRuleDO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigRuleDO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigSubSampleDO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigSubSampleDO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigSubSampleParentMethodDO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigSubSampleParentMethodDO;
import com.zt.plat.module.qms.business.config.dal.mapper.ConfigAssayMethodProjectAssessmentMapper; import com.zt.plat.module.qms.business.config.dal.mapper.ConfigAssayMethodProjectAssessmentMapper;
import com.zt.plat.module.qms.business.config.dal.mapper.ConfigAssayMethodProjectCoefficientMapper;
import com.zt.plat.module.qms.business.config.dal.mapper.ConfigAssayMethodProjectMapper; import com.zt.plat.module.qms.business.config.dal.mapper.ConfigAssayMethodProjectMapper;
import com.zt.plat.module.qms.business.config.dal.mapper.ConfigProjectMapper; import com.zt.plat.module.qms.business.config.dal.mapper.ConfigProjectMapper;
import com.zt.plat.module.qms.business.config.dal.mapper.ConfigReportFieldMapper; import com.zt.plat.module.qms.business.config.dal.mapper.ConfigReportFieldMapper;
@@ -152,6 +155,9 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
@Resource @Resource
private ConfigAssayMethodProjectMapper configAssayMethodProjectMapper; private ConfigAssayMethodProjectMapper configAssayMethodProjectMapper;
@Resource
private ConfigAssayMethodProjectCoefficientMapper configAssayMethodProjectCoefficientMapper;
@Resource @Resource
private ConfigSubSampleMethodMapper configSubSampleMethodMapper; private ConfigSubSampleMethodMapper configSubSampleMethodMapper;
@@ -198,7 +204,7 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
//为空则未添加过判定记录 //为空则未添加过判定记录
if (assessmentMap == null) { if (assessmentMap == null) {
if (QmsCommonConstant.ASSAY_TYPE_SINGLE_PARALLEL.equals(businessAssayTaskDataExtendRespVO.getAssayType())) {//平行 if (QmsCommonConstant.ASSAY_TYPE_SINGLE_PARALLEL.equals(businessAssayTaskDataExtendRespVO.getAssayType())) {//平行
List<BusinessSubSampleAssessmentProjectExtendRespVO> businessSubSampleAssessmentList = businessSubSampleAssessmentProjectMapper.selectByBusinessSubSampleIdAndConfigAssayMethodId(businessAssayTaskDataExtendRespVO.getBusinessSubSampleId(), configAssayMethodId); List<BusinessSubSampleAssessmentProjectExtendRespVO> businessSubSampleAssessmentList = businessSubSampleAssessmentProjectMapper.selectByBusinessSubSampleIdAndConfigAssayMethodIdAndRetestCount(businessAssayTaskDataExtendRespVO.getBusinessSubSampleId(), configAssayMethodId, businessAssayTaskDataExtendRespVO.getRetestCount());
for (BusinessSubSampleAssessmentProjectExtendRespVO businessSubSampleAssessment : businessSubSampleAssessmentList) { for (BusinessSubSampleAssessmentProjectExtendRespVO businessSubSampleAssessment : businessSubSampleAssessmentList) {
businessAssayTaskDataAssessmentMap.put("id", businessSubSampleAssessment.getId()); businessAssayTaskDataAssessmentMap.put("id", businessSubSampleAssessment.getId());
businessAssayTaskDataAssessmentMap.put("assessmentStatus", businessSubSampleAssessment.getAssessmentStatus()); businessAssayTaskDataAssessmentMap.put("assessmentStatus", businessSubSampleAssessment.getAssessmentStatus());
@@ -217,7 +223,15 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
List<BusinessAssayProjectDataExtendRespVO> businessAssayProjectDataList = businessAssayProjectDataMapper.selectByBusinessAssayTaskDataId(businessAssayTaskDataExtendRespVO.getId()); List<BusinessAssayProjectDataExtendRespVO> businessAssayProjectDataList = businessAssayProjectDataMapper.selectByBusinessAssayTaskDataId(businessAssayTaskDataExtendRespVO.getId());
for (BusinessAssayProjectDataExtendRespVO businessAssayProjectData : businessAssayProjectDataList) { for (BusinessAssayProjectDataExtendRespVO businessAssayProjectData : businessAssayProjectDataList) {
businessAssayTaskDataMap.put(businessAssayProjectData.getSimpleName(), businessAssayProjectData.getValue()); // String value = businessAssayProjectData.getValueAfter();
// if (businessAssayProjectData.getCoefficient() != null) {
// value = value + "(" + businessAssayProjectData.getValue() + "x" + businessAssayProjectData.getCoefficient().setScale(3, RoundingMode.HALF_EVEN).toPlainString()+ ")";
// }
// businessAssayTaskDataMap.put(businessAssayProjectData.getSimpleName(), value);
businessAssayTaskDataMap.put(businessAssayProjectData.getSimpleName(), businessAssayProjectData.getValueAfter());
// businessAssayTaskDataMap.put(businessAssayProjectData.getSimpleName(), businessAssayProjectData.getValue());
// businessAssayTaskDataMap.put(businessAssayProjectData.getSimpleName() + "_coefficient", businessAssayProjectData.getCoefficient());
// businessAssayTaskDataMap.put(businessAssayProjectData.getSimpleName() + "_after", businessAssayProjectData.getValueAfter());
businessAssayTaskDataMap.put("isNotAssessment_" + businessAssayProjectData.getSimpleName(), businessAssayProjectData.getIsNotAssessment()); businessAssayTaskDataMap.put("isNotAssessment_" + businessAssayProjectData.getSimpleName(), businessAssayProjectData.getIsNotAssessment());
//添加判定状态 //添加判定状态
businessAssayTaskDataMap.put("assessmentStatus", assessmentMap.get("assessmentStatus")); businessAssayTaskDataMap.put("assessmentStatus", assessmentMap.get("assessmentStatus"));
@@ -271,7 +285,12 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
Map<String, Object> businessSubSampleAssessmentMap = BeanUtil.beanToMap(businessSubSampleAssessment); Map<String, Object> businessSubSampleAssessmentMap = BeanUtil.beanToMap(businessSubSampleAssessment);
List<BusinessAssayProjectDataExtendRespVO> businessAssayProjectDataSingleList = businessAssayProjectDataList.stream().filter(f -> f.getDictionaryProjectId().equals(businessSubSampleAssessment.getDictionaryProjectId())).collect(Collectors.toList()); List<BusinessAssayProjectDataExtendRespVO> businessAssayProjectDataSingleList = businessAssayProjectDataList.stream().filter(f -> f.getDictionaryProjectId().equals(businessSubSampleAssessment.getDictionaryProjectId())).collect(Collectors.toList());
for (BusinessAssayProjectDataExtendRespVO businessAssayProjectDataExtendRespVO : businessAssayProjectDataSingleList) { for (BusinessAssayProjectDataExtendRespVO businessAssayProjectDataExtendRespVO : businessAssayProjectDataSingleList) {
businessSubSampleAssessmentMap.put(businessAssayProjectDataExtendRespVO.getBusinessAssayTaskDataId() + ";" + businessAssayProjectDataExtendRespVO.getBusinessSubSampleId() + ";" + businessAssayProjectDataExtendRespVO.getRecheckCount(), businessAssayProjectDataExtendRespVO.getValue()); // String value = businessAssayProjectDataExtendRespVO.getValueAfter();
// if (businessAssayProjectDataExtendRespVO.getCoefficient() != null) {
// value = value + "(" + businessAssayProjectDataExtendRespVO.getValue() + "x" + businessAssayProjectDataExtendRespVO.getCoefficient().setScale(3, RoundingMode.HALF_EVEN).toPlainString()+ ")";
// }
// businessSubSampleAssessmentMap.put(businessAssayProjectDataExtendRespVO.getBusinessAssayTaskDataId() + ";" + businessAssayProjectDataExtendRespVO.getBusinessSubSampleId() + ";" + businessAssayProjectDataExtendRespVO.getRecheckCount(), value);
businessSubSampleAssessmentMap.put(businessAssayProjectDataExtendRespVO.getBusinessAssayTaskDataId() + ";" + businessAssayProjectDataExtendRespVO.getBusinessSubSampleId() + ";" + businessAssayProjectDataExtendRespVO.getRecheckCount(), businessAssayProjectDataExtendRespVO.getValueAfter());
} }
dataList.add(businessSubSampleAssessmentMap); dataList.add(businessSubSampleAssessmentMap);
} }
@@ -291,7 +310,7 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
} }
@Override @Override
public JSONObject crossAuditByTaskId(Long businessAssayTaskId) { public JSONObject getCrossAuditDataByTaskId(Long businessAssayTaskId) {
JSONWriter.Context context = JSONFactory.createWriteContext(); JSONWriter.Context context = JSONFactory.createWriteContext();
context.setDateFormat("yyyy-MM-dd HH:mm:ss"); context.setDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -622,13 +641,13 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void crossAuditByByTaskId(Long businessAssayTaskId, String auditStatus) { public void crossAuditByTaskId(Long businessAssayTaskId, String auditStatus) {
//当前登录用户昵称 //当前登录用户昵称
String nickName = SecurityFrameworkUtils.getLoginUserNickname(); String nickName = SecurityFrameworkUtils.getLoginUserNickname();
//自动上报的子样 //自动上报的子样判定数据
List<Long> automaticBusinessSubSampleIdList = new ArrayList<>(); List<BusinessSubSampleAssessmentDO> automaticBusinessSubSampleAssessmentList = new ArrayList<>();
//判定记录 //判定记录
List<BusinessSubSampleAssessmentDO> updateBusinessSubSampleAssessmentDOList = new ArrayList<>(); List<BusinessSubSampleAssessmentDO> updateBusinessSubSampleAssessmentDOList = new ArrayList<>();
@@ -645,9 +664,12 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
//查询分析任务明细 //查询分析任务明细
List<BusinessAssayTaskDataDO> businessAssayTaskDataDOList = businessAssayTaskDataMapper.selectByBusinessAssayTaskId(businessAssayTaskId); List<BusinessAssayTaskDataDO> businessAssayTaskDataDOList = businessAssayTaskDataMapper.selectByBusinessAssayTaskId(businessAssayTaskId);
Integer recheckCount = businessAssayTaskDataDOList.get(0).getRetestCount();
List<Long> businessSubSampleIdList = businessAssayTaskDataDOList.stream().map(m -> m.getBusinessSubSampleId()).distinct().collect(Collectors.toList()); //获取任务明细对应的判定id
List<BusinessSubSampleAssessmentDO> businessSubSampleAssessmentDOList = businessSubSampleAssessmentMapper.selectByBusinessSubSampleIdsAndConfigAssayMethodIdAndRetestCount(businessSubSampleIdList, businessAssayTaskDO.getConfigAssayMethodId(), recheckCount); List<Long> businessSubSampleAssessmentIdList = businessAssayTaskDataDOList.stream().map(m -> m.getBusinessSubSampleAssessmentId()).distinct().collect(Collectors.toList());
//获取子样判定数据
List<BusinessSubSampleAssessmentDO> businessSubSampleAssessmentDOList = businessSubSampleAssessmentMapper.selectByIds(businessSubSampleAssessmentIdList);
//根据子样分组 //根据子样分组
Map<Long, List<BusinessAssayTaskDataDO>> businessAssayTaskDataDOMap = businessAssayTaskDataDOList.stream().collect(Collectors.groupingBy(BusinessAssayTaskDataDO::getBusinessSubSampleId)); Map<Long, List<BusinessAssayTaskDataDO>> businessAssayTaskDataDOMap = businessAssayTaskDataDOList.stream().collect(Collectors.groupingBy(BusinessAssayTaskDataDO::getBusinessSubSampleId));
//循环分组 //循环分组
@@ -655,8 +677,15 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
Long businessSubSampleId = businessAssayTaskDataDOMapEntry.getKey(); Long businessSubSampleId = businessAssayTaskDataDOMapEntry.getKey();
List<BusinessAssayTaskDataDO> businessAssayTaskDataList = businessAssayTaskDataDOMapEntry.getValue(); List<BusinessAssayTaskDataDO> businessAssayTaskDataList = businessAssayTaskDataDOMapEntry.getValue();
List<Long> businessAssayTaskDataIdList = businessAssayTaskDataList.stream().map(m -> m.getId()).collect(Collectors.toList());
BusinessAssayTaskDataDO businessAssayTaskDataDO = businessAssayTaskDataList.get(0); Map<Integer, List<BusinessAssayTaskDataDO>> businessAssayTaskDataDORetestMap = businessAssayTaskDataList.stream().collect(Collectors.groupingBy(BusinessAssayTaskDataDO::getRetestCount));
for (Map.Entry<Integer, List<BusinessAssayTaskDataDO>> businessAssayTaskDataDORetestMapEntry : businessAssayTaskDataDORetestMap.entrySet()) {
Integer retestCount = businessAssayTaskDataDORetestMapEntry.getKey();
List<BusinessAssayTaskDataDO> businessAssayTaskDataRetestList = businessAssayTaskDataDORetestMapEntry.getValue();
List<Long> businessAssayTaskDataIdList = businessAssayTaskDataRetestList.stream().map(m -> m.getId()).collect(Collectors.toList());
BusinessAssayTaskDataDO businessAssayTaskDataDO = businessAssayTaskDataRetestList.get(0);
BusinessSubSampleDO businessSubSampleDO = businessSubSampleMapper.selectById(businessSubSampleId); BusinessSubSampleDO businessSubSampleDO = businessSubSampleMapper.selectById(businessSubSampleId);
//获取子样分析方法配置 //获取子样分析方法配置
@@ -664,12 +693,12 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
if (QmsCommonConstant.ASSAY_TYPE_SINGLE_PARALLEL.equals(businessAssayTaskDataDO.getAssayType())) { if (QmsCommonConstant.ASSAY_TYPE_SINGLE_PARALLEL.equals(businessAssayTaskDataDO.getAssayType())) {
//根据子样id及分析方法id查询未上报的分析任务 //根据子样id及分析方法id查询未上报的分析任务
List<BusinessAssayTaskDataDO> unReportedList = businessAssayTaskDataMapper.selectIsReportedList(businessAssayTaskDataIdList, businessAssayTaskDataDO.getBusinessSubSampleId(), businessAssayTaskDataDO.getConfigAssayMethodId(), QmsCommonConstant.NO); List<BusinessAssayTaskDataDO> unReportedList = businessAssayTaskDataMapper.selectIsReportedList(businessAssayTaskDataIdList, businessAssayTaskDataDO.getBusinessSubSampleId(), businessAssayTaskDataDO.getConfigAssayMethodId(), retestCount, QmsCommonConstant.NO);
if (unReportedList.size() > 0) {//还有未上报数据,直接处理,无需判定 if (unReportedList.size() > 0) {//还有未上报数据,直接处理,无需判定
continue; continue;
} else {//做超差判定 } else {//做超差判定
//根据子样id及分析方法id查询已上报的分析任务 //根据子样id及分析方法id查询已上报的分析任务
List<BusinessAssayTaskDataDO> reportedList = businessAssayTaskDataMapper.selectIsReportedList(businessAssayTaskDataIdList, businessAssayTaskDataDO.getBusinessSubSampleId(), businessAssayTaskDataDO.getConfigAssayMethodId(), QmsCommonConstant.YES); List<BusinessAssayTaskDataDO> reportedList = businessAssayTaskDataMapper.selectIsReportedList(businessAssayTaskDataIdList, businessAssayTaskDataDO.getBusinessSubSampleId(), businessAssayTaskDataDO.getConfigAssayMethodId(), retestCount, QmsCommonConstant.YES);
if (reportedList.size() > 0) { if (reportedList.size() > 0) {
List<Long> reportedBusinessAssayTaskDataIdList = reportedList.stream().map(m -> m.getId()).collect(Collectors.toList()); List<Long> reportedBusinessAssayTaskDataIdList = reportedList.stream().map(m -> m.getId()).collect(Collectors.toList());
businessAssayTaskDataIdList.addAll(reportedBusinessAssayTaskDataIdList); businessAssayTaskDataIdList.addAll(reportedBusinessAssayTaskDataIdList);
@@ -718,7 +747,7 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
// 排序并处理 null // 排序并处理 null
List<BigDecimal> sortedValues = val1.stream() List<BigDecimal> sortedValues = val1.stream()
.map(v -> { .map(v -> {
String val = v.getValue(); String val = v.getValueAfter();//补正后的值
return val == null || val.trim().isEmpty() ? BigDecimal.ZERO : new BigDecimal(val.trim()); return val == null || val.trim().isEmpty() ? BigDecimal.ZERO : new BigDecimal(val.trim());
}) })
.sorted() .sorted()
@@ -759,9 +788,9 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
} }
//如果为自动上报 //如果为自动上报, 并且上报状态为待上报的
if (QmsCommonConstant.AUTOMATIC.equals(configSubSampleMethodDO.getResultTreatmentWay())) { if (QmsCommonConstant.AUTOMATIC.equals(configSubSampleMethodDO.getResultTreatmentWay()) && QmsCommonConstant.ASMT_PENDING_REPORT.equals(businessSubSampleAssessmentDO.getReportedStatus())) {
automaticBusinessSubSampleIdList.add(businessSubSampleId); automaticBusinessSubSampleAssessmentList.add(businessSubSampleAssessmentDO);
} }
@@ -772,7 +801,6 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
} else {//单杯 } else {//单杯
//查询判定业务 //查询判定业务
BusinessSubSampleAssessmentDO businessSubSampleAssessmentDO = updateBusinessSubSampleAssessmentDOList.stream().filter(f -> f.getId().equals(businessAssayTaskDataDO.getBusinessSubSampleAssessmentId())).findFirst().orElse(null); BusinessSubSampleAssessmentDO businessSubSampleAssessmentDO = updateBusinessSubSampleAssessmentDOList.stream().filter(f -> f.getId().equals(businessAssayTaskDataDO.getBusinessSubSampleAssessmentId())).findFirst().orElse(null);
if (businessSubSampleAssessmentDO == null) { if (businessSubSampleAssessmentDO == null) {
@@ -810,17 +838,18 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
businessSubSampleAssessmentProjectDO.setMinimumLimitValue(businessAssayProjectDataDO.getMinimumLimitValue()); businessSubSampleAssessmentProjectDO.setMinimumLimitValue(businessAssayProjectDataDO.getMinimumLimitValue());
businessSubSampleAssessmentProjectDO.setSymbol(businessAssayProjectDataDO.getSymbol()); businessSubSampleAssessmentProjectDO.setSymbol(businessAssayProjectDataDO.getSymbol());
businessSubSampleAssessmentProjectDO.setAssessmentStatus(QmsCommonConstant.NORMAL); businessSubSampleAssessmentProjectDO.setAssessmentStatus(QmsCommonConstant.NORMAL);
businessSubSampleAssessmentProjectDO.setAssessmentValue(businessAssayProjectDataDO.getValue()); businessSubSampleAssessmentProjectDO.setAssessmentValue(businessAssayProjectDataDO.getValueAfter());//修改为赋值补正后的值
} }
//如果为自动上报 //如果为自动上报
if (QmsCommonConstant.AUTOMATIC.equals(configSubSampleMethodDO.getResultTreatmentWay())) { if (QmsCommonConstant.AUTOMATIC.equals(configSubSampleMethodDO.getResultTreatmentWay()) && QmsCommonConstant.ASMT_PENDING_REPORT.equals(businessSubSampleAssessmentDO.getReportedStatus())) {
automaticBusinessSubSampleIdList.add(businessSubSampleId); automaticBusinessSubSampleAssessmentList.add(businessSubSampleAssessmentDO);
} }
} }
}
} }
@@ -850,9 +879,9 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
} }
//执行自动上报 //执行自动上报
if (automaticBusinessSubSampleIdList.size() > 0) { if (automaticBusinessSubSampleAssessmentList.size() > 0) {
for (Long automaticBusinessSubSampleId : automaticBusinessSubSampleIdList) { for (BusinessSubSampleAssessmentDO automaticBusinessSubSampleAssessment : automaticBusinessSubSampleAssessmentList) {
this.assessmentDataReporting(automaticBusinessSubSampleId, businessAssayTaskDO.getConfigAssayMethodId()); this.assessmentDataReporting(automaticBusinessSubSampleAssessment.getBusinessSubSampleId(), businessAssayTaskDO.getConfigAssayMethodId(), automaticBusinessSubSampleAssessment.getRetestCount());
} }
} }
@@ -936,29 +965,29 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void assessmentDataReporting(Long businessSubSampleId, Long configAssayMethodId) { public void assessmentDataReporting(Long businessSubSampleId, Long configAssayMethodId, Integer retestCount) {
//当前登录用户昵称 //当前登录用户昵称
String nickName = SecurityFrameworkUtils.getLoginUserNickname(); String nickName = SecurityFrameworkUtils.getLoginUserNickname();
List<BusinessAssayTaskDataDO> unReportedList = businessAssayTaskDataMapper.selectIsReportedList(null, businessSubSampleId, configAssayMethodId, QmsCommonConstant.NO); List<BusinessAssayTaskDataDO> unReportedList = businessAssayTaskDataMapper.selectIsReportedList(null, businessSubSampleId, configAssayMethodId, retestCount, QmsCommonConstant.NO);
if (unReportedList.size() > 0) { if (unReportedList.size() > 0) {
throw new ServiceException(1_032_100_000, "存在未上报的数据"); throw new ServiceException(1_032_100_000, "存在未上报的数据");
} }
//自动上报 //自动上报
List<Long> automaticBusinessSubParentSampleIdList = new ArrayList<>(); List<BusinessSubParentSampleIdAndRetestCount> automaticBusinessSubParentSampleIdAndRetestCounts = new ArrayList<>();
List<BusinessSubParentSampleAssessmentProjectDO> businessSubParentSampleAssessmentDOList = new ArrayList<>(); List<BusinessSubParentSampleAssessmentProjectDO> businessSubParentSampleAssessmentDOList = new ArrayList<>();
//分析任务已全部上报 //分析任务已全部上报
List<BusinessAssayTaskDataDO> reportedList = businessAssayTaskDataMapper.selectIsReportedList(null, businessSubSampleId, configAssayMethodId, QmsCommonConstant.YES); List<BusinessAssayTaskDataDO> reportedList = businessAssayTaskDataMapper.selectIsReportedList(null, businessSubSampleId, configAssayMethodId, retestCount, QmsCommonConstant.YES);
//判定结果 //判定结果
List<BusinessSubSampleAssessmentProjectExtendRespVO> businessSubSampleAssessmentList = businessSubSampleAssessmentProjectMapper.selectByBusinessSubSampleIdAndConfigAssayMethodId(businessSubSampleId, configAssayMethodId); List<BusinessSubSampleAssessmentProjectExtendRespVO> businessSubSampleAssessmentList = businessSubSampleAssessmentProjectMapper.selectByBusinessSubSampleIdAndConfigAssayMethodIdAndRetestCount(businessSubSampleId, configAssayMethodId, retestCount);
List<Long> businessSubSampleAssessmentIdList = businessSubSampleAssessmentList.stream().map(m -> m.getId()).collect(Collectors.toList()); List<Long> businessSubSampleAssessmentIdList = businessSubSampleAssessmentList.stream().map(m -> m.getId()).collect(Collectors.toList());
BusinessAssayTaskDataDO businessAssayTaskDataDO = reportedList.get(0); BusinessAssayTaskDataDO businessAssayTaskDataDO = reportedList.get(0);
//查询主样 //查询主样
BusinessBaseSampleDO businessBaseSampleDO = businessBaseSampleMapper.selectById(businessAssayTaskDataDO.getBusinessBaseSampleId()); //BusinessBaseSampleDO businessBaseSampleDO = businessBaseSampleMapper.selectById(businessAssayTaskDataDO.getBusinessBaseSampleId());
//查询分样 //查询分样
BusinessSubParentSampleDO businessSubParentSampleDO = businessSubParentSampleMapper.selectById(businessAssayTaskDataDO.getBusinessSubParentSampleId()); BusinessSubParentSampleDO businessSubParentSampleDO = businessSubParentSampleMapper.selectById(businessAssayTaskDataDO.getBusinessSubParentSampleId());
@@ -967,10 +996,10 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
ConfigSubSampleParentMethodDO configSubSampleParentMethodDO = configSubSampleParentMethodMapper.selectByConfigSubSampleParentIdAndConfigAssayMethodId(businessSubParentSampleDO.getConfigSubSampleParentId(), configAssayMethodId); ConfigSubSampleParentMethodDO configSubSampleParentMethodDO = configSubSampleParentMethodMapper.selectByConfigSubSampleParentIdAndConfigAssayMethodId(businessSubParentSampleDO.getConfigSubSampleParentId(), configAssayMethodId);
//子样判定 //子样判定
BusinessSubSampleAssessmentDO businessSubSampleAssessmentDO = businessSubSampleAssessmentMapper.selectByBusinessSubSampleIdAndConfigAssayMethodId(businessSubSampleId, configAssayMethodId); BusinessSubSampleAssessmentDO businessSubSampleAssessmentDO = businessSubSampleAssessmentMapper.selectByBusinessSubSampleIdAndConfigAssayMethodIdAndRetestCount(businessSubSampleId, configAssayMethodId, retestCount);
//分样判定 //分样判定
BusinessSubParentSampleAssessmentDO businessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectByBusinessSubParentSampleIdAndConfigAssayMethodId(businessSubParentSampleDO.getId(), configAssayMethodId); BusinessSubParentSampleAssessmentDO businessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectByBusinessSubParentSampleIdAndConfigAssayMethodIdAndRetestCount(businessSubParentSampleDO.getId(), configAssayMethodId, retestCount);
//循环判定值 //循环判定值
BusinessSubParentSampleAssessmentProjectDO businessSubParentSampleAssessmentProjectDO = null; BusinessSubParentSampleAssessmentProjectDO businessSubParentSampleAssessmentProjectDO = null;
@@ -1014,9 +1043,9 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
.in(BusinessSubSampleAssessmentProjectDO::getId, businessSubSampleAssessmentIdList)); .in(BusinessSubSampleAssessmentProjectDO::getId, businessSubSampleAssessmentIdList));
if (QmsCommonConstant.AUTOMATIC.equals(configSubSampleParentMethodDO.getResultTreatmentWay())) { if (QmsCommonConstant.AUTOMATIC.equals(configSubSampleParentMethodDO.getResultTreatmentWay())) {
automaticBusinessSubParentSampleIdList.add(businessSubParentSampleDO.getId()); automaticBusinessSubParentSampleIdAndRetestCounts.add(new BusinessSubParentSampleIdAndRetestCount(businessSubParentSampleDO.getId(), retestCount));
BatchResultDataReportingReqVO batchResultDataReportingReqVO = new BatchResultDataReportingReqVO(); BatchResultDataReportingReqVO batchResultDataReportingReqVO = new BatchResultDataReportingReqVO();
batchResultDataReportingReqVO.setBusinessSubParentSampleIds(automaticBusinessSubParentSampleIdList); batchResultDataReportingReqVO.setBusinessSubParentSampleIdAndRetestCounts(automaticBusinessSubParentSampleIdAndRetestCounts);
batchResultDataReportingReqVO.setConfigAssayMethodId(configAssayMethodId); batchResultDataReportingReqVO.setConfigAssayMethodId(configAssayMethodId);
sampleResultReportingService.batchResultDataReporting(batchResultDataReportingReqVO); sampleResultReportingService.batchResultDataReporting(batchResultDataReportingReqVO);
@@ -1034,7 +1063,7 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void createReAnalysis(Long businessSubSampleId, Long configAssayMethodId) { public void createReAnalysis(Long businessSubSampleId, Long configAssayMethodId, Integer retestCount) {
//子样数据 //子样数据
BusinessSubSampleDO businessSubSampleDO = businessSubSampleMapper.selectById(businessSubSampleId); BusinessSubSampleDO businessSubSampleDO = businessSubSampleMapper.selectById(businessSubSampleId);
@@ -1048,7 +1077,7 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
List<BusinessAssayProjectDataDO> newBusinessAssayProjectDataDOList = new ArrayList<>(); List<BusinessAssayProjectDataDO> newBusinessAssayProjectDataDOList = new ArrayList<>();
List<BusinessAssayParameterDataDO> newBusinessAssayParameterDataDOList = new ArrayList<>(); List<BusinessAssayParameterDataDO> newBusinessAssayParameterDataDOList = new ArrayList<>();
BusinessSubSampleAssessmentDO businessSubSampleAssessmentDO = businessSubSampleAssessmentMapper.selectByBusinessSubSampleIdAndConfigAssayMethodId(businessSubSampleId, configAssayMethodId); BusinessSubSampleAssessmentDO businessSubSampleAssessmentDO = businessSubSampleAssessmentMapper.selectByBusinessSubSampleIdAndConfigAssayMethodIdAndRetestCount(businessSubSampleId, configAssayMethodId, retestCount);
BusinessAssayTaskDataDO newBusinessAssayTaskDataDO = null; BusinessAssayTaskDataDO newBusinessAssayTaskDataDO = null;
List<BusinessAssayTaskDataDO> businessAssayTaskDataDOList = businessAssayTaskDataMapper.selectMaxRecheckCountByBusinessSubSampleIdAndConfigAssayMethodId(businessSubSampleId, configAssayMethodId); List<BusinessAssayTaskDataDO> businessAssayTaskDataDOList = businessAssayTaskDataMapper.selectMaxRecheckCountByBusinessSubSampleIdAndConfigAssayMethodId(businessSubSampleId, configAssayMethodId);
@@ -1112,7 +1141,7 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
//修改判定状态 //修改判定状态
//查询判定值 //查询判定值
List<BusinessSubSampleAssessmentProjectExtendRespVO> businessSubSampleAssessmentList = businessSubSampleAssessmentProjectMapper.selectByBusinessSubSampleIdAndConfigAssayMethodId(businessSubSampleId, configAssayMethodId); List<BusinessSubSampleAssessmentProjectExtendRespVO> businessSubSampleAssessmentList = businessSubSampleAssessmentProjectMapper.selectByBusinessSubSampleIdAndConfigAssayMethodIdAndRetestCount(businessSubSampleId, configAssayMethodId, retestCount);
for (BusinessSubSampleAssessmentProjectExtendRespVO businessSubSampleAssessmentProjectExtendRespVO : businessSubSampleAssessmentList) { for (BusinessSubSampleAssessmentProjectExtendRespVO businessSubSampleAssessmentProjectExtendRespVO : businessSubSampleAssessmentList) {
businessSubSampleAssessmentProjectExtendRespVO.setAssessmentValue(null); businessSubSampleAssessmentProjectExtendRespVO.setAssessmentValue(null);
businessSubSampleAssessmentProjectExtendRespVO.setAssessmentStatus(QmsCommonConstant.IN_PROGRESS); businessSubSampleAssessmentProjectExtendRespVO.setAssessmentStatus(QmsCommonConstant.IN_PROGRESS);
@@ -1170,7 +1199,7 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
List<BigDecimal> sortedValues = businessAssayProjectDataDOList.stream() List<BigDecimal> sortedValues = businessAssayProjectDataDOList.stream()
.filter(f -> f.getIsNotAssessment().equals(QmsCommonConstant.NO)) .filter(f -> f.getIsNotAssessment().equals(QmsCommonConstant.NO))
.map(v -> { .map(v -> {
String val = v.getValue(); String val = v.getValueAfter();//设置为补正后的
return val == null || val.trim().isEmpty() ? BigDecimal.ZERO : new BigDecimal(val.trim()); return val == null || val.trim().isEmpty() ? BigDecimal.ZERO : new BigDecimal(val.trim());
}) })
.sorted() .sorted()

View File

@@ -30,11 +30,17 @@ public interface SampleAnalysisService {
BusinessAssayTaskAnalysisSampleAndQcProjectRespVO batchSampleAndQcAnalysisByTaskId(Long businessAssayTaskId); BusinessAssayTaskAnalysisSampleAndQcProjectRespVO batchSampleAndQcAnalysisByTaskId(Long businessAssayTaskId);
/** /**
* 下发配料 * 下发配料(自动火试金配料)
* @param businessAssayTaskId * @param businessAssayTaskId
*/ */
void issuedIngredients(Long businessAssayTaskId); void issuedIngredients(Long businessAssayTaskId);
/**
* 人工配料
* @param businessAssayTaskId
*/
void manualIngredients(Long businessAssayTaskId);
/** /**
* 根据任务单id提交分析数据 * 根据任务单id提交分析数据
* @param businessAssayTaskId 任务单id * @param businessAssayTaskId 任务单id
@@ -57,4 +63,5 @@ public interface SampleAnalysisService {
void rollbackAnalysisSample(BusinessAssayTaskBackSampleReqVO req); void rollbackAnalysisSample(BusinessAssayTaskBackSampleReqVO req);
} }

View File

@@ -21,7 +21,6 @@ import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.zt.plat.framework.common.exception.ServiceException; import com.zt.plat.framework.common.exception.ServiceException;
import com.zt.plat.framework.common.util.date.DateUtils;
import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.zt.plat.framework.security.core.LoginUser; import com.zt.plat.framework.security.core.LoginUser;
@@ -85,7 +84,6 @@ import com.zt.plat.module.qms.business.config.dal.dataobject.BaseSampleDO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodDO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodDO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodProjectCoefficientDO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodProjectCoefficientDO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodProjectRangeDO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodProjectRangeDO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigSubSampleMethodDO;
import com.zt.plat.module.qms.business.config.dal.mapper.BaseSampleMapper; import com.zt.plat.module.qms.business.config.dal.mapper.BaseSampleMapper;
import com.zt.plat.module.qms.business.config.dal.mapper.ConfigAssayMethodMapper; import com.zt.plat.module.qms.business.config.dal.mapper.ConfigAssayMethodMapper;
import com.zt.plat.module.qms.business.config.dal.mapper.ConfigAssayMethodProjectCoefficientMapper; import com.zt.plat.module.qms.business.config.dal.mapper.ConfigAssayMethodProjectCoefficientMapper;
@@ -98,9 +96,7 @@ import com.zt.plat.module.qms.common.dic.controller.vo.DictionaryBusinessExtendR
import com.zt.plat.module.qms.common.dic.dal.mapper.DictionaryBusinessMapper; import com.zt.plat.module.qms.common.dic.dal.mapper.DictionaryBusinessMapper;
import com.zt.plat.module.qms.enums.QmsCommonConstant; import com.zt.plat.module.qms.enums.QmsCommonConstant;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@@ -529,6 +525,7 @@ public class SampleAnalysisServiceImpl implements SampleAnalysisService {
businessAssayTaskAnalysisSampleAndQcProjectRespVO.setDataCollectionId(businessAssayTaskDO.getFormDataCollectionId()); businessAssayTaskAnalysisSampleAndQcProjectRespVO.setDataCollectionId(businessAssayTaskDO.getFormDataCollectionId());
businessAssayTaskAnalysisSampleAndQcProjectRespVO.setFormValue(businessAssayTaskDO.getFormValue()); businessAssayTaskAnalysisSampleAndQcProjectRespVO.setFormValue(businessAssayTaskDO.getFormValue());
businessAssayTaskAnalysisSampleAndQcProjectRespVO.setIsIngredients(businessAssayTaskDO.getIsIngredients()); businessAssayTaskAnalysisSampleAndQcProjectRespVO.setIsIngredients(businessAssayTaskDO.getIsIngredients());
businessAssayTaskAnalysisSampleAndQcProjectRespVO.setIngredientsWay(businessAssayTaskDO.getIngredientsWay());
businessAssayTaskAnalysisSampleAndQcProjectRespVO.setIngredientsStatus(businessAssayTaskDO.getIngredientsStatus()); businessAssayTaskAnalysisSampleAndQcProjectRespVO.setIngredientsStatus(businessAssayTaskDO.getIngredientsStatus());
ConfigAssayMethodDO configAssayMethodDO = configAssayMethodMapper.selectById(businessAssayTaskDO.getConfigAssayMethodId()); ConfigAssayMethodDO configAssayMethodDO = configAssayMethodMapper.selectById(businessAssayTaskDO.getConfigAssayMethodId());
@@ -662,17 +659,18 @@ public class SampleAnalysisServiceImpl implements SampleAnalysisService {
String sourceProject = source.getProject(); String sourceProject = source.getProject();
//String sourceParameter = source.getParameter(); //String sourceParameter = source.getParameter();
ConfigSubSampleMethodConfPoint target = configSubSampleMethodConfItem.getTarget();//目标 ConfigSubSampleMethodConfPoint target = configSubSampleMethodConfItem.getTarget();//目标
String targetProject = target.getProject();
List<String> projectList = Arrays.asList(target.getProject().split(","));//目标可以有多个
for (String targetProject : projectList) {
String targetParameter = target.getParameter(); String targetParameter = target.getParameter();
BusinessAssayParameterDataDO businessAssayParameterDataDO = businessAssayParameterDataMapper.selectByBusinessAssayTaskDataIdAndProjectSimpleNameAndParameterKey(businessAssayTaskDataDO.getId(), targetProject, targetParameter); BusinessAssayParameterDataDO businessAssayParameterDataDO = businessAssayParameterDataMapper.selectByBusinessAssayTaskDataIdAndProjectSimpleNameAndParameterKey(businessAssayTaskDataDO.getId(), targetProject, targetParameter);
if (businessAssayParameterDataDO == null) { // if (businessAssayParameterDataDO == null) {
throw new ServiceException(1_032_100_000, "子样检测方法映射配置错误"); // throw new ServiceException(1_032_100_000, "子样检测方法映射配置错误");
} // }
if (StringUtils.isBlank(businessAssayParameterDataDO.getValue())) { if (businessAssayParameterDataDO != null && StringUtils.isBlank(businessAssayParameterDataDO.getValue())) {
//1 查询委托明细 //1 查询委托明细
BusinessSampleEntrustDetailDO businessSampleEntrustDetailDO = businessSampleEntrustDetailMapper.selectByBusinessBaseSampleId(businessAssayTaskDataDO.getBusinessBaseSampleId()); BusinessSampleEntrustDetailDO businessSampleEntrustDetailDO = businessSampleEntrustDetailMapper.selectByBusinessBaseSampleId(businessAssayTaskDataDO.getBusinessBaseSampleId());
//2 查询样品大类 //2 查询样品大类
@@ -681,20 +679,22 @@ public class SampleAnalysisServiceImpl implements SampleAnalysisService {
if (QmsCommonConstant.ENTRUST_INSPECTION_ANALYSIS_SAMPLE.equals(baseSampleDO.getDictionaryBusinessKey())) {//如果是商检分析样 if (QmsCommonConstant.ENTRUST_INSPECTION_ANALYSIS_SAMPLE.equals(baseSampleDO.getDictionaryBusinessKey())) {//如果是商检分析样
//查询当前批次的第一个商检分析样 //查询当前批次的第一个商检分析样
BusinessSampleEntrustDetailDO currBatchFirstBusinessSampleEntrustDetailDO = businessSampleEntrustDetailMapper.selectCurrBatchFirstByBusinessBaseSampleIdAndBaseSampleDictionaryBusinessKey(businessAssayTaskDataDO.getBusinessBaseSampleId(), QmsCommonConstant.ENTRUST_INSPECTION_ANALYSIS_SAMPLE); BusinessSampleEntrustDetailDO currBatchFirstBusinessSampleEntrustDetailDO = businessSampleEntrustDetailMapper.selectCurrBatchFirstByBusinessBaseSampleIdAndBaseSampleDictionaryBusinessKey(businessAssayTaskDataDO.getBusinessBaseSampleId(), QmsCommonConstant.ENTRUST_INSPECTION_ANALYSIS_SAMPLE);
List<BusinessSubParentSampleDO> currBusinessSubParentSampleDOList = businessSubParentSampleMapper.selectByBusinessBaseSampleId(currBatchFirstBusinessSampleEntrustDetailDO.getBusinessBaseSampleId()); List<BusinessAssayProjectDataExtendRespVO> businessAssayProjectDataExtendList = businessAssayProjectDataMapper.selectByBusinessBaseSampleIdAndConfigAssayMethodId(currBatchFirstBusinessSampleEntrustDetailDO.getBusinessBaseSampleId(), configMethodId);
List<Long> currBusinessSubParentSampleIdList = currBusinessSubParentSampleDOList.stream().map(m -> m.getId()).collect(Collectors.toList());
List<BusinessSubParentSampleAssessmentProjectExtendRespVO> businessSubParentSampleAssessmentProjectList = businessSubParentSampleAssessmentProjectMapper.selectByBusinessSubParentSampleIdsAndConfigAssayMethodId(currBusinessSubParentSampleIdList, configMethodId); BusinessAssayProjectDataExtendRespVO sourceBusinessAssayProjectDataExtendRespVO = businessAssayProjectDataExtendList.stream().filter(f -> sourceProject.equals(f.getSimpleName())).findFirst().orElse(null);
BusinessSubParentSampleAssessmentProjectExtendRespVO businessSubParentSampleAssessmentProject = businessSubParentSampleAssessmentProjectList.stream().filter(f -> f.getSimpleName().equals(sourceProject)).findFirst().orElse(null); if (sourceBusinessAssayProjectDataExtendRespVO != null && StringUtils.isNotBlank(sourceBusinessAssayProjectDataExtendRespVO.getValue())) {
if (businessSubParentSampleAssessmentProject != null && StringUtils.isNotBlank(businessSubParentSampleAssessmentProject.getAssessmentValue())) { businessAssayParameterDataDO.setValue(sourceBusinessAssayProjectDataExtendRespVO.getValue());
businessAssayParameterDataDO.setValue(businessSubParentSampleAssessmentProject.getAssessmentValue());
} }
} else if (QmsCommonConstant.ENTRUST_COMPREHENSIVE_INSPECTION_SAMPLE.equals(baseSampleDO.getDictionaryBusinessKey())) {//如果是商检综合样 } else if (QmsCommonConstant.ENTRUST_COMPREHENSIVE_INSPECTION_SAMPLE.equals(baseSampleDO.getDictionaryBusinessKey())) {//如果是商检综合样
//查询当前样品的其他分析方法的结果 //查询当前样品的其他分析方法的结果
List<Long> businessSubParentSampleIdList = Arrays.asList(businessAssayTaskDataDO.getBusinessSubParentSampleId()); // List<Long> businessSubParentSampleIdList = Arrays.asList(businessAssayTaskDataDO.getBusinessSubParentSampleId());
List<BusinessSubParentSampleAssessmentProjectExtendRespVO> businessSubParentSampleAssessmentProjectList = businessSubParentSampleAssessmentProjectMapper.selectByBusinessSubParentSampleIdsAndConfigAssayMethodId(businessSubParentSampleIdList, configMethodId); // List<BusinessSubParentSampleAssessmentProjectExtendRespVO> businessSubParentSampleAssessmentProjectList = businessSubParentSampleAssessmentProjectMapper.selectByBusinessSubParentSampleIdsAndConfigAssayMethodId(businessSubParentSampleIdList, configMethodId);
BusinessSubParentSampleAssessmentProjectExtendRespVO businessSubParentSampleAssessmentProject = businessSubParentSampleAssessmentProjectList.stream().filter(f -> f.getSimpleName().equals(sourceProject)).findFirst().orElse(null); // BusinessSubParentSampleAssessmentProjectExtendRespVO businessSubParentSampleAssessmentProject = businessSubParentSampleAssessmentProjectList.stream().filter(f -> f.getSimpleName().equals(sourceProject)).findFirst().orElse(null);
if (businessSubParentSampleAssessmentProject != null && StringUtils.isNotBlank(businessSubParentSampleAssessmentProject.getAssessmentValue())) { List<BusinessAssayProjectDataExtendRespVO> businessAssayProjectDataExtendList = businessAssayProjectDataMapper.selectByBusinessBaseSampleIdAndConfigAssayMethodId(businessAssayTaskDataDO.getBusinessBaseSampleId(), configMethodId);
businessAssayParameterDataDO.setValue(businessSubParentSampleAssessmentProject.getAssessmentValue());
BusinessAssayProjectDataExtendRespVO sourceBusinessAssayProjectDataExtendRespVO = businessAssayProjectDataExtendList.stream().filter(f -> sourceProject.equals(f.getSimpleName())).findFirst().orElse(null);
if (sourceBusinessAssayProjectDataExtendRespVO != null && StringUtils.isNotBlank(sourceBusinessAssayProjectDataExtendRespVO.getValue())) {
businessAssayParameterDataDO.setValue(sourceBusinessAssayProjectDataExtendRespVO.getValue());
} }
} else if (QmsCommonConstant.ENTRUST_COMMISSION_INSPECTION_SAMPLE.equals(baseSampleDO.getDictionaryBusinessKey())) {//如果是委检样 } else if (QmsCommonConstant.ENTRUST_COMMISSION_INSPECTION_SAMPLE.equals(baseSampleDO.getDictionaryBusinessKey())) {//如果是委检样
//查询来样品位 //查询来样品位
@@ -722,11 +722,13 @@ public class SampleAnalysisServiceImpl implements SampleAnalysisService {
businessAssayParameterDataDO.setValue(forecastValue); businessAssayParameterDataDO.setValue(forecastValue);
} else { } else {
//查询当前样品的其他方法的结果 //查询当前样品的其他方法的结果
List<Long> businessSubParentSampleIdList = Arrays.asList(businessAssayTaskDataDO.getBusinessSubParentSampleId()); // List<Long> businessSubParentSampleIdList = Arrays.asList(businessAssayTaskDataDO.getBusinessSubParentSampleId());
List<BusinessSubParentSampleAssessmentProjectExtendRespVO> businessSubParentSampleAssessmentProjectList = businessSubParentSampleAssessmentProjectMapper.selectByBusinessSubParentSampleIdsAndConfigAssayMethodId(businessSubParentSampleIdList, configMethodId); // List<BusinessSubParentSampleAssessmentProjectExtendRespVO> businessSubParentSampleAssessmentProjectList = businessSubParentSampleAssessmentProjectMapper.selectByBusinessSubParentSampleIdsAndConfigAssayMethodId(businessSubParentSampleIdList, configMethodId);
BusinessSubParentSampleAssessmentProjectExtendRespVO businessSubParentSampleAssessmentProject = businessSubParentSampleAssessmentProjectList.stream().filter(f -> f.getSimpleName().equals(sourceProject)).findFirst().orElse(null); // BusinessSubParentSampleAssessmentProjectExtendRespVO businessSubParentSampleAssessmentProject = businessSubParentSampleAssessmentProjectList.stream().filter(f -> f.getSimpleName().equals(sourceProject)).findFirst().orElse(null);
if (businessSubParentSampleAssessmentProject != null && StringUtils.isNotBlank(businessSubParentSampleAssessmentProject.getAssessmentValue())) { List<BusinessAssayProjectDataExtendRespVO> businessAssayProjectDataExtendList = businessAssayProjectDataMapper.selectByBusinessBaseSampleIdAndConfigAssayMethodId(businessAssayTaskDataDO.getBusinessBaseSampleId(), configMethodId);
businessAssayParameterDataDO.setValue(businessSubParentSampleAssessmentProject.getAssessmentValue()); BusinessAssayProjectDataExtendRespVO sourceBusinessAssayProjectDataExtendRespVO = businessAssayProjectDataExtendList.stream().filter(f -> sourceProject.equals(f.getSimpleName())).findFirst().orElse(null);
if (sourceBusinessAssayProjectDataExtendRespVO != null && StringUtils.isNotBlank(sourceBusinessAssayProjectDataExtendRespVO.getValue())) {
businessAssayParameterDataDO.setValue(sourceBusinessAssayProjectDataExtendRespVO.getValue());
} }
} }
@@ -743,6 +745,7 @@ public class SampleAnalysisServiceImpl implements SampleAnalysisService {
} }
} }
} }
}
Map<String, Object> map = new HashedMap<>(); Map<String, Object> map = new HashedMap<>();
@@ -1267,12 +1270,180 @@ public class SampleAnalysisServiceImpl implements SampleAnalysisService {
@Override @Override
public void submitSampleAnalysisByTaskId(Long businessAssayTaskId) { public void submitSampleAnalysisByTaskId(Long businessAssayTaskId) {
String loginUserNickname = SecurityFrameworkUtils.getLoginUserNickname(); // String loginUserNickname = SecurityFrameworkUtils.getLoginUserNickname();
BusinessAssayTaskDO businessAssayTaskDO = businessAssayTaskMapper.selectById(businessAssayTaskId); BusinessAssayTaskDO businessAssayTaskDO = businessAssayTaskMapper.selectById(businessAssayTaskId);
businessAssayTaskDO.setTaskAssayStatus(QmsCommonConstant.SUBMITTED); businessAssayTaskDO.setTaskAssayStatus(QmsCommonConstant.SUBMITTED);
businessAssayTaskDO.setAssaySubmitTime(LocalDateTime.now()); businessAssayTaskDO.setAssaySubmitTime(LocalDateTime.now());
businessAssayTaskDO.setFinishStatus(QmsCommonConstant.IN_PROGRESS); businessAssayTaskDO.setFinishStatus(QmsCommonConstant.IN_PROGRESS);
businessAssayTaskDO.setFlowStatus(QmsCommonConstant.IN_PROGRESS); businessAssayTaskDO.setFlowStatus(QmsCommonConstant.IN_PROGRESS);
//设置参数值
List<BusinessAssayParameterDataDO> updateBusinessAssayParameterDataList = new ArrayList<>();
List<BusinessAssayTaskDataExtendRespVO> businessAssayTaskDataExtendList = businessAssayTaskDataMapper.selectExtendByBusinessAssayTaskId(businessAssayTaskId);
//查询检测项目
List<Long> businessAssayTaskDataIdList = businessAssayTaskDataExtendList.stream().map(m -> m.getId()).collect(Collectors.toList());
List<BusinessAssayProjectDataExtendRespVO> businessAssayProjectDataExtendList = businessAssayProjectDataMapper.selectByBusinessAssayTaskDataIds(businessAssayTaskDataIdList);
//子样配置id列表
List<Long> configSubSampleIdList = businessAssayTaskDataExtendList.stream().map(m -> m.getConfigSubSampleId()).distinct().collect(Collectors.toList());
//子样方法配置列表
List<ConfigSubSampleMethodExtendRespVO> configSubSampleMethodDOList = configSubSampleMethodMapper.selectByConfigSubSampleIdsAndConfigAssayMethodId(configSubSampleIdList, businessAssayTaskDO.getConfigAssayMethodId());
//循环任务,赋值
for (BusinessAssayTaskDataExtendRespVO businessAssayTaskData : businessAssayTaskDataExtendList) {
ConfigSubSampleMethodExtendRespVO configSubSampleMethod = configSubSampleMethodDOList.stream().filter(f -> f.getConfigSubSampleId().equals(businessAssayTaskData.getConfigSubSampleId()) && f.getConfigAssayMethodId().equals(businessAssayTaskData.getConfigAssayMethodId())).findFirst().orElse(null);
String configInfomation = configSubSampleMethod.getConfigInfomation();
if (StringUtils.isNotBlank(configInfomation)) {
ConfigSubSampleMethodConfInfo configSubSampleMethodConfInfo = JSON.parseObject(configInfomation, ConfigSubSampleMethodConfInfo.class);
List<ConfigSubSampleMethodConfItem> setParamList = configSubSampleMethodConfInfo.getSetParam();
if (CollUtil.isNotEmpty(setParamList)) {//参数不为空,则设置
//方法key
String methodKey = setParamList.stream().map(m -> m.getTarget().getMethodKey()).distinct().findFirst().orElse(null);
//1 查询委托明细
BusinessSampleEntrustDetailDO businessSampleEntrustDetailDO = businessSampleEntrustDetailMapper.selectByBusinessBaseSampleId(businessAssayTaskData.getBusinessBaseSampleId());
//2 查询样品大类
BaseSampleDO baseSampleDO = baseSampleMapper.selectById(businessSampleEntrustDetailDO.getBaseSampleId());
//3 判断样品大类类型
if (QmsCommonConstant.ENTRUST_INSPECTION_ANALYSIS_SAMPLE.equals(baseSampleDO.getDictionaryBusinessKey())) {//如果是商检分析样
//委托登记Id
Long businessSampleEntrustRegistrationId = businessSampleEntrustDetailDO.getBusinessSampleEntrustRegistrationId();
//查询委托登记明细
List<BusinessSampleEntrustDetailDO> businessSampleEntrustDetailList = businessSampleEntrustDetailMapper.selectByBusinessSampleEntrustRegistrationId(businessSampleEntrustRegistrationId);
//获取主样Id列表
List<Long> businessBaseSampleIdList = businessSampleEntrustDetailList.stream().map(m -> m.getBusinessBaseSampleId()).collect(Collectors.toList());
//查询当前分析方法下对应的任务
List<BusinessAssayTaskDataDO> targetBusinessAssayTaskDataList = businessAssayTaskDataMapper.selectByBusinessBaseSampleIdsAndMethodKey(businessBaseSampleIdList, methodKey);
List<Long> targetBusinessAssayTaskDataIdList = targetBusinessAssayTaskDataList.stream().map(m -> m.getId()).collect(Collectors.toList());
List<BusinessAssayProjectDataExtendRespVO> targetBusinessAssayProjectDataExtendList = businessAssayProjectDataMapper.selectByBusinessAssayTaskDataIds(targetBusinessAssayTaskDataIdList);
for (ConfigSubSampleMethodConfItem configSubSampleMethodConfItem : setParamList) {
ConfigSubSampleMethodConfPoint source = configSubSampleMethodConfItem.getSource();
String project = source.getProject();
BusinessAssayProjectDataExtendRespVO currentBusinessAssayProjectData = businessAssayProjectDataExtendList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(businessAssayTaskData.getId()) && project.equals(f.getSimpleName())).findFirst().orElse(null);
ConfigSubSampleMethodConfPoint target = configSubSampleMethodConfItem.getTarget();
for (BusinessAssayTaskDataDO targetBusinessAssayTaskData : targetBusinessAssayTaskDataList) {
List<String> targetProjectList = Arrays.asList(target.getProject().split(","));
String targetParameter = target.getParameter();
for (String targetProject : targetProjectList) {
BusinessAssayProjectDataExtendRespVO targetBusinessAssayProjectData = targetBusinessAssayProjectDataExtendList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(targetBusinessAssayTaskData.getId()) && targetProject.equals(f.getSimpleName())).findFirst().orElse(null);
if (targetBusinessAssayProjectData == null) {
continue;
}
BusinessAssayParameterDataDO businessAssayParameterDataDO = businessAssayParameterDataMapper.selectByBusinessAssayProjectDataIdAndProjectSimpleNameAndParameterKey(targetBusinessAssayProjectData.getId(), targetProject, targetParameter);
if (businessAssayParameterDataDO != null) {
businessAssayParameterDataDO.setValue(currentBusinessAssayProjectData.getValue());
updateBusinessAssayParameterDataList.add(businessAssayParameterDataDO);
}
}
}
}
} else if (QmsCommonConstant.ENTRUST_COMPREHENSIVE_INSPECTION_SAMPLE.equals(baseSampleDO.getDictionaryBusinessKey())) {//如果是商检综合样
//查询当前分析方法下对应的任务
List<BusinessAssayTaskDataDO> targetBusinessAssayTaskDataList = businessAssayTaskDataMapper.selectByBusinessSubSampleIdAndMethodKey(businessAssayTaskData.getBusinessSubSampleId(), methodKey);
List<Long> targetBusinessAssayTaskDataIdList = targetBusinessAssayTaskDataList.stream().map(m -> m.getId()).collect(Collectors.toList());
List<BusinessAssayProjectDataExtendRespVO> targetBusinessAssayProjectDataExtendList = businessAssayProjectDataMapper.selectByBusinessAssayTaskDataIds(targetBusinessAssayTaskDataIdList);
for (ConfigSubSampleMethodConfItem configSubSampleMethodConfItem : setParamList) {
ConfigSubSampleMethodConfPoint source = configSubSampleMethodConfItem.getSource();
String project = source.getProject();
BusinessAssayProjectDataExtendRespVO currentBusinessAssayProjectData = businessAssayProjectDataExtendList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(businessAssayTaskData.getId()) && project.equals(f.getSimpleName())).findFirst().orElse(null);
ConfigSubSampleMethodConfPoint target = configSubSampleMethodConfItem.getTarget();
for (BusinessAssayTaskDataDO targetBusinessAssayTaskData : targetBusinessAssayTaskDataList) {
List<String> targetProjectList = Arrays.asList(target.getProject().split(","));
String targetParameter = target.getParameter();
for (String targetProject : targetProjectList) {
BusinessAssayProjectDataExtendRespVO targetBusinessAssayProjectData = targetBusinessAssayProjectDataExtendList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(targetBusinessAssayTaskData.getId()) && targetProject.equals(f.getSimpleName())).findFirst().orElse(null);
if (targetBusinessAssayProjectData == null) {
continue;
}
BusinessAssayParameterDataDO businessAssayParameterDataDO = businessAssayParameterDataMapper.selectByBusinessAssayProjectDataIdAndProjectSimpleNameAndParameterKey(targetBusinessAssayProjectData.getId(), targetProject, targetParameter);
if (businessAssayParameterDataDO != null) {
businessAssayParameterDataDO.setValue(currentBusinessAssayProjectData.getValue());
updateBusinessAssayParameterDataList.add(businessAssayParameterDataDO);
}
}
}
}
} else if (QmsCommonConstant.ENTRUST_COMMISSION_INSPECTION_SAMPLE.equals(baseSampleDO.getDictionaryBusinessKey())) {//如果是委检样
//查询当前分析方法下对应的任务
List<BusinessAssayTaskDataDO> targetBusinessAssayTaskDataList = businessAssayTaskDataMapper.selectByBusinessSubSampleIdAndMethodKey(businessAssayTaskData.getBusinessSubSampleId(), methodKey);
List<Long> targetBusinessAssayTaskDataIdList = targetBusinessAssayTaskDataList.stream().map(m -> m.getId()).collect(Collectors.toList());
List<BusinessAssayProjectDataExtendRespVO> targetBusinessAssayProjectDataExtendList = businessAssayProjectDataMapper.selectByBusinessAssayTaskDataIds(targetBusinessAssayTaskDataIdList);
for (ConfigSubSampleMethodConfItem configSubSampleMethodConfItem : setParamList) {
ConfigSubSampleMethodConfPoint source = configSubSampleMethodConfItem.getSource();
String project = source.getProject();
BusinessAssayProjectDataExtendRespVO currentBusinessAssayProjectData = businessAssayProjectDataExtendList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(businessAssayTaskData.getId()) && project.equals(f.getSimpleName())).findFirst().orElse(null);
ConfigSubSampleMethodConfPoint target = configSubSampleMethodConfItem.getTarget();
for (BusinessAssayTaskDataDO targetBusinessAssayTaskData : targetBusinessAssayTaskDataList) {
List<String> targetProjectList = Arrays.asList(target.getProject().split(","));
String targetParameter = target.getParameter();
for (String targetProject : targetProjectList) {
BusinessAssayProjectDataExtendRespVO targetBusinessAssayProjectData = targetBusinessAssayProjectDataExtendList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(targetBusinessAssayTaskData.getId()) && targetProject.equals(f.getSimpleName())).findFirst().orElse(null);
if (targetBusinessAssayProjectData == null) {
continue;
}
BusinessAssayParameterDataDO businessAssayParameterDataDO = businessAssayParameterDataMapper.selectByBusinessAssayProjectDataIdAndProjectSimpleNameAndParameterKey(targetBusinessAssayProjectData.getId(), targetProject, targetParameter);
if (businessAssayParameterDataDO != null && StringUtils.isBlank(businessAssayParameterDataDO.getValue())) {//值为空,才赋值
businessAssayParameterDataDO.setValue(currentBusinessAssayProjectData.getValue());
updateBusinessAssayParameterDataList.add(businessAssayParameterDataDO);
}
}
}
}
}
}
}
}
//补正系数列表
List<ConfigAssayMethodProjectCoefficientDO> configAssayMethodProjectCoefficientList = new ArrayList<>();
if (businessAssayTaskDO.getIsIngredients().equals(QmsCommonConstant.YES) && QmsCommonConstant.MANUAL.equals(businessAssayTaskDO.getIngredientsWay())) {//如果是需要配料,并且是人工配料的
List<Long> configBaseSampleIdList = businessAssayTaskDataExtendList.stream().map(m -> m.getConfigBaseSampleId()).distinct().collect(Collectors.toList());
configAssayMethodProjectCoefficientList = configAssayMethodProjectCoefficientMapper.selectByConfigBaseSampleIds(configBaseSampleIdList);
}
for (BusinessAssayProjectDataExtendRespVO businessAssayProjectDataExtend : businessAssayProjectDataExtendList) {
if (businessAssayTaskDO.getIsIngredients().equals(QmsCommonConstant.YES) && QmsCommonConstant.MANUAL.equals(businessAssayTaskDO.getIngredientsWay())) {
ConfigAssayMethodProjectCoefficientDO configAssayMethodProjectCoefficientDO = configAssayMethodProjectCoefficientList.stream().filter(f ->
businessAssayProjectDataExtend.getConfigBaseSampleId().equals(f.getConfigBaseSampleId())
&& businessAssayTaskDO.getConfigAssayMethodId().equals(f.getConfigAssayMethodId())
&& businessAssayProjectDataExtend.getConfigAssayMethodProjectId().equals(f.getConfigAssayMethodProjectId())
&& new BigDecimal(businessAssayProjectDataExtend.getValue()).compareTo(new BigDecimal(f.getMinimumValue())) > 0
&& new BigDecimal(businessAssayProjectDataExtend.getValue()).compareTo(new BigDecimal(f.getMaximumValue())) <= 0
).findFirst().orElse(null);
if (configAssayMethodProjectCoefficientDO != null) {
businessAssayProjectDataExtend.setConfigAssayMethodProjectCoefficientId(configAssayMethodProjectCoefficientDO.getId());//补正系数的id
businessAssayProjectDataExtend.setCoefficient(configAssayMethodProjectCoefficientDO.getCoefficient());//补正系数
String valueAfter = new BigDecimal(businessAssayProjectDataExtend.getValue()).multiply(configAssayMethodProjectCoefficientDO.getCoefficient()).setScale(businessAssayProjectDataExtend.getDecimalPosition(), RoundingMode.HALF_EVEN).toPlainString();
businessAssayProjectDataExtend.setValueAfter(valueAfter);//补正后的值
} else { //未找到补正系数默认为1
businessAssayProjectDataExtend.setCoefficient(new BigDecimal("1"));
businessAssayProjectDataExtend.setValueAfter(businessAssayProjectDataExtend.getValue());
}
} else {
businessAssayProjectDataExtend.setValueAfter(businessAssayProjectDataExtend.getValue());//不需要配料,补正后的值与补正前一致
}
}
if (businessAssayProjectDataExtendList.size() > 0) {
List<BusinessAssayProjectDataDO> businessAssayProjectDataList = BeanUtils.toBean(businessAssayProjectDataExtendList, BusinessAssayProjectDataDO.class);
businessAssayProjectDataMapper.updateBatch(businessAssayProjectDataList);
}
if (updateBusinessAssayParameterDataList.size() > 0) {
businessAssayParameterDataMapper.updateBatch(updateBusinessAssayParameterDataList);
}
businessAssayTaskMapper.updateById(businessAssayTaskDO); businessAssayTaskMapper.updateById(businessAssayTaskDO);
} }
@@ -1366,10 +1537,22 @@ public class SampleAnalysisServiceImpl implements SampleAnalysisService {
businessAssayTaskDataDO.setExternalInfomation(JSON.toJSONString(businessAssayTaskDataExternalInfomation)); businessAssayTaskDataDO.setExternalInfomation(JSON.toJSONString(businessAssayTaskDataExternalInfomation));
} }
//任务id
Long businessAssayTaskId = businessAssayTaskDetailList.stream().map(m -> m.getBusinessAssayTaskId()).distinct().findFirst().orElse(null);
//查询任务下的明细
Long taskCount = businessAssayTaskDetailMapper.selectCountByBusinessAssayTaskId(businessAssayTaskId);
if (businessAssayTaskDetailList.size() == taskCount.intValue()) {//如果回退所有样品,则作废任务
BusinessAssayTaskDO businessAssayTaskDO = businessAssayTaskMapper.selectById(businessAssayTaskId);
businessAssayTaskDO.setTaskAssignStatus(QmsCommonConstant.VOID);
businessAssayTaskMapper.updateById(businessAssayTaskDO);
}
//明细处理
if (CollUtil.isNotEmpty(businessAssayTaskDetailList)) { if (CollUtil.isNotEmpty(businessAssayTaskDetailList)) {
businessAssayTaskDetailMapper.updateBatch(businessAssayTaskDetailList); businessAssayTaskDetailMapper.updateBatch(businessAssayTaskDetailList);
} }
//任务明细处理
if (CollUtil.isNotEmpty(businessAssayTaskDataDOList)) { if (CollUtil.isNotEmpty(businessAssayTaskDataDOList)) {
businessAssayTaskDataMapper.updateBatch(businessAssayTaskDataDOList); businessAssayTaskDataMapper.updateBatch(businessAssayTaskDataDOList);
} }
@@ -1409,7 +1592,9 @@ public class SampleAnalysisServiceImpl implements SampleAnalysisService {
for (ConfigSubSampleMethodConfItem configSubSampleMethodConfItem : downIngredients) { for (ConfigSubSampleMethodConfItem configSubSampleMethodConfItem : downIngredients) {
if (configSubSampleMethodConfItem.getRequired()) { if (configSubSampleMethodConfItem.getRequired()) {
ConfigSubSampleMethodConfPoint source = configSubSampleMethodConfItem.getSource(); ConfigSubSampleMethodConfPoint source = configSubSampleMethodConfItem.getSource();
String project = source.getProject();
List<String> projectList = Arrays.asList(source.getProject().split(","));//来源可以有多个
for (String project : projectList) {
String parameter = source.getParameter(); String parameter = source.getParameter();
BusinessAssayProjectDataExtendRespVO currentBusinessAssayProjectData = businessAssayProjectDataList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(businessAssayTaskDataDO.getId()) && f.getSimpleName().equals(project)).findFirst().orElse(null); BusinessAssayProjectDataExtendRespVO currentBusinessAssayProjectData = businessAssayProjectDataList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(businessAssayTaskDataDO.getId()) && f.getSimpleName().equals(project)).findFirst().orElse(null);
BusinessAssayParameterDataExtendRespVO currentBusinessAssayParameterData = businessAssayParameterDataList.stream().filter(f -> f.getBusinessAssayProjectDataId().equals(currentBusinessAssayProjectData.getId()) && f.getParameterKey().equals(parameter)).findFirst().orElse(null); BusinessAssayParameterDataExtendRespVO currentBusinessAssayParameterData = businessAssayParameterDataList.stream().filter(f -> f.getBusinessAssayProjectDataId().equals(currentBusinessAssayProjectData.getId()) && f.getParameterKey().equals(parameter)).findFirst().orElse(null);
@@ -1418,11 +1603,22 @@ public class SampleAnalysisServiceImpl implements SampleAnalysisService {
} }
} }
} }
}
} }
} }
businessAssayTaskDO.setIngredientsWay(QmsCommonConstant.AUTOMATIC);//自动火试金配料
businessAssayTaskDO.setIngredientsStatus(QmsCommonConstant.IN_PROGRESS); businessAssayTaskDO.setIngredientsStatus(QmsCommonConstant.IN_PROGRESS);
businessAssayTaskMapper.updateById(businessAssayTaskDO); businessAssayTaskMapper.updateById(businessAssayTaskDO);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void manualIngredients(Long businessAssayTaskId) {
BusinessAssayTaskDO businessAssayTaskDO = businessAssayTaskMapper.selectById(businessAssayTaskId);
businessAssayTaskDO.setIngredientsWay(QmsCommonConstant.MANUAL);//人工配料
businessAssayTaskDO.setIngredientsStatus(QmsCommonConstant.ALLOW_SUBMIT);//表示为允许提交
businessAssayTaskMapper.updateById(businessAssayTaskDO);
}
} }

View File

@@ -28,6 +28,7 @@ import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.framework.security.core.LoginUser; import com.zt.plat.framework.security.core.LoginUser;
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
import com.zt.plat.module.qms.business.bus.controller.vo.BatchResultDataReportingReqVO; import com.zt.plat.module.qms.business.bus.controller.vo.BatchResultDataReportingReqVO;
import com.zt.plat.module.qms.business.bus.controller.vo.BatchResultDataReportingReqVO.BusinessSubParentSampleIdAndRetestCount;
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentProjectExtendRespVO; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentProjectExtendRespVO;
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentGroupReqVO; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentGroupReqVO;
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentGroupRespVO; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentGroupRespVO;
@@ -199,7 +200,9 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
noReportSubParentSampleAssessmentMap.put(businessSubParentSampleAssessmentProjectDO.getSimpleName(), assessmentValue); noReportSubParentSampleAssessmentMap.put(businessSubParentSampleAssessmentProjectDO.getSimpleName(), assessmentValue);
businessSubParentSampleAssessmentProjectIds.append(businessSubParentSampleAssessmentProjectDO.getId()).append(","); businessSubParentSampleAssessmentProjectIds.append(businessSubParentSampleAssessmentProjectDO.getId()).append(",");
} }
if (businessSubParentSampleAssessmentProjectIds.length() > 0) {
businessSubParentSampleAssessmentProjectIds.delete(businessSubParentSampleAssessmentProjectIds.length() -1, businessSubParentSampleAssessmentProjectIds.length()); businessSubParentSampleAssessmentProjectIds.delete(businessSubParentSampleAssessmentProjectIds.length() -1, businessSubParentSampleAssessmentProjectIds.length());
}
noReportSubParentSampleAssessmentMap.put("businessSubParentSampleAssessmentProjectIds", businessSubParentSampleAssessmentProjectIds.toString()); noReportSubParentSampleAssessmentMap.put("businessSubParentSampleAssessmentProjectIds", businessSubParentSampleAssessmentProjectIds.toString());
noReportSubParentSampleAssessmentMap.put("businessSubParentSampleAssessmentId", noReportSubParentSampleAssessmentRespVO.getBusinessSubParentSampleAssessmentId()); noReportSubParentSampleAssessmentMap.put("businessSubParentSampleAssessmentId", noReportSubParentSampleAssessmentRespVO.getBusinessSubParentSampleAssessmentId());
dataList.add(noReportSubParentSampleAssessmentMap); dataList.add(noReportSubParentSampleAssessmentMap);
@@ -341,15 +344,15 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
BusinessSubParentSampleAssessmentDO olBusinessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectById(reqVO.getBusinessSubParentSampleAssessmentId()); BusinessSubParentSampleAssessmentDO olBusinessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectById(reqVO.getBusinessSubParentSampleAssessmentId());
//查询分样主样判定 //查询分样主样判定
BusinessSubParentSampleAssessmentDO businessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectByBusinessSubParentSampleIdAndConfigAssayMethodId(reqVO.getBusinessSubParentSampleId(), reqVO.getConfigAssayMethodId()); //BusinessSubParentSampleAssessmentDO businessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectByBusinessSubParentSampleIdAndConfigAssayMethodId(reqVO.getBusinessSubParentSampleId(), reqVO.getConfigAssayMethodId());
if (businessSubParentSampleAssessmentDO == null) { if (olBusinessSubParentSampleAssessmentDO == null) {
throw new ServiceException(1_032_050_000, "结果报送数据未找到"); throw new ServiceException(1_032_050_000, "结果报送数据未找到");
} }
//复检的检测项目 //复检的检测项目
List<RecheckSubSampleParentMethodRespVO> recheckProjectList = reqVO.getRecheckProjectList(); List<RecheckSubSampleParentMethodRespVO> recheckProjectList = reqVO.getRecheckProjectList();
List<Long> recheckDictionaryProjectIdList = recheckProjectList.stream().map(m -> m.getDictionaryProjectId()).collect(Collectors.toList()); List<Long> recheckDictionaryProjectIdList = recheckProjectList.stream().map(m -> m.getDictionaryProjectId()).collect(Collectors.toList());
List<BusinessSubParentSampleAssessmentProjectDO> businessSubParentSampleAssessmentProjectDOList = businessSubParentSampleAssessmentProjectMapper.selectByBusinessSubParentSampleAssessmentIdAndDictionaryProjectIds(businessSubParentSampleAssessmentDO.getId(), recheckDictionaryProjectIdList); List<BusinessSubParentSampleAssessmentProjectDO> businessSubParentSampleAssessmentProjectDOList = businessSubParentSampleAssessmentProjectMapper.selectByBusinessSubParentSampleAssessmentIdAndDictionaryProjectIds(olBusinessSubParentSampleAssessmentDO.getId(), recheckDictionaryProjectIdList);
for (BusinessSubParentSampleAssessmentProjectDO businessSubParentSampleAssessmentProjectDO : businessSubParentSampleAssessmentProjectDOList) { for (BusinessSubParentSampleAssessmentProjectDO businessSubParentSampleAssessmentProjectDO : businessSubParentSampleAssessmentProjectDOList) {
businessSubParentSampleAssessmentProjectDO.setIsReported(QmsCommonConstant.NO); businessSubParentSampleAssessmentProjectDO.setIsReported(QmsCommonConstant.NO);
businessSubParentSampleAssessmentProjectDO.setAssessmentStatus(QmsCommonConstant.VOID); businessSubParentSampleAssessmentProjectDO.setAssessmentStatus(QmsCommonConstant.VOID);
@@ -410,7 +413,8 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
newBusinessSubSampleParentRetestDOList.add(businessSubSampleParentRetestDO ); newBusinessSubSampleParentRetestDOList.add(businessSubSampleParentRetestDO );
} }
BusinessSubSampleAssessmentDO newBusinessSubSampleAssessmentDO = newSubSampleAssessmentDOList.stream().filter(f -> f.getBusinessSubParentSampleAssessmentId().equals(businessSubParentSampleAssessmentDO.getId())).findFirst().orElse(null); Long newBusinessSubParentSampleAssessmentId = newBusinessSubParentSampleAssessmentDO.getId();
BusinessSubSampleAssessmentDO newBusinessSubSampleAssessmentDO = newSubSampleAssessmentDOList.stream().filter(f -> f.getBusinessSubParentSampleAssessmentId().equals(newBusinessSubParentSampleAssessmentId)).findFirst().orElse(null);
if (newBusinessSubSampleAssessmentDO == null) { if (newBusinessSubSampleAssessmentDO == null) {
newBusinessSubSampleAssessmentDO = new BusinessSubSampleAssessmentDO(); newBusinessSubSampleAssessmentDO = new BusinessSubSampleAssessmentDO();
newBusinessSubSampleAssessmentDO.setId(IdWorker.getId()); newBusinessSubSampleAssessmentDO.setId(IdWorker.getId());
@@ -440,7 +444,7 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
businessAssayTaskDataDO.setAssayType(assayType); businessAssayTaskDataDO.setAssayType(assayType);
businessAssayTaskDataDO.setTaskType("复测"); businessAssayTaskDataDO.setTaskType("复测");
businessAssayTaskDataDO.setConfigSampleFlowId(businessSubSampleDO.getConfigSampleFlowId()); businessAssayTaskDataDO.setConfigSampleFlowId(businessSubSampleDO.getConfigSampleFlowId());
businessAssayTaskDataDO.setSampleFlowNodeKey(businessSubSampleDO.getSampleFlowNodeKey()); businessAssayTaskDataDO.setSampleFlowNodeKey(QmsCommonConstant.FLOW_NODE_ANALYSIS);
businessAssayTaskDataDO.setSampleFlowNodeTime(LocalDateTime.now()); businessAssayTaskDataDO.setSampleFlowNodeTime(LocalDateTime.now());
businessAssayTaskDataDO.setAssayDepartmentId(configAssayMethodDO.getAssayDepartmentId()); businessAssayTaskDataDO.setAssayDepartmentId(configAssayMethodDO.getAssayDepartmentId());
businessAssayTaskDataDO.setAssayDepartmentName(configAssayMethodDO.getAssayDepartmentName()); businessAssayTaskDataDO.setAssayDepartmentName(configAssayMethodDO.getAssayDepartmentName());
@@ -493,6 +497,11 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
} }
} }
List<BusinessSubParentSampleAssessmentProjectDO> allBusinessSubParentSampleAssessmentProjectList = businessSubParentSampleAssessmentProjectMapper.selectByBusinessSubParentSampleAssessmentId(olBusinessSubParentSampleAssessmentDO.getId());
if (allBusinessSubParentSampleAssessmentProjectList.size() == businessSubParentSampleAssessmentProjectDOList.size()) {//如果复测项目都全部完成,则删除旧的结果报送
businessSubParentSampleAssessmentMapper.deleteById(olBusinessSubParentSampleAssessmentDO.getId());
}
if (CollUtil.isNotEmpty(businessSubParentSampleAssessmentProjectDOList)) { if (CollUtil.isNotEmpty(businessSubParentSampleAssessmentProjectDOList)) {
businessSubParentSampleAssessmentProjectMapper.updateBatch(businessSubParentSampleAssessmentProjectDOList); businessSubParentSampleAssessmentProjectMapper.updateBatch(businessSubParentSampleAssessmentProjectDOList);
} }
@@ -563,6 +572,9 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
List<BusinessAssayReportDataDO> saveBusinessAssayReportDataDOList = new ArrayList<>(); List<BusinessAssayReportDataDO> saveBusinessAssayReportDataDOList = new ArrayList<>();
List<BusinessAssayReportDataDO> updateBusinessAssayReportDataDOList = new ArrayList<>(); List<BusinessAssayReportDataDO> updateBusinessAssayReportDataDOList = new ArrayList<>();
List<Long> businessSubParentSampleAssessmentIdList = new ArrayList<>();
List<Long> businessSubParentSampleAssessmentProjectIdList = new ArrayList<>();
List<BusinessSubParentSampleAssessmentProjectExtendRespVO> businessSubParentSampleAssessmentExtendList = businessSubParentSampleAssessmentProjectMapper.selectByBusinessSubParentSampleIdsAndConfigAssayMethodId(reqVO.getBusinessSubParentSampleIds(), reqVO.getConfigAssayMethodId()); List<BusinessSubParentSampleAssessmentProjectExtendRespVO> businessSubParentSampleAssessmentExtendList = businessSubParentSampleAssessmentProjectMapper.selectByBusinessSubParentSampleIdsAndConfigAssayMethodId(reqVO.getBusinessSubParentSampleIds(), reqVO.getConfigAssayMethodId());
List<BusinessSubParentSampleDO> businessSubParentSampleDOList = businessSubParentSampleMapper.selectByIds(reqVO.getBusinessSubParentSampleIds()); List<BusinessSubParentSampleDO> businessSubParentSampleDOList = businessSubParentSampleMapper.selectByIds(reqVO.getBusinessSubParentSampleIds());
@@ -607,9 +619,17 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
if (StringUtils.isNotBlank(assayData)) { if (StringUtils.isNotBlank(assayData)) {
assayDataJson = JSON.parseObject(assayData, new TypeReference<Map<String, ReportFieldValueData>>() {}); assayDataJson = JSON.parseObject(assayData, new TypeReference<Map<String, ReportFieldValueData>>() {});
} }
//过滤分样id根据多个复测次数处理
List<BusinessSubParentSampleIdAndRetestCount> businessSubParentSampleIdAndRetestCountList = reqVO.getBusinessSubParentSampleIdAndRetestCounts().stream().filter(f -> f.getBusinessSubParentSampleId().equals(businessSubParentSampleDO.getId())).collect(Collectors.toList());
for (BusinessSubParentSampleIdAndRetestCount businessSubParentSampleIdAndRetestCount : businessSubParentSampleIdAndRetestCountList) {
//循环判定值 //循环判定值
List<BusinessSubParentSampleAssessmentProjectExtendRespVO> businessSubParentSampleAssessmentList = businessSubParentSampleAssessmentExtendList.stream().filter(f -> f.getBusinessSubParentSampleId().equals(businessSubParentSampleDO.getId()) && "normal".equals(f.getAssessmentStatus())).collect(Collectors.toList()); List<BusinessSubParentSampleAssessmentProjectExtendRespVO> businessSubParentSampleAssessmentList = businessSubParentSampleAssessmentExtendList.stream().filter(f -> f.getBusinessSubParentSampleId().equals(businessSubParentSampleDO.getId()) && f.getRetestCount().equals(businessSubParentSampleIdAndRetestCount.getRetestCount()) && "normal".equals(f.getAssessmentStatus())).collect(Collectors.toList());
for (BusinessSubParentSampleAssessmentProjectExtendRespVO businessSubParentSampleAssessment : businessSubParentSampleAssessmentList) { for (BusinessSubParentSampleAssessmentProjectExtendRespVO businessSubParentSampleAssessment : businessSubParentSampleAssessmentList) {
businessSubParentSampleAssessmentProjectIdList.add(businessSubParentSampleAssessment.getId());
businessSubParentSampleAssessmentIdList.add(businessSubParentSampleAssessment.getBusinessSubParentSampleAssessmentId());
Long configAssayMethodProjectId = businessSubParentSampleAssessment.getConfigAssayMethodProjectId(); Long configAssayMethodProjectId = businessSubParentSampleAssessment.getConfigAssayMethodProjectId();
List<ConfigProjectExtendRespVO> configProjectFeildList = configProjectList.stream().filter(f -> f.getConfigAssayMethodProjectId() != null && f.getConfigAssayMethodProjectId().equals(configAssayMethodProjectId)).collect(Collectors.toList()); List<ConfigProjectExtendRespVO> configProjectFeildList = configProjectList.stream().filter(f -> f.getConfigAssayMethodProjectId() != null && f.getConfigAssayMethodProjectId().equals(configAssayMethodProjectId)).collect(Collectors.toList());
for (ConfigProjectExtendRespVO configProjectFeild : configProjectFeildList) { for (ConfigProjectExtendRespVO configProjectFeild : configProjectFeildList) {
@@ -633,6 +653,8 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
assayDataJson.put(configReportField.getField(), reportFieldValueData); assayDataJson.put(configReportField.getField(), reportFieldValueData);
} }
} }
}
//修改已上报数据来源 //修改已上报数据来源
String dataSource = businessAssayReportDataDO.getDataSource(); String dataSource = businessAssayReportDataDO.getDataSource();
@@ -718,8 +740,9 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
//查询当前分析部门下的子样分析班组信息 //查询当前分析部门下的子样分析班组信息
List<BusinessSubSampleAnalysisGroupDO> businessSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupMapper.selectByBusinessSubParentSampleIdsAndAssayDepartmentId(reqVO.getBusinessSubParentSampleIds(), configAssayMethodDO.getAssayDepartmentId()); List<BusinessSubSampleAnalysisGroupDO> businessSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupMapper.selectByBusinessSubParentSampleIdsAndAssayDepartmentId(reqVO.getBusinessSubParentSampleIds(), configAssayMethodDO.getAssayDepartmentId());
for (BusinessSubSampleAnalysisGroupDO businessSubSampleAnalysisGroupDO : businessSubSampleAnalysisGroupDOList) {//循环分析班组信息 for (BusinessSubSampleAnalysisGroupDO businessSubSampleAnalysisGroupDO : businessSubSampleAnalysisGroupDOList) {//循环分析班组信息
//查询当前分样判定上报未上报的,并排除当前上报方法,的数量 //查询当前分样判定上报未上报的,并排除当前(上报方法和复测次数),的数量
long count = businessSubParentSampleAssessmentDOList.stream().filter(f -> f.getBusinessSubParentSampleId().equals(businessSubSampleAnalysisGroupDO.getBusinessSubParentSampleId()) && !f.getConfigAssayMethodId().equals(reqVO.getConfigAssayMethodId()) && f.getIsReported().equals(QmsCommonConstant.NO)).count(); List<Integer> retestCountList = reqVO.getBusinessSubParentSampleIdAndRetestCounts().stream().filter(f -> f.getBusinessSubParentSampleId().equals(businessSubSampleAnalysisGroupDO.getBusinessSubParentSampleId())).map(m -> m.getRetestCount()).collect(Collectors.toList());
long count = businessSubParentSampleAssessmentDOList.stream().filter(f -> f.getBusinessSubParentSampleId().equals(businessSubSampleAnalysisGroupDO.getBusinessSubParentSampleId()) && !( f.getConfigAssayMethodId().equals(reqVO.getConfigAssayMethodId()) && retestCountList.contains(f.getRetestCount()) ) && f.getIsReported().equals(QmsCommonConstant.NO)).count();
if (count > 0) {//如果还存在未上报的数据,则继续 if (count > 0) {//如果还存在未上报的数据,则继续
continue; continue;
} }
@@ -768,41 +791,26 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
} }
//查询正常上报的 //查询正常上报的
List<Long> businessSubParentSampleAssessmentIdList = businessSubParentSampleAssessmentExtendList.stream().filter(f -> "normal".equals(f.getAssessmentStatus())).map(m -> m.getId()).collect(Collectors.toList()); // List<Long> businessSubParentSampleAssessmentIdList = businessSubParentSampleAssessmentExtendList.stream().filter(f -> "normal".equals(f.getAssessmentStatus()) ).map(m -> m.getId()).collect(Collectors.toList());
//查询未上报的分样主id
// List<Long> noAllReportBusinessSubParentSampleIdList = businessSubParentSampleAssessmentExtendList.stream().filter(f -> "in_progress".equals(f.getAssessmentStatus())).map(m -> m.getBusinessSubParentSampleId()).distinct().collect(Collectors.toList());
//全部上报的
// List<Long> allReportBusinessSubParentSampleIdList = new ArrayList<>();
// if (noAllReportBusinessSubParentSampleIdList != null) {
// allReportBusinessSubParentSampleIdList = reqVO.getBusinessSubParentSampleIds().stream().filter(item -> !noAllReportBusinessSubParentSampleIdList.contains(item)).collect(Collectors.toList());
// }
businessSubParentSampleAssessmentProjectMapper.update(new LambdaUpdateWrapper<BusinessSubParentSampleAssessmentProjectDO>() businessSubParentSampleAssessmentProjectMapper.update(new LambdaUpdateWrapper<BusinessSubParentSampleAssessmentProjectDO>()
.set(BusinessSubParentSampleAssessmentProjectDO::getIsReported, QmsCommonConstant.YES) .set(BusinessSubParentSampleAssessmentProjectDO::getIsReported, QmsCommonConstant.YES)
.set(BusinessSubParentSampleAssessmentProjectDO::getReporter, nickName) .set(BusinessSubParentSampleAssessmentProjectDO::getReporter, nickName)
.set(BusinessSubParentSampleAssessmentProjectDO::getReportTime, LocalDateTime.now()) .set(BusinessSubParentSampleAssessmentProjectDO::getReportTime, LocalDateTime.now())
.in(BusinessSubParentSampleAssessmentProjectDO::getId, businessSubParentSampleAssessmentIdList)); .in(BusinessSubParentSampleAssessmentProjectDO::getId, businessSubParentSampleAssessmentProjectIdList));
// if (allReportBusinessSubParentSampleIdList.size() > 0) {
// businessSubParentSampleAssessmentMapper.update(new LambdaUpdateWrapper<BusinessSubParentSampleAssessmentDO>()
// .set(BusinessSubParentSampleAssessmentDO::getIsReported, QmsCommonConstant.YES)
// .set(BusinessSubParentSampleAssessmentDO::getReporter, nickName)
// .set(BusinessSubParentSampleAssessmentDO::getReportTime, LocalDateTime.now())
// .in(BusinessSubParentSampleAssessmentDO::getBusinessSubParentSampleId, allReportBusinessSubParentSampleIdList)
// .eq(BusinessSubParentSampleAssessmentDO::getConfigAssayMethodId, reqVO.getConfigAssayMethodId()));
// }
businessSubParentSampleAssessmentMapper.update(new LambdaUpdateWrapper<BusinessSubParentSampleAssessmentDO>() businessSubParentSampleAssessmentMapper.update(new LambdaUpdateWrapper<BusinessSubParentSampleAssessmentDO>()
.set(BusinessSubParentSampleAssessmentDO::getIsReported, QmsCommonConstant.YES) .set(BusinessSubParentSampleAssessmentDO::getIsReported, QmsCommonConstant.YES)
.set(BusinessSubParentSampleAssessmentDO::getReporter, nickName) .set(BusinessSubParentSampleAssessmentDO::getReporter, nickName)
.set(BusinessSubParentSampleAssessmentDO::getReportTime, LocalDateTime.now()) .set(BusinessSubParentSampleAssessmentDO::getReportTime, LocalDateTime.now())
.in(BusinessSubParentSampleAssessmentDO::getBusinessSubParentSampleId, reqVO.getBusinessSubParentSampleIds()) .in(BusinessSubParentSampleAssessmentDO::getId, businessSubParentSampleAssessmentIdList));
.eq(BusinessSubParentSampleAssessmentDO::getConfigAssayMethodId, reqVO.getConfigAssayMethodId()));
if (updatebBusinessSampleEntrustRegistrationDOList.size() > 0) { if (updatebBusinessSampleEntrustRegistrationDOList.size() > 0) {
businessSampleEntrustRegistrationMapper.updateBatch(updatebBusinessSampleEntrustRegistrationDOList); businessSampleEntrustRegistrationMapper.updateBatch(updatebBusinessSampleEntrustRegistrationDOList);
} }
if (updateBusinessSubSampleDOList.size() > 0) { if (updateBusinessSubSampleDOList.size() > 0 && QmsCommonConstant.FLOW_NODE_ANALYSIS.equals(updateBusinessSubSampleDOList.get(0).getSampleFlowNodeKey())) {//仅当前节点在分析时,才操作
SampleFlowParam sampleFlowParam = new SampleFlowParam(); SampleFlowParam sampleFlowParam = new SampleFlowParam();
sampleFlowParam.setCurrentSampleFlowKey(QmsCommonConstant.FLOW_NODE_ANALYSIS); sampleFlowParam.setCurrentSampleFlowKey(QmsCommonConstant.FLOW_NODE_ANALYSIS);
sampleFlowParam.setSampleSourceType(2); sampleFlowParam.setSampleSourceType(2);

View File

@@ -3,6 +3,9 @@ package com.zt.plat.module.qms.business.bus.service;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -237,6 +240,9 @@ public class SampleTaskAssignServiceImpl implements SampleTaskAssignService {
//查询子样分析方法及检测项目 //查询子样分析方法及检测项目
// List<ConfigAssayMethodProjectExtendRespVO> configAssayMethodProjectList = configAssayMethodProjectMapper.selectByConfigSubSampleIdsAndAssayDepartmentId(configSubSampleIdList, visitDeptId); // List<ConfigAssayMethodProjectExtendRespVO> configAssayMethodProjectList = configAssayMethodProjectMapper.selectByConfigSubSampleIdsAndAssayDepartmentId(configSubSampleIdList, visitDeptId);
//根据样品大类,查询所有子样方法
List<ConfigSubSampleMethodExtendRespVO> configSubSampleMethodList = configSubSampleMethodMapper.selectByBaseSampleId(baseSampleId);
//查询分析方法检测项目 //查询分析方法检测项目
List<AssayMethodProjectRespVO> list = businessAssayProjectDataMapper.selectAssayMethodProjectByBusinessSubSampleIdListAndConfigAssayMethodId(businessSubSampleIdList, configAssayMethodId); List<AssayMethodProjectRespVO> list = businessAssayProjectDataMapper.selectAssayMethodProjectByBusinessSubSampleIdListAndConfigAssayMethodId(businessSubSampleIdList, configAssayMethodId);
@@ -246,9 +252,15 @@ public class SampleTaskAssignServiceImpl implements SampleTaskAssignService {
for (AssayMethodProjectRespVO assayMethodProject : list) { for (AssayMethodProjectRespVO assayMethodProject : list) {
List<ConfigAssayMethodProjectExtendRespVO> methodList = materialAssayStandardMethodList.stream().filter(f -> assayMethodProject.getDictionaryProjectId().equals(f.getDictionaryProjectId())).map(m -> { List<ConfigAssayMethodProjectExtendRespVO> methodList = materialAssayStandardMethodList.stream().filter(f -> assayMethodProject.getDictionaryProjectId().equals(f.getDictionaryProjectId())).map(m -> {
ConfigSubSampleMethodExtendRespVO configSubSampleMethodExtend = configSubSampleMethodList.stream().filter(f -> m.getConfigAssayMethodId().equals(f.getConfigAssayMethodId())).findFirst().orElse(null);
String assayType = configSubSampleMethodExtend.getTaskCount() > 1 ? QmsCommonConstant.ASSAY_TYPE_SINGLE_PARALLEL : QmsCommonConstant.ASSAY_TYPE_SINGLE_CUP;
if (m.getIsDualCup().equals(1)) {
assayType = QmsCommonConstant.ASSAY_TYPE_DOUBLE_CUP;
}
ConfigAssayMethodProjectExtendRespVO configAssayMethod = new ConfigAssayMethodProjectExtendRespVO(); ConfigAssayMethodProjectExtendRespVO configAssayMethod = new ConfigAssayMethodProjectExtendRespVO();
configAssayMethod.setConfigAssayMethodId(m.getConfigAssayMethodId()); configAssayMethod.setConfigAssayMethodId(m.getConfigAssayMethodId());
configAssayMethod.setConfigAssayMethodName(m.getConfigAssayMethodName()); configAssayMethod.setConfigAssayMethodName(m.getConfigAssayMethodName());
configAssayMethod.setAssayType(assayType);
configAssayMethod.setConfigAssayMethodNameAndCategory(m.getConfigAssayMethodNameAndCategory()); configAssayMethod.setConfigAssayMethodNameAndCategory(m.getConfigAssayMethodNameAndCategory());
return configAssayMethod; return configAssayMethod;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
@@ -258,6 +270,499 @@ public class SampleTaskAssignServiceImpl implements SampleTaskAssignService {
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void changeMethod(ChangeAssayMethodReqVO req) {
List<Long> businessSubSampleIdList = req.getBusinessSubSampleIdList();
Long configAssayMethodId = req.getConfigAssayMethodId();
List<AssayMethodProjectRespVO> changeConfigAssayMethodProjectList = req.getChangeConfigAssayMethodProjectList();
// 先按 configAssayMethodId 分组
Map<Long, List<AssayMethodProjectRespVO>> groupedByConfigId = changeConfigAssayMethodProjectList.stream()
.collect(Collectors.groupingBy(AssayMethodProjectRespVO::getConfigAssayMethodId));
// 遍历每个分组,检查 assayType 是否唯一
for (Map.Entry<Long, List<AssayMethodProjectRespVO>> entry : groupedByConfigId.entrySet()) {
List<AssayMethodProjectRespVO> group = entry.getValue();
// 获取该组所有非空的 assayType去重
Set<String> assayTypes = group.stream()
.map(AssayMethodProjectRespVO::getAssayType)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
if (assayTypes.size() > 1) {
// 取第一个元素的 configAssayMethodNameAndCategory 作为代表(假设同 configId 下名称一致)
String methodName = group.get(0).getConfigAssayMethodNameAndCategory();
if (methodName == null || methodName.trim().isEmpty()) {
methodName = "(未命名)";
}
throw new ServiceException(1_032_050_000,
String.format("检测方法“%s”存在多种分析类型%s请确保同一检测方法仅对应一种分析类型。",
methodName,
assayTypes.stream().sorted().collect(Collectors.joining(", "))
)
);
}
}
List<Long> changeConfigAssayMethodIdList = changeConfigAssayMethodProjectList.stream().map(m -> m.getConfigAssayMethodId()).distinct().collect(Collectors.toList());
LocalDateTime currentDateTime = LocalDateTime.now();
//需要更新的报表数据
List<BusinessAssayReportDataDO> updateBusinessAssayReportDataDOList = new ArrayList<>();
//需要更新的分析任务
List<BusinessAssayTaskDataDO> updateBusinessAssayTaskDataDOList = new ArrayList<>();
//需要更新的分析任务检测项目
List<BusinessAssayProjectDataDO> updateBusinessAssayProjectDataDOList = new ArrayList<>();
//需要更新的分析任务检测项目参数
List<BusinessAssayParameterDataDO> updateBusinessAssayParameterDataDOList = new ArrayList<>();
//需要更新的子样判定
List<BusinessSubSampleAssessmentDO> updateBusinessSubSampleAssessmentDOList = new ArrayList<>();
//需要更新的分样判定
List<BusinessSubParentSampleAssessmentDO> updateBusinessSubParentSampleAssessmentDOList = new ArrayList<>();
//需要新建的分析任务
List<BusinessAssayTaskDataDO> saveBusinessAssayTaskDataDOList = new ArrayList<>();
//需要新建的分析任务检测项目
List<BusinessAssayProjectDataDO> saveBusinessAssayProjectDataDOList = new ArrayList<>();
//需要新建的分析任务检测项目参数
List<BusinessAssayParameterDataDO> saveBusinessAssayParameterDataDOList = new ArrayList<>();
//需要新建的子样判定
List<BusinessSubSampleAssessmentDO> saveBusinessSubSampleAssessmentDOList = new ArrayList<>();
//需要新建的分样判定
List<BusinessSubParentSampleAssessmentDO> saveBusinessSubParentSampleAssessmentDOList = new ArrayList<>();
//需要删除的分析任务
List<Long> removeAssayTaskDataIdList = new ArrayList<>();
//需要删除的分析任务检测项目
List<Long> removeAssayProjectIdList = new ArrayList<>();
//需要删除的分析任务检测项目参数
List<Long> removeAssayParameterIdList = new ArrayList<>();
//需要删除的子样判定
List<Long> removeSubSampleAssessmentIdList = new ArrayList<>();
//需要删除的分样判定
List<Long> removeSubParentSampleAssessmentIdList = new ArrayList<>();
//查询子样
List<BusinessSubSampleDO> businessSubSampleDOList = businessSubSampleMapper.selectByIds(businessSubSampleIdList);
List<Long> businessBaseSampleIdList = businessSubSampleDOList.stream().map(m -> m.getBusinessBaseSampleId()).distinct().collect(Collectors.toList());
List<Long> businessSubParentSampleIdList = businessSubSampleDOList.stream().map(m -> m.getBusinessSubParentSampleId()).distinct().collect(Collectors.toList());
List<Long> configSubSampleIdList = businessSubSampleDOList.stream().map(m -> m.getConfigSubSampleId()).distinct().collect(Collectors.toList());
//查询检测任务 (通过分样id可以查询双杯样的)
List<BusinessAssayTaskDataDO> businessAssayTaskDataDOList = businessAssayTaskDataMapper.selectByBusinessSubParentSampleIdsAndConfigAssayMethodId(businessSubParentSampleIdList, configAssayMethodId);
boolean disabled = businessAssayTaskDataDOList.stream().anyMatch(m -> m.getIsAssignTasked().equals(QmsCommonConstant.YES));
if (disabled) {
throw new ServiceException(1_032_001_000, "当前样品存在已分配任务,不允许修改分析方法");
}
List<Long> businessAssayTaskDataIdList = businessAssayTaskDataDOList.stream().map(m -> m.getId()).collect(Collectors.toList());
//查询检测任务的检测项目
List<BusinessAssayProjectDataExtendRespVO> businessAssayProjectDataList = businessAssayProjectDataMapper.selectByBusinessAssayTaskDataIds(businessAssayTaskDataIdList);
List<Long> businessAssayProjectDataIdList = businessAssayProjectDataList.stream().map(m -> m.getId()).collect(Collectors.toList());
//查询检测任务的检测项目的参数
List<BusinessAssayParameterDataDO> businessAssayParameterDataDOList = businessAssayParameterDataMapper.selectByBusinessAssayProjectDataIds(businessAssayProjectDataIdList);
//查询子样判定 (通过分样id可以查询双杯样的)
List<BusinessSubSampleAssessmentDO> businessSubSampleAssessmentDOList = businessSubSampleAssessmentMapper.selectByBusinessSubParentSampleIdsAndConfigAssayMethodId(businessSubParentSampleIdList, configAssayMethodId);
//查询分样判定
List<BusinessSubParentSampleAssessmentExtendRespVO> businessSubParentSampleAssessmentList = businessSubParentSampleAssessmentMapper.selectByBusinessSubParentSampleIdsAndConfigAssayMethodId(businessSubParentSampleIdList, configAssayMethodId);
//查询要变更的分析方法配置
List<ConfigAssayMethodDO> configAssayMethodDOList = configAssayMethodMapper.selectByIds(changeConfigAssayMethodIdList);
//分析方法检测项目配置
List<ConfigAssayMethodProjectExtendRespVO> configAssayMethodProjectList = configAssayMethodProjectMapper.selectByConfigAssayMethodIds(changeConfigAssayMethodIdList);
//分析方法检测项目参数配置
List<ConfigAssayMethodProjectParameterDO> configAssayMethodProjectParameterList = configAssayMethodProjectParameterMapper.selectByConfigAssayMethodIds(changeConfigAssayMethodIdList);
//查询要变更的子样及分析方法配置
List<ConfigSubSampleMethodExtendRespVO> configSubSampleMethodList = configSubSampleMethodMapper.selectByConfigSubSampleIdsAndConfigAssayMethodIds(configSubSampleIdList, changeConfigAssayMethodIdList);
//循环分样判定
for (BusinessSubParentSampleAssessmentExtendRespVO businessSubParentSampleAssessment : businessSubParentSampleAssessmentList) {
//循环变更的分析方法
for (Long changeConfigAssayMethodId : changeConfigAssayMethodIdList) {
//如果当前分析方法不等于要变更的方法
if (!businessSubParentSampleAssessment.getConfigAssayMethodId().equals(changeConfigAssayMethodId)) {
//查询是否已有要变更的方法的分样判定
BusinessSubParentSampleAssessmentDO businessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectByBusinessSubParentSampleIdAndConfigAssayMethodIdAndRetestCount(businessSubParentSampleAssessment.getBusinessSubParentSampleId(), changeConfigAssayMethodId, businessSubParentSampleAssessment.getRetestCount());
if (businessSubParentSampleAssessmentDO == null) {//不存在
//根据变更方法过滤出检测项目
List<Long> projectIdList = changeConfigAssayMethodProjectList.stream().filter(f -> f.getConfigAssayMethodId().equals(changeConfigAssayMethodId)).map(m -> m.getDictionaryProjectId()).distinct().collect(Collectors.toList());
//分析类型
String changeAssayType = changeConfigAssayMethodProjectList.stream().filter(f -> f.getConfigAssayMethodId().equals(changeConfigAssayMethodId)).map(m -> m.getAssayType()).distinct().findFirst().orElse(null);
//查询分析方法
ConfigAssayMethodDO configAssayMethodDO = configAssayMethodDOList.stream().filter(f -> f.getId().equals(changeConfigAssayMethodId)).findFirst().orElse(null);
//查询子样分析方法
ConfigSubSampleMethodExtendRespVO configSubSampleMethod = configSubSampleMethodList.stream().filter(f -> f.getConfigSubSampleParentId().equals(businessSubParentSampleAssessment.getConfigSubSampleParentId()) && f.getConfigAssayMethodId().equals(changeConfigAssayMethodId)).findFirst().orElse(null);
switch (changeAssayType) {//根据前端传入的分析类型,修改子样分析方法中的分析任务数
case QmsCommonConstant.ASSAY_TYPE_SINGLE_PARALLEL: {
configSubSampleMethod.setTaskCount(2);//平行
}
default:
configSubSampleMethod.setTaskCount(1);//单杯
}
//根据任务数判断是平行还是
String assayType = configSubSampleMethod.getTaskCount() > 1 ? QmsCommonConstant.ASSAY_TYPE_SINGLE_PARALLEL : QmsCommonConstant.ASSAY_TYPE_SINGLE_CUP;
businessSubParentSampleAssessmentDO = new BusinessSubParentSampleAssessmentDO();
businessSubParentSampleAssessmentDO.setId(IdWorker.getId());
businessSubParentSampleAssessmentDO.setBusinessSubParentSampleId(businessSubParentSampleAssessment.getBusinessSubParentSampleId());
businessSubParentSampleAssessmentDO.setConfigAssayMethodId(changeConfigAssayMethodId);
businessSubParentSampleAssessmentDO.setAssayType(assayType);
businessSubParentSampleAssessmentDO.setTaskType("常规");
saveBusinessSubParentSampleAssessmentDOList.add(businessSubParentSampleAssessmentDO);
BusinessSubSampleDO businessSubSampleDO = null;
if (!QmsCommonConstant.ASSAY_TYPE_DOUBLE_CUP.equals(businessSubParentSampleAssessment.getAssayType())) {//如果不为双杯样
businessSubSampleDO = businessSubSampleDOList.stream().filter(f -> f.getBusinessSubParentSampleId().equals(businessSubParentSampleAssessment.getBusinessSubParentSampleId())).findFirst().orElse(null);
}
//子样判定数据
BusinessSubSampleAssessmentDO businessSubSampleAssessmentDO = new BusinessSubSampleAssessmentDO();
businessSubSampleAssessmentDO.setId(IdWorker.getId());
businessSubSampleAssessmentDO.setBusinessBaseSampleId(businessSubParentSampleAssessment.getBusinessBaseSampleId());
businessSubSampleAssessmentDO.setBusinessSubParentSampleId(businessSubParentSampleAssessment.getBusinessSubParentSampleId());
businessSubSampleAssessmentDO.setBusinessSubParentSampleAssessmentId(businessSubParentSampleAssessmentDO.getId());
if (businessSubSampleDO != null) {
businessSubSampleAssessmentDO.setBusinessSubSampleId(businessSubSampleDO.getId());
}
businessSubSampleAssessmentDO.setConfigAssayMethodId(changeConfigAssayMethodId);
businessSubSampleAssessmentDO.setAssayType(assayType);
businessSubSampleAssessmentDO.setTaskType("常规");
saveBusinessSubSampleAssessmentDOList.add(businessSubSampleAssessmentDO);
//查询旧的检测项目
List<Long> oldBusinessAssayProjectDataIdList = businessAssayProjectDataList.stream().filter(f -> projectIdList.contains(f.getDictionaryProjectId()) && f.getBusinessSubParentSampleId().equals(businessSubParentSampleAssessment.getBusinessSubParentSampleId())).map(m -> m.getId()).collect(Collectors.toList());
//添加到删除列表
removeAssayProjectIdList.addAll(oldBusinessAssayProjectDataIdList);
List<Long> oldBusinessAssayParameterDataIdList = businessAssayParameterDataDOList.stream().filter(f -> oldBusinessAssayProjectDataIdList.contains(f.getBusinessAssayProjectDataId())).map(m -> m.getId()).collect(Collectors.toList());
removeAssayParameterIdList.addAll(oldBusinessAssayParameterDataIdList);
if (projectIdList.size() == changeConfigAssayMethodProjectList.size()) {
//查询旧的检测任务
List<Long> oldBusinessAssayTaskDataIdList = businessAssayTaskDataDOList.stream().filter(f -> f.getConfigAssayMethodId().equals(configAssayMethodId) && f.getBusinessSubParentSampleId().equals(businessSubParentSampleAssessment.getBusinessSubParentSampleId())).map(m -> m.getId()).collect(Collectors.toList());
//添加到删除列表
removeAssayTaskDataIdList.addAll(oldBusinessAssayTaskDataIdList);
//查询旧的子样判定
List<Long> oldBusinessSubSampleAssesmentIdList = businessSubSampleAssessmentDOList.stream().filter(f -> f.getConfigAssayMethodId().equals(configAssayMethodId) && f.getBusinessSubParentSampleId().equals(businessSubParentSampleAssessment.getBusinessSubParentSampleId())).map(m -> m.getId()).collect(Collectors.toList());
//添加到删除列表
removeSubSampleAssessmentIdList.addAll(oldBusinessSubSampleAssesmentIdList);
//添加到删除列表
removeSubParentSampleAssessmentIdList.add(businessSubParentSampleAssessment.getId());
} else {
List<String> projectShowNameList = changeConfigAssayMethodProjectList.stream().filter(f -> f.getConfigAssayMethodId().equals(configAssayMethodId)).map(m -> m.getDictionaryProjectShowName()).distinct().collect(Collectors.toList());
//查询旧的检测任务
List<BusinessAssayTaskDataDO> oldBusinessAssayTaskDataList = businessAssayTaskDataDOList.stream().filter(f -> f.getConfigAssayMethodId().equals(configAssayMethodId) && f.getBusinessSubParentSampleId().equals(businessSubParentSampleAssessment.getBusinessSubParentSampleId())).collect(Collectors.toList());
for (BusinessAssayTaskDataDO oldBusinessAssayTaskData : oldBusinessAssayTaskDataList) {
boolean isAdd = updateBusinessAssayTaskDataDOList.stream().anyMatch(m -> m.getId().equals(oldBusinessAssayTaskData.getId()));
if (!isAdd) {//如果未添加过更新,则修改检测项目并添加更新
oldBusinessAssayTaskData.setAssayProject(CollUtil.join(projectShowNameList, ","));
updateBusinessAssayTaskDataDOList.add(oldBusinessAssayTaskData);
}
}
}
BusinessAssayTaskDataDO oldBusinessAssayTaskDataDO = businessAssayTaskDataDOList.stream().filter(f -> f.getBusinessSubParentSampleId().equals(businessSubParentSampleAssessment.getBusinessSubParentSampleId())).findFirst().orElse(null);
//根据检测方法循环
BusinessAssayTaskDataDO businessAssayTaskDataDO = null;
//根据任务数循环
for (int i = 0; i < configSubSampleMethod.getTaskCount(); i++) {
//子样检测任务
businessAssayTaskDataDO = new BusinessAssayTaskDataDO();
businessAssayTaskDataDO.setId(IdWorker.getId());
businessAssayTaskDataDO.setBusinessBaseSampleId(businessSubSampleDO.getBusinessBaseSampleId());
businessAssayTaskDataDO.setBusinessSubParentSampleId(businessSubSampleDO.getBusinessSubParentSampleId());
businessAssayTaskDataDO.setBusinessSubSampleId(businessSubSampleDO.getId());
businessAssayTaskDataDO.setBusinessSubSampleAssessmentId(businessSubSampleAssessmentDO.getId());//子样判定id
businessAssayTaskDataDO.setConfigAssayMethodId(changeConfigAssayMethodId);
businessAssayTaskDataDO.setAssayType(assayType);
businessAssayTaskDataDO.setTaskType("常规");
businessAssayTaskDataDO.setConfigSampleFlowId(oldBusinessAssayTaskDataDO.getConfigSampleFlowId());
businessAssayTaskDataDO.setSampleFlowNodeKey(oldBusinessAssayTaskDataDO.getSampleFlowNodeKey());
businessAssayTaskDataDO.setSampleFlowNodeTime(currentDateTime);
businessAssayTaskDataDO.setAssayDepartmentId(configAssayMethodDO.getAssayDepartmentId());
businessAssayTaskDataDO.setAssayDepartmentName(configAssayMethodDO.getAssayDepartmentName());
List<ConfigAssayMethodProjectExtendRespVO> configAssayMethodProjectDOList = configAssayMethodProjectList.stream().filter(f -> f.getConfigAssayMethodId().equals(changeConfigAssayMethodId)).collect(Collectors.toList());
StringBuilder assayProjectBuilder = new StringBuilder();
for (ConfigAssayMethodProjectExtendRespVO configAssayMethodProjectDO : configAssayMethodProjectDOList) {
//如果当前分析方法的项目不在当前检测项目中,则跳出循环继续
if (!projectIdList.contains(configAssayMethodProjectDO.getDictionaryProjectId())) {
continue;
}
assayProjectBuilder.append(configAssayMethodProjectDO.getShowName()).append(",");
//检测项目
BusinessAssayProjectDataDO businessAssayProjectDataDO = new BusinessAssayProjectDataDO();
businessAssayProjectDataDO.setId(IdWorker.getId());
businessAssayProjectDataDO.setBusinessAssayTaskDataId(businessAssayTaskDataDO.getId());
businessAssayProjectDataDO.setConfigAssayMethodProjectId(configAssayMethodProjectDO.getId());
businessAssayProjectDataDO.setDictionaryProjectId(configAssayMethodProjectDO.getDictionaryProjectId());
businessAssayProjectDataDO.setDataType(configAssayMethodProjectDO.getDataType());
businessAssayProjectDataDO.setDecimalPosition(configAssayMethodProjectDO.getDecimalPosition());
businessAssayProjectDataDO.setUsage(QmsCommonConstant.ASSAY_PROJECT_USAGE_REPORT);
businessAssayProjectDataDO.setMinimumLimitValue(configAssayMethodProjectDO.getMinimumLimitValue());
businessAssayProjectDataDO.setIsEnabled(QmsCommonConstant.YES);
businessAssayProjectDataDO.setIsNotAssessment(QmsCommonConstant.NO);
saveBusinessAssayProjectDataDOList.add(businessAssayProjectDataDO);
List<ConfigAssayMethodProjectParameterDO> configAssayMethodProjectParameterDOList = configAssayMethodProjectParameterList.stream().filter(f -> f.getConfigAssayMethodProjectId().equals(configAssayMethodProjectDO.getId())).collect(Collectors.toList());
for (ConfigAssayMethodProjectParameterDO configAssayMethodProjectParameterDO : configAssayMethodProjectParameterDOList) {
BusinessAssayParameterDataDO businessAssayParameterDataDO = new BusinessAssayParameterDataDO();
businessAssayParameterDataDO.setId(IdWorker.getId());
businessAssayParameterDataDO.setConfigAssayMethodProjectParameterId(configAssayMethodProjectParameterDO.getId());
businessAssayParameterDataDO.setBusinessAssayProjectDataId(businessAssayProjectDataDO.getId());
businessAssayParameterDataDO.setDictionaryParameterId(configAssayMethodProjectParameterDO.getDictionaryParameterId());
businessAssayParameterDataDO.setDataType(configAssayMethodProjectParameterDO.getDataType());
businessAssayParameterDataDO.setDecimalPosition(configAssayMethodProjectParameterDO.getDecimalPosition());
saveBusinessAssayParameterDataDOList.add(businessAssayParameterDataDO);
}
}
if (assayProjectBuilder.length() > 1) {
assayProjectBuilder.delete(assayProjectBuilder.length() - 1 , assayProjectBuilder.length());
}
businessAssayTaskDataDO.setAssayProject(assayProjectBuilder.toString());
saveBusinessAssayTaskDataDOList.add(businessAssayTaskDataDO);
}
} else {//已存在
//分析类型
String changeAssayType = changeConfigAssayMethodProjectList.stream().filter(f -> f.getConfigAssayMethodId().equals(changeConfigAssayMethodId)).map(m -> m.getAssayType()).distinct().findFirst().orElse(null);
if (!businessSubParentSampleAssessmentDO.getAssayType().equals(changeAssayType)) {
String configAssayMethodNameAndCategory = changeConfigAssayMethodProjectList.stream().filter(f -> f.getConfigAssayMethodId().equals(changeConfigAssayMethodId)).map(m -> m.getConfigAssayMethodNameAndCategory()).distinct().findFirst().orElse(null);
throw new ServiceException(1_032_001_000, "检测方法“"+configAssayMethodNameAndCategory+"”,存在与当前分析类型不同的分析任务!");
}
//根据变更方法过滤出检测项目
List<Long> projectIdList = changeConfigAssayMethodProjectList.stream().filter(f -> f.getConfigAssayMethodId().equals(changeConfigAssayMethodId)).map(m -> m.getDictionaryProjectId()).distinct().collect(Collectors.toList());
//查询分析方法
//ConfigAssayMethodDO configAssayMethodDO = configAssayMethodDOList.stream().filter(f -> f.getId().equals(changeConfigAssayMethodId)).findFirst().orElse(null);
//查询子样分析方法
//ConfigSubSampleMethodExtendRespVO configSubSampleMethod = configSubSampleMethodList.stream().filter(f -> f.getConfigSubSampleParentId().equals(businessSubParentSampleAssessment.getConfigSubSampleParentId()) && f.getConfigAssayMethodId().equals(changeConfigAssayMethodId)).findFirst().orElse(null);
//根据任务数判断是平行还是
//String assayType = configSubSampleMethod.getTaskCount() > 1 ? QmsCommonConstant.ASSAY_TYPE_SINGLE_PARALLEL : QmsCommonConstant.ASSAY_TYPE_SINGLE_CUP;
//查询子样判定
//BusinessSubSampleAssessmentDO businessSubSampleAssessmentDO = businessSubSampleAssessmentMapper.selectByBusinessSubParentSampleIdAndConfigAssayMethodId(businessSubParentSampleAssessmentDO.getBusinessSubParentSampleId(), changeConfigAssayMethodId);
//查询旧的检测项目
List<Long> oldBusinessAssayProjectDataIdList = businessAssayProjectDataList.stream().filter(f -> projectIdList.contains(f.getDictionaryProjectId()) && f.getBusinessSubParentSampleId().equals(businessSubParentSampleAssessment.getBusinessSubParentSampleId())).map(m -> m.getId()).collect(Collectors.toList());
//添加到删除列表
removeAssayProjectIdList.addAll(oldBusinessAssayProjectDataIdList);
List<Long> oldBusinessAssayParameterDataIdList = businessAssayParameterDataDOList.stream().filter(f -> oldBusinessAssayProjectDataIdList.contains(f.getBusinessAssayProjectDataId())).map(m -> m.getId()).collect(Collectors.toList());
removeAssayParameterIdList.addAll(oldBusinessAssayParameterDataIdList);
if (projectIdList.size() == changeConfigAssayMethodProjectList.size()) {
//查询旧的检测任务
List<Long> oldBusinessAssayTaskDataIdList = businessAssayTaskDataDOList.stream().filter(f -> f.getConfigAssayMethodId().equals(configAssayMethodId) && f.getBusinessSubParentSampleId().equals(businessSubParentSampleAssessment.getBusinessSubParentSampleId())).map(m -> m.getId()).collect(Collectors.toList());
//添加到删除列表
removeAssayTaskDataIdList.addAll(oldBusinessAssayTaskDataIdList);
//查询旧的子样判定
List<Long> oldBusinessSubSampleAssesmentIdList = businessSubSampleAssessmentDOList.stream().filter(f -> f.getConfigAssayMethodId().equals(configAssayMethodId) && f.getBusinessSubParentSampleId().equals(businessSubParentSampleAssessment.getBusinessSubParentSampleId())).map(m -> m.getId()).collect(Collectors.toList());
//添加到删除列表
removeSubSampleAssessmentIdList.addAll(oldBusinessSubSampleAssesmentIdList);
//添加到删除列表
removeSubParentSampleAssessmentIdList.add(businessSubParentSampleAssessment.getId());
} else {
List<String> projectShowNameList = changeConfigAssayMethodProjectList.stream().filter(f -> f.getConfigAssayMethodId().equals(configAssayMethodId)).map(m -> m.getDictionaryProjectShowName()).distinct().collect(Collectors.toList());
//查询旧的检测任务
List<BusinessAssayTaskDataDO> oldBusinessAssayTaskDataList = businessAssayTaskDataDOList.stream().filter(f -> f.getConfigAssayMethodId().equals(configAssayMethodId) && f.getBusinessSubParentSampleId().equals(businessSubParentSampleAssessment.getBusinessSubParentSampleId())).collect(Collectors.toList());
for (BusinessAssayTaskDataDO oldBusinessAssayTaskData : oldBusinessAssayTaskDataList) {
boolean isAdd = updateBusinessAssayTaskDataDOList.stream().anyMatch(m -> m.getId().equals(oldBusinessAssayTaskData.getId()));
if (!isAdd) {//如果未添加过更新,则修改检测项目并添加更新
oldBusinessAssayTaskData.setAssayProject(CollUtil.join(projectShowNameList, ","));
updateBusinessAssayTaskDataDOList.add(oldBusinessAssayTaskData);
}
}
}
//查询当前存在的分析任务
List<BusinessAssayTaskDataDO> currBusinessAssayTaskDataDOList = businessAssayTaskDataMapper.selectByBusinessSubParentSampleIdAndConfigAssayMethodId(businessSubParentSampleAssessmentDO.getBusinessSubParentSampleId(), changeConfigAssayMethodId);
//当前存在的分析任务循环
for (BusinessAssayTaskDataDO businessAssayTaskDataDO : currBusinessAssayTaskDataDOList) {
List<ConfigAssayMethodProjectExtendRespVO> configAssayMethodProjectDOList = configAssayMethodProjectList.stream().filter(f -> f.getConfigAssayMethodId().equals(changeConfigAssayMethodId)).collect(Collectors.toList());
StringBuilder assayProjectBuilder = new StringBuilder(businessAssayTaskDataDO.getAssayProject());
assayProjectBuilder.append(",");
for (ConfigAssayMethodProjectExtendRespVO configAssayMethodProjectDO : configAssayMethodProjectDOList) {
//如果当前分析方法的项目不在当前检测项目中,则跳出循环继续
if (!projectIdList.contains(configAssayMethodProjectDO.getDictionaryProjectId())) {
continue;
}
assayProjectBuilder.append(configAssayMethodProjectDO.getShowName()).append(",");
//检测项目
BusinessAssayProjectDataDO businessAssayProjectDataDO = new BusinessAssayProjectDataDO();
businessAssayProjectDataDO.setId(IdWorker.getId());
businessAssayProjectDataDO.setBusinessAssayTaskDataId(businessAssayTaskDataDO.getId());
businessAssayProjectDataDO.setConfigAssayMethodProjectId(configAssayMethodProjectDO.getId());
businessAssayProjectDataDO.setDictionaryProjectId(configAssayMethodProjectDO.getDictionaryProjectId());
businessAssayProjectDataDO.setDataType(configAssayMethodProjectDO.getDataType());
businessAssayProjectDataDO.setDecimalPosition(configAssayMethodProjectDO.getDecimalPosition());
businessAssayProjectDataDO.setUsage(QmsCommonConstant.ASSAY_PROJECT_USAGE_REPORT);
businessAssayProjectDataDO.setMinimumLimitValue(configAssayMethodProjectDO.getMinimumLimitValue());
businessAssayProjectDataDO.setIsEnabled(QmsCommonConstant.YES);
businessAssayProjectDataDO.setIsNotAssessment(QmsCommonConstant.NO);
saveBusinessAssayProjectDataDOList.add(businessAssayProjectDataDO);
List<ConfigAssayMethodProjectParameterDO> configAssayMethodProjectParameterDOList = configAssayMethodProjectParameterList.stream().filter(f -> f.getConfigAssayMethodProjectId().equals(configAssayMethodProjectDO.getId())).collect(Collectors.toList());
for (ConfigAssayMethodProjectParameterDO configAssayMethodProjectParameterDO : configAssayMethodProjectParameterDOList) {
BusinessAssayParameterDataDO businessAssayParameterDataDO = new BusinessAssayParameterDataDO();
businessAssayParameterDataDO.setId(IdWorker.getId());
businessAssayParameterDataDO.setConfigAssayMethodProjectParameterId(configAssayMethodProjectParameterDO.getId());
businessAssayParameterDataDO.setBusinessAssayProjectDataId(businessAssayProjectDataDO.getId());
businessAssayParameterDataDO.setDictionaryParameterId(configAssayMethodProjectParameterDO.getDictionaryParameterId());
businessAssayParameterDataDO.setDataType(configAssayMethodProjectParameterDO.getDataType());
businessAssayParameterDataDO.setDecimalPosition(configAssayMethodProjectParameterDO.getDecimalPosition());
saveBusinessAssayParameterDataDOList.add(businessAssayParameterDataDO);
}
}
if (assayProjectBuilder.length() > 1) {
assayProjectBuilder.delete(assayProjectBuilder.length() - 1 , assayProjectBuilder.length());
}
businessAssayTaskDataDO.setAssayProject(assayProjectBuilder.toString());
updateBusinessAssayTaskDataDOList.add(businessAssayTaskDataDO);
}
}
}
}
}
//查询报表数据
List<BusinessAssayReportDataDO> businessAssayReportDataDOList = businessAssayReportDataMapper.selectBytBusinessBaseSampleIds(businessBaseSampleIdList);
for (BusinessAssayReportDataDO businessAssayReportDataDO : businessAssayReportDataDOList) {
String dataSource = businessAssayReportDataDO.getDataSource();
if (dataSource.contains(req.getConfigAssayMethodId().toString())) {//判定是否存在
List<Long> dataSourceList = new ArrayList<>();
String[] dataSourceSplit = dataSource.split(",");
for (int i = 0; i < dataSourceSplit.length; i++) {
dataSourceList.add(Long.parseLong(dataSourceSplit[i]));
}
//移除当前的
dataSourceList.remove(req.getConfigAssayMethodId());
//添加新的
dataSourceList.addAll(changeConfigAssayMethodIdList);
//重新赋值
businessAssayReportDataDO.setDataSource(CollUtil.join(dataSourceList, ","));
//添加到更新列表
updateBusinessAssayReportDataDOList.add(businessAssayReportDataDO);
}
}
//======================== 删除 =====================================================================
if (removeAssayTaskDataIdList.size() > 0) {
businessAssayTaskDataMapper.deleteByIds(removeAssayTaskDataIdList);
}
if (removeAssayProjectIdList.size() > 0) {
businessAssayProjectDataMapper.deleteByIds(removeAssayProjectIdList);
}
if (removeAssayParameterIdList.size() > 0) {
businessAssayParameterDataMapper.deleteByIds(removeAssayParameterIdList);
}
if (removeSubSampleAssessmentIdList.size() > 0) {
businessSubSampleAssessmentMapper.deleteByIds(removeSubSampleAssessmentIdList);
}
if (removeSubParentSampleAssessmentIdList.size() > 0) {
businessSubParentSampleAssessmentMapper.deleteByIds(removeSubParentSampleAssessmentIdList);
}
//======================== 修改 =====================================================================
if (updateBusinessAssayReportDataDOList.size() > 0) {
businessAssayReportDataMapper.updateBatch(updateBusinessAssayReportDataDOList);
}
if (updateBusinessAssayTaskDataDOList.size() > 0) {
businessAssayTaskDataMapper.updateBatch(updateBusinessAssayTaskDataDOList);
}
if (updateBusinessAssayProjectDataDOList.size() > 0) {
businessAssayProjectDataMapper.updateBatch(updateBusinessAssayProjectDataDOList);
}
if (updateBusinessAssayParameterDataDOList.size() > 0) {
businessAssayParameterDataMapper.updateBatch(updateBusinessAssayParameterDataDOList);
}
if (updateBusinessSubSampleAssessmentDOList.size() > 0) {
businessSubSampleAssessmentMapper.updateBatch(updateBusinessSubSampleAssessmentDOList);
}
if (updateBusinessSubParentSampleAssessmentDOList.size() > 0) {
businessSubParentSampleAssessmentMapper.updateBatch(updateBusinessSubParentSampleAssessmentDOList);
}
//======================== 新建 =====================================================================
if (saveBusinessAssayTaskDataDOList.size() > 0) {
businessAssayTaskDataMapper.insertBatch(saveBusinessAssayTaskDataDOList);
}
if (saveBusinessAssayProjectDataDOList.size() > 0) {
businessAssayProjectDataMapper.insertBatch(saveBusinessAssayProjectDataDOList);
}
if (saveBusinessAssayParameterDataDOList.size() > 0) {
businessAssayParameterDataMapper.insertBatch(saveBusinessAssayParameterDataDOList);
}
if (saveBusinessSubSampleAssessmentDOList.size() > 0) {
businessSubSampleAssessmentMapper.insertBatch(saveBusinessSubSampleAssessmentDOList);
}
if (saveBusinessSubParentSampleAssessmentDOList.size() > 0) {
businessSubParentSampleAssessmentMapper.insertBatch(saveBusinessSubParentSampleAssessmentDOList);
}
}
/**
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void changeMethod(ChangeAssayMethodReqVO req) { public void changeMethod(ChangeAssayMethodReqVO req) {
@@ -353,7 +858,7 @@ public class SampleTaskAssignServiceImpl implements SampleTaskAssignService {
//如果当前分析方法不等于要变更的方法 //如果当前分析方法不等于要变更的方法
if (!businessSubParentSampleAssessment.getConfigAssayMethodId().equals(changeConfigAssayMethodId)) { if (!businessSubParentSampleAssessment.getConfigAssayMethodId().equals(changeConfigAssayMethodId)) {
//查询是否已有要变更的方法的分样判定 //查询是否已有要变更的方法的分样判定
BusinessSubParentSampleAssessmentDO businessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectByBusinessSubParentSampleIdAndConfigAssayMethodId(businessSubParentSampleAssessment.getBusinessSubParentSampleId(), changeConfigAssayMethodId); BusinessSubParentSampleAssessmentDO businessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectByBusinessSubParentSampleIdAndConfigAssayMethodIdAndRetestCount(businessSubParentSampleAssessment.getBusinessSubParentSampleId(), changeConfigAssayMethodId, businessSubParentSampleAssessment.getRetestCount());
if (businessSubParentSampleAssessmentDO == null) {//不存在 if (businessSubParentSampleAssessmentDO == null) {//不存在
//根据变更方法过滤出检测项目 //根据变更方法过滤出检测项目
List<Long> projectIdList = changeConfigAssayMethodProjectList.stream().filter(f -> f.getConfigAssayMethodId().equals(changeConfigAssayMethodId)).map(m -> m.getDictionaryProjectId()).distinct().collect(Collectors.toList()); List<Long> projectIdList = changeConfigAssayMethodProjectList.stream().filter(f -> f.getConfigAssayMethodId().equals(changeConfigAssayMethodId)).map(m -> m.getDictionaryProjectId()).distinct().collect(Collectors.toList());
@@ -699,6 +1204,7 @@ public class SampleTaskAssignServiceImpl implements SampleTaskAssignService {
} }
**/
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)

View File

@@ -14,6 +14,9 @@ import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH
@Data @Data
public class ConfigAssayMethodProjectCoefficientPageReqVO extends PageParam { public class ConfigAssayMethodProjectCoefficientPageReqVO extends PageParam {
@Schema(description = "主样配置ID", example = "30107")
private Long configBaseSampleId;
@Schema(description = "检测方法配置ID", example = "10243") @Schema(description = "检测方法配置ID", example = "10243")
private Long configAssayMethodId; private Long configAssayMethodId;

View File

@@ -17,6 +17,9 @@ public class ConfigAssayMethodProjectCoefficientRespVO {
@ExcelProperty("ID") @ExcelProperty("ID")
private Long id; private Long id;
@Schema(description = "主样配置ID", example = "30107")
private Long configBaseSampleId;
@Schema(description = "检测方法配置ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10243") @Schema(description = "检测方法配置ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10243")
@ExcelProperty("检测方法配置ID") @ExcelProperty("检测方法配置ID")
private Long configAssayMethodId; private Long configAssayMethodId;

View File

@@ -13,6 +13,9 @@ public class ConfigAssayMethodProjectCoefficientSaveReqVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "26850") @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "26850")
private Long id; private Long id;
@Schema(description = "主样配置ID", example = "30107")
private Long configBaseSampleId;
@Schema(description = "检测方法配置ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10243") @Schema(description = "检测方法配置ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10243")
@NotNull(message = "检测方法配置ID不能为空") @NotNull(message = "检测方法配置ID不能为空")
private Long configAssayMethodId; private Long configAssayMethodId;

View File

@@ -20,4 +20,7 @@ public class ConfigAssayMethodProjectExtendRespVO extends ConfigAssayMethodProje
@Schema(description = "显示名称") @Schema(description = "显示名称")
private String showName; private String showName;
@Schema(description = "分析类型 单杯-single_cup、双杯-double_cup、平行-single_parallel")
private String assayType;
} }

View File

@@ -13,6 +13,9 @@ import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH
@Data @Data
public class ConfigAssayMethodProjectRangePageReqVO extends PageParam { public class ConfigAssayMethodProjectRangePageReqVO extends PageParam {
@Schema(description = "主样配置ID", example = "30107")
private Long configBaseSampleId;
@Schema(description = "检测方法配置ID", example = "6862") @Schema(description = "检测方法配置ID", example = "6862")
private Long configAssayMethodId; private Long configAssayMethodId;

View File

@@ -16,6 +16,9 @@ public class ConfigAssayMethodProjectRangeRespVO {
@ExcelProperty("ID") @ExcelProperty("ID")
private Long id; private Long id;
@Schema(description = "主样配置ID", example = "30107")
private Long configBaseSampleId;
@Schema(description = "检测方法配置ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6862") @Schema(description = "检测方法配置ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6862")
@ExcelProperty("检测方法配置ID") @ExcelProperty("检测方法配置ID")
private Long configAssayMethodId; private Long configAssayMethodId;

View File

@@ -12,6 +12,9 @@ public class ConfigAssayMethodProjectRangeSaveReqVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25632") @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25632")
private Long id; private Long id;
@Schema(description = "主样配置ID", example = "30107")
private Long configBaseSampleId;
@Schema(description = "检测方法配置ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6862") @Schema(description = "检测方法配置ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6862")
@NotNull(message = "检测方法配置ID不能为空") @NotNull(message = "检测方法配置ID不能为空")
private Long configAssayMethodId; private Long configAssayMethodId;

View File

@@ -10,6 +10,9 @@ public class ConfigSubSampleMethodConfInfo {
/** 添加分析任务 **/ /** 添加分析任务 **/
private ConfigSubSampleMethodConfAdd addAssayTask; private ConfigSubSampleMethodConfAdd addAssayTask;
/** 分析方法参数设置值配置 **/
private List<ConfigSubSampleMethodConfItem> setParam;
/** 分析方法参数取值配置 **/ /** 分析方法参数取值配置 **/
private List<ConfigSubSampleMethodConfItem> getParam; private List<ConfigSubSampleMethodConfItem> getParam;

View File

@@ -8,7 +8,10 @@ public class ConfigSubSampleMethodConfPoint {
/** 分析方法id **/ /** 分析方法id **/
private Long methodId; private Long methodId;
/** 检测项目 **/ /** 分析方法Key **/
private String methodKey;
/** 检测项目,多个以“,”号分割 **/
private String project; private String project;
/** 参数 **/ /** 参数 **/

View File

@@ -33,6 +33,11 @@ public class ConfigAssayMethodProjectCoefficientDO extends BusinessBaseDO {
@TableId(type = IdType.ASSIGN_ID) @TableId(type = IdType.ASSIGN_ID)
private Long id; private Long id;
/** /**
* 主样配置ID
*/
@TableField("CFG_BSE_SMP_ID")
private Long configBaseSampleId;
/**
* 检测方法配置ID * 检测方法配置ID
*/ */
@TableField("CFG_ASY_MTHD_ID") @TableField("CFG_ASY_MTHD_ID")

View File

@@ -32,6 +32,11 @@ public class ConfigAssayMethodProjectRangeDO extends BusinessBaseDO {
@TableId(type = IdType.ASSIGN_ID) @TableId(type = IdType.ASSIGN_ID)
private Long id; private Long id;
/** /**
* 主样配置ID
*/
@TableField("CFG_BSE_SMP_ID")
private Long configBaseSampleId;
/**
* 检测方法配置ID * 检测方法配置ID
*/ */
@TableField("CFG_ASY_MTHD_ID") @TableField("CFG_ASY_MTHD_ID")

View File

@@ -19,6 +19,7 @@ public interface ConfigAssayMethodProjectCoefficientMapper extends BaseMapperX<C
default PageResult<ConfigAssayMethodProjectCoefficientDO> selectPage(ConfigAssayMethodProjectCoefficientPageReqVO reqVO) { default PageResult<ConfigAssayMethodProjectCoefficientDO> selectPage(ConfigAssayMethodProjectCoefficientPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ConfigAssayMethodProjectCoefficientDO>() return selectPage(reqVO, new LambdaQueryWrapperX<ConfigAssayMethodProjectCoefficientDO>()
.eqIfPresent(ConfigAssayMethodProjectCoefficientDO::getConfigBaseSampleId, reqVO.getConfigBaseSampleId())
.eqIfPresent(ConfigAssayMethodProjectCoefficientDO::getConfigAssayMethodId, reqVO.getConfigAssayMethodId()) .eqIfPresent(ConfigAssayMethodProjectCoefficientDO::getConfigAssayMethodId, reqVO.getConfigAssayMethodId())
.eqIfPresent(ConfigAssayMethodProjectCoefficientDO::getConfigAssayMethodProjectId, reqVO.getConfigAssayMethodProjectId()) .eqIfPresent(ConfigAssayMethodProjectCoefficientDO::getConfigAssayMethodProjectId, reqVO.getConfigAssayMethodProjectId())
.eqIfPresent(ConfigAssayMethodProjectCoefficientDO::getDictionaryProjectId, reqVO.getDictionaryProjectId()) .eqIfPresent(ConfigAssayMethodProjectCoefficientDO::getDictionaryProjectId, reqVO.getDictionaryProjectId())
@@ -34,4 +35,9 @@ public interface ConfigAssayMethodProjectCoefficientMapper extends BaseMapperX<C
.orderByDesc(ConfigAssayMethodProjectCoefficientDO::getId)); .orderByDesc(ConfigAssayMethodProjectCoefficientDO::getId));
} }
default List<ConfigAssayMethodProjectCoefficientDO> selectByConfigBaseSampleIds(List<Long> configBaseSampleIdList){
return selectList(new LambdaQueryWrapperX<ConfigAssayMethodProjectCoefficientDO>()
.in(ConfigAssayMethodProjectCoefficientDO::getConfigBaseSampleId, configBaseSampleIdList));
}
} }

View File

@@ -18,6 +18,7 @@ public interface ConfigAssayMethodProjectRangeMapper extends BaseMapperX<ConfigA
default PageResult<ConfigAssayMethodProjectRangeDO> selectPage(ConfigAssayMethodProjectRangePageReqVO reqVO) { default PageResult<ConfigAssayMethodProjectRangeDO> selectPage(ConfigAssayMethodProjectRangePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ConfigAssayMethodProjectRangeDO>() return selectPage(reqVO, new LambdaQueryWrapperX<ConfigAssayMethodProjectRangeDO>()
.eqIfPresent(ConfigAssayMethodProjectRangeDO::getConfigBaseSampleId, reqVO.getConfigBaseSampleId())
.eqIfPresent(ConfigAssayMethodProjectRangeDO::getConfigAssayMethodId, reqVO.getConfigAssayMethodId()) .eqIfPresent(ConfigAssayMethodProjectRangeDO::getConfigAssayMethodId, reqVO.getConfigAssayMethodId())
.eqIfPresent(ConfigAssayMethodProjectRangeDO::getConfigAssayMethodProjectId, reqVO.getConfigAssayMethodProjectId()) .eqIfPresent(ConfigAssayMethodProjectRangeDO::getConfigAssayMethodProjectId, reqVO.getConfigAssayMethodProjectId())
.eqIfPresent(ConfigAssayMethodProjectRangeDO::getDictionaryProjectId, reqVO.getDictionaryProjectId()) .eqIfPresent(ConfigAssayMethodProjectRangeDO::getDictionaryProjectId, reqVO.getDictionaryProjectId())

View File

@@ -98,4 +98,17 @@ public interface ConfigSubSampleMethodMapper extends BaseMapperX<ConfigSubSample
.in(ConfigSubSampleMethodDO::getConfigSubSampleId, configSubSampleIds)); .in(ConfigSubSampleMethodDO::getConfigSubSampleId, configSubSampleIds));
} }
default List<ConfigSubSampleMethodExtendRespVO> selectByBaseSampleId(Long baseSampleId) {
return selectJoinList(ConfigSubSampleMethodExtendRespVO.class, new MPJLambdaWrapperX<ConfigSubSampleMethodDO>()
.leftJoin(ConfigSubSampleParentMethodDO.class, ConfigSubSampleParentMethodDO::getId, ConfigSubSampleMethodDO::getConfigSubSampleParentMethodId)
.leftJoin(ConfigSubSampleDO.class, ConfigSubSampleDO::getId, ConfigSubSampleMethodDO::getConfigSubSampleId)
.selectAll(ConfigSubSampleMethodDO.class)
.selectAs(ConfigSubSampleParentMethodDO::getConfigAssayMethodId, ConfigSubSampleMethodExtendRespVO::getConfigAssayMethodId)
.selectAs(ConfigSubSampleParentMethodDO::getIsDefaultUse, ConfigSubSampleMethodExtendRespVO::getIsDefaultUse)
.selectAs(ConfigSubSampleDO::getConfigSubSampleParentId, ConfigSubSampleMethodExtendRespVO::getConfigSubSampleParentId)
.selectAs(ConfigSubSampleDO::getConfigBaseSampleId, ConfigSubSampleMethodExtendRespVO::getConfigBaseSampleId)
.selectAs(ConfigSubSampleDO::getBaseSampleId, ConfigSubSampleMethodExtendRespVO::getBaseSampleId)
.eq(ConfigSubSampleDO::getBaseSampleId, baseSampleId));
}
} }

View File

@@ -202,6 +202,13 @@ public class ReportDocumentDataServiceImpl implements ReportDocumentDataService
if(!ObjectUtils.isEmpty(maxRowCountStr)) maxRowCount = Integer.parseInt(maxRowCountStr); if(!ObjectUtils.isEmpty(maxRowCountStr)) maxRowCount = Integer.parseInt(maxRowCountStr);
int rowLength = rowList.size(); int rowLength = rowList.size();
if(rowLength <= maxRowCount){ if(rowLength <= maxRowCount){
//以下为空白
if(rowList.size() < maxRowCount){
JSONObject t = new JSONObject();
t.put(colPrefix + "01", emptyText);
putEmptyData(t, 2,10);
rowList.add(t.clone());
}
pageRowList.add(rowList); pageRowList.add(rowList);
return assemblePageResult(mainData, pageRowList, maxRowCount); return assemblePageResult(mainData, pageRowList, maxRowCount);
} }

View File

@@ -214,9 +214,17 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService,
//委托单号 //委托单号
String entrustCode = ""; String entrustCode = "";
if(!ObjectUtils.isEmpty(entrustList)){ if(!ObjectUtils.isEmpty(entrustList)){
for(BusinessSampleEntrustRegistrationDO entrust : entrustList){ for(BusinessSampleEntrustRegistrationDO entrust : entrustList){
entrustCode += entrust.getEntrustNumber() + ","; entrustCode += entrust.getEntrustNumber() + ",";
String externalInfomation = entrust.getExternalInfomation();
if(!ObjectUtils.isEmpty(externalInfomation)){
JSONObject externalInfomationJson = JSONObject.parseObject(externalInfomation);
String sampleCategory = externalInfomationJson.getString("sampleCategory");
if(!ObjectUtils.isEmpty(sampleCategory))
formDataJson.put("sampleCategory", sampleCategory);
}
break; break;
} }
} }
@@ -501,7 +509,7 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService,
private void assembleSignature(String currentActivityId, ReportDocumentMainDO entity){ private void assembleSignature(String currentActivityId, ReportDocumentMainDO entity){
if(ObjectUtils.isEmpty(currentActivityId) || "null".equals(currentActivityId)) if(ObjectUtils.isEmpty(currentActivityId) || "null".equals(currentActivityId))
return; return;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String sign = entity.getDocumentSignature(); String sign = entity.getDocumentSignature();
JSONObject signObj = new JSONObject(); JSONObject signObj = new JSONObject();
if(!ObjectUtils.isEmpty( sign)) if(!ObjectUtils.isEmpty( sign))

View File

@@ -9,6 +9,7 @@ import org.springframework.stereotype.Component;
import com.alibaba.qlexpress4.Express4Runner; import com.alibaba.qlexpress4.Express4Runner;
import com.alibaba.qlexpress4.QLOptions; import com.alibaba.qlexpress4.QLOptions;
import com.alibaba.qlexpress4.QLResult;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -87,8 +88,8 @@ public class AllowanceCalculatorComponent {
try { try {
// Object result = expressRunner.execute(formula, context, null, true, false); // Object result = expressRunner.execute(formula, context, null, true, false);
Object result = express4Runner.execute(formula, context, QLOptions.builder().precise(true).build()); QLResult execute = express4Runner.execute(formula, context, QLOptions.builder().precise(true).build());
Object result = execute.getResult();
if (result == null) { if (result == null) {
throw new RuntimeException("Express 公式返回结果为 null"); throw new RuntimeException("Express 公式返回结果为 null");
} }

View File

@@ -3,6 +3,7 @@ package com.zt.plat.module.qms.framework.datapermission;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.handler.MultiDataPermissionHandler; import com.baomidou.mybatisplus.extension.plugins.handler.MultiDataPermissionHandler;
import com.zt.plat.framework.common.biz.system.permission.PermissionCommonApi; import com.zt.plat.framework.common.biz.system.permission.PermissionCommonApi;
import com.zt.plat.framework.common.biz.system.permission.dto.DeptDataPermissionRespDTO; import com.zt.plat.framework.common.biz.system.permission.dto.DeptDataPermissionRespDTO;
@@ -102,15 +103,13 @@ public class QMSMultiDataPermissionHandler implements MultiDataPermissionHandler
if(!ObjectUtil.isEmpty(moduleDataRoleCodes)){ if(!ObjectUtil.isEmpty(moduleDataRoleCodes)){
allRoleCode.addAll(Arrays.asList(moduleDataRoleCodes.split( ","))); allRoleCode.addAll(Arrays.asList(moduleDataRoleCodes.split( ",")));
} }
//查询角色 String roleCodes = CollUtil.join(allRoleCode, ",");
String tableName = MyBatisUtils.getTableName(table); String tableName = MyBatisUtils.getTableName(table);
Alias tableAlias = table.getAlias(); Alias tableAlias = table.getAlias();
DeptDataPermissionRespDTO qmsDataPermission = loginUser.getContext(QMS_PERMISSION_CONTEXT_KEY, DeptDataPermissionRespDTO.class); DeptDataPermissionRespDTO qmsDataPermission = loginUser.getContext(QMS_PERMISSION_CONTEXT_KEY, DeptDataPermissionRespDTO.class);
if(qmsDataPermission == null){ if(qmsDataPermission == null){
try{ try{
DeptContextHolder.setRoleCodeList(allRoleCode); qmsDataPermission = permissionApi.getDeptDataPermissionWithRoleCodes(loginUser.getId(), roleCodes).getCheckedData();
qmsDataPermission = permissionApi.getDeptDataPermission(loginUser.getId()).getCheckedData();
}catch (Exception e){ }catch (Exception e){
log.error("[getExpression][LoginUser({}) 获取角色权限为 null]", JsonUtils.toJsonString(loginUser)); log.error("[getExpression][LoginUser({}) 获取角色权限为 null]", JsonUtils.toJsonString(loginUser));
log.error("", e); log.error("", e);

View File

@@ -13,7 +13,7 @@ import org.springframework.context.annotation.Configuration;
import java.util.List; import java.util.List;
//@Configuration @Configuration
public class QMSDataPermissionConfig implements SmartInitializingSingleton { public class QMSDataPermissionConfig implements SmartInitializingSingleton {
@Autowired @Autowired
private MybatisPlusInterceptor mybatisPlusInterceptor; private MybatisPlusInterceptor mybatisPlusInterceptor;

View File

@@ -58,14 +58,14 @@ public class SupplierController extends AbstractFileUploadController implements
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建供应商") @Operation(summary = "创建供应商")
@PreAuthorize("@ss.hasPermission('qms:supplier:create')") // @PreAuthorize("@ss.hasPermission('qms:supplier:create')")
public CommonResult<SupplierRespVO> createSupplier(@Valid @RequestBody SupplierSaveReqVO createReqVO) { public CommonResult<SupplierRespVO> createSupplier(@Valid @RequestBody SupplierSaveReqVO createReqVO) {
return success(supplierService.createSupplier(createReqVO)); return success(supplierService.createSupplier(createReqVO));
} }
@PutMapping("/update") @PutMapping("/update")
@Operation(summary = "更新供应商") @Operation(summary = "更新供应商")
@PreAuthorize("@ss.hasPermission('qms:supplier:update')") // @PreAuthorize("@ss.hasPermission('qms:supplier:update')")
public CommonResult<Boolean> updateSupplier(@Valid @RequestBody SupplierSaveReqVO updateReqVO) { public CommonResult<Boolean> updateSupplier(@Valid @RequestBody SupplierSaveReqVO updateReqVO) {
supplierService.updateSupplier(updateReqVO); supplierService.updateSupplier(updateReqVO);
return success(true); return success(true);
@@ -74,7 +74,7 @@ public class SupplierController extends AbstractFileUploadController implements
@DeleteMapping("/delete") @DeleteMapping("/delete")
@Operation(summary = "删除供应商") @Operation(summary = "删除供应商")
@Parameter(name = "id", description = "编号", required = true) @Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('qms:supplier:delete')") // @PreAuthorize("@ss.hasPermission('qms:supplier:delete')")
public CommonResult<Boolean> deleteSupplier(@RequestParam("id") Long id) { public CommonResult<Boolean> deleteSupplier(@RequestParam("id") Long id) {
supplierService.deleteSupplier(id); supplierService.deleteSupplier(id);
return success(true); return success(true);
@@ -92,7 +92,7 @@ public class SupplierController extends AbstractFileUploadController implements
@GetMapping("/get") @GetMapping("/get")
@Operation(summary = "获得供应商") @Operation(summary = "获得供应商")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('qms:supplier:query')") // @PreAuthorize("@ss.hasPermission('qms:supplier:query')")
public CommonResult<SupplierExtendRespVO> getSupplier(@RequestParam("id") Long id) { public CommonResult<SupplierExtendRespVO> getSupplier(@RequestParam("id") Long id) {
SupplierExtendRespVO supplier = supplierService.getSupplier(id); SupplierExtendRespVO supplier = supplierService.getSupplier(id);
return success(supplier); return success(supplier);
@@ -100,7 +100,7 @@ public class SupplierController extends AbstractFileUploadController implements
@GetMapping("/page") @GetMapping("/page")
@Operation(summary = "获得供应商分页") @Operation(summary = "获得供应商分页")
@PreAuthorize("@ss.hasPermission('qms:supplier:query')") // @PreAuthorize("@ss.hasPermission('qms:supplier:query')")
public CommonResult<PageResult<SupplierRespVO>> getSupplierPage(@Valid SupplierPageReqVO pageReqVO) { public CommonResult<PageResult<SupplierRespVO>> getSupplierPage(@Valid SupplierPageReqVO pageReqVO) {
PageResult<SupplierDO> pageResult = supplierService.getSupplierPage(pageReqVO); PageResult<SupplierDO> pageResult = supplierService.getSupplierPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, SupplierRespVO.class)); return success(BeanUtils.toBean(pageResult, SupplierRespVO.class));

View File

@@ -40,12 +40,21 @@ public interface SupplierMapper extends BaseMapperX<SupplierDO> {
default SupplierExtendRespVO selectOneWithCertifications(Long id) { default SupplierExtendRespVO selectOneWithCertifications(Long id) {
return selectJoinOne(SupplierExtendRespVO.class, return selectJoinOne(SupplierExtendRespVO.class,
// new MPJLambdaWrapperX<SupplierDO>()
// .selectAll(SupplierDO.class)
// .selectCollection(SupplierPropertiesDO.class, SupplierExtendRespVO::getSupplierPropertiesList)
// .leftJoin(SupplierPropertiesDO.class, SupplierPropertiesDO::getSupplierId, SupplierDO::getId)
// .eq(SupplierDO::getId, id)
//// .eq(SupplierPropertiesDO::getBusinessType, QmsSupplierConstant.CERTIFICATION_KEY)
new MPJLambdaWrapperX<SupplierDO>() new MPJLambdaWrapperX<SupplierDO>()
.selectAll(SupplierDO.class) .selectAll(SupplierDO.class)
.selectCollection(SupplierPropertiesDO.class, SupplierExtendRespVO::getSupplierPropertiesList) .selectCollection(SupplierPropertiesDO.class, SupplierExtendRespVO::getSupplierPropertiesList)
.leftJoin(SupplierPropertiesDO.class, SupplierPropertiesDO::getSupplierId, SupplierDO::getId) // 将关联条件写在一个 on() 方法内
.eq(SupplierDO::getId, id) .leftJoin(SupplierPropertiesDO.class, on -> on
.eq(SupplierPropertiesDO::getSupplierId, SupplierDO::getId)
.eq(SupplierPropertiesDO::getBusinessType, QmsSupplierConstant.CERTIFICATION_KEY) .eq(SupplierPropertiesDO::getBusinessType, QmsSupplierConstant.CERTIFICATION_KEY)
) // 注意这里移除了之前的 .eq 条件
.eq(SupplierDO::getId, id)
); );
} }

View File

@@ -1,5 +1,6 @@
package com.zt.plat.module.qms.resource.device.controller.admin; package com.zt.plat.module.qms.resource.device.controller.admin;
import com.alibaba.fastjson.JSONObject;
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyPageReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyPageReqVO;
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyRespVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyRespVO;
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplySaveReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplySaveReqVO;
@@ -52,15 +53,31 @@ public class DeviceApplyController extends AbstractFileUploadController implemen
} }
} }
@Resource @Resource private DeviceApplyService deviceApplyService;
private DeviceApplyService deviceApplyService;
//todo 通过设备通用流程配置创建 @RequestMapping("/createTempData")
@PostMapping("/create") @Operation(summary = "创建临时数据")
@Operation(summary = "创建设备通用流程,验收、降级、停用、报废、还原、启用") public CommonResult<DeviceApplyRespVO> createTempData(@RequestBody DeviceApplySaveReqVO createReqVO) {
// @PreAuthorize("@ss.hasPermission('qms:device-apply:create')") return deviceApplyService.createTempData(createReqVO);
public CommonResult<DeviceApplyRespVO> createDeviceApply(@Valid @RequestBody DeviceApplySaveReqVO createReqVO) { }
return success(deviceApplyService.createDeviceApply(createReqVO));
@RequestMapping("/saveDeviceApply")
@Operation(summary = "保存申请数据")
public CommonResult<Boolean> saveDeviceApply(@Valid @RequestBody DeviceApplySaveReqVO createReqVO) {
return deviceApplyService.saveDeviceApply(createReqVO);
}
@RequestMapping("/addDetail")
@Operation(summary = "增加明细")
public CommonResult<Boolean> addDetail(@RequestBody JSONObject param) {
return deviceApplyService.addDetail(param);
}
@RequestMapping("/removeDetail")
@Operation(summary = "删除明细")
public CommonResult<Boolean> removeDetail(@RequestBody JSONObject param) {
return deviceApplyService.removeDetail(param);
} }
@PutMapping("/update") @PutMapping("/update")

View File

@@ -1,8 +1,7 @@
package com.zt.plat.module.qms.resource.device.controller.admin; package com.zt.plat.module.qms.resource.device.controller.admin;
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyDetailPageReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.*;
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyDetailRespVO; import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceApplyDO;
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyDetailSaveReqVO;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -55,6 +54,13 @@ public class DeviceApplyDetailController extends AbstractFileUploadController im
@Resource @Resource
private DeviceApplyDetailService deviceApplyDetailService; private DeviceApplyDetailService deviceApplyDetailService;
@GetMapping("/list")
@Operation(summary = "获得设备通用流程分页")
public CommonResult<List<DeviceApplyDetailRespVO>> list(DeviceApplyDetailPageReqVO reqVO) {
List<DeviceApplyDetailDO> list = deviceApplyDetailService.selectList(reqVO);
return success(BeanUtils.toBean(list, DeviceApplyDetailRespVO.class));
}
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建设备通用流程明细") @Operation(summary = "创建设备通用流程明细")
@PreAuthorize("@ss.hasPermission('qms:device-apply-detail:create')") @PreAuthorize("@ss.hasPermission('qms:device-apply-detail:create')")

View File

@@ -57,14 +57,14 @@ public class DeviceConfigBusinessItemController extends AbstractFileUploadContro
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建设备-检查项目配置") @Operation(summary = "创建设备-检查项目配置")
@PreAuthorize("@ss.hasPermission('qms:device-config-business-item:create')") // @PreAuthorize("@ss.hasPermission('qms:device-config-business-item:create')")
public CommonResult<DeviceConfigBusinessItemRespVO> createDeviceConfigBusinessItem(@Valid @RequestBody DeviceConfigBusinessItemSaveReqVO createReqVO) { public CommonResult<DeviceConfigBusinessItemRespVO> createDeviceConfigBusinessItem(@Valid @RequestBody DeviceConfigBusinessItemSaveReqVO createReqVO) {
return success(deviceConfigBusinessItemService.createDeviceConfigBusinessItem(createReqVO)); return success(deviceConfigBusinessItemService.createDeviceConfigBusinessItem(createReqVO));
} }
@PutMapping("/update") @PutMapping("/update")
@Operation(summary = "更新设备-检查项目配置") @Operation(summary = "更新设备-检查项目配置")
@PreAuthorize("@ss.hasPermission('qms:device-config-business-item:update')") // @PreAuthorize("@ss.hasPermission('qms:device-config-business-item:update')")
public CommonResult<Boolean> updateDeviceConfigBusinessItem(@Valid @RequestBody DeviceConfigBusinessItemSaveReqVO updateReqVO) { public CommonResult<Boolean> updateDeviceConfigBusinessItem(@Valid @RequestBody DeviceConfigBusinessItemSaveReqVO updateReqVO) {
deviceConfigBusinessItemService.updateDeviceConfigBusinessItem(updateReqVO); deviceConfigBusinessItemService.updateDeviceConfigBusinessItem(updateReqVO);
return success(true); return success(true);
@@ -73,7 +73,7 @@ public class DeviceConfigBusinessItemController extends AbstractFileUploadContro
@DeleteMapping("/delete") @DeleteMapping("/delete")
@Operation(summary = "删除设备-检查项目配置") @Operation(summary = "删除设备-检查项目配置")
@Parameter(name = "id", description = "编号", required = true) @Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('qms:device-config-business-item:delete')") // @PreAuthorize("@ss.hasPermission('qms:device-config-business-item:delete')")
public CommonResult<Boolean> deleteDeviceConfigBusinessItem(@RequestParam("id") Long id) { public CommonResult<Boolean> deleteDeviceConfigBusinessItem(@RequestParam("id") Long id) {
deviceConfigBusinessItemService.deleteDeviceConfigBusinessItem(id); deviceConfigBusinessItemService.deleteDeviceConfigBusinessItem(id);
return success(true); return success(true);
@@ -82,7 +82,7 @@ public class DeviceConfigBusinessItemController extends AbstractFileUploadContro
@DeleteMapping("/delete-list") @DeleteMapping("/delete-list")
@Parameter(name = "ids", description = "编号", required = true) @Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除设备-检查项目配置") @Operation(summary = "批量删除设备-检查项目配置")
@PreAuthorize("@ss.hasPermission('qms:device-config-business-item:delete')") // @PreAuthorize("@ss.hasPermission('qms:device-config-business-item:delete')")
public CommonResult<Boolean> deleteDeviceConfigBusinessItemList(@RequestBody BatchDeleteReqVO req) { public CommonResult<Boolean> deleteDeviceConfigBusinessItemList(@RequestBody BatchDeleteReqVO req) {
deviceConfigBusinessItemService.deleteDeviceConfigBusinessItemListByIds(req.getIds()); deviceConfigBusinessItemService.deleteDeviceConfigBusinessItemListByIds(req.getIds());
return success(true); return success(true);
@@ -91,7 +91,7 @@ public class DeviceConfigBusinessItemController extends AbstractFileUploadContro
@GetMapping("/get") @GetMapping("/get")
@Operation(summary = "获得设备-检查项目配置") @Operation(summary = "获得设备-检查项目配置")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('qms:device-config-business-item:query')") // @PreAuthorize("@ss.hasPermission('qms:device-config-business-item:query')")
public CommonResult<DeviceConfigBusinessItemRespVO> getDeviceConfigBusinessItem(@RequestParam("id") Long id) { public CommonResult<DeviceConfigBusinessItemRespVO> getDeviceConfigBusinessItem(@RequestParam("id") Long id) {
DeviceConfigBusinessItemDO deviceConfigBusinessItem = deviceConfigBusinessItemService.getDeviceConfigBusinessItem(id); DeviceConfigBusinessItemDO deviceConfigBusinessItem = deviceConfigBusinessItemService.getDeviceConfigBusinessItem(id);
return success(BeanUtils.toBean(deviceConfigBusinessItem, DeviceConfigBusinessItemRespVO.class)); return success(BeanUtils.toBean(deviceConfigBusinessItem, DeviceConfigBusinessItemRespVO.class));
@@ -99,7 +99,7 @@ public class DeviceConfigBusinessItemController extends AbstractFileUploadContro
@GetMapping("/page") @GetMapping("/page")
@Operation(summary = "获得设备-检查项目配置分页") @Operation(summary = "获得设备-检查项目配置分页")
@PreAuthorize("@ss.hasPermission('qms:device-config-business-item:query')") // @PreAuthorize("@ss.hasPermission('qms:device-config-business-item:query')")
public CommonResult<PageResult<DeviceConfigBusinessItemRespVO>> getDeviceConfigBusinessItemPage(@Valid DeviceConfigBusinessItemPageReqVO pageReqVO) { public CommonResult<PageResult<DeviceConfigBusinessItemRespVO>> getDeviceConfigBusinessItemPage(@Valid DeviceConfigBusinessItemPageReqVO pageReqVO) {
PageResult<DeviceConfigBusinessItemDO> pageResult = deviceConfigBusinessItemService.getDeviceConfigBusinessItemPage(pageReqVO); PageResult<DeviceConfigBusinessItemDO> pageResult = deviceConfigBusinessItemService.getDeviceConfigBusinessItemPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, DeviceConfigBusinessItemRespVO.class)); return success(BeanUtils.toBean(pageResult, DeviceConfigBusinessItemRespVO.class));
@@ -107,7 +107,7 @@ public class DeviceConfigBusinessItemController extends AbstractFileUploadContro
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出设备-检查项目配置 Excel") @Operation(summary = "导出设备-检查项目配置 Excel")
@PreAuthorize("@ss.hasPermission('qms:device-config-business-item:export')") // @PreAuthorize("@ss.hasPermission('qms:device-config-business-item:export')")
@ApiAccessLog(operateType = EXPORT) @ApiAccessLog(operateType = EXPORT)
public void exportDeviceConfigBusinessItemExcel(@Valid DeviceConfigBusinessItemPageReqVO pageReqVO, public void exportDeviceConfigBusinessItemExcel(@Valid DeviceConfigBusinessItemPageReqVO pageReqVO,
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {

View File

@@ -55,14 +55,14 @@ public class DeviceConfigFlowController implements BusinessControllerMarker {
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建设备通用流程配置") @Operation(summary = "创建设备通用流程配置")
@PreAuthorize("@ss.hasPermission('qms:device-config-flow:create')") // @PreAuthorize("@ss.hasPermission('qms:device-config-flow:create')")
public CommonResult<DeviceConfigFlowRespVO> createDeviceConfigFlow(@Valid @RequestBody DeviceConfigFlowSaveReqVO createReqVO) { public CommonResult<DeviceConfigFlowRespVO> createDeviceConfigFlow(@Valid @RequestBody DeviceConfigFlowSaveReqVO createReqVO) {
return success(deviceConfigFlowService.createDeviceConfigFlow(createReqVO)); return success(deviceConfigFlowService.createDeviceConfigFlow(createReqVO));
} }
@PutMapping("/update") @PutMapping("/update")
@Operation(summary = "更新设备通用流程配置") @Operation(summary = "更新设备通用流程配置")
@PreAuthorize("@ss.hasPermission('qms:device-config-flow:update')") // @PreAuthorize("@ss.hasPermission('qms:device-config-flow:update')")
public CommonResult<Boolean> updateDeviceConfigFlow(@Valid @RequestBody DeviceConfigFlowSaveReqVO updateReqVO) { public CommonResult<Boolean> updateDeviceConfigFlow(@Valid @RequestBody DeviceConfigFlowSaveReqVO updateReqVO) {
deviceConfigFlowService.updateDeviceConfigFlow(updateReqVO); deviceConfigFlowService.updateDeviceConfigFlow(updateReqVO);
return success(true); return success(true);
@@ -71,7 +71,7 @@ public class DeviceConfigFlowController implements BusinessControllerMarker {
@DeleteMapping("/delete") @DeleteMapping("/delete")
@Operation(summary = "删除设备通用流程配置") @Operation(summary = "删除设备通用流程配置")
@Parameter(name = "id", description = "编号", required = true) @Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('qms:device-config-flow:delete')") // @PreAuthorize("@ss.hasPermission('qms:device-config-flow:delete')")
public CommonResult<Boolean> deleteDeviceConfigFlow(@RequestParam("id") Long id) { public CommonResult<Boolean> deleteDeviceConfigFlow(@RequestParam("id") Long id) {
deviceConfigFlowService.deleteDeviceConfigFlow(id); deviceConfigFlowService.deleteDeviceConfigFlow(id);
return success(true); return success(true);
@@ -80,7 +80,7 @@ public class DeviceConfigFlowController implements BusinessControllerMarker {
@DeleteMapping("/delete-list") @DeleteMapping("/delete-list")
@Parameter(name = "ids", description = "编号", required = true) @Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除设备通用流程配置") @Operation(summary = "批量删除设备通用流程配置")
@PreAuthorize("@ss.hasPermission('qms:device-config-flow:delete')") // @PreAuthorize("@ss.hasPermission('qms:device-config-flow:delete')")
public CommonResult<Boolean> deleteDeviceConfigFlowList(@RequestBody BatchDeleteReqVO req) { public CommonResult<Boolean> deleteDeviceConfigFlowList(@RequestBody BatchDeleteReqVO req) {
deviceConfigFlowService.deleteDeviceConfigFlowListByIds(req.getIds()); deviceConfigFlowService.deleteDeviceConfigFlowListByIds(req.getIds());
return success(true); return success(true);
@@ -89,7 +89,7 @@ public class DeviceConfigFlowController implements BusinessControllerMarker {
@GetMapping("/get") @GetMapping("/get")
@Operation(summary = "获得设备通用流程配置") @Operation(summary = "获得设备通用流程配置")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('qms:device-config-flow:query')") // @PreAuthorize("@ss.hasPermission('qms:device-config-flow:query')")
public CommonResult<DeviceConfigFlowRespVO> getDeviceConfigFlow(@RequestParam("id") Long id) { public CommonResult<DeviceConfigFlowRespVO> getDeviceConfigFlow(@RequestParam("id") Long id) {
DeviceConfigFlowDO deviceConfigFlow = deviceConfigFlowService.getDeviceConfigFlow(id); DeviceConfigFlowDO deviceConfigFlow = deviceConfigFlowService.getDeviceConfigFlow(id);
return success(BeanUtils.toBean(deviceConfigFlow, DeviceConfigFlowRespVO.class)); return success(BeanUtils.toBean(deviceConfigFlow, DeviceConfigFlowRespVO.class));
@@ -104,7 +104,7 @@ public class DeviceConfigFlowController implements BusinessControllerMarker {
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出设备通用流程配置 Excel") @Operation(summary = "导出设备通用流程配置 Excel")
@PreAuthorize("@ss.hasPermission('qms:device-config-flow:export')") // @PreAuthorize("@ss.hasPermission('qms:device-config-flow:export')")
@ApiAccessLog(operateType = EXPORT) @ApiAccessLog(operateType = EXPORT)
public void exportDeviceConfigFlowExcel(@Valid DeviceConfigFlowPageReqVO pageReqVO, public void exportDeviceConfigFlowExcel(@Valid DeviceConfigFlowPageReqVO pageReqVO,
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {

View File

@@ -35,4 +35,7 @@ public class DeviceApplyDetailPageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime; private LocalDateTime[] createTime;
//扩展字段
@Schema(description = "设备id列表")
private List<Long> deviceInfoIdList;
} }

View File

@@ -1,5 +1,6 @@
package com.zt.plat.module.qms.resource.device.controller.vo; package com.zt.plat.module.qms.resource.device.controller.vo;
import com.zt.plat.module.qms.core.aspect.annotation.Dict;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
@@ -49,6 +50,7 @@ public class DeviceApplyRespVO {
@Schema(description = "业务状态", example = "1") @Schema(description = "业务状态", example = "1")
@ExcelProperty("业务状态") @ExcelProperty("业务状态")
@Dict(dicCode = "flow_status")
private String businessStatus; private String businessStatus;
@Schema(description = "借用人") @Schema(description = "借用人")

View File

@@ -45,7 +45,7 @@ public class DeviceApplyDO extends BusinessBaseDO {
* 申请部门ID * 申请部门ID
*/ */
@TableField("APL_DEPT") @TableField("APL_DEPT")
private String applyDepartment; private Long applyDepartment;
/** /**
* 申请人 * 申请人
*/ */
@@ -55,7 +55,7 @@ public class DeviceApplyDO extends BusinessBaseDO {
* 申请人ID * 申请人ID
*/ */
@TableField("APL_USER") @TableField("APL_USER")
private String applyUser; private Long applyUser;
/** /**
* 业务编码 * 业务编码
*/ */
@@ -115,7 +115,7 @@ public class DeviceApplyDO extends BusinessBaseDO {
* 表单模板ID * 表单模板ID
*/ */
@TableField("TMPL_ID") @TableField("TMPL_ID")
private String templateId; private Long templateId;
/** /**
* 表单组件 * 表单组件
*/ */

View File

@@ -7,6 +7,8 @@ import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceApplyDetailDO
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyDetailPageReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyDetailPageReqVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/** /**
* 设备通用流程明细 Mapper * 设备通用流程明细 Mapper
* *
@@ -27,4 +29,18 @@ public interface DeviceApplyDetailMapper extends BaseMapperX<DeviceApplyDetailDO
.orderByDesc(DeviceApplyDetailDO::getId)); .orderByDesc(DeviceApplyDetailDO::getId));
} }
default List<DeviceApplyDetailDO> selectList(DeviceApplyDetailPageReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<DeviceApplyDetailDO>()
.eqIfPresent(DeviceApplyDetailDO::getApplyId, reqVO.getApplyId())
.eqIfPresent(DeviceApplyDetailDO::getDeviceInfomationId, reqVO.getDeviceInfomationId())
.inIfPresent(DeviceApplyDetailDO::getDeviceInfomationId, reqVO.getDeviceInfoIdList())
.eqIfPresent(DeviceApplyDetailDO::getDeviceBorrowDetailId, reqVO.getDeviceBorrowDetailId())
.eqIfPresent(DeviceApplyDetailDO::getFormData, reqVO.getFormData())
.eqIfPresent(DeviceApplyDetailDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode())
.eqIfPresent(DeviceApplyDetailDO::getRemark, reqVO.getRemark())
.betweenIfPresent(DeviceApplyDetailDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(DeviceApplyDetailDO::getId));
}
} }

View File

@@ -4,10 +4,14 @@ import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX;
import com.zt.plat.module.qms.core.aspect.annotation.QmsPermission; import com.zt.plat.module.qms.core.aspect.annotation.QmsPermission;
import com.zt.plat.module.qms.enums.QmsCommonConstant;
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyPageReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyPageReqVO;
import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceApplyDO; import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceApplyDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import static com.zt.plat.module.qms.enums.QmsPermissionConstant.DEPT_DATA_AND_SUB;
import static com.zt.plat.module.qms.enums.QmsPermissionConstant.DEVICE_MANAGER;
/** /**
* 设备通用流程,验收、降级、停用、报废、还原、启用 Mapper * 设备通用流程,验收、降级、停用、报废、还原、启用 Mapper
* *
@@ -16,10 +20,11 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface DeviceApplyMapper extends BaseMapperX<DeviceApplyDO> { public interface DeviceApplyMapper extends BaseMapperX<DeviceApplyDO> {
@QmsPermission @QmsPermission(deptDataRoleCodes = DEPT_DATA_AND_SUB, moduleDataRoleCodes = DEVICE_MANAGER)
default PageResult<DeviceApplyDO> selectPage(DeviceApplyPageReqVO reqVO) { default PageResult<DeviceApplyDO> selectPage(DeviceApplyPageReqVO reqVO) {
LambdaQueryWrapperX<DeviceApplyDO> wrapper = new LambdaQueryWrapperX<>(); LambdaQueryWrapperX<DeviceApplyDO> wrapper = new LambdaQueryWrapperX<>();
wrapper.likeIfPresent(DeviceApplyDO::getBusinessName, reqVO.getBusinessName()) wrapper.neIfPresent(DeviceApplyDO::getBusinessStatus, QmsCommonConstant.TEMP_DATA_CODE)
.likeIfPresent(DeviceApplyDO::getBusinessName, reqVO.getBusinessName())
.likeIfPresent(DeviceApplyDO::getApplyDepartmentName, reqVO.getApplyDepartmentName()) .likeIfPresent(DeviceApplyDO::getApplyDepartmentName, reqVO.getApplyDepartmentName())
.eqIfPresent(DeviceApplyDO::getApplyDepartment, reqVO.getApplyDepartment()) .eqIfPresent(DeviceApplyDO::getApplyDepartment, reqVO.getApplyDepartment())
.likeIfPresent(DeviceApplyDO::getApplyUserName, reqVO.getApplyUserName()) .likeIfPresent(DeviceApplyDO::getApplyUserName, reqVO.getApplyUserName())

View File

@@ -13,6 +13,9 @@ import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import static com.zt.plat.module.qms.enums.QmsPermissionConstant.DEPT_DATA_AND_SUB;
import static com.zt.plat.module.qms.enums.QmsPermissionConstant.DEVICE_MANAGER;
/** /**
* 设备-设备信息 Mapper * 设备-设备信息 Mapper
* *
@@ -21,7 +24,7 @@ import java.util.Map;
@Mapper @Mapper
public interface DeviceInfomationMapper extends BaseMapperX<DeviceInfomationDO> { public interface DeviceInfomationMapper extends BaseMapperX<DeviceInfomationDO> {
@QmsPermission(deptDataRoleCodes = "") // @QmsPermission(deptDataRoleCodes = DEPT_DATA_AND_SUB, moduleDataRoleCodes = DEVICE_MANAGER)
default PageResult<DeviceInfomationDO> selectPage(DeviceInfomationPageReqVO reqVO) { default PageResult<DeviceInfomationDO> selectPage(DeviceInfomationPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<DeviceInfomationDO>() return selectPage(reqVO, new LambdaQueryWrapperX<DeviceInfomationDO>()
.eqIfPresent(DeviceInfomationDO::getProductId, reqVO.getProductId()) .eqIfPresent(DeviceInfomationDO::getProductId, reqVO.getProductId())

View File

@@ -16,6 +16,10 @@ import com.zt.plat.framework.common.pojo.PageResult;
*/ */
public interface DeviceApplyDetailService { public interface DeviceApplyDetailService {
List<DeviceApplyDetailDO> selectList(DeviceApplyDetailPageReqVO reqVO);
void insertBatch(List<DeviceApplyDetailDO> list);
/** /**
* 创建设备通用流程明细 * 创建设备通用流程明细
* *

View File

@@ -6,6 +6,7 @@ import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyDetailRes
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyDetailSaveReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyDetailSaveReqVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import java.util.*; import java.util.*;
@@ -32,6 +33,17 @@ public class DeviceApplyDetailServiceImpl implements DeviceApplyDetailService {
@Resource @Resource
private DeviceApplyDetailMapper deviceApplyDetailMapper; private DeviceApplyDetailMapper deviceApplyDetailMapper;
@Override
public List<DeviceApplyDetailDO> selectList(DeviceApplyDetailPageReqVO reqVO) {
return deviceApplyDetailMapper.selectList(reqVO);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void insertBatch(List<DeviceApplyDetailDO> list) {
deviceApplyDetailMapper.insertBatch(list);
}
@Override @Override
public DeviceApplyDetailRespVO createDeviceApplyDetail(DeviceApplyDetailSaveReqVO createReqVO) { public DeviceApplyDetailRespVO createDeviceApplyDetail(DeviceApplyDetailSaveReqVO createReqVO) {
// 插入 // 插入

View File

@@ -2,6 +2,8 @@ package com.zt.plat.module.qms.resource.device.service;
import java.util.*; import java.util.*;
import com.alibaba.fastjson.JSONObject;
import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyPageReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyPageReqVO;
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyRespVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyRespVO;
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplySaveReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplySaveReqVO;
@@ -24,6 +26,17 @@ public interface DeviceApplyService {
*/ */
DeviceApplyRespVO createDeviceApply(@Valid DeviceApplySaveReqVO createReqVO); DeviceApplyRespVO createDeviceApply(@Valid DeviceApplySaveReqVO createReqVO);
//创建临时数据
CommonResult<DeviceApplyRespVO> createTempData(@Valid DeviceApplySaveReqVO createReqVO);
//增加明细
CommonResult<Boolean> addDetail(JSONObject param);
//删除明细
CommonResult<Boolean> removeDetail(JSONObject param);
CommonResult<Boolean> saveDeviceApply(@Valid DeviceApplySaveReqVO updateReqVO);
/** /**
* 更新设备通用流程,验收、降级、停用、报废、还原、启用 * 更新设备通用流程,验收、降级、停用、报废、还原、启用
* *
@@ -31,6 +44,7 @@ public interface DeviceApplyService {
*/ */
void updateDeviceApply(@Valid DeviceApplySaveReqVO updateReqVO); void updateDeviceApply(@Valid DeviceApplySaveReqVO updateReqVO);
/** /**
* 删除设备通用流程,验收、降级、停用、报废、还原、启用 * 删除设备通用流程,验收、降级、停用、报废、还原、启用
* *

View File

@@ -1,14 +1,36 @@
package com.zt.plat.module.qms.resource.device.service; package com.zt.plat.module.qms.resource.device.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.framework.security.core.LoginUser;
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
import com.zt.plat.module.qms.common.data.dal.dataobject.DataCollectionDO;
import com.zt.plat.module.qms.common.data.dal.dataobject.DataTemplateDO;
import com.zt.plat.module.qms.common.data.service.DataCollectionService;
import com.zt.plat.module.qms.common.data.service.DataTemplateService;
import com.zt.plat.module.qms.enums.QmsCommonConstant;
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyDetailPageReqVO;
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyPageReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyPageReqVO;
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyRespVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyRespVO;
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplySaveReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplySaveReqVO;
import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceApplyDetailDO;
import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceConfigFlowDO;
import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceInfomationDO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.PropertyUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import java.lang.reflect.InvocationTargetException;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceApplyDO; import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceApplyDO;
import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.pojo.PageResult;
@@ -27,10 +49,15 @@ import static com.zt.plat.module.qms.enums.ErrorCodeConstants.DEVICE_APPLY_NOT_E
*/ */
@Service @Service
@Validated @Validated
@Slf4j
public class DeviceApplyServiceImpl implements DeviceApplyService { public class DeviceApplyServiceImpl implements DeviceApplyService {
@Resource @Resource private DeviceApplyMapper deviceApplyMapper;
private DeviceApplyMapper deviceApplyMapper; @Resource private DeviceConfigFlowService deviceConfigFlowService;
@Resource private DeviceInfomationService deviceInfomationService;
@Resource private DeviceApplyDetailService deviceApplyDetailService;
@Resource private DataCollectionService dataCollectionService;
@Resource private DataTemplateService dataTemplateService;
@Override @Override
public DeviceApplyRespVO createDeviceApply(DeviceApplySaveReqVO createReqVO) { public DeviceApplyRespVO createDeviceApply(DeviceApplySaveReqVO createReqVO) {
@@ -41,6 +68,121 @@ public class DeviceApplyServiceImpl implements DeviceApplyService {
return BeanUtils.toBean(deviceApply, DeviceApplyRespVO.class); return BeanUtils.toBean(deviceApply, DeviceApplyRespVO.class);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public CommonResult<DeviceApplyRespVO> createTempData(DeviceApplySaveReqVO createReqVO) {
String businessType = createReqVO.getBusinessCode();
if(ObjectUtils.isEmpty(businessType))
return CommonResult.error(DEVICE_APPLY_NOT_EXISTS.getCode(), "请选择业务类型");
DeviceConfigFlowDO config = deviceConfigFlowService.getByBusinessType(businessType);
if(ObjectUtils.isEmpty(config))
return CommonResult.error(DEVICE_APPLY_NOT_EXISTS.getCode(), "业务类型配置不存在("+businessType+"),请联系管理员处理");
DeviceApplyDO deviceApply = BeanUtils.toBean(createReqVO, DeviceApplyDO.class);
if(!ObjectUtils.isEmpty(config.getTemplateKey())){
DataTemplateDO dataTemplate = dataTemplateService.getLatestDataByKey(config.getTemplateKey());
if(ObjectUtils.isEmpty(dataTemplate))
return CommonResult.error(DEVICE_APPLY_NOT_EXISTS.getCode(), "表单编辑器模板不存在("+config.getTemplateKey()+"),请联系管理员处理");
deviceApply.setTemplateId(dataTemplate.getId());
}
DataCollectionDO dataCollection = dataCollectionService.getLatestDataCollectionByKey(config.getDataCollectionKey());
if(ObjectUtils.isEmpty(dataCollection))
return CommonResult.error(DEVICE_APPLY_NOT_EXISTS.getCode(), "数据集不存在("+config.getDataCollectionKey()+"),请联系管理员处理");
deviceApply.setBusinessName(config.getBusinessName());
deviceApply.setDataCollectionId(dataCollection.getId());
//取当前用户
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
String nickName = SecurityFrameworkUtils.getLoginUserNickname();
deviceApply.setApplyUser(loginUser.getId());
deviceApply.setApplyUserName(nickName);
deviceApply.setApplyDepartment(loginUser.getVisitDeptId());
deviceApply.setApplyDepartmentName(loginUser.getVisitDeptName());
deviceApply.setBusinessStatus(QmsCommonConstant.TEMP_DATA_CODE);
deviceApplyMapper.insert(deviceApply);
// 返回
return CommonResult.success(BeanUtils.toBean(deviceApply, DeviceApplyRespVO.class));
}
//增加明细
@Override
@Transactional(rollbackFor = Exception.class)
public CommonResult<Boolean> addDetail(JSONObject param) {
String deviceIds = param.getString("deviceIds");
String applyId = param.getString("applyId");
if(ObjectUtils.isEmpty(deviceIds))
return CommonResult.error(DEVICE_APPLY_NOT_EXISTS.getCode(), "请选择设备");
if(ObjectUtils.isEmpty(applyId))
return CommonResult.error(DEVICE_APPLY_NOT_EXISTS.getCode(), "缺少申请id参数请刷新后重试");
List<DeviceInfomationDO> deviceList = deviceInfomationService.getListByIds(deviceIds);
if(deviceList.isEmpty())
return CommonResult.error(DEVICE_APPLY_NOT_EXISTS.getCode(), "设备不存在");
List<Long> deviceInfoIdList = new ArrayList<>();
for (DeviceInfomationDO device : deviceList) {
deviceInfoIdList.add(device.getId());
}
//查询已有明细,避免重复添加
DeviceApplyDetailPageReqVO detailPageReqVO = new DeviceApplyDetailPageReqVO();
detailPageReqVO.setApplyId(Long.valueOf(applyId));
detailPageReqVO.setDeviceInfoIdList(deviceInfoIdList);
List<DeviceApplyDetailDO> detailList = deviceApplyDetailService.selectList(detailPageReqVO);
//过滤已添加设备
List<DeviceInfomationDO> addDeviceList = deviceList.stream().filter(device ->
detailList.stream().noneMatch(detail -> detail.getDeviceInfomationId().equals(device.getId()))).toList();
List<DeviceApplyDetailDO> detailDOList = new ArrayList<>();
for (DeviceInfomationDO device : addDeviceList) {
DeviceApplyDetailDO detail = new DeviceApplyDetailDO();
detail.setApplyId(Long.valueOf(applyId));
detail.setDeviceInfomationId(device.getId());
detailDOList.add(detail);
}
deviceApplyDetailService.insertBatch(detailDOList);
return CommonResult.success(true);
}
@Override
public CommonResult<Boolean> removeDetail(JSONObject param) {
String detailIds = param.getString("detailIds");
if(ObjectUtils.isEmpty(detailIds))
return CommonResult.error(DEVICE_APPLY_NOT_EXISTS.getCode(), "请选择需要删除的明细数据");
List<Long> detailIdList = Arrays.stream(detailIds.split(",")).map(Long::valueOf).toList();
deviceApplyDetailService.deleteDeviceApplyDetailListByIds(detailIdList);
return CommonResult.success(true);
}
//保存
@Override
@Transactional(rollbackFor = Exception.class)
public CommonResult<Boolean> saveDeviceApply(DeviceApplySaveReqVO updateReqVO) {
// 校验存在
DeviceApplyDO backData = getDeviceApply(updateReqVO.getId());
if(backData == null)
throw exception(DEVICE_APPLY_NOT_EXISTS);
if(QmsCommonConstant.TEMP_DATA_CODE.equals(backData.getBusinessStatus())){
updateReqVO.setBusinessStatus(QmsCommonConstant.NOT_START);
}
//处理动态表单字段
String formData = updateReqVO.getFormData();
if(!ObjectUtils.isEmpty(formData)) {
assembleFormData(formData, updateReqVO);
}
// 更新
DeviceApplyDO updateObj = BeanUtils.toBean(updateReqVO, DeviceApplyDO.class);
deviceApplyMapper.updateById(updateObj);
return CommonResult.success(true);
}
private void assembleFormData(String formData, DeviceApplySaveReqVO updateReqVO){
JSONObject jsonObject = JSONObject.parseObject(formData);
DeviceApplySaveReqVO jsonVo = jsonObject.toJavaObject(DeviceApplySaveReqVO.class);
CopyOptions copyOptions = CopyOptions.create();
copyOptions.setIgnoreNullValue(true);
BeanUtil.copyProperties(jsonVo, updateReqVO, copyOptions);
}
@Override @Override
public void updateDeviceApply(DeviceApplySaveReqVO updateReqVO) { public void updateDeviceApply(DeviceApplySaveReqVO updateReqVO) {
// 校验存在 // 校验存在

View File

@@ -18,6 +18,8 @@ public interface DeviceConfigFlowService {
List<DeviceConfigFlowDO> getEnableList(DeviceConfigFlowPageReqVO pageReqVO); List<DeviceConfigFlowDO> getEnableList(DeviceConfigFlowPageReqVO pageReqVO);
DeviceConfigFlowDO getByBusinessType(String code);
/** /**
* 创建设备通用流程配置 * 创建设备通用流程配置
* *

View File

@@ -1,6 +1,7 @@
package com.zt.plat.module.qms.resource.device.service; package com.zt.plat.module.qms.resource.device.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceConfigFlowPageReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceConfigFlowPageReqVO;
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceConfigFlowRespVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceConfigFlowRespVO;
import com.zt.plat.module.qms.resource.device.controller.vo.DeviceConfigFlowSaveReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceConfigFlowSaveReqVO;
@@ -37,6 +38,15 @@ public class DeviceConfigFlowServiceImpl implements DeviceConfigFlowService {
return deviceConfigFlowMapper.selectList(pageReqVO); return deviceConfigFlowMapper.selectList(pageReqVO);
} }
@Override
public DeviceConfigFlowDO getByBusinessType(String code) {
LambdaQueryWrapper<DeviceConfigFlowDO> query = new LambdaQueryWrapper<>();
query.eq(DeviceConfigFlowDO::getBusinessType, code);
query.orderByDesc(DeviceConfigFlowDO::getUpdateTime);
query.last("limit 1");
return deviceConfigFlowMapper.selectOne(query);
}
@Override @Override
public DeviceConfigFlowRespVO createDeviceConfigFlow(DeviceConfigFlowSaveReqVO createReqVO) { public DeviceConfigFlowRespVO createDeviceConfigFlow(DeviceConfigFlowSaveReqVO createReqVO) {
// 插入 // 插入

View File

@@ -27,6 +27,7 @@ public interface DeviceInfomationService {
DeviceInfomationDO getByCode(String code); DeviceInfomationDO getByCode(String code);
List<DeviceInfomationDO> getListByProductIdList(List<Long> productIds); List<DeviceInfomationDO> getListByProductIdList(List<Long> productIds);
List<DeviceInfomationDO> getListByIds(String ids);
List<Long> getIdListByProductIdList(List<Long> productIds); List<Long> getIdListByProductIdList(List<Long> productIds);
@@ -47,11 +48,7 @@ public interface DeviceInfomationService {
// CommonResult<Boolean> updateDeviceAcceptFlag(Long deviceId, String acceptFlag); // CommonResult<Boolean> updateDeviceAcceptFlag(Long deviceId, String acceptFlag);
// CommonResult<Boolean> updateDeviceLendFlag(Long deviceId, Integer lendFlag); // CommonResult<Boolean> updateDeviceLendFlag(Long deviceId, Integer lendFlag);
void updateBatch(List<DeviceInfomationDO> updateList);
/** /**
* 创建设备-设备信息 * 创建设备-设备信息

Some files were not shown because too many files have changed in this diff Show More