From 3793ba4a9b6be8faa6df0d4a76c06763ac03f873 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 29 十月 2025 15:06:04 +0800
Subject: [PATCH] 外购成品报检相关问题调整
---
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java | 2377 +++++++++++++++++++++++++++++++++--------------------------
1 files changed, 1,328 insertions(+), 1,049 deletions(-)
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 f70a18d..7d550f7 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
@@ -1,1050 +1,1329 @@
-//package com.ruoyi.inspect.service.impl;
-//
-//import cn.hutool.core.collection.CollUtil;
-//import cn.hutool.core.util.ObjectUtil;
-//import cn.hutool.core.util.StrUtil;
-//import cn.hutool.json.JSONUtil;
-//import com.alibaba.excel.EasyExcel;
-//import com.alibaba.excel.ExcelWriter;
-//import com.alibaba.excel.write.metadata.WriteSheet;
-//import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
-//import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy;
-//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-//import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-//import com.baomidou.mybatisplus.core.metadata.IPage;
-//import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-//import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-//import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper;
-//import com.ruoyi.basic.mapper.StandardProductListMapper;
-//import com.ruoyi.basic.pojo.IfsInventoryQuantity;
-//import com.ruoyi.basic.pojo.StandardProductList;
-//import com.ruoyi.basic.pojo.StructureTestObject;
-//import com.ruoyi.common.constant.InsOrderTypeConstants;
-//import com.ruoyi.common.core.domain.entity.User;
-//import com.ruoyi.common.numgen.NumberGenerator;
-//import com.ruoyi.common.utils.*;
-//import com.ruoyi.framework.exception.ErrorException;
-//import com.ruoyi.inspect.dto.*;
-//import com.ruoyi.inspect.mapper.*;
-//import com.ruoyi.inspect.pojo.*;
-//import com.ruoyi.inspect.service.InsOrderService;
-//import com.ruoyi.inspect.service.InsProductService;
-//import com.ruoyi.inspect.service.InsSampleService;
-//import com.ruoyi.inspect.vo.InsOrderPrintingVo;
-//import com.ruoyi.inspect.vo.SampleDefectsFatherVo;
-//import com.ruoyi.system.mapper.CustomMapper;
-//import com.ruoyi.system.mapper.UserMapper;
-//import lombok.AllArgsConstructor;
-//import org.apache.commons.lang3.StringUtils;
-//import org.springframework.beans.BeanUtils;
-//import org.springframework.stereotype.Service;
-//import org.springframework.transaction.annotation.Transactional;
-//
-//import javax.servlet.http.HttpServletResponse;
-//import java.io.IOException;
-//import java.math.BigDecimal;
-//import java.net.URLEncoder;
-//import java.time.LocalDate;
-//import java.time.LocalDateTime;
-//import java.time.Month;
-//import java.time.format.DateTimeFormatter;
-//import java.util.*;
-//import java.util.concurrent.atomic.AtomicInteger;
-//import java.util.stream.Collectors;
-//
-///**
-// * @author gaoaoy
-// * @description 閽堝琛ㄣ�恑ns_order(妫�楠屼笅鍗�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
-// * @createDate 2024-03-12 16:17:55
-// */
-//@Service
-//@AllArgsConstructor
-//public class InsOrderServiceImpl extends ServiceImpl<InsOrderMapper, InsOrder>
-// implements InsOrderService {
-//
-// private InsOrderMapper insOrderMapper;
-// private InsSampleService insSampleService;
-// private InsSampleMapper insSampleMapper;
-// private InsProductService insProductService;
-// private InsProductMapper insProductMapper;
-// private InsProductUserMapper insProductUserMapper;
-// private InsSampleUserMapper insSampleUserMapper;
-// private InsOrderStateMapper insOrderStateMapper;
-// private UserMapper userMapper;
-// private IfsInventoryQuantityMapper ifsInventoryQuantityMapper;
-// private CustomMapper customMapper;
-// private final NumberGenerator<InsOrder> numberGenerator;
-// private InsReportMapper insReportMapper;
-// private InsUnqualifiedRetestProductMapper insUnqualifiedRetestProductMapper;
-// private IfsApiUtils ifsApiUtils;
-// private SpotCheckQuarterItemMapper spotCheckQuarterItemMapper;
-// private StandardProductListMapper standardProductListMapper;
-//
-//
-//
-// //鑾峰彇妫�楠屼笅鍗曟暟鎹�
-// @Override
-// public IPage<SampleOrderDto> selectInsOrderParameter(IPage<InsOrder> page, SampleOrderDto sampleOrderDto) {
-// //todo: 鍙湅鎴戝垽鏂叏閮�,涓汉,缁勭粐鐨勬潈闄�
-// String laboratory = null;
-// // 鍒ゆ柇鏄惁鏄叏閮�
-// String isOrderAll = null;
-// if (sampleOrderDto.getState() != null && sampleOrderDto.getState() == -2) {
-// isOrderAll = "1";
-// sampleOrderDto.setState(null);
-// }
-// IPage<SampleOrderDto> sampleOrderDtoIPage = insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll);
-// return insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll);
-// }
-//
-//
-// @Override
-// @Transactional(rollbackFor = Exception.class)
-// public int upInsOrder(Integer orderId, Integer sampleId, String appointed, Integer userId, String sonLaboratory) {
-// InsOrder insOrder = new InsOrder();
-// insOrder.setId(orderId);
-// insOrder.setAppointed(StringUtils.isNotEmpty(appointed) ? LocalDate.parse(appointed) : null);
-// insOrder.setSendTime(LocalDateTime.now());
-// insOrderMapper.updateById(insOrder);
-// List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId).select(InsSample::getId));
-// List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList());
-// List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
-// .in(InsProduct::getInsSampleId, ids)
-// .eq(InsProduct::getState, 1)
-// .select(InsProduct::getSonLaboratory).groupBy(InsProduct::getSonLaboratory));
-// for (InsProduct insProduct : insProducts) {
-// InsOrderState insOrderState = new InsOrderState();
-// insOrderState.setInsOrderId(orderId);
-// try {
-// insOrderState.setLaboratory(insProduct.getSonLaboratory());
-// } catch (NullPointerException e) {
-// throw new ErrorException("璇ユ楠屽崟鏈夋湭缁存姢瀹為獙瀹ょ殑妫�楠岄」鐩�");
-// }
-// insOrderState.setInsState(0);
-// insOrderStateMapper.insert(insOrderState);
-// }
-// if (userId != null) {
-// InsSampleUser insSampleUser = new InsSampleUser();
-// insSampleUser.setState(0);
-// insSampleUser.setUserId(userId);
-// insSampleUser.setInsSampleId(orderId);
-// insSampleUser.setSonLaboratory(sonLaboratory);
-// insSampleUserMapper.insert(insSampleUser);
-// }
-//
-// // 鍒ゆ柇璁㈠崟鏈夋病鏈夌粦瀹氭娊鏍疯鍒�
-// InsOrder order = insOrderMapper.selectById(orderId);
-// if (order.getQuarterItemId() != null) {
-// // 闇�瑕佹坊鍔犱笅鍙戞椂闂村埌鎶芥牱鏃堕棿, 鍙栨牱浜哄憳灏辨槸妫�娴嬩汉
-// SpotCheckQuarterItem spotCheckQuarterItem = spotCheckQuarterItemMapper.selectById(order.getQuarterItemId());
-// spotCheckQuarterItem.setSpotCheckTime(order.getSendTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-// User user = userMapper.selectById(userId);
-// spotCheckQuarterItem.setSamplingUser(user.getName());
-// spotCheckQuarterItemMapper.updateById(spotCheckQuarterItem);
-// }
-// return 1;
-// }
-//
-// @Override
-// @Transactional(rollbackFor = Exception.class)
-// public int addInsOrder(List<SampleProductDto> list, InsOrder insOrder, List<List<Integer>> pairing) {
-// // todo: 涓嬪崟鍒ゆ柇鎶芥牱璁″垝鐨勫敮涓�鎬�
-// if (insOrder.getQuarterItemId() != null) {
-// Long quarterItemCount = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
-// .eq(InsOrder::getQuarterItemId, insOrder.getQuarterItemId())
-// .notIn(InsOrder::getState, -1 ,2 ,3));
-// if (quarterItemCount > 0) {
-// throw new ErrorException("璇ユ娊鏍疯鍒掑凡琚粦瀹氳繃");
-// }
-// }
-//
-// insOrder.setState(0);
-//
-// LocalDate appointed = insOrder.getAppointed();
-//
-// insOrderMapper.insert(insOrder); // 涓昏〃
-//
-// list.forEach(a -> {
-// a.setId(null);
-// a.setInsOrderId(insOrder.getId());
-// insSampleMapper.insert(a);
-// if (ObjectUtil.isNotEmpty(a.getInsProduct())) {
-// // 鍒ゆ柇鏄惁濉啓寰呮椤规暟閲�
-// if (a.getQuantity() != null) {
-// List<InsProduct> ip2 = new ArrayList<>();
-// for (Integer i = 1; i <= a.getQuantity(); i++) {
-// // 閲嶆柊鎷疯礉 鍒涘缓鏂板璞�
-// AtomicInteger atomicInteger = new AtomicInteger(i);
-// List<InsProduct> insProducts = a.getInsProduct().stream().map(insProduct -> {
-// insProduct.setRawMaterialTag(String.valueOf(atomicInteger.get()));
-// InsProduct product = new InsProduct();
-// BeanUtils.copyProperties(insProduct, product);
-// return product;
-// }).collect(Collectors.toList());
-//
-// ip2.addAll(insProducts);
-// }
-// addInsProductMethod(a.getId(), ip2);
-// } else {
-// addInsProductMethod(a.getId(), a.getInsProduct());
-// }
-// }
-// // 鍒ゆ柇鏄惁鏈夌數缂嗛厤缃�
-// if (ObjectUtil.isNotEmpty(a.getInsulating())) {
-// // 鍒ゆ柇鏄惁鏈夎緟鍔╃嚎鑺�
-// if (ObjectUtil.isNotEmpty(a.getAuxiliaryWireCore())) {
-// if (a.getAuxiliaryWireCore().getInsProduct().stream().filter(insProduct -> insProduct.getState() == 1).count() !=
-// a.getInsulating().getInsProduct().stream().filter(insProduct -> insProduct.getState() == 1).count()) {
-// throw new ErrorException("鐢电紗閰嶇疆杈呭姪绾胯姱妫�楠岄」鏁伴噺涓嶇粺涓�, 璇锋鏌�");
-// }
-// }
-// List<InsProduct> ip2 = new ArrayList<>();
-// for (String s : a.getInsulating().getNum()) {
-// // 閲嶆柊鎷疯礉 鍒涘缓鏂板璞�
-// List<InsProduct> insProducts = a.getInsulating().getInsProduct().stream().map(insProduct -> {
-// insProduct.setCableTag(s);
-// InsProduct product = new InsProduct();
-// BeanUtils.copyProperties(insProduct, product);
-// return product;
-// }).collect(Collectors.toList());
-// ip2.addAll(insProducts);
-// }
-// for (InsProduct product : ip2) {
-// product.setStandardMethodListId(a.getInsulating().getStandardMethodListId());
-// }
-// addInsProductMethod(a.getId(), ip2);
-// }
-// // 鍒ゆ柇鏄惁鏈夎緟鍔╃嚎鑺�
-// if (ObjectUtil.isNotEmpty(a.getAuxiliaryWireCore())) {
-// List<InsProduct> ip2 = new ArrayList<>();
-// for (String s : a.getAuxiliaryWireCore().getNum()) {
-// // 閲嶆柊鎷疯礉 鍒涘缓鏂板璞�
-// List<InsProduct> insProducts = a.getAuxiliaryWireCore().getInsProduct().stream().map(insProduct -> {
-// insProduct.setCableTag(s);
-// InsProduct product = new InsProduct();
-// BeanUtils.copyProperties(insProduct, product);
-// return product;
-// }).collect(Collectors.toList());
-// ip2.addAll(insProducts);
-// }
-// for (InsProduct product : ip2) {
-// product.setStandardMethodListId(a.getAuxiliaryWireCore().getStandardMethodListId());
-// }
-// addInsProductMethod(a.getId(), ip2);
-// }
-// // 瀛愭牱鍝侀厤缃�
-// if (ObjectUtil.isNotEmpty(a.getChildSampleList())) {
-// for (SampleProductDto b : a.getChildSampleList()) {
-// for (int i = 0; i < b.getNum(); i++) {
-// b.setId(null);
-// b.setInsOrderId(insOrder.getId());
-// b.setParentId(a.getId());
-// insSampleMapper.insert(b);
-// if (ObjectUtil.isNotEmpty(b.getInsProduct())) {
-// addInsProductMethod(b.getId(), b.getInsProduct());
-// }
-// }
-// }
-// }
-// });
-// //鏄惁涓哄師鏉愭枡涓嬪崟
-// if (insOrder.getTypeSource() != null && insOrder.getTypeSource().equals(1)) {
-// // 鍘熸潗鏂欎笅鍗�: 濮旀墭浜哄氨鏄姤妫�浜�, 鐢熶骇鍗曚綅灏辨槸渚涘簲鍟嗗崟浣�
-// IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(insOrder.getIfsInventoryId());
-// Integer declareUserId = ifsInventoryQuantity.getDeclareUserId();
-// User user = userMapper.selectById(declareUserId);
-// if (user == null) {
-// throw new ErrorException("缂哄皯鎶ユ浜轰俊鎭�");
-// }
-// // 渚涘簲鍟嗗悕绉�
-// insOrder.setProduction(ifsInventoryQuantity.getSupplierName());
-// insOrder.setProductionEn("");
-// // 濮旀墭浜哄悕绉�
-// insOrder.setPrepareUserId(user.getId());
-// insOrder.setPrepareUser(user.getName());
-// insOrder.setPrepareUserEn(user.getNameEn());
-// insOrder.setPhone(user.getPhone());
-// insOrder.setState(1);
-// Long count1 = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
-// .eq(InsOrder::getIfsInventoryId, insOrder.getIfsInventoryId())
-// .ne(InsOrder::getState, -1)
-// .eq(InsOrder::getOrderType, InsOrderTypeConstants.ENTER_THE_FACTORY)
-// .ne(InsOrder::getId, insOrder.getId()));
-// // 鍒ゆ柇涔嬪墠鏄惁鏈夎繘鍘傛楠�
-// if (count1 == 0) {
-// ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>().set(IfsInventoryQuantity::getState, 1)
-// .eq(IfsInventoryQuantity::getId, insOrder.getIfsInventoryId()));
-// }
-//
-// // 鍒ゆ柇缁撴潫鐘舵�佷慨鏀瑰悎鏍肩姸鎬�
-// if (ifsInventoryQuantity.getIsFinish().equals(0)) {
-// ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
-// .eq(IfsInventoryQuantity::getId, insOrder.getIfsInventoryId())
-// .set(IfsInventoryQuantity::getInspectStatus, 0));
-// }
-//
-// upInsOrderOfState(insOrder);
-// upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), "鍘熸潗鏂�");
-//
-//
-// // 鏍规嵁闆朵欢鍙峰垽鏂槸鍚︽槸杈呮潗
-// 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);
-//
-// // 鏍规嵁涓嬪崟鐨勮鏍煎瀷鍙峰垽鏂槸鍚︿负瀛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));
-// }
-// }
-// }
-// return insOrder.getId();
-// }
-//
-// /**
-// * 娣诲姞妫�楠岄」
-// * @param sampleId
-// * @param productList
-// */
-// private void addInsProductMethod(Integer sampleId, List<InsProduct> productList) {
-// for (InsProduct product : productList) {
-// if (product.getState() == 1) {
-// product.setId(null);
-// product.setCreateTime(null);
-// product.setCreateUser(null);
-// product.setUpdateTime(null);
-// product.setUpdateUser(null);
-// product.setInsSampleId(sampleId);
-// if (product.getInspectionItemSubclass() == null) {
-// product.setInspectionItemSubclass("");
-// }
-// if (StringUtils.isBlank(product.getAsk()) || StringUtils.isBlank(product.getTell())) {
-// throw new ErrorException("鏈夋楠岄」鐨勮姹傚�兼垨瑕佹眰鎻忚堪涓虹┖, 璇峰厛鍘绘爣鍑嗗簱閰嶇疆瑕佹眰鍊兼垨瑕佹眰鎻忚堪");
-// }
-// insProductMapper.insert(product);
-// }
-// }
-// }
-//
-//
-// @Override
-// public Map<String, Object> getInsOrder(Integer id) {
-// Map<String, Object> map = new HashMap<>();
+package com.ruoyi.inspect.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+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.mapper.StandardProductListMapper;
+import com.ruoyi.basic.mapper.StructureItemParameterMapper;
+import com.ruoyi.basic.pojo.IfsInventoryQuantity;
+import com.ruoyi.basic.pojo.StandardProductList;
+import com.ruoyi.basic.pojo.StructureItemParameter;
+import com.ruoyi.basic.pojo.StructureTestObject;
+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.*;
+import com.ruoyi.common.utils.api.IfsApiUtils;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.inspect.dto.*;
+import com.ruoyi.inspect.mapper.*;
+import com.ruoyi.inspect.pojo.*;
+import com.ruoyi.inspect.service.InsOrderService;
+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;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.Month;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+/**
+ * @author gaoaoy
+ * @description 閽堝琛ㄣ�恑ns_order(妫�楠屼笅鍗�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2024-03-12 16:17:55
+ */
+@Service
+@AllArgsConstructor
+public class InsOrderServiceImpl extends ServiceImpl<InsOrderMapper, InsOrder>
+ implements InsOrderService {
+
+ private InsOrderMapper insOrderMapper;
+ private InsSampleService insSampleService;
+ private InsSampleMapper insSampleMapper;
+ private InsProductService insProductService;
+ private InsProductMapper insProductMapper;
+ private InsSampleUserMapper insSampleUserMapper;
+ private InsOrderStateService insOrderStateService;
+ private UserMapper userMapper;
+ private IfsInventoryQuantityMapper ifsInventoryQuantityMapper;
+ private final NumberGenerator<InsOrder> numberGenerator;
+ private InsReportMapper insReportMapper;
+ private InsUnqualifiedRetestProductMapper insUnqualifiedRetestProductMapper;
+ private IfsApiUtils ifsApiUtils;
+ private SpotCheckQuarterItemMapper spotCheckQuarterItemMapper;
+ private StandardProductListMapper standardProductListMapper;
+ private StructureItemParameterMapper structureItemParameterMapper;
+
+
+
+ //鑾峰彇妫�楠屼笅鍗曟暟鎹�
+ @Override
+ public IPage<SampleOrderDto> selectInsOrderParameter(IPage<InsOrder> page, SampleOrderDto sampleOrderDto) {
+ String laboratory = null;
+ // 鍒ゆ柇鏄惁鏄叏閮�
+ String isOrderAll = null;
+ if (sampleOrderDto.getState() != null && sampleOrderDto.getState() == -2) {
+ isOrderAll = "1";
+ sampleOrderDto.setState(null);
+ }
+ return insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll);
+ }
+
+
+ /**
+ * 鍒嗛厤妫�楠屼汉
+ *
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public int upInsOrder(Integer orderId, Integer sampleId, String appointed, Integer userId, String sonLaboratory) {
+ InsOrder insOrder = new InsOrder();
+ insOrder.setId(orderId);
+ insOrder.setAppointed(StringUtils.isNotEmpty(appointed) ? LocalDate.parse(appointed) : null);
+ insOrder.setSendTime(LocalDateTime.now());
+ insOrderMapper.updateById(insOrder);
+ List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId));
+ List<Integer> ids = insSamples.stream().map(InsSample::getId).collect(Collectors.toList());
+ List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+ .in(InsProduct::getInsSampleId, ids)
+ .eq(InsProduct::getState, 1)
+ .select(InsProduct::getSonLaboratory).groupBy(InsProduct::getSonLaboratory));
+
+ // 鎵归噺娣诲姞妫�楠屼换鍔$姸鎬佽〃
+ List<InsOrderState> insOrderStateList = insProducts.stream().map(insProduct -> {
+ InsOrderState insOrderState = new InsOrderState();
+ insOrderState.setInsOrderId(orderId);
+ try {
+ insOrderState.setLaboratory(insProduct.getSonLaboratory());
+ } catch (NullPointerException e) {
+ throw new ErrorException("璇ユ楠屽崟鏈夋湭缁存姢瀹為獙瀹ょ殑妫�楠岄」鐩�");
+ }
+ insOrderState.setInsState(0);
+ return insOrderState;
+ }).collect(Collectors.toList());
+ insOrderStateService.saveBatch(insOrderStateList);
+
+ if (userId != null) {
+ InsSampleUser insSampleUser = new InsSampleUser();
+ insSampleUser.setState(0);
+ insSampleUser.setUserId(userId);
+ insSampleUser.setInsSampleId(orderId);
+ insSampleUser.setSonLaboratory(sonLaboratory);
+ insSampleUserMapper.insert(insSampleUser);
+ }
+
+ // 鍒ゆ柇璁㈠崟鏈夋病鏈夌粦瀹氭娊鏍疯鍒�
+ InsOrder order = insOrderMapper.selectById(orderId);
+ if (order.getQuarterItemId() != null) {
+ // 闇�瑕佹坊鍔犱笅鍙戞椂闂村埌鎶芥牱鏃堕棿, 鍙栨牱浜哄憳灏辨槸妫�娴嬩汉
+ SpotCheckQuarterItem spotCheckQuarterItem = spotCheckQuarterItemMapper.selectById(order.getQuarterItemId());
+ spotCheckQuarterItem.setSpotCheckTime(order.getSendTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+ User user = userMapper.selectById(userId);
+ spotCheckQuarterItem.setSamplingUser(user.getName());
+ spotCheckQuarterItemMapper.updateById(spotCheckQuarterItem);
+ }
+
+ return 1;
+ }
+
+
+ public static String getWeek(String dayStr) {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ try {
+ Date date = sdf.parse(dayStr);
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
+ int day = calendar.get(Calendar.DAY_OF_MONTH);
+ return getWeekDay(dayOfWeek);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ public static String getWeekDay(int dayOfWeek) {
+ switch (dayOfWeek) {
+ case Calendar.MONDAY:
+ return "鍛ㄤ竴";
+ case Calendar.TUESDAY:
+ return "鍛ㄤ簩";
+ case Calendar.WEDNESDAY:
+ return "鍛ㄤ笁";
+ case Calendar.THURSDAY:
+ return "鍛ㄥ洓";
+ case Calendar.FRIDAY:
+ return "鍛ㄤ簲";
+ case Calendar.SATURDAY:
+ return "鍛ㄥ叚";
+ case Calendar.SUNDAY:
+ return "鍛ㄦ棩";
+ default:
+ return "鏈煡";
+ }
+ }
+
+
+ // 濡傛灉浣犱娇鐢� Java 8+锛屼篃鍙互鐢� Stream API 绠�鍖栦唬鐮侊細
+ public List<StandardProductList> findMissingItemsWithStream(List<StandardProductList> standardList,
+ List<InsProduct> insList) {
+ Set<Integer> insIds = insList.stream()
+ .map(InsProduct::getStructureItemParameterId)
+ .collect(Collectors.toSet());
+
+ return standardList.stream()
+ .filter(product -> !insIds.contains(product.getStructureItemParameterId()))
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public int addInsOrder(List<SampleProductDto> list, InsOrder insOrder) {
+ // todo: 涓嬪崟鍒ゆ柇鎶芥牱璁″垝鐨勫敮涓�鎬�
+ if (insOrder.getQuarterItemId() != null) {
+ Long quarterItemCount = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
+ .eq(InsOrder::getQuarterItemId, insOrder.getQuarterItemId())
+ .notIn(InsOrder::getState, -1 ,2 ,3));
+ if (quarterItemCount > 0) {
+ throw new ErrorException("璇ユ娊鏍疯鍒掑凡琚粦瀹氳繃");
+ }
+ }
+ insOrder.setState(0);
+
+ LocalDate appointed = insOrder.getAppointed();
+
+ insOrderMapper.insert(insOrder); // 涓昏〃
+
+ list.forEach(a -> {
+ a.setId(null);
+ a.setInsOrderId(insOrder.getId());
+ insSampleMapper.insert(a);
+ if (ObjectUtil.isNotEmpty(a.getInsProduct())) {
+ // 鍒ゆ柇鏄惁濉啓寰呮椤规暟閲�
+ if (a.getQuantity() != null) {
+ List<InsProduct> ip2 = new ArrayList<>();
+ for (Integer i = 1; i <= a.getQuantity(); i++) {
+ // 閲嶆柊鎷疯礉 鍒涘缓鏂板璞�
+ AtomicInteger atomicInteger = new AtomicInteger(i);
+ List<InsProduct> insProducts = a.getInsProduct().stream().map(insProduct -> {
+ insProduct.setRawMaterialTag(String.valueOf(atomicInteger.get()));
+ InsProduct product = new InsProduct();
+ BeanUtils.copyProperties(insProduct, product);
+ return product;
+ }).collect(Collectors.toList());
+
+ ip2.addAll(insProducts);
+ }
+ addInsProductMethod(a.getId(), ip2);
+ } else {
+ addInsProductMethod(a.getId(), a.getInsProduct());
+ }
+ }
+ // 鍒ゆ柇鏄惁鏈夌數缂嗛厤缃�
+ if (ObjectUtil.isNotEmpty(a.getInsulating())) {
+ // 鍒ゆ柇鏄惁鏈夎緟鍔╃嚎鑺�
+ if (ObjectUtil.isNotEmpty(a.getAuxiliaryWireCore())) {
+ if (a.getAuxiliaryWireCore().getInsProduct().stream().filter(insProduct -> insProduct.getState() == 1).count() !=
+ a.getInsulating().getInsProduct().stream().filter(insProduct -> insProduct.getState() == 1).count()) {
+ throw new ErrorException("鐢电紗閰嶇疆杈呭姪绾胯姱妫�楠岄」鏁伴噺涓嶇粺涓�, 璇锋鏌�");
+ }
+ }
+ List<InsProduct> ip2 = new ArrayList<>();
+ for (String s : a.getInsulating().getNum()) {
+ // 閲嶆柊鎷疯礉 鍒涘缓鏂板璞�
+ List<InsProduct> insProducts = a.getInsulating().getInsProduct().stream().map(insProduct -> {
+ insProduct.setCableTag(s);
+ InsProduct product = new InsProduct();
+ BeanUtils.copyProperties(insProduct, product);
+ return product;
+ }).collect(Collectors.toList());
+ ip2.addAll(insProducts);
+ }
+ for (InsProduct product : ip2) {
+ product.setStandardMethodListId(a.getInsulating().getStandardMethodListId());
+ }
+ addInsProductMethod(a.getId(), ip2);
+ }
+ // 鍒ゆ柇鏄惁鏈夎緟鍔╃嚎鑺�
+ if (ObjectUtil.isNotEmpty(a.getAuxiliaryWireCore())) {
+ List<InsProduct> ip2 = new ArrayList<>();
+ for (String s : a.getAuxiliaryWireCore().getNum()) {
+ // 閲嶆柊鎷疯礉 鍒涘缓鏂板璞�
+ List<InsProduct> insProducts = a.getAuxiliaryWireCore().getInsProduct().stream().map(insProduct -> {
+ insProduct.setCableTag(s);
+ InsProduct product = new InsProduct();
+ BeanUtils.copyProperties(insProduct, product);
+ return product;
+ }).collect(Collectors.toList());
+ ip2.addAll(insProducts);
+ }
+ for (InsProduct product : ip2) {
+ product.setStandardMethodListId(a.getAuxiliaryWireCore().getStandardMethodListId());
+ }
+ addInsProductMethod(a.getId(), ip2);
+ }
+ // 瀛愭牱鍝侀厤缃�
+ if (ObjectUtil.isNotEmpty(a.getChildSampleList())) {
+ for (SampleProductDto b : a.getChildSampleList()) {
+ for (int i = 0; i < b.getNum(); i++) {
+ b.setId(null);
+ b.setInsOrderId(insOrder.getId());
+ b.setParentId(a.getId());
+ insSampleMapper.insert(b);
+ if (ObjectUtil.isNotEmpty(b.getInsProduct())) {
+ addInsProductMethod(b.getId(), b.getInsProduct());
+ }
+ }
+ }
+ }
+ });
+
+ //鍘熸潗鏂欎笅鍗曟垨澶栬喘鎴愬搧涓嬪崟
+ if (Objects.nonNull(insOrder.getTypeSource())&&Objects.nonNull(insOrder.getIfsInventoryId())) {
+ // 濮旀墭浜哄氨鏄姤妫�浜�, 鐢熶骇鍗曚綅灏辨槸渚涘簲鍟嗗崟浣�
+ IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(insOrder.getIfsInventoryId());
+ Integer declareUserId = ifsInventoryQuantity.getDeclareUserId();
+ User user = userMapper.selectById(declareUserId);
+ if (user == null) {
+ throw new ErrorException("缂哄皯鎶ユ浜轰俊鎭�");
+ }
+ // 渚涘簲鍟嗗悕绉�
+ insOrder.setProduction(ifsInventoryQuantity.getSupplierName());
+ insOrder.setProductionEn("");
+ // 濮旀墭浜哄悕绉�
+ insOrder.setPrepareUserId(user.getId());
+ insOrder.setPrepareUser(user.getName());
+ insOrder.setPrepareUserEn(user.getNameEn());
+ insOrder.setPhone(user.getPhone());
+ insOrder.setState(1);
+ Long count1 = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
+ .eq(InsOrder::getIfsInventoryId, insOrder.getIfsInventoryId())
+ .ne(InsOrder::getState, -1)
+ .eq(InsOrder::getOrderType, InsOrderTypeConstants.ENTER_THE_FACTORY)
+ .ne(InsOrder::getId, insOrder.getId()));
+ // 鍒ゆ柇涔嬪墠鏄惁鏈夎繘鍘傛楠�
+ if (count1 == 0) {
+ ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>().set(IfsInventoryQuantity::getState, 1)
+ .eq(IfsInventoryQuantity::getId, insOrder.getIfsInventoryId()));
+ }
+
+ // 鍒ゆ柇缁撴潫鐘舵�佷慨鏀瑰悎鏍肩姸鎬�
+ if (ifsInventoryQuantity.getIsFinish().equals(0)) {
+ ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
+ .eq(IfsInventoryQuantity::getId, insOrder.getIfsInventoryId())
+ .set(IfsInventoryQuantity::getInspectStatus, 0));
+ }
+
+ // 瀹℃牳妫�楠屽崟
+ upInsOrderOfState(insOrder);
+
+ // 鍒嗛厤妫�楠屼汉
+ String sonLaboratory = insOrder.getTypeSource().equals(1)?"鍘熸潗鏂�":"鎴愬搧瀹為獙瀹�";
+ upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), sonLaboratory);
+
+ //鏄惁涓哄師鏉愭枡涓嬪崟
+ 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);
+
+ // 鏍规嵁涓嬪崟鐨勮鏍煎瀷鍙峰垽鏂槸鍚︿负瀛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));
+ }
+ }
+ }
+ }
+ return insOrder.getId();
+ }
+
+ /**
+ * 娣诲姞妫�楠岄」
+ * @param sampleId
+ * @param productList
+ */
+ private void addInsProductMethod(Integer sampleId, List<InsProduct> productList) {
+ for (InsProduct product : productList) {
+ if (product.getState() == 1) {
+ product.setId(null);
+ product.setCreateTime(null);
+ product.setCreateUser(null);
+ product.setUpdateTime(null);
+ product.setUpdateUser(null);
+ product.setInsSampleId(sampleId);
+ if (product.getInspectionItemSubclass() == null) {
+ product.setInspectionItemSubclass("");
+ }
+ if (StringUtils.isBlank(product.getAsk()) || StringUtils.isBlank(product.getTell())) {
+ throw new ErrorException("鏈夋楠岄」鐨勮姹傚�兼垨瑕佹眰鎻忚堪涓虹┖, 璇峰厛鍘绘爣鍑嗗簱閰嶇疆瑕佹眰鍊兼垨瑕佹眰鎻忚堪");
+ }
+ if (StringUtils.isBlank(product.getSonLaboratory())) {
+ throw new ErrorException("鏈夋楠岄」鐨勭殑瀛愬疄楠屽涓虹粦瀹�, 璇峰厛缁戝畾瀛愬疄楠屽");
+ }
+ insProductMapper.insert(product);
+ }
+ }
+ }
+
+
+ @Override
+ public Map<String, Object> getInsOrder(Integer id) {
+ Map<String, Object> map = new HashMap<>();
+ InsOrder insOrder = insOrderMapper.selectById(id);
+ List<SampleProductDto> list;
+ // 鍒ゆ柇鏄惁鏄繘鍘傛姤鍛婂厤妫�
+ if (insOrder.getIsExemption().equals(1)) {
+ list = insSampleMapper.selectExemptionByOrderId(id);
+ } else {
+ list = insSampleMapper.selectSampleProductListByOrderId2(id);
+ }
+ Map<String, Object> map1 = insSampleMapper.selectInsOrder(id);
+ map.put("insOrder", insOrder);
+ map.put("sampleProduct", list);
+ map.put("insOrderTemplate", map1);
+ return map;
+ }
+
+ /**
+ * 瀹℃牳妫�楠屽崟
+ * @param insOrder
+ * @return
+ */
+ @Override
+ public int upInsOrderOfState(InsOrder insOrder) {
+ insOrder.setExamineTime(LocalDateTime.now());
+ if (insOrder.getState() == 1) {
+ //瀹℃牳閫氳繃鎵嶄細鐢熸垚濮旀墭缂栧彿
+ // todo: 妫�楠岀被鍨嬬紪鍙�
+ InsOrder order = this.getById(insOrder.getId());
+ String code = "";
+ switch (order.getOrderType()) {
+ case InsOrderTypeConstants.SPOT_CHECK:
+ code = "C";
+ break;
+ case InsOrderTypeConstants.CUSTOMER_ORDERED:
+ code = "W";
+ break;
+ case InsOrderTypeConstants.ENTER_THE_FACTORY:
+ case InsOrderTypeConstants.QUARTERLY_TEST:
+ code = "Y";
+ break;
+ }
+ // 鐢熸垚缂栧彿
+ String no = numberGenerator.generateNumberWithPrefix(3,
+ "JCZX/NS-" + code + LimsDateUtil.resetDate(LocalDateTime.now()),
+ InsOrder::getEntrustCode);
+ // 鍒ゆ柇鏄惁鏄搴︽楠�, 鏄搴︽楠屽彇娑堝師鏉愭枡瀛e害妫�楠屼笅鍗�
+ if (InsOrderTypeConstants.QUARTERLY_TEST.equals(order.getOrderType())) {
+ ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
+ .eq(IfsInventoryQuantity::getId, order.getIfsInventoryId())
+ .set(IfsInventoryQuantity::getIsQuarter, 0));
+
+ // 鏌ヨ鏄惁鏈夎繃杩涘巶妫�楠�, 鏈夎幏鍙栭噷闈㈢殑缂栧彿
+ InsOrder order1 = insOrderMapper.selectOne(Wrappers.<InsOrder>lambdaQuery()
+ .eq(InsOrder::getIfsInventoryId, order.getIfsInventoryId())
+ .ne(InsOrder::getState, -1)
+ .eq(InsOrder::getOrderType, InsOrderTypeConstants.ENTER_THE_FACTORY));
+ if (order1 != null) {
+ no = order1.getEntrustCode();
+ }
+ }
+
+ int count = 1;
+ // 鏌ヨ鏍峰搧琛�
+ List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
+ .eq(InsSample::getInsOrderId, insOrder.getId()));
+ for (InsSample insSample : insSamples) {
+ if (StringUtils.isBlank(insSample.getSampleCode())) {
+ // 濡傛灉鍙湁涓�涓牱鍝佸氨涓嶉渶瑕佹嫾鎺ユ暟瀛�
+ if (insSamples.size() != 1) {
+ insSample.setSampleCode(no + "-" + count);
+ count++;
+ } else {
+ insSample.setSampleCode(no);
+ }
+ }
+ }
+ insSampleService.updateBatchById(insSamples);
+
+ insOrder.setEntrustCode(no);
+ }
+ return insOrderMapper.updateById(insOrder);
+ }
+
+ @Override
+ public Map<String, Object> getInsOrderAndSample(Integer id, String laboratory) {
+ Map<String, Object> map = new HashMap<>();
// InsOrder insOrder = insOrderMapper.selectById(id);
-// List<SampleProductDto> list;
-// // 鍒ゆ柇鏄惁鏄繘鍘傛姤鍛婂厤妫�
-// if (insOrder.getIsExemption().equals(1)) {
-// list = insSampleMapper.selectExemptionByOrderId(id);
-// } else {
-// list = insSampleMapper.selectSampleProductListByOrderId2(id);
-// }
-// Map<String, Object> map1 = insSampleMapper.selectInsOrder(id);
-// map.put("insOrder", insOrder);
-// map.put("sampleProduct", list);
-// map.put("insOrderTemplate", map1);
-// return map;
-// }
-//
-// @Override
-// public int upInsOrderOfState(InsOrder insOrder) {
-// insOrder.setExamineTime(LocalDateTime.now());
-// if (insOrder.getState() == 1) {
-// //瀹℃牳閫氳繃鎵嶄細鐢熸垚濮旀墭缂栧彿
-// // todo: 妫�楠岀被鍨嬬紪鍙�
-// InsOrder order = this.getById(insOrder.getId());
-// String code = "";
-// switch (order.getOrderType()) {
-// case InsOrderTypeConstants.SPOT_CHECK:
-// code = "C";
-// break;
-// case InsOrderTypeConstants.CUSTOMER_ORDERED:
-// code = "W";
-// break;
-// case InsOrderTypeConstants.ENTER_THE_FACTORY:
-// case InsOrderTypeConstants.QUARTERLY_TEST:
-// code = "Y";
-// break;
-// }
-// // 鐢熸垚缂栧彿
-// String no = numberGenerator.generateNumberWithPrefix(3,
-// "JCZX/ZB-" + code + LimsDateUtil.resetDate(LocalDateTime.now()),
-// InsOrder::getEntrustCode);
-// // 鍒ゆ柇鏄惁鏄搴︽楠�, 鏄搴︽楠屽彇娑堝師鏉愭枡瀛e害妫�楠屼笅鍗�
-// if (InsOrderTypeConstants.QUARTERLY_TEST.equals(order.getOrderType())) {
-// ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
-// .eq(IfsInventoryQuantity::getId, order.getIfsInventoryId())
-// .set(IfsInventoryQuantity::getIsQuarter, 0));
-//
-// // 鏌ヨ鏄惁鏈夎繃杩涘巶妫�楠�, 鏈夎幏鍙栭噷闈㈢殑缂栧彿
-// InsOrder order1 = insOrderMapper.selectOne(Wrappers.<InsOrder>lambdaQuery()
-// .eq(InsOrder::getIfsInventoryId, order.getIfsInventoryId())
-// .ne(InsOrder::getState, -1)
-// .eq(InsOrder::getOrderType, InsOrderTypeConstants.ENTER_THE_FACTORY));
-// if (order1 != null) {
-// no = order1.getEntrustCode();
-// }
-// }
-//
-// int count = 1;
-// // 鏌ヨ鏍峰搧琛�
-// List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
-// .eq(InsSample::getInsOrderId, insOrder.getId()));
-// for (InsSample insSample : insSamples) {
-// if (StringUtils.isBlank(insSample.getSampleCode())) {
-// // 濡傛灉鍙湁涓�涓牱鍝佸氨涓嶉渶瑕佹嫾鎺ユ暟瀛�
-// if (insSamples.size() != 1) {
-// insSample.setSampleCode(no + "-" + count);
-// count++;
-// } else {
-// insSample.setSampleCode(no);
-// }
-// }
-// }
-// insSampleService.updateBatchById(insSamples);
-//
-// insOrder.setEntrustCode(no);
-// }
-// return insOrderMapper.updateById(insOrder);
-// }
-//
-// @Override
-// public Map<String, Object> getInsOrderAndSample(Integer id, String laboratory) {
-// Map<String, Object> map = new HashMap<>();
-// InsOrder insOrder = insOrderMapper.selectById(id);
-// List<SampleProductDto> list = insSampleMapper.getInsOrderAndSample(id, laboratory);
-// for (SampleProductDto sampleProductDto : list) {
-// List<Integer> ids = sampleProductDto.getInsProduct().stream().map(InsProduct::getId).collect(Collectors.toList());
-// List<InsProductUser> insProductUsers = insProductUserMapper.selectList(Wrappers.<InsProductUser>lambdaQuery()
-// .in(InsProductUser::getInsProductId, ids));
-// if (CollectionUtils.isNotEmpty(insProductUsers)) {
-// List<Integer> userIds = insProductUsers.stream().map(InsProductUser::getCreateUser).distinct().collect(Collectors.toList());
-// String collect = userMapper.selectBatchIds(userIds).stream().map(User::getName).collect(Collectors.joining(","));
-// sampleProductDto.setCheckName(collect);
-// }
-// }
-// map.put("insOrder", insOrder);
-// map.put("sampleProduct", list);
-// //鏌ヨ鎵�鏈夎褰曟ā鐗堝幓閲�
-// List<Map<Integer, Object>> list2 = insOrderMapper.selectReportModelByOrderId(id, laboratory);
-// map.put("reportModel", list2);
-// return map;
-// }
-//
-// @Override
-// public IPage<SampleProductDto2> selectSampleAndProductByOrderId(IPage<SampleProductDto2> page, SampleProductDto2 sampleProductDto) {
-// IPage<SampleProductDto2> productDto2IPage = insOrderMapper.selectSampleAndProductByOrderId(page,
-// QueryWrappers.queryWrappers(sampleProductDto)
-// .orderByAsc("sample_code")
-// .orderByAsc("cable_tag")
-// .orderByAsc("sort"),
-// sampleProductDto.getId());
-// return productDto2IPage;
-// }
-//
-// @Override
-// public IPage<CostStatisticsDto> costStatistics(IPage<CostStatisticsDto> page, CostStatisticsDto costStatisticsDto) {
-// String dates = costStatisticsDto.getDates();
-// String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
-// costStatisticsDto.setDates(null);
-//
-// //todo:浠呯湅鑷繁
-//
-// IPage<CostStatisticsDto> dtoIPage = insOrderMapper.selectCostStatistics(page, QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59"));
-// List<CostStatisticsDto> collect = dtoIPage.getRecords().stream().map(dto -> {
-// Set<String> uniqueTags = new HashSet<>();
-// if (dto.getInspectionItem().contains(",")) {
-// for (String s : dto.getInspectionItem().split(",")) {
-// uniqueTags.add(s.split("@")[0]);
-// }
-// } else {
-// uniqueTags.add(dto.getInspectionItem().split("@")[0]);
-// }
-// dto.setInspectionItem(uniqueTags.toString());
-// return dto;
-// }).collect(Collectors.toList());
-// dtoIPage.setRecords(collect);
-// return dtoIPage;
-// }
-//
-// @Override
-// public Map<String, Object> costStatistics2(CostStatisticsDto costStatisticsDto) {
-// Map<String, Object> map = new HashMap<>();
-// String dates = costStatisticsDto.getDates();
-// String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
-// costStatisticsDto.setDates(null);
-// List<CostStatisticsDto> costStatisticsDtos = insOrderMapper.selectCostStatistics2(QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59"));
-// double totalPrice = costStatisticsDtos.stream()
-// .filter(dto -> dto.getPrice() != null) // 杩囨护鎺変环鏍间负 null 鐨勫璞�
-// .mapToDouble(value -> value.getPrice().doubleValue() * value.getNum())
-// .sum();
-// map.put("total", totalPrice);
-// return map;
-// }
-//
-// @Override
-// public Map<String, Object> selectSampleDefects(Page page, String inspectionItems, String orderNumber) {
-// List<SampleDefectsFatherVo> sampleDefectsFatherVos = insOrderMapper.selectSampleDefects(page, inspectionItems, orderNumber);
-// Map<String, Object> map = new HashMap<>();
-// map.put("records", sampleDefectsFatherVos);
-// Long aLong = insOrderMapper.getCount(inspectionItems, orderNumber);
-// map.put("total", aLong);
-// return map;
-// }
-//
-// @Override
-// public int updateStatus(Integer id) {
-// return insOrderMapper.updateStatus(id);
-// }
-//
-//
-// @Override
-// public void export(CostStatisticsDto costStatisticsDto, HttpServletResponse response) throws IOException {
-// //鏌ヨ瀵煎嚭鐨勮垂鐢ㄧ粺璁℃暟鎹�
-// String dates = costStatisticsDto.getDates();
-// String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
-// costStatisticsDto.setDates(null);
-// List<CostStatisticsDto> costStatisticsDtos = insOrderMapper.selectCostStatistics2(QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59"));
-// costStatisticsDtos = costStatisticsDtos.stream().map(dto -> {
-// Set<String> uniqueTags = new HashSet<>();
-// if (dto.getInspectionItem().contains(",")) {
-// for (String s : dto.getInspectionItem().split(",")) {
-// uniqueTags.add(s.split("@")[0]);
-// }
-// } else {
-// uniqueTags.add(dto.getInspectionItem().split("@")[0]);
-// }
-// dto.setInspectionItem(uniqueTags.toString());
-// return dto;
-// }).collect(Collectors.toList());
-//
-// response.setContentType("application/vnd.ms-excel");
-// response.setCharacterEncoding("UTF-8");
-// // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴
-// String fileName = URLEncoder.encode("鏍峰搧璐圭敤缁熻瀵煎嚭", "UTF-8");
-// response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
-// Map<String, List<CostStatisticsDto>> groupByCompany =
-// costStatisticsDtos.stream().filter(e -> StrUtil.isNotEmpty(e.getCompany()))
-// .collect(Collectors.groupingBy(CostStatisticsDto::getCompany));
-// try {
-// // 鏂板缓ExcelWriter
-// // 鏂板缓ExcelWriter
-// ExcelWriter excelWriter =
-// EasyExcel.write(response.getOutputStream())
-// .registerWriteHandler(new SimpleColumnWidthStyleStrategy(25))
-// .build();
-// for (Map.Entry<String, List<CostStatisticsDto>> companyDataEntry : groupByCompany.entrySet()) {
-// String sheetName = companyDataEntry.getKey();
-// List<CostStatisticsDto> dataList = companyDataEntry.getValue();
-// WriteSheet mainSheet = EasyExcel.writerSheet(sheetName)
-// .head(CostStatisticsDto.class)
-// .registerWriteHandler(new SimpleColumnWidthStyleStrategy(25))
-// .build();
-// excelWriter.write(dataList, mainSheet);
-// }
-// // 鍏抽棴娴�
-// excelWriter.finish();
-// } catch (IOException e) {
-// throw new RuntimeException("瀵煎嚭澶辫触");
-// }
-// }
-//
-// /**
-// * 鑾峰彇ifs搴撳瓨淇℃伅
-// * @param
-// * @return
-// */
-// @Override
-// public void getIfsOrder() {
-// HashMap<String, Object> map = new HashMap<>();
-// map.put("LOCATION_NO","1302");
-// map.put("STATE_DB","To be Inspected");
-// List<Map<String, Object>> inventory = ifsApiUtils.getInventory(JSONUtil.toJsonStr(map));
-// if(inventory.size() == 0) {
-// return;
-// }
-// // 杩涜淇濆瓨
-// for (Map<String, Object> map1 : inventory) {
-// DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 鏃堕棿鏍煎紡鍖�
-// IfsInventoryQuantity ifsInventoryQuantity = new IfsInventoryQuantity();
-// ifsInventoryQuantity.setContract(map1.get("CONTRACT") == null ? "" : map1.get("CONTRACT").toString()); // 鍩�
-// ifsInventoryQuantity.setPartNo(map1.get("PART_NO") == null ? "" : map1.get("PART_NO").toString() ); // 闆朵欢鍙�
-// ifsInventoryQuantity.setPartDesc(map1.get("PART_DESC") == null ? "" : map1.get("PART_DESC").toString()); // 闆朵欢鎻忚堪
-// ifsInventoryQuantity.setOrderNo(map1.get("ORDER_NO") == null ? "" : map1.get("ORDER_NO").toString()); // 璁㈠崟鍙�
-// ifsInventoryQuantity.setLineNo(map1.get("LINE_NO") == null ? "" : map1.get("LINE_NO").toString()); // 琛屽彿
-// ifsInventoryQuantity.setReleaseNo(map1.get("RELEASE_NO") == null ? "" : map1.get("RELEASE_NO").toString()); // 涓嬭揪鍙�
-// ifsInventoryQuantity.setReceiptNo(Integer.parseInt(map1.get("RECEIPT_NO") == null ? "" : map1.get("RECEIPT_NO").toString())); // 鎺ユ敹鍙�
-// ifsInventoryQuantity.setStatus(map1.get("STATE") == null ? "" : map1.get("STATE").toString()); // 鐘舵�佹弿杩�
-// ifsInventoryQuantity.setStatusDb(map1.get("STATE_DB") == null ? "" : map1.get("STATE_DB").toString()); // 鐘舵��
-// if(map1.get("QTY_ARRIVED") != null) {
-// ifsInventoryQuantity.setQtyArrived(new BigDecimal(map1.get("QTY_ARRIVED").toString())); // 鎶佃揪鐨勯噰璐暟閲�
-// }
-// if(map1.get("QTY_INSPECTED") != null) {
-// ifsInventoryQuantity.setQtyInspected(new BigDecimal(map1.get("QTY_INSPECTED").toString())); // 宸叉楠岀殑璐拱鏁伴噺
-// }
-// if(map1.get("QTY_TO_INSPECT") != null) {
-// ifsInventoryQuantity.setQtyToInspect(new BigDecimal(map1.get("QTY_TO_INSPECT").toString())); // 瑕佹楠岀殑閲囪喘鏁伴噺
-// }
-// if(map1.get("INV_QTY_IN_STORE") != null) {
-// ifsInventoryQuantity.setInvQtyInStore(new BigDecimal(map1.get("INV_QTY_IN_STORE").toString())); // 鎶佃揪鐨勫簱瀛樻暟閲�
-// }
-// if(map1.get("PUR_QTY_IN_STORE") != null) {
-// ifsInventoryQuantity.setPurQtyInStore(new BigDecimal( map1.get("PUR_QTY_IN_STORE").toString())); // 鎶佃揪鐨勯噰璐暟閲�
-//
-// }
-// ifsInventoryQuantity.setSupplierId(map1.get("SUPPLIER_ID") == null ? "" : map1.get("SUPPLIER_ID").toString()); // 渚涘簲鍟咺D
-// ifsInventoryQuantity.setSupplierName(map1.get("SUPPLIER_NAME") == null ? "" : map1.get("SUPPLIER_NAME").toString()); // 渚涘簲鍟嗗悕绉�
-// ifsInventoryQuantity.setConfigurationId(map1.get("CONFIGURATION_ID") == null ? "" : map1.get("CONFIGURATION_ID").toString()); // 閰嶇疆鏍囪瘑
-// ifsInventoryQuantity.setLotBatchNo(map1.get("LOT_BATCH_NO") == null ? "" : map1.get("LOT_BATCH_NO").toString()); // 鎵规鍙�
-// ifsInventoryQuantity.setUpdateBatchNo(map1.get("LOT_BATCH_NO") == null ? "" : map1.get("LOT_BATCH_NO").toString()); // 鎵规鍙�
-// ifsInventoryQuantity.setWaivDevRejNo(map1.get("WAIV_DEV_REJ_NO") == null ? "" : map1.get("WAIV_DEV_REJ_NO").toString()); // WDR鍙�
-// ifsInventoryQuantity.setActivitySeq(map1.get("ACTIVITY_SEQ") == null ? null : Integer.parseInt(map1.get("ACTIVITY_SEQ").toString())); // 娲诲姩搴忓垪
-// ifsInventoryQuantity.setSerialNo(map1.get("SERIAL_NO") == null ? "" : map1.get("SERIAL_NO").toString()); // 搴忓垪鍙�
-// ifsInventoryQuantity.setLocationNo(map1.get("LOCATION_NO") == null ? "" : map1.get("LOCATION_NO").toString()); // 搴撲綅鍙�
-// ifsInventoryQuantity.setEngChgLevel(map1.get("ENG_CHG_LEVEL") == null ? "" : map1.get("ENG_CHG_LEVEL").toString()); // 鐗堟湰鍙�
-// ifsInventoryQuantity.setReceiver(map1.get("RECEIVER") == null ? "" : map1.get("RECEIVER").toString()); // 鎺ユ敹浜�
-// ifsInventoryQuantity.setReceiverName(map1.get("RECEIVER_NAME") == null ? "" : map1.get("RECEIVER_NAME").toString()); // 鎺ユ敹浜哄悕绉�
-// ifsInventoryQuantity.setBuyerCode(map1.get("BUYER_CODE") == null ? "" : map1.get("BUYER_CODE").toString()); // 閲囪喘鍛�
-// ifsInventoryQuantity.setBuyerName(map1.get("BUYER_NAME") == null ? "" : map1.get("BUYER_NAME").toString()); // 閲囪喘鍛樺悕绉�
-//
-// if(map1.get("ARRIVE_DATE") != null) {
-// ifsInventoryQuantity.setArriveDate(LocalDateTime.parse(map1.get("ARRIVE_DATE").toString(),dateTimeFormatter)); // 瀹為檯鍒拌揣鏃ユ湡
-// }
-// if(map1.get("DELIVERY_DATE") != null) {
-// ifsInventoryQuantity.setDeliveryDate(LocalDateTime.parse(map1.get("DELIVERY_DATE").toString(),dateTimeFormatter)); // 瀹為檯浜よ揣鏃ユ湡
-// }
-// if(map1.get("PRODUCT_DATE") != null) {
-// ifsInventoryQuantity.setProductDate(LocalDateTime.parse(map1.get("PRODUCT_DATE").toString(),dateTimeFormatter)); // 鐢熶骇鏃ユ湡
-//
-// }
-// if(map1.get("INVALID_DATE") != null) {
-// ifsInventoryQuantity.setInvalidDate(LocalDateTime.parse(map1.get("INVALID_DATE").toString(),dateTimeFormatter)); // 澶辨晥鏃ユ湡
-// }
-// if(map1.get("APPROVED_DATE") != null) {
-// ifsInventoryQuantity.setApprovedDate(LocalDateTime.parse(map1.get("APPROVED_DATE").toString(),dateTimeFormatter)); // 瀹℃壒鏃ユ湡
-// }
-// ifsInventoryQuantity.setReqCeater(map1.get("REQ_CEATER") == null ? "" : map1.get("REQ_CEATER").toString()); // 閲囪喘鐢宠鍒涘缓浜�
-// ifsInventoryQuantity.setReqCeaterName(map1.get("REQ_CEATER_NAME") == null ? "" : map1.get("REQ_CEATER_NAME").toString()); // 閲囪喘鐢宠鍒涘缓浜哄悕绉�
-// ifsInventoryQuantity.setLineRemarks(map1.get("LINE_REMARKS") == null ? "" : map1.get("LINE_REMARKS").toString()); // 閲囪喘璁㈠崟琛屽娉�
-// ifsInventoryQuantity.setBuyUnitMeas(map1.get("BUY_UNIT_MEAS") == null ? "" : map1.get("BUY_UNIT_MEAS").toString()); // 閲囪喘鍗曚綅
-// ifsInventoryQuantity.setReceiverDate(LocalDateTime.now()); // 鎺ユ敹鏃ユ湡
-// ifsInventoryQuantity.setIsSource(1);
-// ifsInventoryQuantity.setState(0);
-//
-// IfsInventoryQuantity one = ifsInventoryQuantityMapper.selectOne(new LambdaQueryWrapper<IfsInventoryQuantity>()
-// .eq(IfsInventoryQuantity::getOrderNo, ifsInventoryQuantity.getOrderNo())
-// .eq(IfsInventoryQuantity::getLineNo, ifsInventoryQuantity.getLineNo())
-// .eq(IfsInventoryQuantity::getReleaseNo, ifsInventoryQuantity.getReleaseNo())
-// .eq(IfsInventoryQuantity::getReceiptNo, ifsInventoryQuantity.getReceiptNo())
-// .eq(IfsInventoryQuantity::getLocationNo, ifsInventoryQuantity.getLocationNo())
-// .eq(IfsInventoryQuantity::getLotBatchNo, ifsInventoryQuantity.getLotBatchNo())
-// .eq(IfsInventoryQuantity::getSerialNo, ifsInventoryQuantity.getSerialNo())
-// .eq(IfsInventoryQuantity::getEngChgLevel, ifsInventoryQuantity.getEngChgLevel())
-// .eq(IfsInventoryQuantity::getWaivDevRejNo, ifsInventoryQuantity.getWaivDevRejNo())
-// .eq(IfsInventoryQuantity::getActivitySeq, ifsInventoryQuantity.getActivitySeq())
-// );
-// if(Objects.isNull(one)) {
-//
-// ifsInventoryQuantity.setIsFirst(0);
-// // 鏌ヨ浜т笟閾炬娴嬫暟鎹�
-// String industryChainAttrFields = IndustryChainUtils.getIndustryChainAttrFields(ifsInventoryQuantity.getOrderNo(),
-// ifsInventoryQuantity.getLineNo(),
-// ifsInventoryQuantity.getReleaseNo());
-// ifsInventoryQuantity.setIndustryChain(industryChainAttrFields);
-//
-// ifsInventoryQuantityMapper.insert(ifsInventoryQuantity);
-// }
-// }
-// }
-//
-// /**
-// * id鏄師鏉愭枡鐨刬d
-// *
-// * 淇敼璁㈠崟鍗曞彿
-// * @param insOrder
-// */
-// @Override
-// @Transactional(rollbackFor = Exception.class)
-// public void updateEntrustCode(InsOrder insOrder) {
-// // 鍒ゆ柇褰撳墠璁㈠崟鏄惁鐢熸垚浜嗘姤鍛�, 鐢熸垚浜嗘姤鍛婁笉鑳戒慨鏀瑰崟鍙�
-// List<InsOrder> insOrders = insOrderMapper.selectList(Wrappers.<InsOrder>lambdaQuery()
-// .eq(InsOrder::getIfsInventoryId, insOrder.getId())
-// .ne(InsOrder::getState, -1));
-// List<Integer> insOrderIds = insOrders.stream().map(InsOrder::getId).collect(Collectors.toList());
-// Long count = insReportMapper.selectCount(Wrappers.<InsReport>lambdaQuery()
-// .in(InsReport::getInsOrderId, insOrderIds));
-// if (count > 0 ) {
-// throw new ErrorException("褰撳墠璁㈠崟宸茬粡鐢熸垚浜嗘姤鍛婁笉鑳戒慨鏀圭紪鍙�");
-// }
-//
-//
-// Long count1 = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
-// .eq(InsOrder::getEntrustCode, insOrder.getEntrustCode())
-// .ne(InsOrder::getIfsInventoryId, insOrder.getId())
-// .ne(InsOrder::getInsState, -1));
-// if (count1 > 0) {
-// throw new ErrorException("璇ョ紪鍙烽噸澶�");
-// }
-//
-// //淇敼鎶ュ憡鐨勭紪鍙�
-// insOrderMapper.update(null, Wrappers.<InsOrder>lambdaUpdate()
-// .eq(InsOrder::getIfsInventoryId, insOrder.getId())
-// .set(InsOrder::getEntrustCode, insOrder.getEntrustCode()));
-//
-// // 淇敼鏍峰搧鐨勭紪鍙�
-// // 鏌ヨ鎵�鏈夌殑鏍峰搧
-// List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
-// .in(InsSample::getInsOrderId, insOrderIds));
-// for (InsSample insSample : insSamples) {
-// String sampleCode = insSample.getSampleCode();
-// String updateCode = insOrder.getEntrustCode();
-// // 鏌ユ壘鏈�鍚庝竴涓�'-'鐨勪綅缃�
-// int lastDashIndex = sampleCode.lastIndexOf('-');
-// if (lastDashIndex != -1) {
-// int secondLastDashIndex = sampleCode.lastIndexOf('-', lastDashIndex - 1);
-// // 澶勭悊鏈�鍚庝竴涓�'-'鍓嶇殑閮ㄥ垎
-// if (secondLastDashIndex != -1) {
-// // 澶勭悊鏈�鍚庝竴涓�'-'鍙婁箣鍚庣殑閮ㄥ垎
-// String afterLastDash = sampleCode.substring(lastDashIndex);
-//
-// updateCode = updateCode + afterLastDash;
-// }
-// }
-// insSampleMapper.update(null, Wrappers.<InsSample>lambdaUpdate()
-// .eq(InsSample::getId, insSample.getId())
-// .set(InsSample::getSampleCode, updateCode));
-//
-// }
-// }
-//
-// @Override
-// public List<InsUnqualifiedRetestProduct> getRetestResult(Integer insProductId) {
-// return insUnqualifiedRetestProductMapper.selectList(Wrappers.<InsUnqualifiedRetestProduct>lambdaQuery()
-// .eq(InsUnqualifiedRetestProduct::getInsProductId, insProductId));
-// }
-//
-// /**
-// * 淇敼閲囪喘璁㈠崟鎺ユ敹鐘舵��, 閬垮厤鍥炴粴
-// * @param id
-// */
-// @Transactional
-// public void updateIfsInventoryQuantity(Integer id) {
-// ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
-// .set(IfsInventoryQuantity::getIsRegister, 1)
-// .eq(IfsInventoryQuantity::getId, id));
-// }
-//
-// /**
-// * 鏂板閾滃崟涓濅笅鍗�
-// * @param list
-// * @param insOrder
-// * @return
-// */
-// @Override
-// public int addRawCopperOrder(List<SampleProductDto> list, CopperInsOrderDto insOrder) {
-// insOrder.setState(1);
-// insOrder.setTypeSource(1);
-//
-// LocalDate appointed = insOrder.getAppointed();
-//
-// insOrderMapper.insert(insOrder); // 涓昏〃
-//
-// list.forEach(a -> {
-// a.setId(null);
-// a.setInsOrderId(insOrder.getId());
-// insSampleMapper.insert(a);
-// if (ObjectUtil.isNotEmpty(a.getInsProduct())) {
-// // 鍒ゆ柇鏄惁濉啓寰呮椤规暟閲�
-// if (a.getQuantity() != null) {
-// List<InsProduct> ip2 = new ArrayList<>();
-// for (Integer i = 1; i <= a.getQuantity(); i++) {
-// // 閲嶆柊鎷疯礉 鍒涘缓鏂板璞�
-// AtomicInteger atomicInteger = new AtomicInteger(i);
-// List<InsProduct> insProducts = a.getInsProduct().stream().map(insProduct -> {
-// insProduct.setRawMaterialTag(String.valueOf(atomicInteger.get()));
-// InsProduct product = new InsProduct();
-// BeanUtils.copyProperties(insProduct, product);
-// return product;
-// }).collect(Collectors.toList());
-//
-// ip2.addAll(insProducts);
-// }
-// addInsProductMethod(a.getId(), ip2);
-// } else {
-// addInsProductMethod(a.getId(), a.getInsProduct());
-// }
-// }
-// if (ObjectUtil.isNotEmpty(a.getChildSampleList())) {
-// for (SampleProductDto b : a.getChildSampleList()) {
-// for (int i = 0; i < b.getNum(); i++) {
-// b.setId(null);
-// b.setInsOrderId(insOrder.getId());
-// b.setParentId(a.getId());
-// insSampleMapper.insert(b);
-// if (ObjectUtil.isNotEmpty(b.getInsProduct())) {
-// addInsProductMethod(b.getId(), b.getInsProduct());
-// }
-// }
-// }
-// }
-// });
-//
-// // 娣诲姞鍘熸潗鏂欎俊鎭�
-// IfsInventoryQuantity ifsInventoryQuantity = new IfsInventoryQuantity();
-// // 鍩烘湰淇℃伅
-// ifsInventoryQuantity.setIsSource(0);
-// ifsInventoryQuantity.setIsInspect(1);
-// ifsInventoryQuantity.setState(1);
-// ifsInventoryQuantity.setIsFinish(0);
-// ifsInventoryQuantity.setIsCopper(1);
-// ifsInventoryQuantity.setIsQuarter(0);
-// ifsInventoryQuantity.setInspectStatus(0);
-//
-// ifsInventoryQuantity.setQtyArrived(insOrder.getQtyArrived());
-// ifsInventoryQuantity.setBuyUnitMeas(insOrder.getBuyUnitMeas());
-// ifsInventoryQuantity.setSupplierName(insOrder.getSupplierName());
-// ifsInventoryQuantity.setUpdateBatchNo(insOrder.getUpdateBatchNo());
-// ifsInventoryQuantity.setDeclareDate(insOrder.getDeclareDate());
-//
-// ifsInventoryQuantityMapper.insert(ifsInventoryQuantity);
-//
-//
-// insOrder.setIfsInventoryId(ifsInventoryQuantity.getId());
-// insOrder.setState(1);
-//
-//
-// upInsOrderOfState(insOrder);
-// upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), "鍘熸潗鏂�");
-//
-// return insOrder.getId();
-// }
-//
-// /**
-// * 淇敼濮旀墭涓嬪崟缂栧彿
-// * @param insOrder
-// */
-// @Override
-// public void updateOrderEntrustCode(InsOrder insOrder) {
-// // 鍒ゆ柇褰撳墠璁㈠崟鏄惁鐢熸垚浜嗘姤鍛�, 鐢熸垚浜嗘姤鍛婁笉鑳戒慨鏀瑰崟鍙�
-// Long count = insReportMapper.selectCount(Wrappers.<InsReport>lambdaQuery()
-// .eq(InsReport::getInsOrderId, insOrder.getId()));
-// if (count > 0 ) {
-// throw new ErrorException("褰撳墠璁㈠崟宸茬粡鐢熸垚浜嗘姤鍛婁笉鑳戒慨鏀圭紪鍙�");
-// }
-//
-// Long count1 = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
-// .eq(InsOrder::getEntrustCode, insOrder.getEntrustCode()));
-// if (count1 > 0) {
-// throw new ErrorException("璇ョ紪鍙烽噸澶�");
-// }
-//
-// //淇敼鎶ュ憡鐨勭紪鍙�
-// insOrderMapper.update(null, Wrappers.<InsOrder>lambdaUpdate()
-// .eq(InsOrder::getId, insOrder.getId())
-// .set(InsOrder::getEntrustCode, insOrder.getEntrustCode()));
-//
-// // 淇敼鏍峰搧鐨勭紪鍙�
-// // 鏌ヨ鎵�鏈夌殑鏍峰搧
-// List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
-// .eq(InsSample::getInsOrderId, insOrder.getId()));
-// for (InsSample insSample : insSamples) {
-// String sampleCode = insSample.getSampleCode();
-// String updateCode = insOrder.getEntrustCode();
-// // 鏌ユ壘鏈�鍚庝竴涓�'-'鐨勪綅缃�
-// int lastDashIndex = sampleCode.lastIndexOf('-');
-// if (lastDashIndex != -1) {
-// int secondLastDashIndex = sampleCode.lastIndexOf('-', lastDashIndex - 1);
-// // 澶勭悊鏈�鍚庝竴涓�'-'鍓嶇殑閮ㄥ垎
-// if (secondLastDashIndex != -1) {
-// // 澶勭悊鏈�鍚庝竴涓�'-'鍙婁箣鍚庣殑閮ㄥ垎
-// String afterLastDash = sampleCode.substring(lastDashIndex);
-//
-// updateCode = updateCode + afterLastDash;
-// }
-// }
-// insSampleMapper.update(null, Wrappers.<InsSample>lambdaUpdate()
-// .eq(InsSample::getId, insSample.getId())
-// .set(InsSample::getSampleCode, updateCode));
-//
-// }
-// }
-//
-// /**
-// * 淇敼妫�楠屼笅鍗曞唴瀹�
-// * @param insOrderUpdateDto
-// * @return
-// */
-// @Override
-// @Transactional(rollbackFor = Exception.class)
-// public Boolean updateInsOrder(InsOrderUpdateDto insOrderUpdateDto) {
-// // 淇敼璁㈠崟
-// insOrderUpdateDto.getInsOrder().setState(0);
-// insOrderUpdateDto.getInsOrder().setTell("");
-// insOrderMapper.updateById(insOrderUpdateDto.getInsOrder());
-//
-// // 淇敼妫�楠岄」
-// for (SampleProductDto sampleProductDto : insOrderUpdateDto.getSampleProduct()) {
-// insProductService.updateBatchById(sampleProductDto.getInsProduct());
-// }
-//
-// return true;
-// }
-//
-// /**
-// * 鎴愬搧鏍囩鎵撳嵃
-// * @param ids
-// * @return
-// */
-// @Override
-// public List<InsOrderPrintingVo> labelOrderPrinting(List<Integer> ids) {
-// return insOrderMapper.labelOrderPrinting(ids);
-// }
-//
-// /**
-// * 鏍规嵁鏍峰搧id鏌ヨ妫�楠岄」鏍�
-// * @param insSampleId
-// * @return
-// */
-// @Override
-// public List<StandardProductList> getProductTreeBySampleId(Integer insSampleId) {
-// // 鏌ヨ绗竴涓楠岄」鑾峰彇妫�楠岄」鏍�
-// InsProduct insProduct = insProductMapper.selectOne(Wrappers.<InsProduct>lambdaQuery()
-// .eq(InsProduct::getInsSampleId, insSampleId)
-// .last("limit 1"));
-// String tree = insProduct.getFactory() + " - " +
-// insProduct.getLaboratory() + " - " +
-// insProduct.getSampleType() + " - " +
-// insProduct.getSample() + " - " +
-// insProduct.getModel();
-// // 鏌ヨ鏍囧噯鏍�
-// List<StandardProductList> standardProductLists = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery()
-// .eq(StandardProductList::getStandardMethodListId, insProduct.getStandardMethodListId())
-// .eq(StandardProductList::getTree, tree));
-// for (StandardProductList standardProductList : standardProductLists) {
-// standardProductList.setId(null);
-// }
-//
-// return standardProductLists;
-// }
-//
-// /**
-// * 娣诲姞閬楁紡鐨勬楠岄」
-// * @param omitOrderProductDto
-// * @return
-// */
-// @Override
-// public boolean addOmitOrderProduct(OmitOrderProductDto omitOrderProductDto) {
-// if (omitOrderProductDto.getInsSampleId() == null) {
-// throw new ErrorException("缂哄皯鏍峰搧Id");
-// }
-// for (InsProduct product : omitOrderProductDto.getInsProductBindingList()) {
-// if (product.getState() == 1) {
-// product.setId(null);
-// product.setCreateTime(null);
-// product.setCreateUser(null);
-// product.setUpdateTime(null);
-// product.setUpdateUser(null);
-// product.setInsSampleId(omitOrderProductDto.getInsSampleId());
-// if (StringUtils.isBlank(product.getCableTag())) {
-// product.setCableTag(null);
-// }
-// if (product.getInspectionItemSubclass() == null) {
-// product.setInspectionItemSubclass("");
-// }
-// if (StringUtils.isBlank(product.getAsk()) || StringUtils.isBlank(product.getTell())) {
-// throw new ErrorException("鏈夋楠岄」鐨勮姹傚�兼垨瑕佹眰鎻忚堪涓虹┖, 璇峰~鍐欒姹傚�兼垨瑕佹眰鎻忚堪");
-// }
-// insProductMapper.insert(product);
-// }
-// }
-//
-// return true;
-// }
-//
-// /**
-// * 鎴愬搧妫�楠屽崟瀵煎嚭
-// * @param sampleOrderDto
-// * @param response
-// */
-// @Override
-// public void rawAllInsOrderExport(SampleOrderDto sampleOrderDto, HttpServletResponse response) {
-// //鍒ゆ柇鍏ㄩ儴,涓汉,缁勭粐鐨勬潈闄�
-// //todo:浠呯湅鎴戣幏鍙栧綋鍓嶄汉鎵�灞炲疄楠屽id
-// String laboratory = null;
-// // 鍒ゆ柇鏄惁鏄叏閮�
-// String isOrderAll = null;
-// if (sampleOrderDto.getState() != null && sampleOrderDto.getState() == -2) {
-// isOrderAll = "1";
-// sampleOrderDto.setState(null);
-// }
-// List<SampleOrderDto> sampleOrderDtoList = insOrderMapper.rawAllInsOrderExport(QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll);
-//
-// // 鍒ゆ柇鏄惁鏄笉鍚堟牸, 涓嶅悎鏍兼煡璇笉鍚堟牸椤�
-// for (SampleOrderDto orderDto : sampleOrderDtoList) {
-// if (orderDto.getInsResult() != null && orderDto.getInsResult() == 0){
-// // 鏌ヨ涓嶅悎鏍奸」
-// List<String> unqualifiedList = insProductMapper.selectUnqualifiedList(orderDto.getId());
-// orderDto.setUnqualifiedItem(CollUtil.join(unqualifiedList, ","));
-// }
-// orderDto.setCreateTimeString(orderDto.getCreateTime() == null ? "" : orderDto.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-//
-// }
-//
-// response.setContentType("application/vnd.ms-excel");
-// response.setCharacterEncoding("UTF-8");
-// try {
-// // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴
-// String fileName = URLEncoder.encode("濮旀墭妫�娴嬩俊鎭鍑�", "UTF-8");
-// response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
-// //鏂板缓ExcelWriter
-// ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
-// //鑾峰彇sheet0瀵硅薄
-// WriteSheet mainSheet = EasyExcel.writerSheet(0, "濮旀墭妫�娴嬩俊鎭鍑�").head(SampleOrderDto.class).build();
-//
-// //鍚憇heet0鍐欏叆鏁版嵁 浼犲叆绌簂ist杩欐牱鍙鍑鸿〃澶�
-// excelWriter.write(sampleOrderDtoList, mainSheet);
-// //鍏抽棴娴�
-// excelWriter.finish();
-// } catch (IOException e) {
-// throw new RuntimeException("瀵煎嚭澶辫触");
-// }
-// }
-//
-//}
-//
-//
-//
-//
+ IfsOrderVO ifsOrderVO = insOrderMapper.selectOrderInfoById(id);
+ List<SampleProductDto> list = insSampleMapper.getInsOrderAndSample(id, laboratory);
+ map.put("insOrder", ifsOrderVO);
+ map.put("sampleProduct", list);
+ //鏌ヨ鎵�鏈夎褰曟ā鐗堝幓閲�
+ List<Map<Integer, Object>> list2 = insOrderMapper.selectReportModelByOrderId(id, laboratory);
+ map.put("reportModel", list2);
+ return map;
+ }
+
+ @Override
+ public IPage<SampleProductDto2> selectSampleAndProductByOrderId(IPage<SampleProductDto2> page, SampleProductDto2 sampleProductDto) {
+ IPage<SampleProductDto2> productDto2IPage = insOrderMapper.selectSampleAndProductByOrderId(page,
+ QueryWrappers.queryWrappers(sampleProductDto)
+ .orderByAsc("sample_code")
+ .orderByAsc("cable_tag")
+ .orderByAsc("sort"),
+ sampleProductDto.getId());
+ return productDto2IPage;
+ }
+
+
+ @Override
+ public int updateStatus(Integer id) {
+ return insOrderMapper.updateStatus(id);
+ }
+
+
+ /**
+ * 鑾峰彇ifs搴撳瓨淇℃伅
+ * @param
+ * @return
+ */
+ @Override
+ public void getIfsOrder(Map<String, Object> map,Boolean isSplitOrder) {
+ List<Map<String, Object>> inventory = ifsApiUtils.getInventory(JSONUtil.toJsonStr(map));
+ if(inventory.isEmpty()) {
+ return;
+ }
+ // 杩涜淇濆瓨
+ for (Map<String, Object> map1 : inventory) {
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 鏃堕棿鏍煎紡鍖�
+ IfsInventoryQuantity ifsInventoryQuantity = new IfsInventoryQuantity();
+ ifsInventoryQuantity.setContract(map1.get("CONTRACT") == null ? "" : map1.get("CONTRACT").toString()); // 鍩�
+ ifsInventoryQuantity.setPartNo(map1.get("PART_NO") == null ? "" : map1.get("PART_NO").toString() ); // 闆朵欢鍙�
+ ifsInventoryQuantity.setPartDesc(map1.get("PART_DESC") == null ? "" : map1.get("PART_DESC").toString()); // 闆朵欢鎻忚堪
+ ifsInventoryQuantity.setOrderNo(map1.get("ORDER_NO") == null ? "" : map1.get("ORDER_NO").toString()); // 璁㈠崟鍙�
+ ifsInventoryQuantity.setLineNo(map1.get("LINE_NO") == null ? "" : map1.get("LINE_NO").toString()); // 琛屽彿
+ ifsInventoryQuantity.setReleaseNo(map1.get("RELEASE_NO") == null ? "" : map1.get("RELEASE_NO").toString()); // 涓嬭揪鍙�
+ ifsInventoryQuantity.setReceiptNo(Integer.parseInt(map1.get("RECEIPT_NO") == null ? "" : map1.get("RECEIPT_NO").toString())); // 鎺ユ敹鍙�
+ ifsInventoryQuantity.setStatus(map1.get("STATE") == null ? "" : map1.get("STATE").toString()); // 鐘舵�佹弿杩�
+ ifsInventoryQuantity.setStatusDb(map1.get("STATE_DB") == null ? "" : map1.get("STATE_DB").toString()); // 鐘舵��
+ if(map1.get("QTY_ARRIVED") != null) {
+ ifsInventoryQuantity.setQtyArrived(new BigDecimal(map1.get("QTY_ARRIVED").toString())); // 鎶佃揪鐨勯噰璐暟閲�
+ }
+ if(map1.get("QTY_INSPECTED") != null) {
+ ifsInventoryQuantity.setQtyInspected(new BigDecimal(map1.get("QTY_INSPECTED").toString())); // 宸叉楠岀殑璐拱鏁伴噺
+ }
+ if(map1.get("QTY_TO_INSPECT") != null) {
+ ifsInventoryQuantity.setQtyToInspect(new BigDecimal(map1.get("QTY_TO_INSPECT").toString())); // 瑕佹楠岀殑閲囪喘鏁伴噺
+ }
+ if(map1.get("INV_QTY_IN_STORE") != null) {
+ ifsInventoryQuantity.setInvQtyInStore(new BigDecimal(map1.get("INV_QTY_IN_STORE").toString())); // 鎶佃揪鐨勫簱瀛樻暟閲�
+ }
+ if(map1.get("PUR_QTY_IN_STORE") != null) {
+ ifsInventoryQuantity.setPurQtyInStore(new BigDecimal( map1.get("PUR_QTY_IN_STORE").toString())); // 鎶佃揪鐨勯噰璐暟閲�
+
+ }
+ ifsInventoryQuantity.setSupplierId(map1.get("SUPPLIER_ID") == null ? "" : map1.get("SUPPLIER_ID").toString()); // 渚涘簲鍟咺D
+ ifsInventoryQuantity.setSupplierName(map1.get("SUPPLIER_NAME") == null ? "" : map1.get("SUPPLIER_NAME").toString()); // 渚涘簲鍟嗗悕绉�
+ ifsInventoryQuantity.setConfigurationId(map1.get("CONFIGURATION_ID") == null ? "" : map1.get("CONFIGURATION_ID").toString()); // 閰嶇疆鏍囪瘑
+ ifsInventoryQuantity.setLotBatchNo(map1.get("LOT_BATCH_NO") == null ? "" : map1.get("LOT_BATCH_NO").toString()); // 鎵规鍙�
+ ifsInventoryQuantity.setUpdateBatchNo(map1.get("LOT_BATCH_NO") == null ? "" : map1.get("LOT_BATCH_NO").toString()); // 鎵规鍙�
+ ifsInventoryQuantity.setWaivDevRejNo(map1.get("WAIV_DEV_REJ_NO") == null ? "" : map1.get("WAIV_DEV_REJ_NO").toString()); // WDR鍙�
+ ifsInventoryQuantity.setActivitySeq(map1.get("ACTIVITY_SEQ") == null ? null : Integer.parseInt(map1.get("ACTIVITY_SEQ").toString())); // 娲诲姩搴忓垪
+ ifsInventoryQuantity.setSerialNo(map1.get("SERIAL_NO") == null ? "" : map1.get("SERIAL_NO").toString()); // 搴忓垪鍙�
+ ifsInventoryQuantity.setLocationNo(map1.get("LOCATION_NO") == null ? "" : map1.get("LOCATION_NO").toString()); // 搴撲綅鍙�
+ ifsInventoryQuantity.setEngChgLevel(map1.get("ENG_CHG_LEVEL") == null ? "" : map1.get("ENG_CHG_LEVEL").toString()); // 鐗堟湰鍙�
+ ifsInventoryQuantity.setReceiver(map1.get("RECEIVER") == null ? "" : map1.get("RECEIVER").toString()); // 鎺ユ敹浜�
+ ifsInventoryQuantity.setReceiverName(map1.get("RECEIVER_NAME") == null ? "" : map1.get("RECEIVER_NAME").toString()); // 鎺ユ敹浜哄悕绉�
+ ifsInventoryQuantity.setBuyerCode(map1.get("BUYER_CODE") == null ? "" : map1.get("BUYER_CODE").toString()); // 閲囪喘鍛�
+ ifsInventoryQuantity.setBuyerName(map1.get("BUYER_NAME") == null ? "" : map1.get("BUYER_NAME").toString()); // 閲囪喘鍛樺悕绉�
+
+ if(map1.get("ARRIVE_DATE") != null) {
+ ifsInventoryQuantity.setArriveDate(LocalDateTime.parse(map1.get("ARRIVE_DATE").toString(),dateTimeFormatter)); // 瀹為檯鍒拌揣鏃ユ湡
+ }
+ if(map1.get("DELIVERY_DATE") != null) {
+ ifsInventoryQuantity.setDeliveryDate(LocalDateTime.parse(map1.get("DELIVERY_DATE").toString(),dateTimeFormatter)); // 瀹為檯浜よ揣鏃ユ湡
+ }
+ if(map1.get("PRODUCT_DATE") != null) {
+ ifsInventoryQuantity.setProductDate(LocalDateTime.parse(map1.get("PRODUCT_DATE").toString(),dateTimeFormatter)); // 鐢熶骇鏃ユ湡
+
+ }
+ if(map1.get("INVALID_DATE") != null) {
+ ifsInventoryQuantity.setInvalidDate(LocalDateTime.parse(map1.get("INVALID_DATE").toString(),dateTimeFormatter)); // 澶辨晥鏃ユ湡
+ }
+ if(map1.get("APPROVED_DATE") != null) {
+ ifsInventoryQuantity.setApprovedDate(LocalDateTime.parse(map1.get("APPROVED_DATE").toString(),dateTimeFormatter)); // 瀹℃壒鏃ユ湡
+ }
+ ifsInventoryQuantity.setReqCeater(map1.get("REQ_CEATER") == null ? "" : map1.get("REQ_CEATER").toString()); // 閲囪喘鐢宠鍒涘缓浜�
+ ifsInventoryQuantity.setReqCeaterName(map1.get("REQ_CEATER_NAME") == null ? "" : map1.get("REQ_CEATER_NAME").toString()); // 閲囪喘鐢宠鍒涘缓浜哄悕绉�
+ ifsInventoryQuantity.setLineRemarks(map1.get("LINE_REMARKS") == null ? "" : map1.get("LINE_REMARKS").toString()); // 閲囪喘璁㈠崟琛屽娉�
+ ifsInventoryQuantity.setBuyUnitMeas(map1.get("BUY_UNIT_MEAS") == null ? "" : map1.get("BUY_UNIT_MEAS").toString()); // 閲囪喘鍗曚綅
+ ifsInventoryQuantity.setReceiverDate(LocalDateTime.now()); // 鎺ユ敹鏃ユ湡
+ ifsInventoryQuantity.setIsSource(1);
+ ifsInventoryQuantity.setState(0);
+
+ Long count = ifsInventoryQuantityMapper.selectCount(new LambdaQueryWrapper<IfsInventoryQuantity>()
+ .eq(IfsInventoryQuantity::getOrderNo, ifsInventoryQuantity.getOrderNo())
+ .eq(IfsInventoryQuantity::getLineNo, ifsInventoryQuantity.getLineNo())
+ .eq(IfsInventoryQuantity::getReleaseNo, ifsInventoryQuantity.getReleaseNo())
+ .eq(IfsInventoryQuantity::getReceiptNo, ifsInventoryQuantity.getReceiptNo())
+ .eq(IfsInventoryQuantity::getLocationNo, ifsInventoryQuantity.getLocationNo())
+ .eq(IfsInventoryQuantity::getLotBatchNo, ifsInventoryQuantity.getLotBatchNo())
+ .eq(IfsInventoryQuantity::getSerialNo, ifsInventoryQuantity.getSerialNo())
+ .eq(IfsInventoryQuantity::getEngChgLevel, ifsInventoryQuantity.getEngChgLevel())
+ .eq(IfsInventoryQuantity::getWaivDevRejNo, ifsInventoryQuantity.getWaivDevRejNo())
+ .eq(IfsInventoryQuantity::getActivitySeq, ifsInventoryQuantity.getActivitySeq())
+ );
+ if(count == 0) {
+ ifsInventoryQuantity.setIsFirst(0);
+ if(isSplitOrder){
+ ifsInventoryQuantity.setIsSplitOrder(1);
+ }
+ // 鏌ヨ浜т笟閾炬娴嬫暟鎹�
+ String industryChainAttrFields = IndustryChainUtils.getIndustryChainAttrFields(ifsInventoryQuantity.getOrderNo(),
+ ifsInventoryQuantity.getLineNo(),
+ ifsInventoryQuantity.getReleaseNo());
+ ifsInventoryQuantity.setIndustryChain(industryChainAttrFields);
+
+ ifsInventoryQuantityMapper.insert(ifsInventoryQuantity);
+ }
+ }
+ }
+
+ /**
+ * id鏄師鏉愭枡鐨刬d
+ *
+ * 淇敼璁㈠崟鍗曞彿
+ * @param insOrder
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void updateEntrustCode(InsOrder insOrder) {
+ // 鍒ゆ柇褰撳墠璁㈠崟鏄惁鐢熸垚浜嗘姤鍛�, 鐢熸垚浜嗘姤鍛婁笉鑳戒慨鏀瑰崟鍙�
+ List<InsOrder> insOrders = insOrderMapper.selectList(Wrappers.<InsOrder>lambdaQuery()
+ .eq(InsOrder::getIfsInventoryId, insOrder.getId())
+ .ne(InsOrder::getState, -1));
+ List<Integer> insOrderIds = insOrders.stream().map(InsOrder::getId).collect(Collectors.toList());
+ Long count = insReportMapper.selectCount(Wrappers.<InsReport>lambdaQuery()
+ .in(InsReport::getInsOrderId, insOrderIds));
+ if (count > 0 ) {
+ throw new ErrorException("褰撳墠璁㈠崟宸茬粡鐢熸垚浜嗘姤鍛婁笉鑳戒慨鏀圭紪鍙�");
+ }
+
+
+ Long count1 = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
+ .eq(InsOrder::getEntrustCode, insOrder.getEntrustCode())
+ .ne(InsOrder::getIfsInventoryId, insOrder.getId())
+ .ne(InsOrder::getInsState, -1));
+ if (count1 > 0) {
+ throw new ErrorException("璇ョ紪鍙烽噸澶�");
+ }
+
+ //淇敼鎶ュ憡鐨勭紪鍙�
+ insOrderMapper.update(null, Wrappers.<InsOrder>lambdaUpdate()
+ .eq(InsOrder::getIfsInventoryId, insOrder.getId())
+ .set(InsOrder::getEntrustCode, insOrder.getEntrustCode()));
+
+ // 淇敼鏍峰搧鐨勭紪鍙�
+ // 鏌ヨ鎵�鏈夌殑鏍峰搧
+ List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
+ .in(InsSample::getInsOrderId, insOrderIds));
+ for (InsSample insSample : insSamples) {
+ String sampleCode = insSample.getSampleCode();
+ String updateCode = insOrder.getEntrustCode();
+ // 鏌ユ壘鏈�鍚庝竴涓�'-'鐨勪綅缃�
+ int lastDashIndex = sampleCode.lastIndexOf('-');
+ if (lastDashIndex != -1) {
+ int secondLastDashIndex = sampleCode.lastIndexOf('-', lastDashIndex - 1);
+ // 澶勭悊鏈�鍚庝竴涓�'-'鍓嶇殑閮ㄥ垎
+ if (secondLastDashIndex != -1) {
+ // 澶勭悊鏈�鍚庝竴涓�'-'鍙婁箣鍚庣殑閮ㄥ垎
+ String afterLastDash = sampleCode.substring(lastDashIndex);
+
+ updateCode = updateCode + afterLastDash;
+ }
+ }
+ insSampleMapper.update(null, Wrappers.<InsSample>lambdaUpdate()
+ .eq(InsSample::getId, insSample.getId())
+ .set(InsSample::getSampleCode, updateCode));
+
+ }
+ }
+
+ @Override
+ public List<InsUnqualifiedRetestProduct> getRetestResult(Integer insProductId) {
+ return insUnqualifiedRetestProductMapper.selectList(Wrappers.<InsUnqualifiedRetestProduct>lambdaQuery()
+ .eq(InsUnqualifiedRetestProduct::getInsProductId, insProductId));
+ }
+
+ /**
+ * 淇敼閲囪喘璁㈠崟鎺ユ敹鐘舵��, 閬垮厤鍥炴粴
+ * @param id
+ */
+ @Transactional
+ public void updateIfsInventoryQuantity(Long id) {
+ ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
+ .set(IfsInventoryQuantity::getIsRegister, 1)
+ .eq(IfsInventoryQuantity::getId, id));
+ }
+
+ /**
+ * 鏂板閾滃崟涓濅笅鍗�
+ * @param list
+ * @param insOrder
+ * @return
+ */
+ @Override
+ public int addRawCopperOrder(List<SampleProductDto> list, CopperInsOrderDto insOrder) {
+ insOrder.setState(1);
+ insOrder.setTypeSource(1);
+
+ LocalDate appointed = insOrder.getAppointed();
+
+ insOrderMapper.insert(insOrder); // 涓昏〃
+
+ list.forEach(a -> {
+ a.setId(null);
+ a.setInsOrderId(insOrder.getId());
+ insSampleMapper.insert(a);
+ if (ObjectUtil.isNotEmpty(a.getInsProduct())) {
+ // 鍒ゆ柇鏄惁濉啓寰呮椤规暟閲�
+ if (a.getQuantity() != null) {
+ List<InsProduct> ip2 = new ArrayList<>();
+ for (Integer i = 1; i <= a.getQuantity(); i++) {
+ // 閲嶆柊鎷疯礉 鍒涘缓鏂板璞�
+ AtomicInteger atomicInteger = new AtomicInteger(i);
+ List<InsProduct> insProducts = a.getInsProduct().stream().map(insProduct -> {
+ insProduct.setRawMaterialTag(String.valueOf(atomicInteger.get()));
+ InsProduct product = new InsProduct();
+ BeanUtils.copyProperties(insProduct, product);
+ return product;
+ }).collect(Collectors.toList());
+
+ ip2.addAll(insProducts);
+ }
+ addInsProductMethod(a.getId(), ip2);
+ } else {
+ addInsProductMethod(a.getId(), a.getInsProduct());
+ }
+ }
+ if (ObjectUtil.isNotEmpty(a.getChildSampleList())) {
+ for (SampleProductDto b : a.getChildSampleList()) {
+ for (int i = 0; i < b.getNum(); i++) {
+ b.setId(null);
+ b.setInsOrderId(insOrder.getId());
+ b.setParentId(a.getId());
+ insSampleMapper.insert(b);
+ if (ObjectUtil.isNotEmpty(b.getInsProduct())) {
+ addInsProductMethod(b.getId(), b.getInsProduct());
+ }
+ }
+ }
+ }
+ });
+
+ // 娣诲姞鍘熸潗鏂欎俊鎭�
+ IfsInventoryQuantity ifsInventoryQuantity = new IfsInventoryQuantity();
+ // 鍩烘湰淇℃伅
+ ifsInventoryQuantity.setIsSource(0);
+ ifsInventoryQuantity.setIsInspect(1);
+ ifsInventoryQuantity.setState(1);
+ ifsInventoryQuantity.setIsFinish(0);
+ ifsInventoryQuantity.setIsCopper(1);
+ ifsInventoryQuantity.setIsQuarter(0);
+ ifsInventoryQuantity.setInspectStatus(0);
+
+ ifsInventoryQuantity.setQtyArrived(insOrder.getQtyArrived());
+ ifsInventoryQuantity.setBuyUnitMeas(insOrder.getBuyUnitMeas());
+ ifsInventoryQuantity.setSupplierName(insOrder.getSupplierName());
+ ifsInventoryQuantity.setUpdateBatchNo(insOrder.getUpdateBatchNo());
+ ifsInventoryQuantity.setDeclareDate(insOrder.getDeclareDate());
+
+ ifsInventoryQuantityMapper.insert(ifsInventoryQuantity);
+
+
+ insOrder.setIfsInventoryId(ifsInventoryQuantity.getId());
+ insOrder.setState(1);
+
+
+ upInsOrderOfState(insOrder);
+ upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), "鍘熸潗鏂�");
+
+ return insOrder.getId();
+ }
+
+ /**
+ * 淇敼濮旀墭涓嬪崟缂栧彿
+ * @param insOrder
+ */
+ @Override
+ public void updateOrderEntrustCode(InsOrder insOrder) {
+ // 鍒ゆ柇褰撳墠璁㈠崟鏄惁鐢熸垚浜嗘姤鍛�, 鐢熸垚浜嗘姤鍛婁笉鑳戒慨鏀瑰崟鍙�
+ Long count = insReportMapper.selectCount(Wrappers.<InsReport>lambdaQuery()
+ .eq(InsReport::getInsOrderId, insOrder.getId()));
+ if (count > 0 ) {
+ throw new ErrorException("褰撳墠璁㈠崟宸茬粡鐢熸垚浜嗘姤鍛婁笉鑳戒慨鏀圭紪鍙�");
+ }
+
+ Long count1 = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
+ .eq(InsOrder::getEntrustCode, insOrder.getEntrustCode()));
+ if (count1 > 0) {
+ throw new ErrorException("璇ョ紪鍙烽噸澶�");
+ }
+
+ //淇敼鎶ュ憡鐨勭紪鍙�
+ insOrderMapper.update(null, Wrappers.<InsOrder>lambdaUpdate()
+ .eq(InsOrder::getId, insOrder.getId())
+ .set(InsOrder::getEntrustCode, insOrder.getEntrustCode()));
+
+ // 淇敼鏍峰搧鐨勭紪鍙�
+ // 鏌ヨ鎵�鏈夌殑鏍峰搧
+ List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
+ .eq(InsSample::getInsOrderId, insOrder.getId()));
+ for (InsSample insSample : insSamples) {
+ String sampleCode = insSample.getSampleCode();
+ String updateCode = insOrder.getEntrustCode();
+ // 鏌ユ壘鏈�鍚庝竴涓�'-'鐨勪綅缃�
+ int lastDashIndex = sampleCode.lastIndexOf('-');
+ if (lastDashIndex != -1) {
+ int secondLastDashIndex = sampleCode.lastIndexOf('-', lastDashIndex - 1);
+ // 澶勭悊鏈�鍚庝竴涓�'-'鍓嶇殑閮ㄥ垎
+ if (secondLastDashIndex != -1) {
+ // 澶勭悊鏈�鍚庝竴涓�'-'鍙婁箣鍚庣殑閮ㄥ垎
+ String afterLastDash = sampleCode.substring(lastDashIndex);
+
+ updateCode = updateCode + afterLastDash;
+ }
+ }
+ insSampleMapper.update(null, Wrappers.<InsSample>lambdaUpdate()
+ .eq(InsSample::getId, insSample.getId())
+ .set(InsSample::getSampleCode, updateCode));
+
+ }
+ }
+
+ /**
+ * 淇敼妫�楠屼笅鍗曞唴瀹�
+ * @param insOrderUpdateDto
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Boolean updateInsOrder(InsOrderUpdateDto insOrderUpdateDto) {
+ // 淇敼璁㈠崟
+ insOrderUpdateDto.getInsOrder().setState(0);
+ insOrderUpdateDto.getInsOrder().setTell("");
+ insOrderMapper.updateById(insOrderUpdateDto.getInsOrder());
+
+ // 淇敼妫�楠岄」
+ for (SampleProductDto sampleProductDto : insOrderUpdateDto.getSampleProduct()) {
+ insSampleService.update(Wrappers.<InsSample>lambdaUpdate()
+ .eq(InsSample::getId, sampleProductDto.getId())
+ .set(InsSample::getSpecialStandardMethod, sampleProductDto.getSpecialStandardMethod()));
+
+ insProductService.updateBatchById(sampleProductDto.getInsProduct());
+ }
+
+ return true;
+ }
+
+ /**
+ * 鎴愬搧鏍囩鎵撳嵃
+ * @param ids
+ * @return
+ */
+ @Override
+ public List<InsOrderPrintingVo> labelOrderPrinting(List<Integer> ids) {
+ return insOrderMapper.labelOrderPrinting(ids);
+ }
+
+ /**
+ * 鏍规嵁鏍峰搧id鏌ヨ妫�楠岄」鏍�
+ * @param insSampleId
+ * @return
+ */
+ @Override
+ public List<StandardProductList> getProductTreeBySampleId(Integer insSampleId) {
+ // 鏌ヨ绗竴涓楠岄」鑾峰彇妫�楠岄」鏍�
+ InsProduct insProduct = insProductMapper.selectOne(Wrappers.<InsProduct>lambdaQuery()
+ .eq(InsProduct::getInsSampleId, insSampleId)
+ .last("limit 1"));
+ String tree = insProduct.getFactory() + " - " +
+ insProduct.getLaboratory() + " - " +
+ insProduct.getSampleType() + " - " +
+ insProduct.getSample() + " - " +
+ insProduct.getModel();
+ // 鏌ヨ鏍囧噯鏍�
+ List<StandardProductList> standardProductLists = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery()
+ .eq(StandardProductList::getStandardMethodListId, insProduct.getStandardMethodListId())
+ .eq(StandardProductList::getTree, tree)
+ .orderByAsc(StandardProductList::getSort));
+ for (StandardProductList standardProductList : standardProductLists) {
+ standardProductList.setId(null);
+ }
+
+ return standardProductLists;
+ }
+
+ /**
+ * 娣诲姞閬楁紡鐨勬楠岄」
+ * @param omitOrderProductDto
+ * @return
+ */
+ @Override
+ public boolean addOmitOrderProduct(OmitOrderProductDto omitOrderProductDto) {
+ if (omitOrderProductDto.getInsSampleId() == null) {
+ throw new ErrorException("缂哄皯鏍峰搧Id");
+ }
+ for (InsProduct product : omitOrderProductDto.getInsProductBindingList()) {
+ if (product.getState() == 1) {
+ product.setId(null);
+ product.setCreateTime(null);
+ product.setCreateUser(null);
+ product.setUpdateTime(null);
+ product.setUpdateUser(null);
+ product.setSection(null);
+ product.setInsSampleId(omitOrderProductDto.getInsSampleId());
+ if (StringUtils.isBlank(product.getCableTag())) {
+ product.setCableTag(null);
+ }
+ if (product.getInspectionItemSubclass() == null) {
+ product.setInspectionItemSubclass("");
+ }
+ if (StringUtils.isBlank(product.getAsk()) || StringUtils.isBlank(product.getTell())) {
+ throw new ErrorException("鏈夋楠岄」鐨勮姹傚�兼垨瑕佹眰鎻忚堪涓虹┖, 璇峰~鍐欒姹傚�兼垨瑕佹眰鎻忚堪");
+ }
+ insProductMapper.insert(product);
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * 鎴愬搧妫�楠屽崟瀵煎嚭
+ * @param sampleOrderDto
+ * @param response
+ */
+ @Override
+ public void rawAllInsOrderExport(SampleOrderDto sampleOrderDto, HttpServletResponse response) {
+ List<SampleOrderDto> sampleOrderDtoList = new ArrayList<>();
+ if (StringUtils.isNotBlank(sampleOrderDto.getIds())) {
+ List<String> orderIds = StrUtil.split(sampleOrderDto.getIds(), ",");
+ sampleOrderDtoList = insOrderMapper.getInsOrderExportByIds(orderIds);
+ } else {
+ String laboratory = null;
+ // 鍒ゆ柇鏄惁鏄叏閮�
+ String isOrderAll = null;
+ if (sampleOrderDto.getState() != null && sampleOrderDto.getState() == -2) {
+ isOrderAll = "1";
+ sampleOrderDto.setState(null);
+ }
+ sampleOrderDto.setIds(null);
+ sampleOrderDtoList = insOrderMapper.rawAllInsOrderExport(QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll);
+ }
+
+ // 鍒ゆ柇鏄惁鏄笉鍚堟牸, 涓嶅悎鏍兼煡璇笉鍚堟牸椤�
+ for (SampleOrderDto orderDto : sampleOrderDtoList) {
+ if (orderDto.getInsResult() != null && orderDto.getInsResult() == 0){
+ // 鏌ヨ涓嶅悎鏍奸」
+ List<String> unqualifiedList = insProductMapper.selectUnqualifiedList(orderDto.getId());
+ orderDto.setUnqualifiedItem(CollUtil.join(unqualifiedList, ","));
+ }
+ orderDto.setCreateTimeString(orderDto.getCreateTime() == null ? "" : orderDto.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+
+ }
+
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding("UTF-8");
+ try {
+ // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴
+ String fileName = URLEncoder.encode("濮旀墭妫�娴嬩俊鎭鍑�", "UTF-8");
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+ //鏂板缓ExcelWriter
+ ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
+ //鑾峰彇sheet0瀵硅薄
+ WriteSheet mainSheet = EasyExcel.writerSheet(0, "濮旀墭妫�娴嬩俊鎭鍑�").head(SampleOrderDto.class).build();
+
+ //鍚憇heet0鍐欏叆鏁版嵁 浼犲叆绌簂ist杩欐牱鍙鍑鸿〃澶�
+ excelWriter.write(sampleOrderDtoList, mainSheet);
+ //鍏抽棴娴�
+ excelWriter.finish();
+ } catch (IOException e) {
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+
+ /**
+ * 淇敼鏍峰搧鍨嬪彿
+ * @param insSample
+ */
+ @Override
+ public void updateSampleModel(InsSample insSample) {
+ // 鍒ゆ柇褰撳墠璁㈠崟鏄惁鐢熸垚浜嗘姤鍛�, 鐢熸垚浜嗘姤鍛婁笉鑳戒慨鏀瑰崟鍙�
+ Long count = insReportMapper.selectCount(Wrappers.<InsReport>lambdaQuery()
+ .eq(InsReport::getInsOrderId, insSample.getInsOrderId()));
+ if (count > 0 ) {
+ throw new ErrorException("褰撳墠璁㈠崟宸茬粡鐢熸垚浜嗘姤鍛婁笉鑳戒慨鏀圭紪鍙�");
+ }
+
+ insSampleService.update(Wrappers.<InsSample>lambdaUpdate()
+ .eq(InsSample::getId, insSample.getId())
+ .set(InsSample::getModel, insSample.getModel()));
+ }
+
+ /**
+ * 鏌ヨ褰撳墠鏃堕棿鏄惁娌℃湁璇ユ娴嬮」鐨勬娊鏍疯鍒�
+ * @param sampleList
+ * @param insOrder
+ * @return
+ */
+ @Override
+ public Result judgeNotSpotCheckOrder(List<SampleProductDto> sampleList, InsOrder insOrder) {
+ // todo: 涓嬪崟鍒ゆ柇鎶芥牱璁″垝鐨勫敮涓�鎬�
+ if (insOrder.getQuarterItemId() != null) {
+ Long quarterItemCount = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
+ .eq(InsOrder::getQuarterItemId, insOrder.getQuarterItemId())
+ .notIn(InsOrder::getState, -1 ,2 ,3));
+ if (quarterItemCount > 0) {
+ throw new ErrorException("璇ユ娊鏍疯鍒掑凡琚粦瀹氳繃");
+ }
+ }
+
+ // 鍒ゆ柇鏄惁鏄娊鏍锋娴�
+ if (insOrder.getOrderType().equals(InsOrderTypeConstants.SPOT_CHECK)) {
+ Set<String> monthMessageSet = new HashSet<>();
+ Set<String> quarterMessageSet = new HashSet<>();
+ Set<String> yearMessageSet = new HashSet<>();
+
+ String formatTime = "yyyy-MM-dd HH:mm:ss";
+ // 鏌ヨ褰撳墠鎵�鏈夋牱鍝佺殑妫�楠岄」
+ for (SampleProductDto sampleProductDto : sampleList) {
+ List<StandardProductList> standardProductList = getProductTreeBySampleId(sampleProductDto.getId());
+
+ Set<Integer> insIds = sampleProductDto.getInsProduct().stream()
+ .map(InsProduct::getStructureItemParameterId)
+ .collect(Collectors.toSet());
+
+ List<StandardProductList> productLists = standardProductList.stream()
+ .filter(product -> !insIds.contains(product.getStructureItemParameterId()))
+ .collect(Collectors.toList());
+
+ // 鏌ヨ妫�楠岄」鍩虹琛�, 鏌ヨ鏄惁鏈夋湀搴�, 瀛e害, 骞村害鐨勬楠岄」
+ List<StructureItemParameter> itemParameterList = structureItemParameterMapper.selectList(Wrappers.<StructureItemParameter>lambdaQuery()
+ .in(StructureItemParameter::getId, productLists.stream().map(StandardProductList::getStructureItemParameterId).collect(Collectors.toList())));
+
+ for (StructureItemParameter item : itemParameterList) {
+ if (StringUtils.isNotBlank(item.getSpotCheckType())) {
+ switch (item.getSpotCheckType()) {
+ case "1": // 鏈堝害
+ // 鏌ヨ褰撴湀鏄惁鏈夎妫�娴嬮」鐨勬娊鏍疯鍒�
+ // 褰撴湀寮�濮嬫椂闂�
+ DateTime monthStart = DateUtil.beginOfMonth(DateUtil.date());
+ String monthStartTime = monthStart.toString(formatTime);
+ // 褰撴湀缁撴潫鏃堕棿
+ DateTime monthEnd = DateUtil.endOfMonth(DateUtil.date());
+ String monthEndTime = monthEnd.toString(formatTime);
+ Integer count = insOrderMapper.selectNotSpotCheckOrder(item.getId(), monthStartTime, monthEndTime);
+ if (count == 0) {
+ String monthMessage = item.getInspectionItemClass() +
+ item.getInspectionItem() +
+ item.getInspectionItemSubclass();
+ monthMessageSet.add(monthMessage);
+ }
+ break;
+ case "2": // 瀛e害
+ DateTime quarterStart = DateUtil.beginOfQuarter(DateUtil.date());
+ String quarterStartTime = quarterStart.toString(formatTime);
+ // 褰撴湀缁撴潫鏃堕棿
+ DateTime quarterEnd = DateUtil.endOfQuarter(DateUtil.date());
+ String quarterEndTime = quarterEnd.toString(formatTime);
+ Integer quarterCount = insOrderMapper.selectNotSpotCheckOrder(item.getId(), quarterStartTime, quarterEndTime);
+ if (quarterCount == 0) {
+ String quarterMessage = item.getInspectionItemClass() +
+ item.getInspectionItem() +
+ item.getInspectionItemSubclass();
+ quarterMessageSet.add(quarterMessage);
+ }
+
+ break;
+ case "3": // 骞村害
+ DateTime yearStart = DateUtil.beginOfQuarter(DateUtil.date());
+ String yearStartTime = yearStart.toString(formatTime);
+ // 褰撴湀缁撴潫鏃堕棿
+ DateTime yearEnd = DateUtil.endOfQuarter(DateUtil.date());
+ String yearEndTime = yearEnd.toString(formatTime);
+ Integer yearCount = insOrderMapper.selectNotSpotCheckOrder(item.getId(), yearStartTime, yearEndTime);
+ if (yearCount == 0) {
+ String yearMessage = item.getInspectionItemClass() +
+ item.getInspectionItem() +
+ item.getInspectionItemSubclass();
+ yearMessageSet.add(yearMessage);
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ String message = "";
+ if (CollectionUtils.isNotEmpty(monthMessageSet)) {
+ message += StrUtil.format("<p>妫�楠岄」<span style=\"color: red\">{}</span>褰撴湀杩樻湭杩涜鎶芥牱妫�娴�, 璇锋煡鐪嬫槸鍚﹂渶瑕佹坊鍔犲綋鍓嶆楠岄」</p>", CollUtil.join(monthMessageSet, ", "));
+ }
+
+ if (CollectionUtils.isNotEmpty(quarterMessageSet)) {
+ message += StrUtil.format("<p>妫�楠岄」<span style=\"color: red\">{}</span>褰撳墠瀛e害杩樻湭杩涜鎶芥牱妫�娴�, 璇风湅鏄惁闇�瑕佹坊鍔犲綋鍓嶆楠岄」</p>", CollUtil.join(quarterMessageSet, ", "));
+ }
+
+ if (CollectionUtils.isNotEmpty(yearMessageSet)) {
+ message += StrUtil.format("<p>妫�楠岄」<span style=\"color: red\">{}</span>浠婂勾杩樻湭杩涜鎶芥牱妫�娴�, 璇风湅鏄惁闇�瑕佹坊鍔犲綋鍓嶆楠岄」</p>", CollUtil.join(yearMessageSet, ", "));
+ }
+
+ if (StringUtils.isNotBlank(message)) {
+ return Result.success(false, message);
+ }
+ }
+ return Result.success(true);
+
+ }
+
+
+ /**
+ * ifs绉诲簱鎿嶄綔
+ * @param inventoryQuantity
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
+ public String moveRawMaterial(IfsInventoryQuantity inventoryQuantity) {
+ //鏌ヨifs璁㈠崟璇︽儏
+ IfsInventoryQuantity one = ifsInventoryQuantityMapper.selectById(inventoryQuantity.getId());
+ String toLocation;
+ // 鐧昏閲囪喘妫�楠岀粨鏋淪TD
+ if (one.getIsRegister().equals(0)) {
+ Map<String, Object> resultMap = new HashMap<>();
+ List<Map<String, Object>> resultList = new ArrayList<>();
+ Map<String, Object> map = new HashMap<>();
+ map.put("ORDER_NO", one.getOrderNo()); // 閲囪喘璁㈠崟鍙�
+ map.put("LINE_NO", one.getLineNo()); // 琛屽彿
+ map.put("RELEASE_NO", one.getReleaseNo()); // 涓嬭揪鍙�
+ map.put("RECEIPT_NO", one.getReceiptNo()); // 鎺ユ敹鍙�
+ map.put("PURCH_QTY", one.getQtyToInspect()); // 瑕佹楠岀殑閲囪喘鏁伴噺
+ resultList.add(map);
+ resultMap.put("RECORD_ID", UUID.randomUUID().toString());
+ resultMap.put("SYSCODE", "LIMS");
+ resultMap.put("SYSMODEL", "鐧昏閲囪喘妫�楠岀粨鏋�");
+ resultMap.put("BATCH_INFO", resultList);
+ Result result = ifsApiUtils.getProcurementResults(JSONUtil.toJsonStr(resultMap));
+ if (result.getCode() != 200) {
+ throw new ErrorException("IFS鐧昏閲囪喘妫�楠岀粨鏋滃け璐�: " + result.getMessage());
+ }
+ //濡傛灉鏄媶鍒嗚鍗曪紝鍒欏皢鍚屼竴鎺ユ敹鍙风殑璁㈠崟鏍囪宸茬櫥璁版牎楠�
+ if(one.getIsSplitOrder()==1){
+ //鏌ヨ鍏朵綑鎷嗗垎鐨勮鍗�
+ List<IfsInventoryQuantity> quantityList = ifsInventoryQuantityMapper.selectList(Wrappers.<IfsInventoryQuantity>lambdaQuery()
+ .eq(IfsInventoryQuantity::getOrderNo, one.getOrderNo())
+ .eq(IfsInventoryQuantity::getPartNo, one.getPartNo())
+ .eq(IfsInventoryQuantity::getLineNo, one.getLineNo())
+ .eq(IfsInventoryQuantity::getReleaseNo, one.getReleaseNo())
+ .eq(IfsInventoryQuantity::getReceiptNo, one.getReceiptNo())
+ .eq(IfsInventoryQuantity::getIsSplitOrder, 1)
+ );
+ if(Objects.nonNull(quantityList) && !quantityList.isEmpty()){
+ //淇敼閲囪喘璁㈠崟鐧昏鐘舵��
+ List<Long> ids = quantityList.stream().map(IfsInventoryQuantity::getId).collect(Collectors.toList());
+ ifsInventoryQuantityMapper.update(null,Wrappers.<IfsInventoryQuantity>lambdaUpdate()
+ .set(IfsInventoryQuantity::getIsRegister,1)
+ .in(IfsInventoryQuantity::getId, ids)
+ );
+ }
+ }else{
+ this.updateIfsInventoryQuantity(one.getId());
+ }
+ }
+ /**
+ * TODO 鍚庣画闇�瑕佽皟鐢↖FS鐨勬帴鍙� 绉诲叆鐨勫簱浣嶅彿 toLocation
+ */
+ // 妫�楠屽悗绉诲簱
+ //1301:鍘熸潗鏂欏悎鏍煎簱锛孋P-02-001:鎴愬搧搴�
+ toLocation = StringUtils.equals(inventoryQuantity.getOrderType(), OrderType.RAW.getValue())?"1301":"CP-02-001";
+ Map<String, Object> moveResultMap = new HashMap<>();
+ List<Map<String, Object>> moveResultList = new ArrayList<>();
+ Map<String, Object> moveMap = new HashMap<>();
+ moveMap.put("ORDER_NO", one.getOrderNo()); // 閲囪喘璁㈠崟鍙�
+ moveMap.put("LINE_NO", one.getLineNo());
+ moveMap.put("RELEASE_NO", one.getReleaseNo());
+ moveMap.put("RECEIPT_NO", one.getReceiptNo());
+ moveMap.put("PART_NO", one.getPartNo());
+ moveMap.put("QTY", one.getPurQtyInStore());
+ moveMap.put("LOCATION_NO", one.getLocationNo());
+ moveMap.put("TO_LOCATION_NO", toLocation);
+ moveMap.put("LOT_BATCH_NO", one.getLotBatchNo());
+ moveMap.put("SERIAL_NO", one.getSerialNo());
+ moveMap.put("WAIV_DEV_REJ_NO", one.getWaivDevRejNo());
+ moveMap.put("ENG_CHG_LEVEL", one.getEngChgLevel());
+ moveMap.put("ACTIVITY_SEQ", one.getActivitySeq());
+ moveResultList.add(moveMap);
+ moveResultMap.put("RECORD_ID", UUID.randomUUID().toString());
+ moveResultMap.put("SYSCODE", "LIMS");
+ moveResultMap.put("SYSMODEL", "妫�楠屽悗绉诲簱");
+ moveResultMap.put("BATCH_INFO", moveResultList);
+
+ Result result1 = ifsApiUtils.moveReceipt(JSONUtil.toJsonStr(moveResultMap));
+ // 濡傛灉鏈夊繀椤讳负闆朵欢鎸囧畾鎵瑰彿鎶ラ敊闇�瑕侀噸鏂版彁浜ょЩ搴撲俊鎭幓鎸囧畾鎵瑰彿
+ if (result1.getCode() != 200) {
+ String message = result1.getMessage();
+ if (message.contains("蹇呴』涓洪浂浠�") && message.contains("鎸囧畾鎵瑰彿")) {
+ updaeBatch(one, toLocation);
+ } else {
+ throw new ErrorException("IFS妫�楠屽悗绉诲簱澶辫触: " + result1.getMessage());
+ }
+ }
+ return toLocation;
+ }
+
+
+ /**
+ * 鍏堜慨鏀归噰璐鍗曟壒娆″彿, 鍚庤繘琛岀Щ搴撴搷浣�
+ * @param one
+ * @param toLocation
+ */
+ private void updaeBatch(IfsInventoryQuantity one, String toLocation) {
+ if (one.getIsUpdateBatch().equals(0)) {
+ // 鍏堜慨鏀规壒娆″彿鍚庤繘琛岀Щ搴�
+ Map<String, Object> resultMap = new HashMap<>();
+ List<Map<String, Object>> resultList = new ArrayList<>();
+ Map<String, Object> map = new HashMap<>();
+ map.put("ORDER_NO", one.getOrderNo()); // 閲囪喘璁㈠崟鍙�
+ map.put("LINE_NO", one.getLineNo()); // 琛屽彿
+ map.put("RELEASE_NO", one.getReleaseNo()); // 涓嬭揪鍙�
+ map.put("RECEIPT_NO", one.getReceiptNo()); // 鎺ユ敹鍙�
+ map.put("PART_NO", one.getPartNo()); //闆朵欢鍙�
+ map.put("CONFIGURATION_ID", one.getConfigurationId()); // 閰嶇疆鏍囪瘑
+ map.put("LOCATION_NO", one.getLocationNo()); // 搴撲綅鍙�
+ map.put("LOT_BATCH_NO", one.getLotBatchNo());// 鎵规鍙�
+ map.put("NEW_LOT_BATCH_NO", one.getUpdateBatchNo()); // 鐩爣鎵规鍙�
+ map.put("SERIAL_NO", one.getSerialNo()); // 搴忓垪鍙�
+ map.put("ENG_CHG_LEVEL", one.getEngChgLevel()); // 鐗堟湰鍙�
+ map.put("WAIV_DEV_REJ_NO", one.getWaivDevRejNo()); // wdr鍙�
+ map.put("ACTIVITY_SEQ", one.getActivitySeq()); // 娲诲姩搴忓彿
+ map.put("QTY_TO_CHANGE", one.getQtyArrived()); // 鍙樻洿鏁伴噺
+ resultList.add(map);
+ resultMap.put("RECORD_ID", UUID.randomUUID().toString());
+ resultMap.put("SYSCODE", "LIMS");
+ resultMap.put("SYSMODEL", "淇敼閲囪喘璁㈠崟鎵规鍙�");
+ resultMap.put("BATCH_INFO", resultList);
+
+ Result result = ifsApiUtils.updateMoveReceiptLot(JSONUtil.toJsonStr(resultMap));
+
+ if (result.getCode() != 200) {
+ throw new ErrorException("IFS淇敼鎵规鍙峰け璐�: " + result.getMessage());
+ }
+ ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
+ .set(IfsInventoryQuantity::getIsUpdateBatch, 1)
+ .eq(IfsInventoryQuantity::getId, one.getId()));
+ }
+
+ Map<String, Object> moveResultMap = new HashMap<>();
+ List<Map<String, Object>> moveResultList = new ArrayList<>();
+ Map<String, Object> moveMap = new HashMap<>();
+ moveMap.put("ORDER_NO", one.getOrderNo()); // 閲囪喘璁㈠崟鍙�
+ moveMap.put("LINE_NO", one.getLineNo());
+ moveMap.put("RELEASE_NO", one.getReleaseNo());
+ moveMap.put("RECEIPT_NO", one.getReceiptNo());
+ moveMap.put("PART_NO", one.getPartNo());
+ moveMap.put("QTY", one.getQtyArrived());
+ moveMap.put("LOCATION_NO", one.getLocationNo());
+ moveMap.put("TO_LOCATION_NO", toLocation);
+ moveMap.put("LOT_BATCH_NO", one.getUpdateBatchNo());
+ moveMap.put("SERIAL_NO", one.getSerialNo());
+ moveMap.put("WAIV_DEV_REJ_NO", one.getWaivDevRejNo());
+ moveMap.put("ENG_CHG_LEVEL", one.getEngChgLevel());
+ moveMap.put("ACTIVITY_SEQ", one.getActivitySeq());
+ moveResultList.add(moveMap);
+ moveResultMap.put("RECORD_ID", UUID.randomUUID().toString());
+ moveResultMap.put("SYSCODE", "LIMS");
+ moveResultMap.put("SYSMODEL", "妫�楠屽悗绉诲簱");
+ moveResultMap.put("BATCH_INFO", moveResultList);
+
+ Result result1 = ifsApiUtils.moveReceipt(JSONUtil.toJsonStr(moveResultMap));
+ if (result1.getCode() != 200) {
+ throw new ErrorException("IFS妫�楠屽悗绉诲簱澶辫触: " + result1.getMessage());
+ }
+
+ }
+
+
+}
+
+
+
+
--
Gitblit v1.9.3