From 004ee58feda41620f621db1fb8773f1b56eaf71e Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期二, 30 十二月 2025 14:28:41 +0800
Subject: [PATCH] 外购成品功能迁移v1
---
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsOrderInspectionServiceImpl.java | 35 +
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java | 5
inspect-server/src/main/java/com/ruoyi/inspect/dto/IfsPartPropsRecordDTO.java | 13
ruoyi-common/src/main/java/com/ruoyi/common/utils/api/IfsApiUtils.java | 10
inspect-server/src/main/java/com/ruoyi/inspect/controller/OutsourcingFinishProductInspectionController.java | 58 ++
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java | 44 +
inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsSplitOrderRecordMapper.java | 2
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java | 4
inspect-server/src/main/java/com/ruoyi/inspect/service/IfsOrderInspectionService.java | 20
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTreeMapper.java | 2
inspect-server/src/main/resources/mapper/InsOrderMapper.xml | 38 +
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsPartPropsRecordServiceImpl.java | 122 ++++
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java | 96 ++-
inspect-server/src/main/java/com/ruoyi/inspect/controller/IfsOrderInspectionController.java | 38 +
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java | 468 +++++++++++++----
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductMapper.java | 2
inspect-server/src/main/java/com/ruoyi/inspect/vo/IfsOrderVO.java | 76 +++
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsSampleUserMapper.java | 3
basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantityDto.java | 3
inspect-server/src/main/resources/mapper/IfsPartPropsRecordMapper.xml | 34 +
inspect-server/src/main/java/com/ruoyi/inspect/service/IfsPartPropsRecordService.java | 17
basic-server/src/main/java/com/ruoyi/basic/pojo/IfsInventoryQuantity.java | 3
inspect-server/src/main/java/com/ruoyi/inspect/controller/IfsPartPropsRecordController.java | 34 +
inspect-server/src/main/java/com/ruoyi/inspect/controller/RawMaterialOrderController.java | 34
performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryOutputWorkingHoursMapper.java | 2
inspect-server/src/main/resources/static/small-wg-report-template.docx | 0
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/OutsourcingFinishProductInspectionServiceImpl.java | 50 ++
inspect-server/src/main/java/com/ruoyi/inspect/vo/InsSampleUserVO.java | 33 +
inspect-server/src/main/java/com/ruoyi/inspect/service/OutsourcingFinishProductInspectionService.java | 38 +
ruoyi-common/src/main/java/com/ruoyi/common/utils/QueryWrappers.java | 4
inspect-server/src/main/resources/mapper/InsSampleUserMapper.xml | 12
inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsPartPropsRecordMapper.java | 22
inspect-server/src/main/java/com/ruoyi/inspect/pojo/IfsPartPropsRecord.java | 67 ++
basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantitySupplierDto.java | 3
inspect-server/src/main/java/com/ruoyi/inspect/dto/EnterFactoryReport.java | 19
inspect-server/src/main/java/com/ruoyi/inspect/service/RawMaterialOrderService.java | 4
ruoyi-common/src/main/java/com/ruoyi/common/enums/OrderType.java | 44 +
37 files changed, 1,272 insertions(+), 187 deletions(-)
diff --git a/basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantityDto.java b/basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantityDto.java
index 237224e..83db775 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantityDto.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantityDto.java
@@ -79,4 +79,7 @@
@ApiModelProperty("妫�楠屼汉")
private String userName;
+
+ @ApiModelProperty("閿�鍞鍗曞垎绫�")
+ private String orderType;
}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantitySupplierDto.java b/basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantitySupplierDto.java
index 009b268..b44234d 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantitySupplierDto.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantitySupplierDto.java
@@ -40,6 +40,9 @@
@ApiModelProperty("鏍峰搧缂栧彿")
private String sampleCode;
+ @ApiModelProperty("閿�鍞鍗曞垎绫诲悕绉�")
+ private String orderTypeName;
+
// 杩涘巶
@ApiModelProperty("杩涘巶璁㈠崟id")
private Integer enterOrderId;
diff --git a/basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTreeMapper.java b/basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTreeMapper.java
index a743522..cf27259 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTreeMapper.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTreeMapper.java
@@ -9,6 +9,7 @@
import com.ruoyi.basic.pojo.StandardProductList;
import com.ruoyi.basic.pojo.StandardTree;
import com.ruoyi.basic.vo.IfsInventoryQuantityVO;
+import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -20,6 +21,7 @@
* @createDate 2024-03-01 15:06:44
* @Entity com.ruoyi.basic.pojo.StandardTree
*/
+@Mapper
public interface StandardTreeMapper extends BaseMapper<StandardTree> {
List<FactoryDto> selectStandardTreeList();
diff --git a/basic-server/src/main/java/com/ruoyi/basic/pojo/IfsInventoryQuantity.java b/basic-server/src/main/java/com/ruoyi/basic/pojo/IfsInventoryQuantity.java
index 31f49a3..1228374 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/pojo/IfsInventoryQuantity.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/pojo/IfsInventoryQuantity.java
@@ -37,6 +37,9 @@
@ApiModelProperty("鎺ユ敹鍙�")
private Integer receiptNo;
+ @ApiModelProperty("璁㈠崟绫诲瀷(01raw:鍘熸潗鏂欙紝02wg:澶栬喘鎴愬搧)")
+ private String orderType;
+
@ExcelProperty(index = 3, value = "闆朵欢鍙�")
@ApiModelProperty("闆朵欢鍙�")
private String partNo;
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java
index 161ea61..e0de03f 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java
@@ -26,6 +26,7 @@
import java.io.IOException;
import java.util.*;
import java.util.concurrent.CompletableFuture;
+import java.util.stream.Collectors;
/**
* @author Administrator
@@ -193,7 +194,8 @@
return map;
}
standardMethodLists.addAll(standardMethodMapper.selectStandardMethodListsByNull(str));
- map.put("standardMethodList", standardMethodLists);
+ List<StandardMethodList> collect = standardMethodLists.stream().distinct().collect(Collectors.toList());
+ map.put("standardMethodList", collect);
return map;
}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/IfsOrderInspectionController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/IfsOrderInspectionController.java
new file mode 100644
index 0000000..c586db0
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/IfsOrderInspectionController.java
@@ -0,0 +1,38 @@
+package com.ruoyi.inspect.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.inspect.service.IfsOrderInspectionService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * ifs閿�鍞鍗曟姤妫�controller
+ */
+@RestController
+@RequestMapping("/ifsOrderInspection")
+public class IfsOrderInspectionController {
+
+ @Autowired
+ private IfsOrderInspectionService ifsOrderInspectionService;
+
+ @ApiOperation(value = "閿�鍞鍗曟姤妫�鏌ヨ鍏ㄩ儴")
+ @PreAuthorize("@ss.hasPermi('get:Ifs:ByAll')")
+ @GetMapping("/getIfsByAll")
+ public Result getIfsByAll(Page page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto){
+ return Result.success(ifsOrderInspectionService.getIfsByOver(page, ifsInventoryQuantityDto));
+ }
+
+ @ApiOperation(value = "閿�鍞鍗曟姤妫�鏌ョ湅宸插畬鎴愪俊鎭�")
+ @GetMapping("/getIfsByFinish")
+ public Result getIfsByFinish(Page page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto) {
+ ifsInventoryQuantityDto.setIsFinish(1);
+ return Result.success(ifsOrderInspectionService.getIfsByOver(page, ifsInventoryQuantityDto));
+ }
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/IfsPartPropsRecordController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/IfsPartPropsRecordController.java
new file mode 100644
index 0000000..d513350
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/IfsPartPropsRecordController.java
@@ -0,0 +1,34 @@
+package com.ruoyi.inspect.controller;
+
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.inspect.dto.IfsPartPropsRecordDTO;
+import com.ruoyi.inspect.service.IfsPartPropsRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * ifs闆朵欢灞炴�ontroller
+ */
+@Api("ifs闆朵欢灞炴��")
+@RestController
+@RequestMapping("/ifsPartProps")
+public class IfsPartPropsRecordController {
+
+ @Autowired
+ private IfsPartPropsRecordService ifsPartPropsRecordService;
+
+ @ApiOperation(value = "鏂板鎴栦繚瀛橀浂浠跺睘鎬�")
+ @PostMapping("/saveOrUpdateProps")
+ public Result saveOrUpdateProps(@RequestBody IfsPartPropsRecordDTO ifsPartPropsRecord){
+ return Result.success(ifsPartPropsRecordService.saveOrUpdateProps(ifsPartPropsRecord));
+ }
+
+ @ApiOperation(value = "鏌ヨifs璁㈠崟鐨勯浂浠跺睘鎬ц褰�")
+ @GetMapping("/getOneByIfsId/{ifsId}")
+ public Result getOneByIfsId(@PathVariable("ifsId") Long ifsId){
+ return Result.success(ifsPartPropsRecordService.getOneByIfsId(ifsId));
+ }
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/OutsourcingFinishProductInspectionController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/OutsourcingFinishProductInspectionController.java
new file mode 100644
index 0000000..5590267
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/OutsourcingFinishProductInspectionController.java
@@ -0,0 +1,58 @@
+package com.ruoyi.inspect.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.IfsInventoryQuantityDto;
+import com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto;
+import com.ruoyi.basic.pojo.IfsInventoryQuantity;
+import com.ruoyi.common.annotation.PersonalScope;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.inspect.service.OutsourcingFinishProductInspectionService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 澶栬喘鎴愬搧妫�楠宑ontroller
+ */
+@RestController
+@RequestMapping("/outsourcingFinishProduct")
+public class OutsourcingFinishProductInspectionController {
+
+ @Autowired
+ private OutsourcingFinishProductInspectionService outsourcingFinishProductInspectionService;
+
+ @ApiOperation(value = "浠撳簱鎶ユ鏌ヨ")
+ @GetMapping("/getWarehouseSubmit")
+ public Result getWarehouseSubmit(Page page, IfsInventoryQuantity ifsInventoryQuantity) {
+ return Result.success(outsourcingFinishProductInspectionService.getWarehouseSubmit(page, ifsInventoryQuantity));
+ }
+
+ @ApiOperation(value = "澶栬喘鎴愬搧妫�楠屾煡璇㈡楠屼腑")
+ @GetMapping("/getIfsByStateOne")
+ @PreAuthorize("@ss.hasPermi('business:order')")
+ @PersonalScope(permsName = "business:order", objectName = IfsInventoryQuantityDto.class, paramName = "createUser")
+ public Result getIfsByStateOne(Page page, IfsInventoryQuantityDto ifsInventoryQuantityDto){
+ return Result.success(outsourcingFinishProductInspectionService.getIfsByStateOne(page, ifsInventoryQuantityDto));
+ }
+
+ @ApiOperation(value = "澶栬喘鎴愬搧妫�楠屾煡璇㈠凡妫�楠�")
+ @GetMapping("/getIfsByOver")
+ @PreAuthorize("@ss.hasPermi('business:order')")
+ @PersonalScope(permsName = "business:order", objectName = IfsInventoryQuantitySupplierDto.class, paramName = "createUser")
+ public Result getIfsByOver(Page page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto){
+ return Result.success(outsourcingFinishProductInspectionService.getIfsByOver(page, ifsInventoryQuantityDto));
+ }
+
+ @ApiOperation(value = "鍘熸潗鏂欐姤妫�鏌ヨ鍏ㄩ儴")
+ @PreAuthorize("@ss.hasPermi('get:Ifs:ByAll')")
+ @GetMapping("/getIfsByAll")
+ public Result getIfsByAll(Page page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto){
+ return Result.success(outsourcingFinishProductInspectionService.getIfsByOver(page, ifsInventoryQuantityDto));
+ }
+
+
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/RawMaterialOrderController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/RawMaterialOrderController.java
index ae17b0d..85b6577 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/controller/RawMaterialOrderController.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/RawMaterialOrderController.java
@@ -1,23 +1,21 @@
package com.ruoyi.inspect.controller;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.basic.dto.*;
+import com.ruoyi.basic.dto.IfsInventoryQuantityCheckDto;
+import com.ruoyi.basic.dto.IfsInventoryQuantityDto;
+import com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto;
import com.ruoyi.basic.pojo.IfsInventoryQuantity;
import com.ruoyi.common.annotation.PersonalScope;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.enums.OrderType;
+import com.ruoyi.common.utils.WxCpUtils;
+import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.dto.InsPlaceOrderDto;
import com.ruoyi.inspect.dto.OrderSplitDTO;
-import com.ruoyi.inspect.dto.SampleProductDto;
-import com.ruoyi.inspect.pojo.InsOrder;
import com.ruoyi.inspect.pojo.RawMaterialOrderTemplate;
import com.ruoyi.inspect.service.InsOrderService;
import com.ruoyi.inspect.service.RawMaterialOrderService;
import com.ruoyi.inspect.service.RawMaterialOrderTemplateService;
-import com.ruoyi.common.core.domain.Result;
-import com.ruoyi.common.utils.JackSonUtil;
-import com.ruoyi.common.utils.WxCpUtils;
-import com.ruoyi.inspect.dto.CopperInsOrderDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
@@ -30,6 +28,7 @@
import java.io.File;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
/**
* @Author zhuo
@@ -106,7 +105,11 @@
@PostMapping("/inspectionReport")
public Result<?> inspectionReport(@RequestBody Map<String, Object> param) {
List<Long> ids = (List<Long>) param.get("ids");
- return Result.success(rawMaterialOrderService.inspectionReport(ids));
+ String orderType = Objects.nonNull(param.get("orderType"))?param.get("orderType").toString():"";
+ if(!OrderType.validateValue(orderType)){
+ throw new ErrorException("鎵归噺鎶ユ澶辫触,闈炴硶鐨勯攢鍞鍗曞垎绫绘灇涓�");
+ }
+ return Result.success(rawMaterialOrderService.inspectionReport(ids,orderType));
}
/**
@@ -221,6 +224,7 @@
@PreAuthorize("@ss.hasPermi('get:Ifs:ByAll')")
@GetMapping("/getIfsByAll")
public Result getIfsByAll(Page page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto){
+ ifsInventoryQuantityDto.setOrderType(OrderType.RAW.getValue());
return Result.success(rawMaterialOrderService.getIfsByOver(page, ifsInventoryQuantityDto));
}
@@ -236,6 +240,7 @@
@GetMapping("/getIfsByFinish")
public Result getIfsByFinish(Page page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto) throws Exception {
ifsInventoryQuantityDto.setIsFinish(1);
+ ifsInventoryQuantityDto.setOrderType(OrderType.RAW.getValue());
return Result.success(rawMaterialOrderService.getIfsByOver(page, ifsInventoryQuantityDto));
}
@@ -349,4 +354,13 @@
return Result.success(rawMaterialOrderService.confirmSplitOrder(orderSplitDTO));
}
+ /**
+ * 鏍规嵁ifsId鏌ヨ涓嬪崟鏁伴噺
+ */
+ @ApiOperation(value = "鏍规嵁ifsId鏌ヨ涓嬪崟鏁伴噺")
+ @GetMapping("/getOrderCountByIfsId/{ifsId}")
+ public Result getOrderCountByIfsId(@PathVariable("ifsId") Long ifsId){
+ return Result.success(rawMaterialOrderService.getOrderCountByIfsId(ifsId));
+ }
+
}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/EnterFactoryReport.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/EnterFactoryReport.java
index 3a5456d..d4c54b9 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/dto/EnterFactoryReport.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/EnterFactoryReport.java
@@ -30,4 +30,23 @@
@ApiModelProperty("妫�娴嬬紪鍙�")
private String code;
+
+ /**
+ * 澶栨姢棰滆壊
+ */
+ @ApiModelProperty("澶栨姢棰滆壊")
+ private String outerColor;
+
+ /**
+ * 妫�楠屽憳
+ */
+ @ApiModelProperty("妫�楠屽憳")
+ private String inspector;
+
+ /**
+ * 妫�楠屾棩鏈�
+ */
+ @ApiModelProperty("妫�楠屾棩鏈�")
+ private String inspectDate;
+
}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/IfsPartPropsRecordDTO.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/IfsPartPropsRecordDTO.java
new file mode 100644
index 0000000..6d78d3b
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/IfsPartPropsRecordDTO.java
@@ -0,0 +1,13 @@
+package com.ruoyi.inspect.dto;
+
+import com.ruoyi.inspect.pojo.IfsPartPropsRecord;
+import lombok.Data;
+
+@Data
+public class IfsPartPropsRecordDTO extends IfsPartPropsRecord {
+
+ private String partNo;
+
+ private String lotBatchNo;
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsPartPropsRecordMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsPartPropsRecordMapper.java
new file mode 100644
index 0000000..23033cf
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsPartPropsRecordMapper.java
@@ -0,0 +1,22 @@
+package com.ruoyi.inspect.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.inspect.pojo.IfsPartPropsRecord;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+* @author 27233
+* @description 閽堝琛ㄣ�恑fs_part_props_record(ifs璁㈠崟闆朵欢灞炴�ц褰曡〃)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-10-23 15:00:34
+* @Entity com.ruoyi.inspect.pojo.IfsPartPropsRecord
+*/
+@Mapper
+public interface IfsPartPropsRecordMapper extends BaseMapper<IfsPartPropsRecord> {
+
+ Long selectCountByPartNoAndLotBatchNo(@Param("partNo") String partNo, @Param("lotBatchNo") String lotBatchNo);
+}
+
+
+
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsSplitOrderRecordMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsSplitOrderRecordMapper.java
index 99769a5..148f82b 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsSplitOrderRecordMapper.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsSplitOrderRecordMapper.java
@@ -2,6 +2,7 @@
import com.ruoyi.inspect.pojo.IfsSplitOrderRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
/**
* @author 27233
@@ -9,6 +10,7 @@
* @createDate 2025-10-29 16:39:41
* @Entity com.ruoyi.inspect.pojo.IfsSplitOrderRecord
*/
+@Mapper
public interface IfsSplitOrderRecordMapper extends BaseMapper<IfsSplitOrderRecord> {
}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java
index 7c91fc1..1d69e5e 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java
@@ -9,8 +9,10 @@
import com.ruoyi.inspect.dto.SampleProductDto2;
import com.ruoyi.inspect.dto.SampleProductExportDto;
import com.ruoyi.inspect.pojo.InsOrder;
+import com.ruoyi.inspect.vo.IfsOrderVO;
import com.ruoyi.inspect.vo.InsOrderPrintingVo;
import com.ruoyi.inspect.vo.SampleDefectsFatherVo;
+import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -23,6 +25,7 @@
* @createDate 2024-03-12 16:17:55
* @Entity com.yuanchu.mom.pojo.InsOrder
*/
+@Mapper
public interface InsOrderMapper extends BaseMapper<InsOrder> {
//鑾峰彇妫�楠屼笅鍗曟暟鎹�
@@ -144,4 +147,6 @@
* @return
*/
Integer selectNotSpotCheckOrder(@Param("itmeId") Integer itmeId, @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+ IfsOrderVO selectOrderInfoById(@Param("id") Integer id);
}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductMapper.java
index 774b38a..69dd801 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductMapper.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductMapper.java
@@ -8,6 +8,7 @@
import com.ruoyi.inspect.dto.SampleProductRawAnalysisDto;
import com.ruoyi.inspect.pojo.InsProduct;
import com.ruoyi.inspect.pojo.InsProductDeviationWarningDetail;
+import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -19,6 +20,7 @@
* @createDate 2024-03-08 09:45:03
* @Entity com.yuanchu.mom.pojo.InsProduct
*/
+@Mapper
public interface InsProductMapper extends BaseMapper<InsProduct> {
int selectOrderManDay(@Param("orderId") Integer orderId);
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsSampleUserMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsSampleUserMapper.java
index b3f0c19..ae3a445 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsSampleUserMapper.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsSampleUserMapper.java
@@ -2,6 +2,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.inspect.pojo.InsSampleUser;
+import com.ruoyi.inspect.vo.InsSampleUserVO;
+import org.apache.ibatis.annotations.Param;
/**
* @author Administrator
@@ -11,6 +13,7 @@
*/
public interface InsSampleUserMapper extends BaseMapper<InsSampleUser> {
+ InsSampleUserVO selectUserNameByOrderId(@Param("orderId") Integer orderId);
}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/IfsPartPropsRecord.java b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/IfsPartPropsRecord.java
new file mode 100644
index 0000000..d9fbf70
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/IfsPartPropsRecord.java
@@ -0,0 +1,67 @@
+package com.ruoyi.inspect.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * ifs璁㈠崟闆朵欢灞炴�ц褰曡〃
+ * @TableName ifs_part_props_record
+ */
+@TableName(value ="ifs_part_props_record")
+@Data
+public class IfsPartPropsRecord implements Serializable {
+ /**
+ * 涓婚敭id
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * ifs璁㈠崟id
+ */
+ private Long ifsInventoryId;
+
+ /**
+ * 杞藉叿缂栧彿
+ */
+ private String drumNo;
+
+ /**
+ * 璧峰绫虫爣
+ */
+ private BigDecimal startMeterMark;
+
+ /**
+ * 鎴绫虫爣
+ */
+ private BigDecimal endMeterMark;
+
+ /**
+ * 缁濈紭棰滆壊
+ */
+ private String insulationColor;
+
+ /**
+ * 澶栨姢棰滆壊
+ */
+ private String outerColor;
+
+ /**
+ * 鍗板瓧淇℃伅
+ */
+ private String letteringInfo;
+
+ /**
+ * ifs闆朵欢灞炴�ф洿鏂版爣璇�
+ */
+ private Boolean partPropsFlag;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/IfsOrderInspectionService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/IfsOrderInspectionService.java
new file mode 100644
index 0000000..4400e9b
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/IfsOrderInspectionService.java
@@ -0,0 +1,20 @@
+package com.ruoyi.inspect.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto;
+import org.springframework.stereotype.Component;
+
+@Component
+public interface IfsOrderInspectionService {
+
+ /**
+ * 鏌ヨ宸叉楠�
+ * @param page
+ * @param ifsInventoryQuantityDto
+ * @return
+ */
+ IPage<IfsInventoryQuantitySupplierDto> getIfsByOver(Page<IfsInventoryQuantitySupplierDto> page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto);
+
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/IfsPartPropsRecordService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/IfsPartPropsRecordService.java
new file mode 100644
index 0000000..1270a13
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/IfsPartPropsRecordService.java
@@ -0,0 +1,17 @@
+package com.ruoyi.inspect.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.inspect.dto.IfsPartPropsRecordDTO;
+import com.ruoyi.inspect.pojo.IfsPartPropsRecord;
+
+/**
+* @author 27233
+* @description 閽堝琛ㄣ�恑fs_part_props_record(ifs璁㈠崟闆朵欢灞炴�ц褰曡〃)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-10-23 15:00:34
+*/
+public interface IfsPartPropsRecordService extends IService<IfsPartPropsRecord> {
+
+ boolean saveOrUpdateProps(IfsPartPropsRecordDTO ifsPartPropsRecord);
+
+ IfsPartPropsRecord getOneByIfsId(Long ifsId);
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/OutsourcingFinishProductInspectionService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/OutsourcingFinishProductInspectionService.java
new file mode 100644
index 0000000..efa78d6
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/OutsourcingFinishProductInspectionService.java
@@ -0,0 +1,38 @@
+package com.ruoyi.inspect.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.IfsInventoryQuantityDto;
+import com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto;
+import com.ruoyi.basic.pojo.IfsInventoryQuantity;
+import com.ruoyi.basic.vo.IfsInventoryQuantityVO;
+import org.springframework.stereotype.Component;
+
+@Component
+public interface OutsourcingFinishProductInspectionService {
+
+ /**
+ * 鎶ユ鏌ヨ
+ * @param page
+ * @param ifsInventoryQuantity
+ * @return
+ */
+ IPage<IfsInventoryQuantityVO> getWarehouseSubmit(Page page, IfsInventoryQuantity ifsInventoryQuantity);
+
+ /**
+ * 鏌ヨ宸叉楠�
+ * @param page
+ * @param ifsInventoryQuantityDto
+ * @return
+ */
+ IPage<IfsInventoryQuantitySupplierDto> getIfsByOver(Page<IfsInventoryQuantitySupplierDto> page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto);
+
+ /**
+ * 鏌ヨ妫�楠屽��
+ * @param page
+ * @param ifsInventoryQuantityDto
+ * @return
+ */
+ IPage<IfsInventoryQuantityDto> getIfsByStateOne(IPage<IfsInventoryQuantityDto> page, IfsInventoryQuantityDto ifsInventoryQuantityDto);
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/RawMaterialOrderService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/RawMaterialOrderService.java
index 3cc8a95..c5e6ce9 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/RawMaterialOrderService.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/RawMaterialOrderService.java
@@ -43,7 +43,7 @@
*/
IPage<IfsInventoryQuantityDto> getIfsByStateOne(IPage<IfsInventoryQuantityDto> page, IfsInventoryQuantityDto ifsInventoryQuantityDto);
- int inspectionReport(List<Long> ids);
+ int inspectionReport(List<Long> ids,String orderType);
int revokeInspectionReport(Long id);
@@ -156,4 +156,6 @@
Result importSplitOrderData(MultipartFile file, Long ifsId, HttpServletRequest request);
boolean confirmSplitOrder(OrderSplitDTO orderSplitDTO);
+
+ Long getOrderCountByIfsId(Long ifsId);
}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsOrderInspectionServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsOrderInspectionServiceImpl.java
new file mode 100644
index 0000000..5b05f88
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsOrderInspectionServiceImpl.java
@@ -0,0 +1,35 @@
+package com.ruoyi.inspect.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto;
+import com.ruoyi.basic.mapper.StandardTreeMapper;
+import com.ruoyi.common.enums.OrderType;
+import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.inspect.service.IfsOrderInspectionService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 閿�鍞鍗曟姤妫�service
+ */
+@Slf4j
+@Service
+public class IfsOrderInspectionServiceImpl implements IfsOrderInspectionService {
+
+ @Autowired
+ private StandardTreeMapper standardTreeMapper;
+
+ @Override
+ public IPage<IfsInventoryQuantitySupplierDto> getIfsByOver(Page<IfsInventoryQuantitySupplierDto> page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto) {
+ // todo: 鍙湅鎴�
+ String beginDeclareDate = ifsInventoryQuantityDto.getBeginDeclareDate();
+ String endDeclareDate = ifsInventoryQuantityDto.getEndDeclareDate();
+ ifsInventoryQuantityDto.setBeginDeclareDate(null);
+ ifsInventoryQuantityDto.setEndDeclareDate(null);
+ IPage<IfsInventoryQuantitySupplierDto> ifsByOver = standardTreeMapper.getIfsByOver(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto), beginDeclareDate, endDeclareDate);
+ ifsByOver.getRecords().forEach(r->r.setOrderTypeName(OrderType.getLabelByValue(r.getOrderType())));
+ return ifsByOver;
+ }
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsPartPropsRecordServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsPartPropsRecordServiceImpl.java
new file mode 100644
index 0000000..929e993
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsPartPropsRecordServiceImpl.java
@@ -0,0 +1,122 @@
+package com.ruoyi.inspect.service.impl;
+
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper;
+import com.ruoyi.basic.pojo.IfsInventoryQuantity;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.enums.OrderType;
+import com.ruoyi.common.utils.api.IfsApiUtils;
+import com.ruoyi.inspect.dto.IfsPartPropsRecordDTO;
+import com.ruoyi.inspect.mapper.IfsPartPropsRecordMapper;
+import com.ruoyi.inspect.mapper.IfsSplitOrderRecordMapper;
+import com.ruoyi.inspect.pojo.IfsPartPropsRecord;
+import com.ruoyi.inspect.pojo.IfsSplitOrderRecord;
+import com.ruoyi.inspect.service.IfsPartPropsRecordService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+/**
+* @author 27233
+* @description 閽堝琛ㄣ�恑fs_part_props_record(ifs璁㈠崟闆朵欢灞炴�ц褰曡〃)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-10-23 15:00:34
+*/
+@Slf4j
+@Service
+public class IfsPartPropsRecordServiceImpl extends ServiceImpl<IfsPartPropsRecordMapper, IfsPartPropsRecord>
+ implements IfsPartPropsRecordService{
+
+ @Autowired
+ private IfsApiUtils ifsApiUtils;
+
+ @Autowired
+ private IfsInventoryQuantityMapper ifsInventoryQuantityMapper;
+
+ @Autowired
+ private IfsSplitOrderRecordMapper ifsSplitOrderRecordMapper;
+
+ @Value("${ifs.contract}")
+ public String contract;
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean saveOrUpdateProps(IfsPartPropsRecordDTO ifsPartPropsRecord) {
+ if(Objects.isNull(ifsPartPropsRecord)){
+ throw new RuntimeException("鍙傛暟涓嶈兘涓虹┖");
+ }
+ //鏌ヨ鏄惁宸叉湁鍚屾壒娆″悓闆朵欢鍙风殑鎵规灞炴�э紝娌℃湁鎵嶆洿鏂�
+ Long count = baseMapper.selectCountByPartNoAndLotBatchNo(ifsPartPropsRecord.getPartNo(),ifsPartPropsRecord.getLotBatchNo());
+ if(count==0){
+ //鍒ゆ柇鏄柊澧炶繕鏄洿鏂�
+ String actionType = Objects.isNull(ifsPartPropsRecord.getId())?"New":"Modify";
+ Map<String, Object> inAttrMap = new HashMap<>();
+ inAttrMap.put("RECORD_ID", UUID.randomUUID().toString());
+ inAttrMap.put("SYSCODE", "LIMS");
+ inAttrMap.put("SYSMODEL", "搴撳瓨鐗╂枡鎵规灞炴�т慨鏀�");
+ HashMap<String, Object> batchInfoMap = new HashMap<>();
+ batchInfoMap.put("CONTRACT",contract);//鍩�
+ batchInfoMap.put("PART_NO",ifsPartPropsRecord.getPartNo());//闆朵欢鍙�
+ batchInfoMap.put("LOT_BATCH_NO",ifsPartPropsRecord.getLotBatchNo());//鎵规鍙�
+ batchInfoMap.put("ATTR1",ifsPartPropsRecord.getDrumNo());//杞藉叿缂栧彿
+ batchInfoMap.put("ATTR2",ifsPartPropsRecord.getStartMeterMark().toString());//璧峰绫虫爣
+ batchInfoMap.put("ATTR3",ifsPartPropsRecord.getEndMeterMark().toString());//鎴绫虫爣
+ batchInfoMap.put("ATTR4", ifsPartPropsRecord.getOuterColor());//澶栨姢棰滆壊
+ batchInfoMap.put("ATTR5",ifsPartPropsRecord.getInsulationColor());//缁濈紭棰滆壊
+ batchInfoMap.put("ATTR8",ifsPartPropsRecord.getLetteringInfo());//鍗板瓧淇℃伅
+ batchInfoMap.put("ATTR23","杞﹂棿璁㈠崟");//鍏ュ簱鏉ユ簮
+ batchInfoMap.put("ATTR24","0");//鍒嗗壊棰勭暀鏁伴噺
+ batchInfoMap.put("ACTION_TYPE",actionType);//鎿嶄綔绫诲瀷
+ inAttrMap.put("BATCH_INFO", Collections.singletonList(batchInfoMap));
+ Result result = ifsApiUtils.importPartLotAttr(JSONUtil.toJsonStr(inAttrMap));
+ if(result.getCode()!=200){
+ throw new RuntimeException("搴撳瓨鐗╂枡鎵规灞炴�ф洿鏂板け璐ワ細"+result.getMessage());
+ }
+ }
+ return this.saveOrUpdate(ifsPartPropsRecord);
+ }
+
+ @Override
+ public IfsPartPropsRecord getOneByIfsId(Long ifsId) {
+ //鏌ヨifs璁㈠崟淇℃伅
+ IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsId);
+ if(Objects.isNull(ifsInventoryQuantity)){
+ throw new RuntimeException("鏈壘鍒板搴旂殑IFS璁㈠崟淇℃伅");
+ }
+ //鍒ゆ柇鏄惁鏄媶鍒嗚鍗�
+ if(ifsInventoryQuantity.getIsSplitOrder().equals(1)&& StringUtils.equals(ifsInventoryQuantity.getOrderType(), OrderType.RAW.getValue())){
+ //鏌ヨ鎷嗗垎璁板綍
+ IfsSplitOrderRecord splitRecord = ifsSplitOrderRecordMapper.selectOne(Wrappers.<IfsSplitOrderRecord>lambdaQuery()
+ .eq(IfsSplitOrderRecord::getOrderNo, ifsInventoryQuantity.getOrderNo())
+ .eq(IfsSplitOrderRecord::getPartNo, ifsInventoryQuantity.getPartNo())
+ .eq(IfsSplitOrderRecord::getReleaseNo, ifsInventoryQuantity.getReleaseNo())
+ .eq(IfsSplitOrderRecord::getLineNo, ifsInventoryQuantity.getLineNo())
+ .eq(IfsSplitOrderRecord::getReceiptNo, ifsInventoryQuantity.getReceiptNo())
+ .eq(IfsSplitOrderRecord::getLotBatchNo, ifsInventoryQuantity.getUpdateBatchNo())
+ .eq(IfsSplitOrderRecord::getOrderNo, ifsInventoryQuantity.getOrderNo())
+ );
+ if(Objects.isNull(splitRecord)){
+ throw new RuntimeException("鏈壘鍒伴浂浠剁殑鎷嗗垎淇℃伅");
+ }
+ IfsPartPropsRecord ifsPartPropsRecord = new IfsPartPropsRecord();
+ ifsPartPropsRecord.setDrumNo(splitRecord.getDrumNo());
+ ifsPartPropsRecord.setLetteringInfo(splitRecord.getLetteringInfo());
+ ifsPartPropsRecord.setInsulationColor(splitRecord.getInsulationColor());
+ ifsPartPropsRecord.setOuterColor(splitRecord.getOuterColor());
+ ifsPartPropsRecord.setDrumNo(splitRecord.getDrumNo());
+ ifsPartPropsRecord.setDrumNo(splitRecord.getDrumNo());
+ return ifsPartPropsRecord;
+ }
+ return this.getOne(Wrappers.<IfsPartPropsRecord>lambdaQuery().eq(IfsPartPropsRecord::getIfsInventoryId,ifsId).last("limit 1"));
+ }
+}
+
+
+
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
index f8d29bd..c303e78 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
@@ -2,6 +2,7 @@
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -11,6 +12,7 @@
import com.alibaba.fastjson.JSONObject;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -36,6 +38,7 @@
import com.ruoyi.common.core.domain.entity.Custom;
import com.ruoyi.common.core.domain.entity.InformationNotification;
import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.common.enums.OrderType;
import com.ruoyi.common.utils.*;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.dto.*;
@@ -45,13 +48,10 @@
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.inspect.vo.InsOrderPlanTaskSwitchVo;
import com.ruoyi.inspect.vo.InsOrderPlanVO;
+import com.ruoyi.inspect.vo.InsSampleUserVO;
import com.ruoyi.performance.mapper.AuxiliaryOutputWorkingHoursMapper;
-import com.ruoyi.performance.mapper.PerformanceShiftMapper;
-import com.ruoyi.performance.mapper.ShiftTimeMapper;
import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHours;
-import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHoursTemporary;
import com.ruoyi.performance.service.AuxiliaryOutputWorkingHoursService;
-import com.ruoyi.performance.service.AuxiliaryOutputWorkingHoursTemporaryService;
import com.ruoyi.system.mapper.CustomMapper;
import com.ruoyi.system.mapper.UserMapper;
import com.ruoyi.system.service.ISysDictTypeService;
@@ -74,9 +74,7 @@
import java.nio.file.Paths;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
-import java.time.LocalDate;
import java.time.LocalDateTime;
-import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -131,6 +129,8 @@
@Resource
private IfsInventoryQuantityMapper ifsInventoryQuantityMapper;
@Resource
+ private IfsPartPropsRecordMapper ifsPartPropsRecordMapper;
+ @Resource
private InsReportService insReportService;
@Resource
private InsUnqualifiedRetestProductMapper insUnqualifiedRetestProductMapper;
@@ -167,9 +167,7 @@
public IPage<InsOrderPlanVO> selectInsOrderPlanList(Page page, InsOrderPlanDTO insOrderPlanDTO) {
// todo: 浠呯湅鑷繁鎴栬�呭疄楠屽
//鑾峰彇褰撳墠浜烘墍灞炲疄楠屽id
-
String laboratory = null;
-
String userName = null;
Integer userId = null;
if (ObjectUtil.isNotEmpty(insOrderPlanDTO.getUserId())) {
@@ -1637,6 +1635,96 @@
/***************************************************** 灏忔姤鍛� ***************************************************************************/
/**
+ * 璁剧疆琛ㄦ牸鏍峰紡
+ * @param max 鏍囪瘑鏈�澶т釜鏁�
+ * @return
+ */
+ private TableStyle setTableStyle(int max){
+ //璁剧疆鏍峰紡
+ TableStyle tableStyle = new TableStyle();
+ if(max<=5){
+ for (int i = 1; i <= max; i++) {
+ // 鏍规嵁妫�楠岀粨鏋滀釜鏁颁慨鏀归暱搴�
+ switch (i) {
+ case 1:
+ tableStyle.setColWidths(new int[]{650, 2900, 850, 2300, 2100, 1200});
+ break;
+ case 2:
+ tableStyle.setColWidths(new int[]{650, 2700, 850, 2200, 1200, 1200, 1200});
+ break;
+ case 3:
+ tableStyle.setColWidths(new int[]{650, 2700, 850, 1600, 1000, 1000, 1000, 1200});
+ break;
+ case 4:
+ tableStyle.setColWidths(new int[]{650, 2400, 850, 1500, 850, 850, 850, 850, 1200});
+ break;
+ case 5:
+ tableStyle.setColWidths(new int[]{650, 2200, 850, 1350, 770, 770, 770, 770, 770, 1100});
+ break;
+ }
+ }
+ }
+
+ tableStyle.setWidth("10000");
+ tableStyle.setAlign(TableRowAlign.CENTER);
+ BorderStyle borderStyle = new BorderStyle();
+ borderStyle.setColor("000000");
+ borderStyle.setType(XWPFTable.XWPFBorderType.SINGLE);
+ borderStyle.setSize(4);
+ tableStyle.setLeftBorder(borderStyle);
+ tableStyle.setRightBorder(borderStyle);
+ tableStyle.setInsideHBorder(borderStyle); // 璁剧疆姘村钩鍐呰竟妗�
+ tableStyle.setInsideVBorder(borderStyle);
+ return tableStyle;
+ }
+
+
+ /**
+ * 澶勭悊鏈夌數缂嗛鑹叉爣璇嗙殑妫�娴嬮」
+ * @param cableTags 鐢电紗棰滆壊鏍囪瘑
+ * @param collect 妫�娴嬮」鍒楄〃
+ * @param startIndex 璧峰涓嬫爣
+ * @param endIndex 缁撴潫涓嬫爣
+ * @return
+ */
+ private List<SampleProductExportDto> transformSampleProduct(List<String> cableTags,Map<String, List<SampleProductExportDto>> collect,int startIndex,int endIndex){
+ List<SampleProductExportDto> sampleProductExportDtos = new ArrayList<>();
+ for (String s : collect.keySet()) {
+ List<String> lastValueList = new ArrayList<>();
+ SampleProductExportDto dto = new SampleProductExportDto();
+ BeanUtil.copyProperties(collect.get(s).get(0),dto);
+ Set<String> tellSet = new HashSet<>();
+ for (int i = startIndex; i < endIndex; i++) {
+ String cableTag = cableTags.get(i);
+ for (SampleProductExportDto sDto : collect.get(s)) {
+ tellSet.add(sDto.getTell());
+ if(sDto.getCableTag().equals(cableTag)){
+ lastValueList.add(sDto.getLastValue());
+ }
+ }
+ }
+ //鍒囧壊鐢电紗閰嶇疆椤�
+ dto.setTell(String.join("\n",tellSet));
+ dto.setLastValueList(lastValueList);
+ sampleProductExportDtos.add(dto);
+ }
+ return sampleProductExportDtos;
+ }
+
+ /**
+ * 妫�娴嬮」鎺掑簭
+ * @param sourceMap
+ * @param targetMap
+ */
+ private void sortSampleProduct(Map<String, List<SampleProductExportDto>> sourceMap,Map<String, List<SampleProductExportDto>> targetMap){
+ List<Map.Entry<String, List<SampleProductExportDto>>> entries = new ArrayList<>(sourceMap.entrySet());
+ entries.sort(Comparator.comparingInt(o -> (o.getValue().get(0).getSort() == null ? 0 : o.getValue().get(0).getSort())));
+ for (Map.Entry<String, List<SampleProductExportDto>> entry : entries) {
+ targetMap.put(entry.getKey(), entry.getValue());
+ }
+ }
+
+ /**
* 灏忔姤鍛婄敓鎴�
* @param orderId
* @param insOrder
@@ -1654,11 +1742,17 @@
enterFactoryReport.setSample(insOrder.getSample());
// 鑾峰彇ifs鏁版嵁
IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(insOrder.getIfsInventoryId());
+ //鏌ヨ闆朵欢灞炴��
+ IfsPartPropsRecord ifsPartPropsRecord = ifsPartPropsRecordMapper.selectOne(Wrappers.<IfsPartPropsRecord>lambdaQuery()
+ .eq(IfsPartPropsRecord::getIfsInventoryId, ifsInventoryQuantity.getId()));
+ if(Objects.nonNull(ifsPartPropsRecord)){
+ enterFactoryReport.setOuterColor(ifsPartPropsRecord.getOuterColor());
+ }
enterFactoryReport.setQtyArrived(ifsInventoryQuantity.getQtyArrived() == null ? "" :
ifsInventoryQuantity.getQtyArrived().stripTrailingZeros().toPlainString() + ifsInventoryQuantity.getBuyUnitMeas());
enterFactoryReport.setQuantity(insOrder.getTestQuantity());
enterFactoryReport.setPartDesc(insOrder.getPartDetail());
- enterFactoryReport.setSupplierName("**********");
+ enterFactoryReport.setSupplierName(ifsInventoryQuantity.getSupplierName());
enterFactoryReport.setLotBatchNo(ifsInventoryQuantity.getUpdateBatchNo());
// 妫�娴嬩緷鎹�
@@ -1676,6 +1770,7 @@
List<RowRenderData> rows = new ArrayList<>();
List<TextRenderData> text = new ArrayList<>();
RowRenderData rowRenderData = null;
+ List<Map<String,Object>> cableTagEnclosureTables = new ArrayList<>();
// 鏌ヨ妫�楠屽唴瀹�
List<SampleProductExportDto> sampleProductDto2s = insOrderMapper.selectSampleBySampleId(insSamples.stream()
@@ -1686,21 +1781,167 @@
List<SampleProductExportDto> sampleList = new ArrayList<>();
Integer max = insSamples.stream().mapToInt(InsSample::getQuantity).sum();
+ TableRenderData tableRenderData = new TableRenderData();
+ String templateName;
+ if(StringUtils.equals(OrderType.WG.getValue(),ifsInventoryQuantity.getOrderType())){
+ //杩囨护涓嶅垽瀹氱殑妫�娴嬮」
+ List<SampleProductExportDto> filterItems = sampleProductDto2s.stream().filter(f -> f.getInsResult() != 3).collect(Collectors.toList());
+ int maxCableTag = 5;//鍗曚釜琛ㄦ牸锛岀數缂嗛鑹叉爣璇嗘渶澶т釜鏁�
+ templateName = "/static/small-wg-report-template.docx";
+ //鏌ヨ妫�楠屽崟娑堟伅
+ InsSampleUserVO insSampleUser = insSampleUserMapper.selectUserNameByOrderId(orderId);
+ if(Objects.nonNull(insSampleUser)){
+ enterFactoryReport.setPartDesc(insSampleUser.getModel());
+ enterFactoryReport.setInspector(insSampleUser.getInspector());
+ enterFactoryReport.setInspectDate(insSampleUser.getInspectDate());
+ }
- // 杞垚Mpa杩涜鎺掑簭
- Map<String, List<SampleProductExportDto>> sortedMap = sampleProductDto2s.stream()
- .filter(sampleProductDto2 -> StringUtils.isNotBlank(sampleProductDto2.getInspectionItem()))
- .collect(Collectors.groupingBy(SampleProductExportDto::getInspectionItem));
- List<Map.Entry<String, List<SampleProductExportDto>>> entries = new ArrayList<>(sortedMap.entrySet());
- entries.sort((o1, o2) -> (o1.getValue().get(0).getSort() == null ? 0 : o1.getValue().get(0).getSort())
- - (o2.getValue().get(0).getSort() == null ? 0 : o2.getValue().get(0).getSort()));
- // 鍒涘缓涓�涓� LinkedHashMap 鏉ヤ繚鎸佹彃鍏ラ『搴�
- Map<String, List<SampleProductExportDto>> item = new LinkedHashMap<>();
- for (Map.Entry<String, List<SampleProductExportDto>> entry : entries) {
- item.put(entry.getKey(), entry.getValue());
+ Map<String, List<SampleProductExportDto>> totalItem = new LinkedHashMap<>();//妫�娴嬮」鍒楄〃
+ Map<String, List<SampleProductExportDto>> cableTagItem = new LinkedHashMap<>();//鐢电紗閰嶇疆妫�娴嬮」
+ Map<String, List<SampleProductExportDto>> cableTagEnclosureItem = new LinkedHashMap<>();//鐢电紗閰嶇疆妫�娴嬮」闄勪欢
+
+ AtomicInteger finalIndex = new AtomicInteger(1);
+ List<String> cableTags = insOrderMapper.selectSampleCableTag(insSample.getId());
+ max = Math.max(cableTags.size(),1);
+ //澶勭悊鐢电紗閰嶇疆妫�娴嬮」
+ Map<String, List<SampleProductExportDto>> tempMap = new HashMap<>();
+ Map<String, List<SampleProductExportDto>> tempMap2 = new HashMap<>();
+ Map<String, List<SampleProductExportDto>> listMap2 = filterItems.stream()
+ .filter(f -> StringUtils.isNotBlank(f.getCableTag()) && StringUtils.isNotBlank(f.getInspectionItem()))
+ .collect(Collectors.groupingBy(SampleProductExportDto::getInspectionItem));
+ for (String key : listMap2.keySet()) {
+ List<SampleProductExportDto> sampleProductExportDtos;
+ List<SampleProductExportDto> sampleProductExportDtos2;
+ //澶勭悊鐢电紗閰嶇疆椤�
+ Map<String, List<SampleProductExportDto>> collect = listMap2.get(key).stream().collect(Collectors.groupingBy(SampleProductExportDto::getInspectionItemSubclass));
+ if(cableTags.size()>maxCableTag){
+ sampleProductExportDtos = transformSampleProduct(cableTags,collect,0,maxCableTag);
+ sampleProductExportDtos2 = transformSampleProduct(cableTags,collect,maxCableTag,cableTags.size());
+ tempMap2.put(key,sampleProductExportDtos2);
+ }else{
+ sampleProductExportDtos = transformSampleProduct(cableTags,collect,0,cableTags.size());
+ }
+ cableTagItem.put(key,sampleProductExportDtos);
+ }
+ //澶勭悊闈炵數缂嗛厤缃娴嬮」
+ Map<String, List<SampleProductExportDto>> listMap = filterItems.stream()
+ .filter(f -> StringUtils.isBlank(f.getCableTag()) && StringUtils.isNotBlank(f.getInspectionItem()))
+ .collect(Collectors.groupingBy(s->s.getInspectionItem()+"&"));
+ //鍚堝苟妫�娴嬮」鍒楄〃
+ tempMap.putAll(cableTagItem);
+ tempMap.putAll(listMap);
+ sortSampleProduct(tempMap,totalItem);
+ int tagNum = Math.min(max,maxCableTag);
+ List<String> tagList = cableTags.isEmpty()?new ArrayList<>():cableTags.subList(0,tagNum);
+ handlerSampleItems(OrderType.WG.getValue(),totalItem,finalIndex,sampleList,tagNum,text,rows,rowRenderData,resultCh,tagList,true);
+
+ if(CollectionUtil.isNotEmpty(tempMap2)){
+ sortSampleProduct(tempMap2,cableTagEnclosureItem);
+ //鐢熸垚闄勪欢鐢电紗琛ㄦ牸
+ TableRenderData tableRenderData2 = new TableRenderData();
+ List<String> newCableTags = cableTags.subList(maxCableTag,cableTags.size());
+ AtomicInteger finalIndex2 = new AtomicInteger(1);
+ List<TextRenderData> newText = new ArrayList<TextRenderData>();
+ List<RowRenderData> newRows = new ArrayList<>();
+ RowRenderData newRowRenderData = null;
+ handlerSampleItems(OrderType.WG.getValue(),cableTagEnclosureItem,finalIndex2, new ArrayList<>(),newCableTags.size(),newText,newRows,newRowRenderData,resultCh,newCableTags,true);
+ tableRenderData2.setRows(newRows);
+ tableRenderData2.setTableStyle(setTableStyle(newCableTags.size()));
+ HashMap<String, Object> tableMap = new HashMap<>();
+ tableMap.put("enclosureTable",tableRenderData2);
+ tableMap.put("resultCh", resultCh);
+ tableMap.put("writeUrl", null);
+ tableMap.put("examineUrl", null);
+ tableMap.put("ratifyUrl", null);
+ tableMap.put("writeDateUrl", null);
+ tableMap.put("examineDateUrl", null);
+ tableMap.put("ratifyDateUrl", null);
+ tableMap.put("seal1", null);
+ cableTagEnclosureTables.add(tableMap);
+ }
+
+ tableRenderData.setRows(rows);
+ tableRenderData.setTableStyle(setTableStyle(tagNum));
+ if (!resultCh.get().isEmpty()) {
+ resultCh.set("缁忔楠岋紝" + resultCh.get() + "鎵�妫�椤圭洰涓嶅悎鏍硷紝鍏朵綑鎵�妫�椤圭洰鍧囧悎鏍笺�傦紙鐩栫珷鏈夋晥锛�");
+ } else {
+ resultCh.set("鏈骇鍝佺鍚堢浉鍏虫爣鍑嗚姹傦紝缁忔楠屽悎鏍煎噯浜堝嚭鍘傦紙鐩栫珷鏈夋晥锛�");
+ }
+
+ }else{
+ templateName = "/static/small-report-template.docx";
+ // 杞垚Mpa杩涜鎺掑簭
+ Map<String, List<SampleProductExportDto>> sortedMap = sampleProductDto2s.stream()
+ .filter(sampleProductDto2 -> StringUtils.isNotBlank(sampleProductDto2.getInspectionItem()))
+ .collect(Collectors.groupingBy(SampleProductExportDto::getInspectionItem));
+// // 鍒涘缓涓�涓� LinkedHashMap 鏉ヤ繚鎸佹彃鍏ラ『搴�
+ Map<String, List<SampleProductExportDto>> item = new LinkedHashMap<>();
+ sortSampleProduct(sortedMap,item);
+
+
+ AtomicInteger finalIndex = new AtomicInteger(1);
+ handlerSampleItems(OrderType.RAW.getValue(), item,finalIndex,sampleList,max,text,rows,rowRenderData,resultCh,null,true);
+ tableRenderData.setRows(rows);
+ tableRenderData.setTableStyle(setTableStyle(max));
+
+ if (!resultCh.get().equals("")) {
+ resultCh.set("缁忔楠岋紝" + resultCh.get() + "鎵�妫�椤圭洰涓嶅悎鏍硷紝鍏朵綑鎵�妫�椤圭洰鍧囧悎鏍笺��");
+ } else {
+ resultCh.set("缁忔楠屾鎵�" + enterFactoryReport.getSample() + "鍚勯」鐩潎绗﹀悎妫�楠岃鑼冭姹傘��");
+ }
}
- AtomicInteger finalIndex = new AtomicInteger(1);
+ ConfigureBuilder builder = Configure.builder();
+ builder.useSpringEL(true);
+
+ InputStream inputStream = this.getClass().getResourceAsStream(templateName);
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
+ new HashMap<String, Object>() {{
+ put("report", enterFactoryReport);
+ put("standardMethod", standardMethod2.toString().equals("null") ? "" : standardMethod2);
+ put("orderType", orderType);
+ put("table", tableRenderData);
+ put("enclosureTables", cableTagEnclosureTables.isEmpty()?null:cableTagEnclosureTables);
+ put("resultCh", resultCh);
+ put("writeUrl", null);
+ put("examineUrl", null);
+ put("ratifyUrl", null);
+ put("writeDateUrl", null);
+ put("examineDateUrl", null);
+ put("ratifyDateUrl", null);
+ put("seal1", null);
+ }});
+ try {
+ // 淇敼鎹㈣鍜屽悎骞堕棶棰�
+ updaeMerge(template.getXWPFDocument(), true);
+ String name = insReport.getCode().replace("/", "") + "-J.docx";
+ template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
+ insReport.setUrl("/word/" + name);
+ insReport.setIsPass(0);
+ insReport.setWriteUserId(SecurityUtils.getUserId().intValue());//鎻愪氦浜�
+ insReport.setWriteTime(LocalDateTime.now());//鎻愪氦鏃堕棿
+ // 鏌ヨ鎶ュ憡, 鍒ゆ柇涔嬪墠鏄惁娣诲姞杩�, 娣诲姞杩囧垹闄�
+ insReportMapper.delete(Wrappers.<InsReport>lambdaQuery()
+ .eq(InsReport::getInsOrderId, insOrder.getId()));
+ insReportMapper.insert(insReport);
+ inputStream.close();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * 澶勭悊甯歌妫�娴嬮」
+ * @param item
+ * @param finalIndex
+ * @param sampleList
+ * @param max
+ * @param text
+ * @param rows
+ * @param rowRenderData
+ * @param resultCh
+ */
+ private static void handlerSampleItems(String orderType,Map<String, List<SampleProductExportDto>> item,AtomicInteger finalIndex,List<SampleProductExportDto> sampleList,Integer max,List<TextRenderData> text,List<RowRenderData> rows,RowRenderData rowRenderData,AtomicReference<String> resultCh,List<String> cableTagList,Boolean hasAddHead ){
item.forEach((s, sampleProductDtoInside) -> {
// 娣诲姞妫�楠岄」
SampleProductExportDto dto2 = new SampleProductExportDto();
@@ -1713,19 +1954,23 @@
// 澶勭悊闆嗗悎
Map<String, SampleProductExportDto> map = new LinkedHashMap<>();
for (SampleProductExportDto productDto2 : sampleProductDtoInside) {
- String productName = productDto2.getInspectionItemClass() + productDto2.getInspectionItem();
+ String productName = productDto2.getInspectionItemClass() + productDto2.getInspectionItem() + productDto2.getCableTag();
if (map.containsKey(productName)) {
// 濡傛灉鍚嶇О宸茬粡瀛樺湪锛屾坊鍔� lastValue 鍊煎埌 lastValueList 鍒楄〃
- map.get(productName)
- .getLastValueList()
- .add(productDto2.getLastValue());
+ if(CollectionUtil.isEmpty(map.get(productName).getLastValueList()) || StringUtils.equals(OrderType.RAW.getValue(),orderType)){
+ map.get(productName)
+ .getLastValueList()
+ .add(productDto2.getLastValue());
+ }
map.get(productName)
.getInsResultList()
.add(productDto2.getInsResult());
} else {
// 濡傛灉鍚嶇О涓嶅瓨鍦紝鐩存帴鏀惧叆 map
- productDto2.setLastValueList(new ArrayList<>()); // 妫�楠屽唴瀹�
- productDto2.getLastValueList().add(productDto2.getLastValue());
+ if(CollectionUtil.isEmpty(productDto2.getLastValueList()) || StringUtils.equals(OrderType.RAW.getValue(),orderType)){
+ productDto2.setLastValueList(new ArrayList<>()); // 妫�楠屽唴瀹�
+ productDto2.getLastValueList().add(productDto2.getLastValue());
+ }
productDto2.setInsResultList(new ArrayList<>()); // 缁撴灉
productDto2.getInsResultList().add(productDto2.getInsResult());
@@ -1754,19 +1999,23 @@
// 澶勭悊闆嗗悎
Map<String, SampleProductExportDto> map = new LinkedHashMap<>();
for (SampleProductExportDto productDto2 : sampleProductDtoInside) {
- String productName = productDto2.getInspectionItemClass() + productDto2.getInspectionItem() + productDto2.getInspectionItemSubclass();
+ String productName = productDto2.getInspectionItemClass() + productDto2.getInspectionItem() + productDto2.getInspectionItemSubclass() + productDto2.getCableTag();
if (map.containsKey(productName)) {
// 濡傛灉鍚嶇О宸茬粡瀛樺湪锛屾坊鍔� lastValue 鍊煎埌 lastValueList 鍒楄〃
- map.get(productName)
- .getLastValueList()
- .add(productDto2.getLastValue());
+ if(CollectionUtil.isEmpty(map.get(productName).getLastValueList()) || StringUtils.equals(OrderType.RAW.getValue(),orderType)){
+ map.get(productName)
+ .getLastValueList()
+ .add(productDto2.getLastValue());
+ }
map.get(productName)
.getInsResultList()
.add(productDto2.getInsResult());
} else {
// 濡傛灉鍚嶇О涓嶅瓨鍦紝鐩存帴鏀惧叆 map
- productDto2.setLastValueList(new ArrayList<>()); // 妫�楠屽唴瀹�
- productDto2.getLastValueList().add(productDto2.getLastValue());
+ if(CollectionUtil.isEmpty(productDto2.getLastValueList()) || StringUtils.equals(OrderType.RAW.getValue(),orderType)){
+ productDto2.setLastValueList(new ArrayList<>()); // 妫�楠屽唴瀹�
+ productDto2.getLastValueList().add(productDto2.getLastValue());
+ }
productDto2.setInsResultList(new ArrayList<>()); // 缁撴灉
productDto2.getInsResultList().add(productDto2.getInsResult());
@@ -1784,8 +2033,9 @@
});
// 娣诲姞灏忔姤鍛婅〃澶�
- text = addSmallHead(text, max, rows);
-
+ if(hasAddHead){
+ text = addSmallHead(text, max, rows,cableTagList);
+ }
// 涓棿妫�娴嬪�兼坊鍔�
for (int i = 0; i < sampleList.size(); i++) {
@@ -1802,7 +2052,9 @@
// 妫�楠岄」鐩�
TextRenderData middleRenderData2 = new TextRenderData();
- middleRenderData2.setText(sample.getInspectionName());
+ String[] split = sample.getInspectionName().split("&");
+ String itemName = split.length>0?split[0]:sample.getInspectionName();
+ middleRenderData2.setText(itemName+"鈭�"+itemName+i+"_"+finalIndex);
Style middleStyle2 = new Style();
middleStyle2.setFontFamily("瀹嬩綋");
middleStyle2.setColor("000000");
@@ -1889,7 +2141,7 @@
TextRenderData middleRenderData6 = new TextRenderData();
middleRenderData6.setText((StringUtils.isNotEmpty(sample.getLastValue()) ?
sample.getLastValue() : "")
- + "鈭�" + (7 + i));
+ + "鈭�" + (finalIndex.get() +"_"+ i));
Style middleStyle6 = new Style();
middleStyle6.setFontFamily("瀹嬩綋");
middleStyle6.setColor("000000");
@@ -1927,7 +2179,7 @@
String type;
if (count.equals(0)) {
// 娣诲姞涓嶅悎鏍兼弿杩�
- String item1 = (max == 1 ? "" : "绗�" + Integer.toString(index) + "娆�")
+ String item1 = (max == 1 ? "" : "绗�" + index + "娆�")
+ sample.getInspectionItem()
+ (StringUtils.isBlank(sample.getInspectionItemSubclass()) ? "" : "" + sample.getInspectionItemSubclass());
if (resultCh.get().equals("")) {
@@ -1967,95 +2219,16 @@
text = new ArrayList<>();
}
- TableRenderData tableRenderData = new TableRenderData();
- tableRenderData.setRows(rows);
-
- //璁剧疆鏍峰紡
- TableStyle tableStyle = new TableStyle();
- for (int i = 1; i <= max; i++) {
- // 鏍规嵁鍑忓帇閭g粨鏋滀釜鏁颁慨鏀归暱搴�
- switch (i) {
- case 1:
- tableStyle.setColWidths(new int[]{650, 2900, 850, 2300, 2100, 1200});
- break;
- case 2:
- tableStyle.setColWidths(new int[]{650, 2700, 850, 2200, 1200, 1200, 1200});
- break;
- case 3:
- tableStyle.setColWidths(new int[]{650, 2700, 850, 1600, 1000, 1000, 1000, 1200});
- break;
- case 4:
- tableStyle.setColWidths(new int[]{650, 2400, 850, 1500, 850, 850, 850, 850, 1200});
- break;
- case 5:
- tableStyle.setColWidths(new int[]{650, 2200, 850, 1350, 750, 750, 750, 750, 750, 1200});
- break;
- }
- }
- tableStyle.setWidth("10000");
- tableStyle.setAlign(TableRowAlign.CENTER);
- BorderStyle borderStyle = new BorderStyle();
- borderStyle.setColor("000000");
- borderStyle.setType(XWPFTable.XWPFBorderType.SINGLE);
- borderStyle.setSize(4);
- tableStyle.setLeftBorder(borderStyle);
- tableStyle.setRightBorder(borderStyle);
- tableStyle.setInsideHBorder(borderStyle); // 璁剧疆姘村钩鍐呰竟妗�
- tableStyle.setInsideVBorder(borderStyle);
- tableRenderData.setTableStyle(tableStyle);
-
- if (!resultCh.get().equals("")) {
- resultCh.set("缁忔楠岋紝" + resultCh.get() + "鎵�妫�椤圭洰涓嶅悎鏍硷紝鍏朵綑鎵�妫�椤圭洰鍧囧悎鏍笺��");
- } else {
- resultCh.set("缁忔楠屾鎵�" + enterFactoryReport.getSample() + "鍚勯」鐩潎绗﹀悎妫�楠岃鑼冭姹傘��");
- }
-
- ConfigureBuilder builder = Configure.builder();
- builder.useSpringEL(true);
-
- InputStream inputStream = this.getClass().getResourceAsStream("/static/small-report-template.docx");
- XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
- new HashMap<String, Object>() {{
- put("report", enterFactoryReport);
- put("standardMethod", standardMethod2.toString().equals("null") ? "" : standardMethod2);
- put("orderType", orderType);
- put("table", tableRenderData);
- put("resultCh", resultCh);
- put("writeUrl", null);
- put("examineUrl", null);
- put("ratifyUrl", null);
- put("writeDateUrl", null);
- put("examineDateUrl", null);
- put("ratifyDateUrl", null);
- put("seal1", null);
- }});
- try {
- // 淇敼鎹㈣鍜屽悎骞堕棶棰�
- updaeMerge(template.getXWPFDocument(), true);
- String name = insReport.getCode().replace("/", "") + "-J.docx";
- template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
- insReport.setUrl("/word/" + name);
- insReport.setIsPass(0);
- insReport.setWriteUserId(SecurityUtils.getUserId().intValue());//鎻愪氦浜�
- insReport.setWriteTime(LocalDateTime.now());//鎻愪氦鏃堕棿
- // 鏌ヨ鎶ュ憡, 鍒ゆ柇涔嬪墠鏄惁娣诲姞杩�, 娣诲姞杩囧垹闄�
- insReportMapper.delete(Wrappers.<InsReport>lambdaQuery()
- .eq(InsReport::getInsOrderId, insOrder.getId()));
- insReportMapper.insert(insReport);
- inputStream.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
}
/**
- * 娣诲姞灏忓疂琛ㄥご
+ * 娣诲姞灏忔姤鍛婅〃澶�
* @param text
* @param max
* @param rows
* @return
*/
- private static List<TextRenderData> addSmallHead(List<TextRenderData> text, Integer max, List<RowRenderData> rows) {
+ private static List<TextRenderData> addSmallHead(List<TextRenderData> text, Integer max, List<RowRenderData> rows,List<String> cableTagList) {
RowRenderData rowRenderData;
// // 澶�
TextRenderData headRenderData1 = new TextRenderData();
@@ -2113,7 +2286,7 @@
text = new ArrayList<>();
// 绗簩琛�(鍙兘娌℃湁)
- if (max > 1) {
+ if (max > 1 && CollectionUtil.isEmpty(cableTagList)) {
TextRenderData tagRenderData1 = new TextRenderData();
tagRenderData1.setText("");
Style tagStyle1 = new Style();
@@ -2170,7 +2343,62 @@
}
+ //濡傛灉鏈夌數缂嗛鑹诧紝鐢熸垚棰滆壊鏍囪瘑琛�
+ if(CollectionUtil.isNotEmpty(cableTagList)){
+ TextRenderData tagRenderData1 = new TextRenderData();
+ tagRenderData1.setText("");
+ Style tagStyle1 = new Style();
+ tagStyle1.setFontFamily("瀹嬩綋");
+ tagStyle1.setColor("000000");
+ tagRenderData1.setStyle(tagStyle1);
+ text.add(tagRenderData1);
+ TextRenderData tagRenderData2 = new TextRenderData();
+ tagRenderData2.setText("缁濈紭绾胯姱棰滆壊鍜屾爣蹇�");
+ Style tagStyle2 = new Style();
+ tagStyle2.setFontFamily("瀹嬩綋");
+ tagStyle2.setColor("000000");
+ tagRenderData2.setStyle(tagStyle2);
+ text.add(tagRenderData2);
+
+ TextRenderData tagRenderData4 = new TextRenderData();
+ tagRenderData4.setText("/");
+ Style tagStyle4 = new Style();
+ tagStyle4.setFontFamily("瀹嬩綋");
+ tagStyle4.setColor("000000");
+ tagRenderData4.setStyle(tagStyle4);
+ text.add(tagRenderData4);
+
+ TextRenderData tagRenderData5 = new TextRenderData();
+ tagRenderData5.setText("/");
+ Style tagStyle5 = new Style();
+ tagStyle5.setFontFamily("瀹嬩綋");
+ tagStyle5.setColor("000000");
+ tagRenderData5.setStyle(tagStyle5);
+ text.add(tagRenderData5);
+
+ for (String cableTag : cableTagList) {
+ TextRenderData tagRenderData6 = new TextRenderData();
+ tagRenderData6.setText(cableTag);
+ Style tagStyle6 = new Style();
+ tagStyle6.setFontFamily("瀹嬩綋");
+ tagStyle6.setColor("000000");
+ tagRenderData6.setStyle(tagStyle6);
+ text.add(tagRenderData6);
+ }
+ TextRenderData tagRenderData7 = new TextRenderData();
+ tagRenderData7.setText("/");
+ Style tagStyle7 = new Style();
+ tagStyle7.setFontFamily("瀹嬩綋");
+ tagStyle7.setColor("000000");
+ tagRenderData7.setStyle(tagStyle7);
+ text.add(tagRenderData7);
+
+ TextRenderData[] text4 = text.toArray(new TextRenderData[0]);
+ rowRenderData = Rows.of(text4).center().rowAtleastHeight(1).create();
+ rows.add(rowRenderData);
+ text = new ArrayList<>();
+ }
return text;
}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
index ebbf0c2..ed72ea8 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -26,6 +26,7 @@
import com.ruoyi.common.constant.InsOrderTypeConstants;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.common.enums.OrderType;
import com.ruoyi.common.numgen.NumberGenerator;
import com.ruoyi.common.utils.LimsDateUtil;
import com.ruoyi.common.utils.QueryWrappers;
@@ -39,6 +40,7 @@
import com.ruoyi.inspect.service.InsOrderStateService;
import com.ruoyi.inspect.service.InsProductService;
import com.ruoyi.inspect.service.InsSampleService;
+import com.ruoyi.inspect.vo.IfsOrderVO;
import com.ruoyi.inspect.vo.InsOrderPrintingVo;
import com.ruoyi.system.mapper.UserMapper;
import lombok.AllArgsConstructor;
@@ -312,9 +314,9 @@
}
}
});
- //鏄惁涓哄師鏉愭枡涓嬪崟
- if (insOrder.getTypeSource() != null && insOrder.getTypeSource().equals(1)) {
- // 鍘熸潗鏂欎笅鍗�: 濮旀墭浜哄氨鏄姤妫�浜�, 鐢熶骇鍗曚綅灏辨槸渚涘簲鍟嗗崟浣�
+ //鍘熸潗鏂欎笅鍗曟垨澶栬喘鎴愬搧涓嬪崟
+ if (Objects.nonNull(insOrder.getTypeSource())&&Objects.nonNull(insOrder.getIfsInventoryId())) {
+ // 濮旀墭浜哄氨鏄姤妫�浜�, 鐢熶骇鍗曚綅灏辨槸渚涘簲鍟嗗崟浣�
IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(insOrder.getIfsInventoryId());
Integer declareUserId = ifsInventoryQuantity.getDeclareUserId();
User user = userMapper.selectById(declareUserId);
@@ -352,47 +354,51 @@
upInsOrderOfState(insOrder);
// 鍒嗛厤妫�楠屼汉
- upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), "鍘熸潗鏂�");
+ String sonLaboratory = insOrder.getTypeSource().equals(1)?"鍘熸潗鏂�":"鎴愬搧瀹為獙瀹�";
+ upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), sonLaboratory);
- // 鏍规嵁闆朵欢鍙峰垽鏂槸鍚︽槸杈呮潗
- boolean isRaw = false;
- StructureTestObject productObject = insOrderMapper.selectProductByPartNo(ifsInventoryQuantity.getPartNo());
- // 鏌ヨ浜у搧
- if (productObject != null && StrUtil.isNotBlank(productObject.getObjectType()) && productObject.getObjectType().equals("1")) {
- isRaw = true;
- } else {
- // 鏌ヨ瀵硅薄
- StructureTestObject testObject = insOrderMapper.selectByPartNo(ifsInventoryQuantity.getPartNo());
- if (testObject != null && StrUtil.isNotBlank(testObject.getObjectType()) && testObject.getObjectType().equals("1")) {
+ //鏄惁涓哄師鏉愭枡涓嬪崟
+ if(insOrder.getTypeSource().equals(1)){
+ // 鏍规嵁闆朵欢鍙峰垽鏂槸鍚︽槸杈呮潗
+ boolean isRaw = false;
+ StructureTestObject productObject = insOrderMapper.selectProductByPartNo(ifsInventoryQuantity.getPartNo());
+ // 鏌ヨ浜у搧
+ if (productObject != null && StrUtil.isNotBlank(productObject.getObjectType()) && productObject.getObjectType().equals("1")) {
isRaw = true;
+ } else {
+ // 鏌ヨ瀵硅薄
+ StructureTestObject testObject = insOrderMapper.selectByPartNo(ifsInventoryQuantity.getPartNo());
+ if (testObject != null && StrUtil.isNotBlank(testObject.getObjectType()) && testObject.getObjectType().equals("1")) {
+ isRaw = true;
+ }
}
- }
- if (isRaw) {
- // 鑾峰彇褰撳墠瀛e害鐨勫紑濮嬫椂闂村拰缁撴潫鏃堕棿
- LocalDateTime now = LocalDateTime.now();
- // 鑾峰彇褰撳墠鏈堜唤
- int month = now.getMonthValue();
- // 纭畾褰撳墠瀛e害鐨勫紑濮嬫湀浠�
- int startMonth = (month - 1) / 3 * 3 + 1;
- // 鏋勯�犲搴︾殑寮�濮嬫椂闂�
- LocalDateTime startOfQuarter = LocalDateTime.of(now.getYear(), Month.of(startMonth), 1, 0, 0);
- // 璁$畻涓嬩竴涓搴︾殑寮�濮嬫椂闂�
- LocalDateTime startOfNextQuarter = startOfQuarter.plusMonths(3);
- // 璁$畻褰撳墠瀛e害鐨勭粨鏉熸椂闂�
- LocalDateTime endOfQuarter = startOfNextQuarter.minusSeconds(1);
+ if (isRaw) {
+ // 鑾峰彇褰撳墠瀛e害鐨勫紑濮嬫椂闂村拰缁撴潫鏃堕棿
+ LocalDateTime now = LocalDateTime.now();
+ // 鑾峰彇褰撳墠鏈堜唤
+ int month = now.getMonthValue();
+ // 纭畾褰撳墠瀛e害鐨勫紑濮嬫湀浠�
+ int startMonth = (month - 1) / 3 * 3 + 1;
+ // 鏋勯�犲搴︾殑寮�濮嬫椂闂�
+ LocalDateTime startOfQuarter = LocalDateTime.of(now.getYear(), Month.of(startMonth), 1, 0, 0);
+ // 璁$畻涓嬩竴涓搴︾殑寮�濮嬫椂闂�
+ LocalDateTime startOfNextQuarter = startOfQuarter.plusMonths(3);
+ // 璁$畻褰撳墠瀛e害鐨勭粨鏉熸椂闂�
+ LocalDateTime endOfQuarter = startOfNextQuarter.minusSeconds(1);
- // 鏍规嵁涓嬪崟鐨勮鏍煎瀷鍙峰垽鏂槸鍚︿负瀛e害棣栨鍑虹幇
- Integer count = ifsInventoryQuantityMapper.selectIsFirst(insOrder.getPartDetail(),
- ifsInventoryQuantity.getSupplierName(),
- startOfNextQuarter,
- endOfQuarter);
+ // 鏍规嵁涓嬪崟鐨勮鏍煎瀷鍙峰垽鏂槸鍚︿负瀛e害棣栨鍑虹幇
+ Integer count = ifsInventoryQuantityMapper.selectIsFirst(insOrder.getPartDetail(),
+ ifsInventoryQuantity.getSupplierName(),
+ startOfNextQuarter,
+ endOfQuarter);
- if(count == 0) {
- ifsInventoryQuantity.setIsFirst(1);
- ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
- .eq(IfsInventoryQuantity::getId, insOrder.getIfsInventoryId())
- .set(IfsInventoryQuantity::getIsFirst, 1));
+ if (count == 0) {
+ ifsInventoryQuantity.setIsFirst(1);
+ ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
+ .eq(IfsInventoryQuantity::getId, insOrder.getIfsInventoryId())
+ .set(IfsInventoryQuantity::getIsFirst, 1));
+ }
}
}
}
@@ -516,9 +522,10 @@
@Override
public Map<String, Object> getInsOrderAndSample(Integer id, String laboratory) {
Map<String, Object> map = new HashMap<>();
- InsOrder insOrder = insOrderMapper.selectById(id);
+// InsOrder insOrder = insOrderMapper.selectById(id);
+ IfsOrderVO ifsOrderVO = insOrderMapper.selectOrderInfoById(id);
List<SampleProductDto> list = insSampleMapper.getInsOrderAndSample(id, laboratory);
- map.put("insOrder", insOrder);
+ map.put("insOrder", ifsOrderVO);
map.put("sampleProduct", list);
//鏌ヨ鎵�鏈夎褰曟ā鐗堝幓閲�
List<Map<Integer, Object>> list2 = insOrderMapper.selectReportModelByOrderId(id, laboratory);
@@ -1207,9 +1214,12 @@
* TODO 鍚庣画闇�瑕佽皟鐢↖FS鐨勬帴鍙� 绉诲叆鐨勫簱浣嶅彿 toLocation
*/
// 妫�楠屽悗绉诲簱
- if(one.getIsSplitOrder().equals(1)){
- //濡傛灉璁㈠崟涓哄師鏉愭枡鐨勬媶鍒嗚鍗曪紝鍒欑Щ鍒板璐簱浣�
- toLocation = "W03";
+ //1301:鍘熸潗鏂欏悎鏍煎簱锛孋P-02-001:鎴愬搧搴�
+ if(StringUtils.equals(inventoryQuantity.getOrderType(), OrderType.RAW.getValue())){
+ //濡傛灉璁㈠崟涓哄師鏉愭枡鐨勬媶鍒嗚鍗曪紝鍒欑Щ鍒板璐師鏉愭枡搴撲綅W03
+ toLocation = one.getIsSplitOrder().equals(1)?"W03":"1301";
+ }else if(StringUtils.equals(inventoryQuantity.getOrderType(), OrderType.WG.getValue())){
+ toLocation = "CP-02-001";
}else{
toLocation = "1301";
}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/OutsourcingFinishProductInspectionServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/OutsourcingFinishProductInspectionServiceImpl.java
new file mode 100644
index 0000000..b5c8cea
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/OutsourcingFinishProductInspectionServiceImpl.java
@@ -0,0 +1,50 @@
+package com.ruoyi.inspect.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.IfsInventoryQuantityDto;
+import com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto;
+import com.ruoyi.basic.mapper.StandardTreeMapper;
+import com.ruoyi.basic.pojo.IfsInventoryQuantity;
+import com.ruoyi.basic.vo.IfsInventoryQuantityVO;
+import com.ruoyi.common.enums.OrderType;
+import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.inspect.service.OutsourcingFinishProductInspectionService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 澶栬喘鎴愬搧妫�楠宻erviceImpl
+ */
+@Slf4j
+@Service
+public class OutsourcingFinishProductInspectionServiceImpl implements OutsourcingFinishProductInspectionService {
+
+ @Autowired
+ private StandardTreeMapper standardTreeMapper;
+
+ @Override
+ public IPage<IfsInventoryQuantityVO> getWarehouseSubmit(Page page, IfsInventoryQuantity ifsInventoryQuantity) {
+ ifsInventoryQuantity.setOrderType(OrderType.WG.getValue());
+ return standardTreeMapper.selectIfsPage(page, QueryWrappers.queryWrappers(ifsInventoryQuantity));
+ }
+
+ @Override
+ public IPage<IfsInventoryQuantitySupplierDto> getIfsByOver(Page<IfsInventoryQuantitySupplierDto> page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto) {
+ String beginDeclareDate = ifsInventoryQuantityDto.getBeginDeclareDate();
+ String endDeclareDate = ifsInventoryQuantityDto.getEndDeclareDate();
+ ifsInventoryQuantityDto.setBeginDeclareDate(null);
+ ifsInventoryQuantityDto.setEndDeclareDate(null);
+ ifsInventoryQuantityDto.setOrderType(OrderType.WG.getValue());
+ IPage<IfsInventoryQuantitySupplierDto> ifsByOver = standardTreeMapper.getIfsByOver(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto), beginDeclareDate, endDeclareDate);
+ ifsByOver.getRecords().forEach(r->r.setOrderTypeName(OrderType.getLabelByValue(r.getOrderType())));
+ return ifsByOver;
+ }
+
+ @Override
+ public IPage<IfsInventoryQuantityDto> getIfsByStateOne(IPage<IfsInventoryQuantityDto> page, IfsInventoryQuantityDto ifsInventoryQuantityDto) {
+ ifsInventoryQuantityDto.setOrderType(OrderType.WG.getValue());
+ return standardTreeMapper.getIfsByStateOne(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto));
+ }
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
index 4f2fe8b..b388357 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
@@ -20,21 +20,25 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.basic.dto.*;
+import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper;
+import com.ruoyi.basic.mapper.StandardTreeMapper;
import com.ruoyi.basic.pojo.IfsInventoryQuantity;
+import com.ruoyi.basic.vo.IfsInventoryQuantityVO;
+import com.ruoyi.common.config.WechatProperty;
import com.ruoyi.common.constant.InsOrderTypeConstants;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.User;
-import com.ruoyi.common.config.WechatProperty;
+import com.ruoyi.common.enums.OrderType;
+import com.ruoyi.common.numgen.NumberGenerator;
import com.ruoyi.common.utils.LimsDateUtil;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.WxCpUtils;
import com.ruoyi.common.utils.api.IfsApiUtils;
+import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.dto.CopperInsOrderDto;
import com.ruoyi.inspect.dto.OrderSplitDTO;
import com.ruoyi.inspect.dto.RawMaterialStandardTreeDto;
-import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper;
-import com.ruoyi.basic.mapper.StandardTreeMapper;
import com.ruoyi.inspect.dto.SampleProductDto;
import com.ruoyi.inspect.excel.OrderSplitExcelData;
import com.ruoyi.inspect.excel.OrderSplitExcelListener;
@@ -48,9 +52,6 @@
import com.ruoyi.inspect.service.InsOrderService;
import com.ruoyi.inspect.service.InsReportService;
import com.ruoyi.inspect.service.RawMaterialOrderService;
-import com.ruoyi.common.numgen.NumberGenerator;
-import com.ruoyi.framework.exception.ErrorException;
-import com.ruoyi.basic.vo.IfsInventoryQuantityVO;
import com.ruoyi.performance.mapper.AuxiliaryOutputWorkingHoursMapper;
import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHours;
import com.ruoyi.system.mapper.UserMapper;
@@ -148,6 +149,9 @@
@Override
public IPage<IfsInventoryQuantityVO> getWarehouseSubmit(IPage<IfsInventoryQuantity> page, IfsInventoryQuantity ifsInventoryQuantity) {
+ if(ifsInventoryQuantity.getIsInspect().equals(1)){
+ ifsInventoryQuantity.setOrderType(OrderType.RAW.getValue());
+ }
IPage<IfsInventoryQuantityVO> ifsInventoryQuantityIPage = standardTreeMapper.selectIfsPage(page, QueryWrappers.queryWrappers(ifsInventoryQuantity));
ifsInventoryQuantityIPage.getRecords().forEach(f->{
Long count = ifsInventoryQuantityMapper.selectCount(Wrappers.<IfsInventoryQuantity>lambdaQuery()
@@ -160,6 +164,7 @@
@Override
public IPage<IfsInventoryQuantityDto> getIfsByStateOne(IPage<IfsInventoryQuantityDto> page, IfsInventoryQuantityDto ifsInventoryQuantityDto) {
+ ifsInventoryQuantityDto.setOrderType(OrderType.RAW.getValue());
return standardTreeMapper.getIfsByStateOne(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto));
}
@@ -170,13 +175,14 @@
* @return
*/
@Override
- public int inspectionReport(List<Long> ids) {
+ public int inspectionReport(List<Long> ids,String orderType) {
Integer userId = SecurityUtils.getUserId().intValue();
ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
.in(IfsInventoryQuantity::getId, ids)
.set(IfsInventoryQuantity::getDeclareUser, userMapper.selectById(userId).getName())
.set(IfsInventoryQuantity::getDeclareUserId, userId)
.set(IfsInventoryQuantity::getIsInspect, 1)
+ .set(IfsInventoryQuantity::getOrderType,orderType)
.set(IfsInventoryQuantity::getDeclareDate, LocalDateTime.now())
);
threadPoolTaskExecutor.execute(() -> {
@@ -230,6 +236,13 @@
return ifsInventoryQuantityMapper.printLabel(ids);
}
+
+ @Override
+ @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
+ public Long getOrderCountByIfsId(Long ifsId) {
+ return insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery().eq(InsOrder::getIfsInventoryId,ifsId).ne(InsOrder::getState,-1));
+ }
+
/**
* 鎶ユ
* @param ifsInventoryQuantity
@@ -238,6 +251,12 @@
@Override
public int inspectionReportOne(IfsInventoryQuantity ifsInventoryQuantity) {
Integer userId = SecurityUtils.getUserId().intValue();
+ boolean validateValue = OrderType.validateValue(ifsInventoryQuantity.getOrderType());
+ if(!validateValue){
+ throw new ErrorException("鎶ユ澶辫触锛岄潪娉曠殑閿�鍞鍗曞垎绫绘灇涓�");
+ }
+ //鎵规鍙峰瓧姣嶈浆澶у啓
+ ifsInventoryQuantity.setUpdateBatchNo(ifsInventoryQuantity.getUpdateBatchNo().toUpperCase(Locale.ROOT));
ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
.eq(IfsInventoryQuantity::getId, ifsInventoryQuantity.getId())
.set(IfsInventoryQuantity::getDeclareUser, userMapper.selectById(userId).getName())
@@ -245,6 +264,7 @@
.set(IfsInventoryQuantity::getIsInspect, 1)
.set(IfsInventoryQuantity::getDeclareDate, LocalDateTime.now())
.set(IfsInventoryQuantity::getUpdateBatchNo, ifsInventoryQuantity.getUpdateBatchNo())
+ .set(IfsInventoryQuantity::getOrderType,ifsInventoryQuantity.getOrderType())
);
threadPoolTaskExecutor.execute(() -> {
@@ -415,8 +435,9 @@
String endDeclareDate = ifsInventoryQuantityDto.getEndDeclareDate();
ifsInventoryQuantityDto.setBeginDeclareDate(null);
ifsInventoryQuantityDto.setEndDeclareDate(null);
-
+ ifsInventoryQuantityDto.setOrderType(OrderType.RAW.getValue());
IPage<IfsInventoryQuantitySupplierDto> ifsByOver = standardTreeMapper.getIfsByOver(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto), beginDeclareDate, endDeclareDate);
+ ifsByOver.getRecords().forEach(r->r.setOrderTypeName(OrderType.getLabelByValue(r.getOrderType())));
return ifsByOver;
}
@@ -533,6 +554,9 @@
ifsInventoryQuantity.setIsSource(0);
ifsInventoryQuantity.setState(0);
ifsInventoryQuantity.setIsFinish(0);
+ if(!OrderType.validateValue(ifsInventoryQuantity.getOrderType())){
+ throw new ErrorException("鏂板鎶ユ淇℃伅澶辫触锛岄潪娉曠殑閿�鍞鍗曞垎绫绘灇涓�");
+ }
ifsInventoryQuantityMapper.insert(ifsInventoryQuantity);
}
@@ -796,7 +820,7 @@
String endDeclareDate = ifsInventoryQuantityDto.getEndDeclareDate();
ifsInventoryQuantityDto.setBeginDeclareDate(null);
ifsInventoryQuantityDto.setEndDeclareDate(null);
-
+ ifsInventoryQuantityDto.setOrderType(OrderType.RAW.getValue());
return standardTreeMapper.getIfsByQuarter(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto), beginDeclareDate, endDeclareDate);
}
@@ -948,7 +972,7 @@
if(Objects.nonNull(splitOrderList) && !splitOrderList.isEmpty()){
List<Long> ids = splitOrderList.stream().map(IfsInventoryQuantity::getId).collect(Collectors.toList());
ids.add(ifsInventoryQuantity.getId());
- this.inspectionReport(ids);
+ this.inspectionReport(ids,OrderType.RAW.getValue());
}
//鍕鹃�夊悓姝ュ埌MES锛屼繚瀛樿鍗曟媶鍒嗚褰�
if(orderSplitDTO.getPushToMes()){
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/vo/IfsOrderVO.java b/inspect-server/src/main/java/com/ruoyi/inspect/vo/IfsOrderVO.java
new file mode 100644
index 0000000..38ae11a
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/vo/IfsOrderVO.java
@@ -0,0 +1,76 @@
+package com.ruoyi.inspect.vo;
+
+import com.ruoyi.inspect.pojo.InsOrder;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * ifs璁㈠崟vo
+ */
+@Data
+public class IfsOrderVO extends InsOrder implements Serializable {
+
+
+ /**
+ * 闆朵欢鎵规灞炴�т富閿甶d
+ */
+ @ApiModelProperty("闆朵欢鎵规灞炴�т富閿甶d")
+ private Long lotPartId;
+
+ /**
+ * 缁濈紭棰滆壊
+ */
+ @ApiModelProperty("缁濈紭棰滆壊")
+ private String insulationColor;
+
+ /**
+ * 澶栨姢棰滆壊
+ */
+ @ApiModelProperty("澶栨姢棰滆壊")
+ private String outerColor;
+
+ /**
+ * 鐩樺彿
+ */
+ @ApiModelProperty("鐩樺彿")
+ private String drumNo;
+
+ /**
+ * 鍗板瓧淇℃伅
+ */
+ @ApiModelProperty("鍗板瓧淇℃伅")
+ private String letteringInfo;
+
+ /**
+ * 璧峰绫虫爣
+ */
+ @ApiModelProperty("璧峰绫虫爣")
+ private BigDecimal startMeterMark;
+
+ /**
+ * 鎴绫虫爣
+ */
+ @ApiModelProperty("鎴绫虫爣")
+ private BigDecimal endMeterMark;
+
+ /**
+ * 鏄惁鏄媶鍒嗚鍗�(0:鍚� 1:鏄�)
+ */
+ @ApiModelProperty("鏄惁鏄媶鍒嗚鍗�(0:鍚� 1:鏄�)")
+ private Integer isSplitOrder;
+
+
+ /**
+ * ifs璁㈠崟鍒嗙被(01raw:鍘熸潗鏂� 02wg:澶栬喘鎴愬搧)
+ */
+ @ApiModelProperty("ifs璁㈠崟鍒嗙被(01raw:鍘熸潗鏂� 02wg:澶栬喘鎴愬搧)")
+ private String ifsOrderType;
+
+ private String partNo;
+
+ private String lotBatchNo;
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/vo/InsSampleUserVO.java b/inspect-server/src/main/java/com/ruoyi/inspect/vo/InsSampleUserVO.java
new file mode 100644
index 0000000..1db7091
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/vo/InsSampleUserVO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.inspect.vo;
+
+import com.ruoyi.inspect.pojo.InsSampleUser;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class InsSampleUserVO extends InsSampleUser implements Serializable {
+
+ /**
+ * 妫�楠屽憳
+ */
+ @ApiModelProperty("妫�楠屽憳")
+ private String inspector;
+
+ /**
+ * 妫�楠屾棩鏈�
+ */
+ @ApiModelProperty("妫�楠屾棩鏈�")
+ private String inspectDate;
+
+ /**
+ * 鍨嬪彿
+ */
+ @ApiModelProperty("鍨嬪彿")
+ private String model;
+
+
+
+
+}
diff --git a/inspect-server/src/main/resources/mapper/IfsPartPropsRecordMapper.xml b/inspect-server/src/main/resources/mapper/IfsPartPropsRecordMapper.xml
new file mode 100644
index 0000000..4cccb84
--- /dev/null
+++ b/inspect-server/src/main/resources/mapper/IfsPartPropsRecordMapper.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.inspect.mapper.IfsPartPropsRecordMapper">
+
+ <resultMap id="BaseResultMap" type="com.ruoyi.inspect.pojo.IfsPartPropsRecord">
+ <id property="id" column="id" jdbcType="BIGINT"/>
+ <result property="ifsInventoryId" column="ifs_inventory_id" jdbcType="BIGINT"/>
+ <result property="drumNo" column="drum_no" jdbcType="VARCHAR"/>
+ <result property="startMeterMark" column="start_meter_mark" jdbcType="DECIMAL"/>
+ <result property="endMeterMark" column="end_meter_mark" jdbcType="DECIMAL"/>
+ <result property="insulationColor" column="insulation_color" jdbcType="VARCHAR"/>
+ <result property="outerColor" column="outer_color" jdbcType="VARCHAR"/>
+ <result property="letteringInfo" column="lettering_info" jdbcType="VARCHAR"/>
+ <result property="partPropsFlag" column="part_props_flag" jdbcType="BIT"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,ifs_inventory_id,drum_no,
+ start_meter_mark,end_meter_mark,insulation_color,
+ outer_color,lettering_info,part_props_flag
+ </sql>
+ <select id="selectCountByPartNoAndLotBatchNo" resultType="java.lang.Long">
+ select
+ COUNT(iiq.id)
+ from ifs_inventory_quantity iiq
+ left join ifs_part_props_record ippr
+ on iiq.id = ippr.ifs_inventory_id
+ where iiq.part_no = #{partNo}
+ and iiq.update_batch_no= #{lotBatchNo}
+ and ippr.id is not null
+ </select>
+</mapper>
diff --git a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
index 78234d5..fb57bb0 100644
--- a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
@@ -469,4 +469,42 @@
and ip.structure_item_parameter_id = #{itmeId}
group by io.id) a
</select>
+ <select id="selectOrderInfoById" resultType="com.ruoyi.inspect.vo.IfsOrderVO">
+ select io.*,
+ iiq.is_split_order,
+ iiq.order_type AS ifs_order_type,
+ iiq.part_no,
+ iiq.update_batch_no AS lot_batch_no,
+ ipps.id AS lot_part_id,
+ case
+ when ipps.drum_no is not null and ipps.drum_no!='' then ipps.drum_no
+ else isor.drum_no
+ end AS drum_no,
+ case
+ when ipps.insulation_color is not null and ipps.insulation_color!='' then ipps.insulation_color
+ else isor.insulation_color
+ end AS insulation_color,
+ case
+ when ipps.outer_color is not null and ipps.outer_color!='' then ipps.outer_color
+ else isor.outer_color
+ end AS outer_color,
+ case
+ when ipps.lettering_info is not null and ipps.lettering_info!='' then ipps.lettering_info
+ else isor.lettering_info
+ end AS lettering_info,
+ ipps.start_meter_mark,
+ ipps.end_meter_mark
+ from ins_order io left join ifs_inventory_quantity iiq on io.ifs_inventory_id=iiq.id
+ left join ifs_split_order_record isor
+ on iiq.order_no=isor.order_no
+ and iiq.line_no=isor.line_no
+ and iiq.release_no=isor.release_no
+ and iiq.receipt_no=isor.receipt_no
+ and iiq.part_no=isor.part_no
+ AND iiq.update_batch_no = isor.lot_batch_no
+ LEFT JOIN ifs_part_props_record ipps ON iiq.id = ipps.ifs_inventory_id
+ where io.state !=-1
+ AND io.id = #{id}
+ LIMIT 1
+ </select>
</mapper>
diff --git a/inspect-server/src/main/resources/mapper/InsSampleUserMapper.xml b/inspect-server/src/main/resources/mapper/InsSampleUserMapper.xml
index 5cad2d2..c28afad 100644
--- a/inspect-server/src/main/resources/mapper/InsSampleUserMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsSampleUserMapper.xml
@@ -1,4 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.ruoyi.inspect.mapper.InsSampleUserMapper">
+ <select id="selectUserNameByOrderId" resultType="com.ruoyi.inspect.vo.InsSampleUserVO">
+ select
+ group_concat(DISTINCT u.name separator ',') AS inspector,
+ date_format(isu.create_time,'%Y-%m-%d') AS inspect_date,
+ isa.model
+ from ins_sample_user isu
+ left join ins_sample isa on isu.ins_sample_id = isa.ins_order_id
+ left join user u on isu.user_id=u.id
+ where isu.ins_sample_id=#{orderId} and isu.state=0
+ group by isu.ins_sample_id
+ order by isu.create_time
+ </select>
</mapper>
diff --git a/inspect-server/src/main/resources/static/small-wg-report-template.docx b/inspect-server/src/main/resources/static/small-wg-report-template.docx
new file mode 100644
index 0000000..4a2285b
--- /dev/null
+++ b/inspect-server/src/main/resources/static/small-wg-report-template.docx
Binary files differ
diff --git a/performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryOutputWorkingHoursMapper.java b/performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryOutputWorkingHoursMapper.java
index 97e9e39..b331be6 100644
--- a/performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryOutputWorkingHoursMapper.java
+++ b/performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryOutputWorkingHoursMapper.java
@@ -8,6 +8,7 @@
import com.ruoyi.performance.dto.AuxiliaryOriginalHoursLookDto;
import com.ruoyi.performance.dto.AuxiliaryOutputWorkingHoursDto;
import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHours;
+import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -21,6 +22,7 @@
* @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
* @since 2024-05-28 03:48:48
*/
+@Mapper
public interface AuxiliaryOutputWorkingHoursMapper extends BaseMapper<AuxiliaryOutputWorkingHours> {
IPage<AuxiliaryOutputWorkingHoursDto> selectAuxiliaryOutputWorkingHours(Page page, @Param("ew") QueryWrapper<AuxiliaryOutputWorkingHoursDto> ew, @Param("ids") List<Long> ids);
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/OrderType.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/OrderType.java
new file mode 100644
index 0000000..de83896
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/OrderType.java
@@ -0,0 +1,44 @@
+package com.ruoyi.common.enums;
+
+import org.apache.commons.lang3.StringUtils;
+
+public enum OrderType {
+
+ RAW("鍘熸潗鏂�","01raw"),
+ WG("澶栬喘鎴愬搧","02wg");
+
+ private String label,value;
+
+ public String getLabel() {
+ return label;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ OrderType(String label, String value) {
+ this.label = label;
+ this.value = value;
+ }
+
+ public static boolean validateValue(String value){
+ boolean flag = false;
+ for (OrderType orderType : OrderType.values()) {
+ if(StringUtils.isNotBlank(value)&&StringUtils.equals(orderType.getValue(),value)){
+ flag = true;
+ }
+ }
+ return flag;
+ }
+
+ public static String getLabelByValue(String value){
+ for (OrderType orderType : OrderType.values()) {
+ if(validateValue(value)&&StringUtils.equals(orderType.getValue(), value)){
+ return orderType.getLabel();
+ }
+ }
+ return "";
+ }
+
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/QueryWrappers.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/QueryWrappers.java
index a4b5d3d..9c46a62 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/QueryWrappers.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/QueryWrappers.java
@@ -51,8 +51,10 @@
if (!field.getName().equals("orderBy")) {
if(value.getClass()== LocalDateTime.class){
wrapper.like(StrUtil.toUnderlineCase(field.getName()), ((LocalDateTime) value).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
- }else{
+ }else if(value.getClass()== String.class){
wrapper.like(StrUtil.toUnderlineCase(field.getName()), value);
+ }else{
+ wrapper.eq(StrUtil.toUnderlineCase(field.getName()), value);
}
} else {
Map<String, String> map = (Map<String, String>) value;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/api/IfsApiUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/api/IfsApiUtils.java
index ca4d3a9..0865b04 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/api/IfsApiUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/api/IfsApiUtils.java
@@ -79,7 +79,15 @@
return getResult("MODIFY_PURCH_RECEIPT_LOT_STD", inAttr, ifsProperties.getCustorder(), "淇敼閲囪喘璁㈠崟鎵规鍙�-->");
}
-
+ /**
+ * 搴撳瓨鐗╂枡鎵规灞炴�ф柊澧炰慨鏀规帴鍙�
+ *
+ * @param inAttr
+ * @return
+ */
+ public Result importPartLotAttr(String inAttr) {
+ return getResult("IMPORT_PART_LOT_ATTR_STD", inAttr, ifsProperties.getCustorder(), "搴撳瓨鐗╂枡鎵规灞炴�ф柊澧炰慨鏀规帴鍙�-->");
+ }
/**
* 鏌ヨ搴撳瓨鏁版嵁
--
Gitblit v1.9.3