From 55db6f66c093c07df100cb0e609091030c2a4925 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 24 九月 2026 09:19:20 +0800
Subject: [PATCH] feat(process): 完善检验委托单功能实现绑定和关联管理 - 实现检验委托单与成品下单的绑定功能,包括新增绑定、解除绑定和变更绑定关系 - 添加检验委托单关联状态查询和未绑定委托单筛选功能 - 实现检验委托单绑定日志记录和报告同步功能
---
cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderMapper.java | 8
cnas-process/src/main/resources/mapper/InspectionOrderMapper.xml | 50 +++
cnas-process/src/main/java/com/ruoyi/process/dto/InspectionOrderDto.java | 15 +
cnas-process/src/main/java/com/ruoyi/process/pojo/InspectionOrderBindLog.java | 41 +++
cnas-process/src/main/java/com/ruoyi/process/pojo/InspectionOrder.java | 12 +
cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderBindLogMapper.java | 10
cnas-process/src/main/java/com/ruoyi/process/aspect/InspectionOrderSyncAspect.java | 50 ++++
inspect-server/src/main/java/com/ruoyi/inspect/dto/InsPlaceOrderDto.java | 3
cnas-process/src/main/java/com/ruoyi/process/service/InspectionOrderService.java | 35 ++
cnas-process/src/main/java/com/ruoyi/process/service/impl/InspectionOrderServiceImpl.java | 393 +++++++++++++++++++++-----------
cnas-process/src/main/resources/static/inspection-order.docx | 0
inspect-server/src/main/resources/static/report-template.docx | 0
cnas-process/src/main/java/com/ruoyi/process/controller/InspectionOrderController.java | 51 ++-
13 files changed, 484 insertions(+), 184 deletions(-)
diff --git a/cnas-process/src/main/java/com/ruoyi/process/aspect/InspectionOrderSyncAspect.java b/cnas-process/src/main/java/com/ruoyi/process/aspect/InspectionOrderSyncAspect.java
new file mode 100644
index 0000000..250e978
--- /dev/null
+++ b/cnas-process/src/main/java/com/ruoyi/process/aspect/InspectionOrderSyncAspect.java
@@ -0,0 +1,50 @@
+package com.ruoyi.process.aspect;
+
+import com.ruoyi.inspect.pojo.InsOrder;
+import com.ruoyi.process.service.InspectionOrderService;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.annotation.AfterReturning;
+import org.aspectj.lang.annotation.Aspect;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * 鎴愬搧涓嬪崟鍜屾姤鍛婃祦绋嬪畬鎴愬悗锛屽悓姝ユ楠屽鎵樺崟涓殑琛嶇敓淇℃伅銆�
+ *
+ * cnas-process 渚濊禆 inspect-server锛屽洜姝ら�氳繃鍒囬潰鐩戝惉锛岄伩鍏� inspect-server
+ * 鍙嶅悜渚濊禆杩囩▼瑕佹眰妯″潡銆�
+ */
+@Aspect
+@Component
+@Slf4j
+public class InspectionOrderSyncAspect {
+
+ @Resource
+ private InspectionOrderService inspectionOrderService;
+
+ @AfterReturning(value = "execution(* com.ruoyi.inspect.service.impl.InsOrderServiceImpl.upInsOrderOfState(..)) && args(insOrder)")
+ public void syncEntrustCode(InsOrder insOrder) {
+ if (insOrder == null || !Integer.valueOf(1).equals(insOrder.getState())) {
+ return;
+ }
+ try {
+ inspectionOrderService.syncEntrustCode(insOrder.getId());
+ } catch (Exception e) {
+ log.error("鍚屾妫�楠屽鎵樺崟濮旀墭缂栧彿澶辫触锛屾垚鍝佷笅鍗旾D锛歿}", insOrder.getId(), e);
+ }
+ }
+
+ @AfterReturning(value = "execution(* com.ruoyi.inspect.service.impl.InsReportServiceImpl.ratifyReport(..)) && args(reportId, isRatify, ratifyTell)")
+ public void syncReportFile(Integer reportId, Integer isRatify, String ratifyTell) {
+ if (!Integer.valueOf(1).equals(isRatify)) {
+ return;
+ }
+ try {
+ inspectionOrderService.syncReportFile(reportId);
+ } catch (Exception e) {
+ // 鎶ュ憡鎵瑰噯涓嶈兘鍥犲鎵樺崟闄勪欢鍚屾澶辫触鑰屽洖婊氾紝淇濈暀鏃ュ織渚涘悗缁噸璇曘��
+ log.error("鍚屾妫�楠屽鎵樺崟鎶ュ憡澶辫触锛屾姤鍛奍D锛歿}", reportId, e);
+ }
+ }
+}
diff --git a/cnas-process/src/main/java/com/ruoyi/process/controller/InspectionOrderController.java b/cnas-process/src/main/java/com/ruoyi/process/controller/InspectionOrderController.java
index 06ada10..63b226d 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/controller/InspectionOrderController.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/controller/InspectionOrderController.java
@@ -3,8 +3,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
-import com.ruoyi.common.utils.JackSonUtil;
-import com.ruoyi.inspect.pojo.InsOrder;
+import com.ruoyi.inspect.dto.InsPlaceOrderDto;
import com.ruoyi.process.dto.InspectionOrderDto;
import com.ruoyi.process.pojo.InspectionOrder;
import com.ruoyi.process.service.InspectionOrderService;
@@ -13,9 +12,9 @@
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
+import org.springframework.security.access.prepost.PreAuthorize;
import javax.servlet.http.HttpServletResponse;
-import java.util.Map;
/**
* <p>
@@ -54,6 +53,32 @@
return Result.success(inspectionOrderService.addInspectionOrder(InspectionOrder));
}
+ @ApiOperation(value = "鏌ヨ鏈粦瀹氭楠屽鎵樺崟")
+ @GetMapping("/pageUnboundInspectionOrder")
+ public Result<IPage<InspectionOrder>> pageUnboundInspectionOrder(InspectionOrder inspectionOrder, Page page) {
+ return Result.success(inspectionOrderService.pageUnboundInspectionOrder(page, inspectionOrder));
+ }
+
+ @ApiOperation(value = "鑾峰彇鎴愬搧涓嬪崟鍏宠仈鐨勫鎵樺崟淇℃伅")
+ @GetMapping("/getInspectionOrderForPlaceOrder")
+ public Result<InspectionOrderDto> getInspectionOrderForPlaceOrder(Integer inspectionOrderId) {
+ return Result.success(inspectionOrderService.getInspectionOrderForPlaceOrder(inspectionOrderId));
+ }
+
+ @ApiOperation(value = "鏂板鎴愬搧涓嬪崟骞剁粦瀹氭楠屽鎵樺崟")
+ @PreAuthorize("@ss.hasPermi('add:insOrder')")
+ @PostMapping("/addInsOrderWithInspectionOrder")
+ public Result<Integer> addInsOrderWithInspectionOrder(@RequestBody InsPlaceOrderDto insPlaceOrderDto) {
+ return Result.success(inspectionOrderService.addInsOrderWithInspectionOrder(insPlaceOrderDto));
+ }
+
+ @ApiOperation(value = "鍙樻洿妫�楠屽鎵樺崟鍏宠仈")
+ @PreAuthorize("@ss.hasPermi('add:insOrder')")
+ @PostMapping("/changeBinding")
+ public Result changeBinding(Integer insOrderId, Integer inspectionOrderId, String reason) {
+ return Result.success(inspectionOrderService.changeBinding(insOrderId, inspectionOrderId, reason));
+ }
+
/**
* 濮旀墭鍗曟楠屼慨鏀�
* @return
@@ -82,26 +107,6 @@
@GetMapping("/getInspectionOrderOne")
public Result<InspectionOrderDto> getInspectionOrderOne(Integer inspectionOrderId){
return Result.success(inspectionOrderService.getInspectionOrderOne(inspectionOrderId));
- }
-
- /**
- * 濮旀墭鍗曟楠屾煡鐪嬭鎯�
- * @return
- */
- @ApiOperation(value = "鏍规嵁鎴愬搧璁㈠崟鏌ヨ濮旀墭鍗曡鎯�")
- @GetMapping("/getInspectionOrderByInsOderId")
- public Result<InspectionOrderDto> getInspectionOrderByInsOderId(Integer insOrderId){
- return Result.success(inspectionOrderService.getInspectionOrderByInsOderId(insOrderId));
- }
-
- /**
- * 濮旀墭鍗曟煡璇㈡垚鍝佽鍗�
- * @return
- */
- @ApiOperation(value = "濮旀墭鍗曟煡璇㈡垚鍝佽鍗�")
- @GetMapping("/getInsOrderOnInspection")
- public Result<IPage<InsOrder>> getInsOrderOnInspection(Page page ,InsOrder insOrder) throws Exception {
- return Result.success(inspectionOrderService.getInsOrderOnInspection(page, insOrder));
}
/**
diff --git a/cnas-process/src/main/java/com/ruoyi/process/dto/InspectionOrderDto.java b/cnas-process/src/main/java/com/ruoyi/process/dto/InspectionOrderDto.java
index 8e2af66..7a63da6 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/dto/InspectionOrderDto.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/dto/InspectionOrderDto.java
@@ -16,4 +16,19 @@
@ApiModelProperty("濮旀墭妫�楠屽崟璇︽儏")
private List<InspectionOrderDetail> orderDetailList;
+
+ @ApiModelProperty("鍏宠仈鐘舵�侊細0鏈粦瀹氾紝1宸茬粦瀹�")
+ private Integer bindingStatus;
+
+ @ApiModelProperty("鎴愬搧涓嬪崟鐘舵��")
+ private Integer orderState;
+
+ @ApiModelProperty("妫�楠岃繘搴�")
+ private String insProgress;
+
+ @ApiModelProperty("妫�楠岀粨鏋�")
+ private Integer insResult;
+
+ @ApiModelProperty("鎶ュ憡鐘舵�侊細0鏈敓鎴愶紝1寰呭悓姝ワ紝2鍙笅杞�")
+ private Integer reportStatus;
}
diff --git a/cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderBindLogMapper.java b/cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderBindLogMapper.java
new file mode 100644
index 0000000..f9593e5
--- /dev/null
+++ b/cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderBindLogMapper.java
@@ -0,0 +1,10 @@
+package com.ruoyi.process.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.process.pojo.InspectionOrderBindLog;
+
+/**
+ * 妫�楠屽鎵樺崟鍏宠仈鍙樻洿鏃ュ織 Mapper銆�
+ */
+public interface InspectionOrderBindLogMapper extends BaseMapper<InspectionOrderBindLog> {
+}
diff --git a/cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderMapper.java b/cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderMapper.java
index 96cee33..bb32636 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderMapper.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderMapper.java
@@ -4,7 +4,6 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.inspect.pojo.InsOrder;
import com.ruoyi.process.dto.InspectionOrderDto;
import com.ruoyi.process.pojo.InspectionOrder;
import org.apache.ibatis.annotations.Param;
@@ -31,11 +30,8 @@
IPage<InspectionOrderDto> pageInspectionOrder(Page page, @Param("ew") QueryWrapper<InspectionOrder> ew);
/**
- * 濮旀墭鍗曟煡璇㈡垚鍝佽鍗�
- * @param page
- * @param insOrderQueryWrapper
- * @return
+ * 鎴愬搧涓嬪崟閫夋嫨鏈粦瀹氱殑妫�楠屽鎵樺崟
*/
- IPage<InsOrder> getInsOrderOnInspection(Page page, @Param("ew") QueryWrapper<InsOrder> insOrderQueryWrapper);
+ IPage<InspectionOrder> pageUnboundInspectionOrder(Page page, @Param("ew") QueryWrapper<InspectionOrder> ew);
}
diff --git a/cnas-process/src/main/java/com/ruoyi/process/pojo/InspectionOrder.java b/cnas-process/src/main/java/com/ruoyi/process/pojo/InspectionOrder.java
index 1eec161..29bb22d 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/pojo/InspectionOrder.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/pojo/InspectionOrder.java
@@ -26,6 +26,9 @@
@TableId(value = "inspection_order_id", type = IdType.AUTO)
private Integer inspectionOrderId;
+ @ApiModelProperty("濮旀墭鍗曞彿")
+ private String inspectionOrderCode;
+
@ApiModelProperty("鎴愬搧璁㈠崟id")
private Integer insOrderId;
@@ -50,8 +53,14 @@
@ApiModelProperty("濮旀墭鍗曚綅")
private String commissionUnit;
+ @ApiModelProperty("濮旀墭鍗曚綅ID")
+ private Long commissionUnitId;
+
@ApiModelProperty("濮旀墭浜�")
private String commissionUser;
+
+ @ApiModelProperty("濮旀墭浜篒D")
+ private Integer commissionUserId;
@ApiModelProperty("濮旀墭浜鸿仈绯绘柟寮�")
private String commissionPhone;
@@ -86,6 +95,9 @@
@ApiModelProperty("棰嗘牱浜哄憳")
private String sampleTakerUser;
+ @ApiModelProperty("棰嗘牱浜哄憳ID")
+ private Integer sampleTakerUserId;
+
@ApiModelProperty("棰嗘牱鏃ユ湡")
private LocalDate sampleData;
diff --git a/cnas-process/src/main/java/com/ruoyi/process/pojo/InspectionOrderBindLog.java b/cnas-process/src/main/java/com/ruoyi/process/pojo/InspectionOrderBindLog.java
new file mode 100644
index 0000000..759c411
--- /dev/null
+++ b/cnas-process/src/main/java/com/ruoyi/process/pojo/InspectionOrderBindLog.java
@@ -0,0 +1,41 @@
+package com.ruoyi.process.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * 妫�楠屽鎵樺崟涓庢垚鍝佷笅鍗曠殑浜哄伐鍙樻洿璁板綍銆�
+ */
+@Data
+@TableName("cnas_inspection_order_bind_log")
+@ApiModel(value = "InspectionOrderBindLog瀵硅薄", description = "妫�楠屽鎵樺崟鍏宠仈鍙樻洿鏃ュ織")
+public class InspectionOrderBindLog {
+
+ @ApiModelProperty("涓婚敭")
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("鎴愬搧涓嬪崟ID")
+ private Integer insOrderId;
+
+ @ApiModelProperty("鍘熸楠屽鎵樺崟ID")
+ private Integer oldInspectionOrderId;
+
+ @ApiModelProperty("鏂版楠屽鎵樺崟ID")
+ private Integer newInspectionOrderId;
+
+ @ApiModelProperty("鍙樻洿鍘熷洜")
+ private String changeReason;
+
+ @ApiModelProperty("鎿嶄綔浜篒D")
+ private Integer createUser;
+
+ @ApiModelProperty("鎿嶄綔鏃堕棿")
+ private LocalDateTime createTime;
+}
diff --git a/cnas-process/src/main/java/com/ruoyi/process/service/InspectionOrderService.java b/cnas-process/src/main/java/com/ruoyi/process/service/InspectionOrderService.java
index 19c0809..ccca4a8 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/service/InspectionOrderService.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/service/InspectionOrderService.java
@@ -3,7 +3,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.inspect.pojo.InsOrder;
+import com.ruoyi.inspect.dto.InsPlaceOrderDto;
import com.ruoyi.process.dto.InspectionOrderDto;
import com.ruoyi.process.pojo.InspectionOrder;
import org.springframework.web.multipart.MultipartFile;
@@ -33,7 +33,7 @@
* @param InspectionOrder
* @return
*/
- boolean addInspectionOrder(InspectionOrderDto InspectionOrder);
+ InspectionOrderDto addInspectionOrder(InspectionOrderDto inspectionOrder);
/**
* 妫�楠屽鎵樺崟淇敼
@@ -57,17 +57,34 @@
InspectionOrderDto getInspectionOrderOne(Integer inspectionOrderId);
/**
- * 鏍规嵁鎴愬搧璁㈠崟id鏌ヨ濮旀墭鍗曚俊鎭�
- * @param insOrderId
- * @return
+ * 鏌ヨ鏈粦瀹氱殑妫�楠屽鎵樺崟锛屼緵鎴愬搧涓嬪崟閫夋嫨銆�
*/
- InspectionOrderDto getInspectionOrderByInsOderId(Integer insOrderId);
+ IPage<InspectionOrder> pageUnboundInspectionOrder(Page page, InspectionOrder inspectionOrder);
/**
- * 濮旀墭鍗曟煡璇㈡垚鍝佽鍗�
- * @return
+ * 鑾峰彇鎴愬搧涓嬪崟鍒濆鍖栨墍闇�鐨勫鎵樺崟淇℃伅銆�
*/
- IPage<InsOrder> getInsOrderOnInspection(Page page, InsOrder insOrder);
+ InspectionOrderDto getInspectionOrderForPlaceOrder(Integer inspectionOrderId);
+
+ /**
+ * 鏂板鎴愬搧涓嬪崟骞朵笌濮旀墭鍗曠粦瀹氥��
+ */
+ Integer addInsOrderWithInspectionOrder(InsPlaceOrderDto insPlaceOrderDto);
+
+ /**
+ * 涓嬪崟鐢熸垚濮旀墭缂栧彿鍚庡洖鍐欐楠屽鎵樺崟銆�
+ */
+ void syncEntrustCode(Integer insOrderId);
+
+ /**
+ * 姝e紡鎶ュ憡鎵瑰噯鍚庡鍒舵姤鍛婂苟鍥炲啓濮旀墭鍗曟枃浠跺湴鍧�銆�
+ */
+ void syncReportFile(Integer insReportId);
+
+ /**
+ * 鏇存涓嬪崟涓庡鎵樺崟鐨勭粦瀹氬叧绯汇��
+ */
+ boolean changeBinding(Integer insOrderId, Integer inspectionOrderId, String reason);
/**
* 濮旀墭鍗曟垚鍝佹姤鍛婁笂浼�
diff --git a/cnas-process/src/main/java/com/ruoyi/process/service/impl/InspectionOrderServiceImpl.java b/cnas-process/src/main/java/com/ruoyi/process/service/impl/InspectionOrderServiceImpl.java
index 9b18aec..dba5579 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/service/impl/InspectionOrderServiceImpl.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/service/impl/InspectionOrderServiceImpl.java
@@ -10,24 +10,34 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
+import com.ruoyi.common.numgen.NumberGenerator;
+import com.ruoyi.common.core.domain.entity.Custom;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.exception.ErrorException;
-import com.ruoyi.inspect.dto.InsOrderDeviceRecordDto;
+import com.ruoyi.inspect.dto.InsPlaceOrderDto;
import com.ruoyi.inspect.mapper.InsProductResultMapper;
import com.ruoyi.inspect.mapper.InsSampleMapper;
-import com.ruoyi.inspect.pojo.*;
+import com.ruoyi.inspect.pojo.InsOrder;
+import com.ruoyi.inspect.pojo.InsProductResult;
+import com.ruoyi.inspect.pojo.InsReport;
import com.ruoyi.inspect.service.InsOrderService;
import com.ruoyi.inspect.service.InsReportService;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.process.dto.InspectionOrderDto;
import com.ruoyi.process.dto.InspectionOrderExportDto;
+import com.ruoyi.process.mapper.InspectionOrderBindLogMapper;
import com.ruoyi.process.mapper.InspectionOrderMapper;
import com.ruoyi.process.mapper.ProcessOrderDeviceMapper;
import com.ruoyi.process.mapper.ProcessSampleMapper;
-import com.ruoyi.process.pojo.*;
+import com.ruoyi.process.pojo.InspectionOrder;
+import com.ruoyi.process.pojo.InspectionOrderBindLog;
+import com.ruoyi.process.pojo.InspectionOrderDetail;
+import com.ruoyi.process.pojo.ProcessOrderDevice;
import com.ruoyi.process.service.*;
import com.ruoyi.system.mapper.UserMapper;
+import com.ruoyi.system.mapper.CustomMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -44,10 +54,12 @@
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
-import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
-import java.util.*;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
import java.util.stream.Collectors;
/**
@@ -61,6 +73,8 @@
@Service
@Transactional(rollbackFor = Exception.class)
public class InspectionOrderServiceImpl extends ServiceImpl<InspectionOrderMapper, InspectionOrder> implements InspectionOrderService {
+ @Resource
+ private InspectionOrderBindLogMapper inspectionOrderBindLogMapper;
@Resource
private InspectionOrderDetailService inspectionOrderDetailService;
@Resource
@@ -82,15 +96,20 @@
@Resource
private UserMapper userMapper;
@Resource
+ private CustomMapper customMapper;
+ @Resource
private ProcessSampleService processSampleService;
@Resource
private ProcessSampleMapper processSampleMapper;
@Resource
private ProcessDealService processDealService;
+ @Resource
+ private NumberGenerator<InspectionOrder> numberGenerator;
/**
* 妫�楠屽鎵樺崟鍒嗛〉鏌ヨ
+ *
* @param page
* @param InspectionOrder
* @return
@@ -102,39 +121,23 @@
/**
* 妫�楠屽鎵樺崟鏂板
+ *
* @param inspectionOrder
* @return
*/
@Override
- public boolean addInspectionOrder(InspectionOrderDto inspectionOrder) {
- if (inspectionOrder.getInsOrderId() == null) {
- throw new ErrorException("缂哄皯璁㈠崟id");
+ public InspectionOrderDto addInspectionOrder(InspectionOrderDto inspectionOrder) {
+ if (inspectionOrder.getInsOrderId() != null) {
+ throw new ErrorException("鏂板妫�楠屽鎵樺崟涓嶅厑璁哥洿鎺ョ粦瀹氭垚鍝佷笅鍗曪紝璇峰湪鎴愬搧涓嬪崟椤甸潰閫夋嫨濮旀墭鍗�");
}
+ normalizeCommissionParty(inspectionOrder);
- // 澶嶅埗鎶ュ憡
- // 鏌ヨ璁㈠崟鎶ュ憡
- InsReport insReport = insReportService.getOne(Wrappers.<InsReport>lambdaQuery()
- .eq(InsReport::getInsOrderId, inspectionOrder.getInsOrderId()));
-
- String path = wordUrl + insReport.getUrl().replaceFirst("/word", "");
-
- String fileName =LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")) + "_" + "濮旀墭鍗曟姤鍛�.docx";
-
- // 婧愭枃浠惰矾寰�
- Path sourcePath = Paths.get(path);
- // 鐩爣鏂囦欢璺緞
- Path targetPath = Paths.get(wordUrl + "/" + fileName);
-
- try {
- // 澶嶅埗鏂囦欢锛屽鏋滅洰鏍囨枃浠跺凡瀛樺湪锛屽垯瑕嗙洊
- Files.copy(sourcePath, targetPath, StandardCopyOption.REPLACE_EXISTING);
- // 娣诲姞鏂囦欢鍦板潃
- inspectionOrder.setFileUrl("/word/" + fileName);
-
- } catch (Exception e) {
- e.printStackTrace();
- }
-
+ inspectionOrder.setInspectionOrderCode(numberGenerator.generateNumberWithPrefix(4,
+ "WTD" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")),
+ InspectionOrder::getInspectionOrderCode));
+ // 濮旀墭缂栧彿鐢辨垚鍝佷笅鍗曟祦绋嬬敓鎴愶紝濮旀墭鍗曟柊澧為樁娈典笉寰楁墜宸ュ~鍐欍��
+ inspectionOrder.setEntrustCode(null);
+ inspectionOrder.setFileUrl(null);
baseMapper.insert(inspectionOrder);
// 鏂板璇︽儏
if (CollectionUtils.isNotEmpty(inspectionOrder.getOrderDetailList())) {
@@ -143,50 +146,10 @@
}
inspectionOrderDetailService.saveBatch(inspectionOrder.getOrderDetailList());
}
- /*鏂板7.8鎶ュ憡缁撴灉*/
- ProcessReport processReport = new ProcessReport();
- processReport.setInspectionOrderId(inspectionOrder.getInsOrderId());
- processReport.setInsReportCode(inspectionOrder.getEntrustCode());//鎶ュ憡缂栧彿=濮旀墭缂栧彿
- //椤垫暟
- try {
- com.aspose.words.Document doc = new com.aspose.words.Document(path);
- processReport.setPages(doc.getPageCount()+"");
- } catch (Exception e) {
- }
- processReport.setNumber("1");//鍙戦�佷唤鏁伴粯璁�1
- processReport.setSend(inspectionOrder.getCommissionUnit());//鍙戝線浣曞=濮旀墭鍗曚綅
- processReport.setMethod(inspectionOrder.getSend()==1?"鑷彇":"鍏朵粬");//鍙戦�佹柟寮�
- processReport.setSendTime(insReport.getRatifyTime().toLocalDate());//鍙戦�佹棩鏈�
- processReport.setSendUser(64);//鍙戦�佷汉鍥哄畾
- processReport.setSignatory(inspectionOrder.getCommissionUser());//绛炬敹浜�=濮旀墭浜�
- processReportService.save(processReport);
- /*鏂板7.1濮旀墭鍗曞搴旂殑璁惧浣跨敤璁板綍*/
- addDeviceRecord(inspectionOrder,insReport.getWriteUserId());
- /*鏂板7.4鏍峰搧鎺ユ敹*/
- List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
- .eq(InsSample::getInsOrderId, inspectionOrder.getInsOrderId()));
- if (insSamples.size()>0){
- List<ProcessSample> processSamples = new ArrayList<>();
- for (InsSample insSample : insSamples) {
- ProcessSample processSample = new ProcessSample();
- processSample.setReceiveDate(inspectionOrder.getSampleData());//鏀舵牱鏃ユ湡=棰嗘牱鏃ユ湡
- processSample.setSampleCode(insSample.getSampleCode());//鏍峰搧缂栧彿
- processSample.setSampleName(insSample.getSample());//鏍峰搧鍚嶇О
- processSample.setNum(1);//鏍峰搧鏁伴噺=1
- processSample.setSampleSupplier(inspectionOrder.getCommissionUnit());//鏉ユ牱鍗曚綅
- LocalDate plusMonths = inspectionOrder.getSampleData() == null ? null : inspectionOrder.getSampleData().plusMonths(1);
- processSample.setLeaveDate(plusMonths);//鐣欐牱鏃ユ湡=鏀舵牱鏃ユ湡寰�鍚庡欢涓�涓湀
- processSample.setSampleState(inspectionOrder.getSampleStatus());//鏍峰搧鐘舵��
- processSample.setDealTime(plusMonths);//閫�鏍锋棩鏈�=鐣欐牱鏃ユ湡
- processSample.setInspectionOrderId(inspectionOrder.getInspectionOrderId());//濮旀墭鍗昳d
- processSamples.add(processSample);
- }
- processSampleService.saveBatch(processSamples);
- }
- return true;
+ return inspectionOrder;
}
- private synchronized void addDeviceRecord(InspectionOrder inspectionOrder,Integer userId) {
+ private synchronized void addDeviceRecord(InspectionOrder inspectionOrder, Integer userId) {
// 鏌ヨ璁惧浣跨敤璁板綍鏌ヨ璇ヨ鍗曠殑浣跨敤璁板綍
Set<String> recordCodeset = processOrderDeviceMapper.selectDeviceNumber(inspectionOrder.getInspectionOrderId());
// 鑾峰彇璁㈠崟璁惧缂栧彿
@@ -229,11 +192,24 @@
/**
* 妫�楠屽鎵樺崟淇敼
+ *
* @param InspectionOrder
* @return
*/
@Override
public boolean updateInspectionOrder(InspectionOrderDto InspectionOrder) {
+ InspectionOrder oldInspectionOrder = baseMapper.selectById(InspectionOrder.getInspectionOrderId());
+ if (oldInspectionOrder == null) {
+ throw new ErrorException("妫�楠屽鎵樺崟涓嶅瓨鍦�");
+ }
+ normalizeCommissionParty(InspectionOrder);
+ // 缂栧彿銆佸叧鑱斿叧绯汇�佹寮忓鎵樼紪鍙峰拰鎶ュ憡鍦板潃鍙兘鐢变笓鐢ㄦ祦绋嬬淮鎶ゃ��
+ InspectionOrder.setInspectionOrderCode(null);
+ InspectionOrder.setInsOrderId(null);
+ InspectionOrder.setEntrustCode(null);
+ InspectionOrder.setFileUrl(null);
+ InspectionOrder.setSampleTakerUserId(null);
+ InspectionOrder.setSampleTakerUser(null);
baseMapper.updateById(InspectionOrder);
// 鍒犻櫎涔嬪墠鐨勮鎯�
@@ -241,51 +217,41 @@
.eq(InspectionOrderDetail::getInspectionOrderId, InspectionOrder.getInspectionOrderId()));
// 鏂板璇︽儏
- for (InspectionOrderDetail InspectionOrderDetail : InspectionOrder.getOrderDetailList()) {
- InspectionOrderDetail.setInspectionOrderId(InspectionOrder.getInspectionOrderId());
+ if (CollectionUtils.isNotEmpty(InspectionOrder.getOrderDetailList())) {
+ for (InspectionOrderDetail InspectionOrderDetail : InspectionOrder.getOrderDetailList()) {
+ InspectionOrderDetail.setInspectionOrderId(InspectionOrder.getInspectionOrderId());
+ }
+ inspectionOrderDetailService.saveBatch(InspectionOrder.getOrderDetailList());
}
- inspectionOrderDetailService.saveBatch(InspectionOrder.getOrderDetailList());
-
- //淇敼7.9鎶ュ憡缁撴灉
- ProcessReport processReport = processReportService.getOne(Wrappers.<ProcessReport>lambdaQuery().eq(ProcessReport::getInspectionOrderId, InspectionOrder.getInspectionOrderId()));
- processReport.setInsReportCode(InspectionOrder.getEntrustCode());//鎶ュ憡缂栧彿=濮旀墭缂栧彿
- processReportService.updateById(processReport);
return true;
}
/**
* 妫�楠屽鎵樺崟鍒犻櫎
+ *
* @param inspectionOrderId
* @return
*/
@Override
public boolean delInspectionOrder(Integer inspectionOrderId) {
+ InspectionOrder inspectionOrder = baseMapper.selectById(inspectionOrderId);
+ if (inspectionOrder == null) {
+ throw new ErrorException("妫�楠屽鎵樺崟涓嶅瓨鍦�");
+ }
+ if (inspectionOrder.getInsOrderId() != null) {
+ throw new ErrorException("宸茬粦瀹氭垚鍝佷笅鍗曠殑妫�楠屽鎵樺崟涓嶅厑璁稿垹闄�");
+ }
+
inspectionOrderDetailService.remove(Wrappers.<InspectionOrderDetail>lambdaQuery()
.eq(InspectionOrderDetail::getInspectionOrderId, inspectionOrderId));
baseMapper.deleteById(inspectionOrderId);
- //鍒犻櫎7.8鎶ュ憡
- processReportService.remove(Wrappers.<ProcessReport>lambdaQuery()
- .eq(ProcessReport::getInspectionOrderId, inspectionOrderId));
- //鍒犻櫎瀵瑰簲鐨勮澶囦娇鐢ㄨ褰�
- processOrderDeviceService.remove(Wrappers.<ProcessOrderDevice>lambdaQuery()
- .eq(ProcessOrderDevice::getInspectionOrderId, inspectionOrderId));
- //鍒犻櫎瀵瑰簲鐨�7.4鐨勬牱鍝佺敵璇�
- List<ProcessSample> processSamples = processSampleMapper.selectList(Wrappers.<ProcessSample>lambdaQuery()
- .eq(ProcessSample::getInspectionOrderId, inspectionOrderId));
- if (processSamples.size()>0){
- List<Integer> list = processSamples.stream().map(ProcessSample::getId).collect(Collectors.toList());
- processDealService.remove(Wrappers.<ProcessDeal>lambdaQuery()
- .in(ProcessDeal::getProcessSampleId,list));
- }
- //鍒犻櫎瀵瑰簲7.4鐨勬牱鍝佹帴鏀�
- processSampleService.remove(Wrappers.<ProcessSample>lambdaQuery()
- .eq(ProcessSample::getInspectionOrderId,inspectionOrderId));
return true;
}
/**
* 妫�楠屽鎵樺崟鏌ョ湅璇︽儏
+ *
* @param inspectionOrderId
* @return
*/
@@ -301,43 +267,197 @@
return inspectionOrderDto;
}
- /**
- * 鏍规嵁鎴愬搧璁㈠崟id鏌ヨ濮旀墭鍗曡鎯�
- * @param insOrderId
- * @return
- */
@Override
- public InspectionOrderDto getInspectionOrderByInsOderId(Integer insOrderId) {
- InsOrder order = insOrderService.getById(insOrderId);
- InspectionOrderDto inspectionOrderDto = new InspectionOrderDto();
- inspectionOrderDto.setInsOrderId(order.getId());//鎴愬搧璁㈠崟id
- inspectionOrderDto.setEntrustCode(order.getEntrustCode());//濮旀墭缂栧彿
- inspectionOrderDto.setSampleName(order.getSample());//璇曟牱鍚嶇О
- inspectionOrderDto.setProduction(order.getProduction());//鐢熶骇鍗曚綅
- inspectionOrderDto.setCommissionUnit(order.getCompany());//濮旀墭鍗曚綅
- inspectionOrderDto.setCommissionUser(order.getPrepareUser());//濮旀墭浜�
- inspectionOrderDto.setSampleStatus("瀹屽ソ");//鏍峰搧鐘舵��
- inspectionOrderDto.setIsLeave(order.getIsLeave());//鏄惁鐣欐牱
- inspectionOrderDto.setProcessing(order.getProcessing());//鏍峰搧澶勭悊鏂瑰紡
- inspectionOrderDto.setAppointed(order.getAppointed());//绾﹀畾鏃堕棿
- inspectionOrderDto.setSend(order.getSend());//鎶ュ憡鍙戦�佹柟寮�
- inspectionOrderDto.setCommissionPhone(order.getPhone());//鎶ュ憡鍙戦�佹柟寮�
-
- return inspectionOrderDto;
+ public IPage<InspectionOrder> pageUnboundInspectionOrder(Page page, InspectionOrder inspectionOrder) {
+ return baseMapper.pageUnboundInspectionOrder(page, QueryWrappers.queryWrappers(inspectionOrder));
}
-
- /**
- * 濮旀墭鍗曟煡璇㈡垚鍝佽鍗�
- * @return
- */
@Override
- public IPage<InsOrder> getInsOrderOnInspection(Page page, InsOrder insOrder) {
- return baseMapper.getInsOrderOnInspection(page, QueryWrappers.queryWrappers(insOrder));
+ public InspectionOrderDto getInspectionOrderForPlaceOrder(Integer inspectionOrderId) {
+ InspectionOrder inspectionOrder = baseMapper.selectById(inspectionOrderId);
+ if (inspectionOrder == null) {
+ throw new ErrorException("妫�楠屽鎵樺崟涓嶅瓨鍦�");
+ }
+ if (inspectionOrder.getInsOrderId() != null) {
+ throw new ErrorException("璇ユ楠屽鎵樺崟宸茬粦瀹氭垚鍝佷笅鍗曪紝涓嶈兘閲嶅閫夋嫨");
+ }
+ return getInspectionOrderOne(inspectionOrderId);
+ }
+
+ @Override
+ public Integer addInsOrderWithInspectionOrder(InsPlaceOrderDto insPlaceOrderDto) {
+ if (insPlaceOrderDto == null || insPlaceOrderDto.getInspectionOrderId() == null) {
+ throw new ErrorException("璇烽�夋嫨妫�楠屽鎵樺崟");
+ }
+ if (insPlaceOrderDto.getInsOrder() == null) {
+ throw new ErrorException("缂哄皯鎴愬搧涓嬪崟淇℃伅");
+ }
+ InspectionOrder inspectionOrder = baseMapper.selectById(insPlaceOrderDto.getInspectionOrderId());
+ if (inspectionOrder == null) {
+ throw new ErrorException("妫�楠屽鎵樺崟涓嶅瓨鍦�");
+ }
+ if (inspectionOrder.getInsOrderId() != null) {
+ throw new ErrorException("璇ユ楠屽鎵樺崟宸茬粦瀹氭垚鍝佷笅鍗曪紝涓嶈兘閲嶅鎻愪氦");
+ }
+ if (inspectionOrder.getCommissionUnitId() == null) {
+ throw new ErrorException("璇峰厛瀹屽杽濮旀墭鍗曚綅");
+ }
+ if (inspectionOrder.getCommissionUserId() == null) {
+ throw new ErrorException("璇峰厛瀹屽杽濮旀墭浜�");
+ }
+
+ fillInsOrderFromInspectionOrder(inspectionOrder, insPlaceOrderDto.getInsOrder());
+ Integer insOrderId = insOrderService.addInsOrder(insPlaceOrderDto.getSampleList(), insPlaceOrderDto.getInsOrder());
+ Long sampleTakerUserId = SecurityUtils.getUserId();
+ User sampleTaker = sampleTakerUserId == null ? null : userMapper.selectById(sampleTakerUserId);
+ int updated = baseMapper.update(null, Wrappers.<InspectionOrder>lambdaUpdate()
+ .eq(InspectionOrder::getInspectionOrderId, inspectionOrder.getInspectionOrderId())
+ .isNull(InspectionOrder::getInsOrderId)
+ .set(InspectionOrder::getInsOrderId, insOrderId)
+ .set(InspectionOrder::getSampleTakerUserId, sampleTakerUserId == null ? null : sampleTakerUserId.intValue())
+ .set(InspectionOrder::getSampleTakerUser, sampleTaker == null ? null : sampleTaker.getName()));
+ if (updated != 1) {
+ throw new ErrorException("妫�楠屽鎵樺崟宸茶鍏朵粬涓嬪崟缁戝畾锛岃鍒锋柊鍚庨噸璇�");
+ }
+ return insOrderId;
+ }
+
+ private void fillInsOrderFromInspectionOrder(InspectionOrder inspectionOrder, InsOrder insOrder) {
+ insOrder.setEntrustCode(null);
+ insOrder.setSample(inspectionOrder.getSampleName());
+ insOrder.setCompany(inspectionOrder.getCommissionUnit());
+ insOrder.setCompanyId(inspectionOrder.getCommissionUnitId());
+ insOrder.setProduction(inspectionOrder.getProduction());
+ insOrder.setPrepareUser(inspectionOrder.getCommissionUser());
+ insOrder.setPhone(inspectionOrder.getCommissionPhone());
+ insOrder.setSampleStatus(inspectionOrder.getSampleStatus());
+ insOrder.setIsLeave(inspectionOrder.getIsLeave());
+ insOrder.setProcessing(inspectionOrder.getProcessing());
+ insOrder.setAppointed(inspectionOrder.getAppointed());
+ insOrder.setSend(inspectionOrder.getSend());
+ }
+
+ /** 浠呬俊浠诲鎴峰拰浜哄憳涓绘暟鎹紝鍚嶇О涓庣數璇濆潎浠ヤ富鏁版嵁蹇収涓哄噯銆� */
+ private void normalizeCommissionParty(InspectionOrder inspectionOrder) {
+ if (inspectionOrder.getCommissionUnitId() == null) {
+ throw new ErrorException("璇烽�夋嫨濮旀墭鍗曚綅");
+ }
+ Custom custom = customMapper.selectById(inspectionOrder.getCommissionUnitId());
+ if (custom == null) {
+ throw new ErrorException("濮旀墭鍗曚綅涓嶅瓨鍦ㄦ垨宸插仠鐢�");
+ }
+ inspectionOrder.setCommissionUnit(custom.getCompany());
+
+ if (inspectionOrder.getCommissionUserId() == null) {
+ throw new ErrorException("璇烽�夋嫨濮旀墭浜�");
+ }
+ User commissionUser = userMapper.selectById(inspectionOrder.getCommissionUserId());
+ if (commissionUser == null) {
+ throw new ErrorException("濮旀墭浜轰笉瀛樺湪鎴栧凡鍋滅敤");
+ }
+ inspectionOrder.setCommissionUser(commissionUser.getName());
+ inspectionOrder.setCommissionPhone(commissionUser.getPhone());
+ }
+
+ @Override
+ public void syncEntrustCode(Integer insOrderId) {
+ if (insOrderId == null) {
+ return;
+ }
+ InsOrder insOrder = insOrderService.getById(insOrderId);
+ if (insOrder == null || StrUtil.isBlank(insOrder.getEntrustCode())) {
+ return;
+ }
+ baseMapper.update(null, Wrappers.<InspectionOrder>lambdaUpdate()
+ .eq(InspectionOrder::getInsOrderId, insOrderId)
+ .set(InspectionOrder::getEntrustCode, insOrder.getEntrustCode()));
+ }
+
+ @Override
+ public void syncReportFile(Integer insReportId) {
+ if (insReportId == null) {
+ return;
+ }
+ InsReport insReport = insReportService.getById(insReportId);
+ if (insReport == null || !Integer.valueOf(1).equals(insReport.getIsRatify())) {
+ return;
+ }
+ InspectionOrder inspectionOrder = baseMapper.selectOne(Wrappers.<InspectionOrder>lambdaQuery()
+ .eq(InspectionOrder::getInsOrderId, insReport.getInsOrderId())
+ .last("limit 1"));
+ if (inspectionOrder == null) {
+ return;
+ }
+
+ String sourceUrl = StrUtil.isBlank(insReport.getUrlS()) ? insReport.getUrl() : insReport.getUrlS();
+ if (StrUtil.isBlank(sourceUrl)) {
+ throw new ErrorException("姝e紡鎶ュ憡鏂囦欢涓嶅瓨鍦紝鏃犳硶鍚屾鍒版楠屽鎵樺崟");
+ }
+ String sourceFileName = sourceUrl.substring(sourceUrl.lastIndexOf('/') + 1);
+ String extension = sourceFileName.lastIndexOf('.') >= 0
+ ? sourceFileName.substring(sourceFileName.lastIndexOf('.')) : ".docx";
+ String fileName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss"))
+ + "_" + inspectionOrder.getInspectionOrderCode() + "_濮旀墭鍗曟姤鍛�" + extension;
+ Path sourcePath = Paths.get(wordUrl + sourceUrl.replaceFirst("/word", ""));
+ Path targetPath = Paths.get(wordUrl, fileName);
+ try {
+ if (!Files.exists(sourcePath)) {
+ throw new ErrorException("姝e紡鎶ュ憡鏂囦欢涓嶅瓨鍦紝鏃犳硶鍚屾鍒版楠屽鎵樺崟");
+ }
+ Files.copy(sourcePath, targetPath, StandardCopyOption.REPLACE_EXISTING);
+ baseMapper.update(null, Wrappers.<InspectionOrder>lambdaUpdate()
+ .eq(InspectionOrder::getInspectionOrderId, inspectionOrder.getInspectionOrderId())
+ .set(InspectionOrder::getFileUrl, "/word/" + fileName));
+ } catch (ErrorException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new ErrorException("鎶ュ憡鍚屾澶辫触");
+ }
+ }
+
+ @Override
+ public boolean changeBinding(Integer insOrderId, Integer inspectionOrderId, String reason) {
+ if (insOrderId == null || inspectionOrderId == null || StrUtil.isBlank(reason)) {
+ throw new ErrorException("缂哄皯鍙樻洿鍏宠仈鎵�闇�鍙傛暟");
+ }
+ InsOrder insOrder = insOrderService.getById(insOrderId);
+ if (insOrder == null) {
+ throw new ErrorException("鎴愬搧涓嬪崟涓嶅瓨鍦�");
+ }
+ if (!(Integer.valueOf(0).equals(insOrder.getState()) || Integer.valueOf(2).equals(insOrder.getState()))
+ || StrUtil.isNotBlank(insOrder.getEntrustCode())) {
+ throw new ErrorException("褰撳墠涓嬪崟宸茶繘鍏ユ楠屾祦绋嬫垨宸茬敓鎴愬鎵樼紪鍙凤紝涓嶅厑璁稿彉鏇村叧鑱�");
+ }
+ InspectionOrder target = baseMapper.selectById(inspectionOrderId);
+ if (target == null || target.getInsOrderId() != null) {
+ throw new ErrorException("鐩爣妫�楠屽鎵樺崟涓嶅瓨鍦ㄦ垨宸茶缁戝畾");
+ }
+ InspectionOrder oldInspectionOrder = baseMapper.selectOne(Wrappers.<InspectionOrder>lambdaQuery()
+ .eq(InspectionOrder::getInsOrderId, insOrderId));
+ baseMapper.update(null, Wrappers.<InspectionOrder>lambdaUpdate()
+ .eq(InspectionOrder::getInsOrderId, insOrderId)
+ .set(InspectionOrder::getInsOrderId, null));
+ int updated = baseMapper.update(null, Wrappers.<InspectionOrder>lambdaUpdate()
+ .eq(InspectionOrder::getInspectionOrderId, inspectionOrderId)
+ .isNull(InspectionOrder::getInsOrderId)
+ .set(InspectionOrder::getInsOrderId, insOrderId));
+ if (updated != 1) {
+ throw new ErrorException("鐩爣妫�楠屽鎵樺崟宸茶鍏朵粬涓嬪崟缁戝畾锛岃鍒锋柊鍚庨噸璇�");
+ }
+ InspectionOrderBindLog bindLog = new InspectionOrderBindLog();
+ bindLog.setInsOrderId(insOrderId);
+ bindLog.setOldInspectionOrderId(oldInspectionOrder == null ? null : oldInspectionOrder.getInspectionOrderId());
+ bindLog.setNewInspectionOrderId(inspectionOrderId);
+ bindLog.setChangeReason(reason.trim());
+ bindLog.setCreateUser(SecurityUtils.getUserId().intValue());
+ bindLog.setCreateTime(LocalDateTime.now());
+ inspectionOrderBindLogMapper.insert(bindLog);
+ return true;
}
/**
* 濮旀墭鍗曟垚鍝佹姤鍛婁笂浼�
+ *
* @param file
* @param inspectionOrderId
* @return
@@ -359,7 +479,6 @@
baseMapper.update(null, Wrappers.<InspectionOrder>lambdaUpdate()
.eq(InspectionOrder::getInspectionOrderId, inspectionOrderId)
.set(InspectionOrder::getFileUrl, "/word/" + pathName));
-
} catch (Exception e) {
@@ -426,14 +545,14 @@
inspectionOrderExportDto.setAppointedString(inspectionOrder.getAppointed().format(formatter));
}
- inspectionOrderExportDto.setIsLeave1(inspectionOrder.getIsLeave() != null && inspectionOrder.getIsLeave() == 1? "鈽�" : "鈻�");
- inspectionOrderExportDto.setIsLeave2(inspectionOrder.getIsLeave() != null && inspectionOrder.getIsLeave() == 0? "鈽�" : "鈻�");
- inspectionOrderExportDto.setSend0(inspectionOrder.getSend() != null && inspectionOrder.getSend() == 1? "鈽�" : "鈻�");
- inspectionOrderExportDto.setSend1(inspectionOrder.getSend() != null && inspectionOrder.getSend() == 0? "鈽�" : "鈻�");
- inspectionOrderExportDto.setProcessing0(inspectionOrder.getProcessing() != null && inspectionOrder.getProcessing() == 0? "鈽�" : "鈻�");
- inspectionOrderExportDto.setProcessing1(inspectionOrder.getProcessing() != null && inspectionOrder.getProcessing() == 1? "鈽�" : "鈻�");
- inspectionOrderExportDto.setCriterionRule0(inspectionOrder.getCriterionRule() != null && inspectionOrder.getCriterionRule() == 0? "鈽�" : "鈻�");
- inspectionOrderExportDto.setCriterionRule1(inspectionOrder.getCriterionRule() != null && inspectionOrder.getCriterionRule() == 1? "鈽�" : "鈻�");
+ inspectionOrderExportDto.setIsLeave1(inspectionOrder.getIsLeave() != null && inspectionOrder.getIsLeave() == 1 ? "鈽�" : "鈻�");
+ inspectionOrderExportDto.setIsLeave2(inspectionOrder.getIsLeave() != null && inspectionOrder.getIsLeave() == 0 ? "鈽�" : "鈻�");
+ inspectionOrderExportDto.setSend0(inspectionOrder.getSend() != null && inspectionOrder.getSend() == 1 ? "鈽�" : "鈻�");
+ inspectionOrderExportDto.setSend1(inspectionOrder.getSend() != null && inspectionOrder.getSend() == 0 ? "鈽�" : "鈻�");
+ inspectionOrderExportDto.setProcessing0(inspectionOrder.getProcessing() != null && inspectionOrder.getProcessing() == 0 ? "鈽�" : "鈻�");
+ inspectionOrderExportDto.setProcessing1(inspectionOrder.getProcessing() != null && inspectionOrder.getProcessing() == 1 ? "鈽�" : "鈻�");
+ inspectionOrderExportDto.setCriterionRule0(inspectionOrder.getCriterionRule() != null && inspectionOrder.getCriterionRule() == 0 ? "鈽�" : "鈻�");
+ inspectionOrderExportDto.setCriterionRule1(inspectionOrder.getCriterionRule() != null && inspectionOrder.getCriterionRule() == 1 ? "鈽�" : "鈻�");
return inspectionOrderExportDto;
}
}
diff --git a/cnas-process/src/main/resources/mapper/InspectionOrderMapper.xml b/cnas-process/src/main/resources/mapper/InspectionOrderMapper.xml
index ba0c03f..2074ad2 100644
--- a/cnas-process/src/main/resources/mapper/InspectionOrderMapper.xml
+++ b/cnas-process/src/main/resources/mapper/InspectionOrderMapper.xml
@@ -5,21 +5,53 @@
<!--妫�楠屽鎵樺崟鍒嗛〉鏌ヨ-->
<select id="pageInspectionOrder" resultType="com.ruoyi.process.dto.InspectionOrderDto">
select *
- from (select *
- from cnas_inspection_order
- order by create_time desc) a
+ from (
+ select cio.*,
+ case when cio.ins_order_id is null then 0 else 1 end as binding_status,
+ io.state as order_state,
+ io.ins_result as ins_result,
+ case
+ when cio.ins_order_id is null then null
+ when total_product_counts.total_count is null or total_product_counts.total_count = 0 then '0%'
+ else concat(round(ifnull(approved_product_counts.approved_count, 0) / total_product_counts.total_count * 100, 2), '%')
+ end as ins_progress,
+ case
+ when cio.file_url is not null and trim(cio.file_url) != '' then 2
+ when approved_report.id is not null then 1
+ else 0
+ end as report_status
+ from cnas_inspection_order cio
+ left join ins_order io on cio.ins_order_id = io.id
+ left join (select max(id) as id, ins_order_id
+ from ins_report
+ where is_ratify = 1
+ group by ins_order_id) approved_report on approved_report.ins_order_id = io.id
+ left join (select ins_sample.ins_order_id, count(*) as total_count
+ from ins_product
+ join ins_sample on ins_product.ins_sample_id = ins_sample.id
+ where ins_product.state = 1
+ group by ins_sample.ins_order_id) total_product_counts on total_product_counts.ins_order_id = io.id
+ left join (select ins_sample.ins_order_id, count(*) as approved_count
+ from ins_product
+ join ins_sample on ins_product.ins_sample_id = ins_sample.id
+ where ins_product.state = 1 and ins_product.ins_result is not null
+ group by ins_sample.ins_order_id) approved_product_counts on approved_product_counts.ins_order_id = io.id
+ order by cio.create_time desc
+ ) a
<if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
${ew.customSqlSegment}
</if>
</select>
- <!--濮旀墭鍗曟煡璇㈡垚鍝佽鍗�-->
- <select id="getInsOrderOnInspection" resultType="com.ruoyi.inspect.pojo.InsOrder">
+ <!--鎴愬搧涓嬪崟閫夋嫨灏氭湭缁戝畾鐨勬楠屽鎵樺崟-->
+ <select id="pageUnboundInspectionOrder" resultType="com.ruoyi.process.pojo.InspectionOrder">
select *
- from (select *
- from ins_order
- where state = 4 and ifs_inventory_id is null
- order by entrust_code desc) a
+ from (
+ select *
+ from cnas_inspection_order
+ where ins_order_id is null
+ order by create_time desc
+ ) a
<if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
${ew.customSqlSegment}
</if>
diff --git a/cnas-process/src/main/resources/static/inspection-order.docx b/cnas-process/src/main/resources/static/inspection-order.docx
index 32e08a2..56e218d 100644
--- a/cnas-process/src/main/resources/static/inspection-order.docx
+++ b/cnas-process/src/main/resources/static/inspection-order.docx
Binary files differ
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/InsPlaceOrderDto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/InsPlaceOrderDto.java
index eac5ab3..e5719fa 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/dto/InsPlaceOrderDto.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/InsPlaceOrderDto.java
@@ -15,6 +15,9 @@
@Data
public class InsPlaceOrderDto{
+ @ApiModelProperty("鍏宠仈鐨勬楠屽鎵樺崟ID")
+ private Integer inspectionOrderId;
+
@ApiModelProperty("鏍峰搧")
private List<SampleProductDto> sampleList;
diff --git a/inspect-server/src/main/resources/static/report-template.docx b/inspect-server/src/main/resources/static/report-template.docx
index 7235122..ef024f6 100644
--- a/inspect-server/src/main/resources/static/report-template.docx
+++ b/inspect-server/src/main/resources/static/report-template.docx
Binary files differ
--
Gitblit v1.9.3