From e6e5a67f94513e90da40cc28f21d0d2c6d9cbe7d Mon Sep 17 00:00:00 2001 From: zhuo <2089219845@qq.com> Date: 星期二, 15 四月 2025 17:34:01 +0800 Subject: [PATCH] 修改ifs对接方法 --- inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java | 2109 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 1,059 insertions(+), 1,050 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..dba348e 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,1059 @@ -//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<>(); -// 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("瀵煎嚭澶辫触"); -// } -// } -// -//} -// -// -// -// +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.ObjectUtils; +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.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.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.InsOrderPrintingVo; +import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHoursTemporary; +import com.ruoyi.performance.service.AuxiliaryOutputWorkingHoursTemporaryService; +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.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 AuxiliaryOutputWorkingHoursTemporaryService auxiliaryOutputWorkingHoursTemporaryService; + + + + //鑾峰彇妫�楠屼笅鍗曟暟鎹� + @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); + } + 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); + } + + // 鍒涘缓宸ユ椂鏆傚瓨 + // 缂撳瓨鏍峰搧id, 缂栧彿map +// addWorkingHoursTemporary(userId, insSamples, ids, order); + + return 1; + } + + /** + * 鍒涘缓宸ユ椂鏆傚瓨 + * @param userId + * @param insSamples + * @param ids + * @param order + */ + private void addWorkingHoursTemporary(Integer userId, List<InsSample> insSamples, List<Integer> ids, InsOrder order) { + Map<Integer, String> sampleMap = insSamples.stream().collect(Collectors.toMap(InsSample::getId, InsSample::getSampleCode)); + List<InsProduct> insProductList = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() + .in(InsProduct::getInsSampleId, ids) + .eq(InsProduct::getState, 1)); + List<AuxiliaryOutputWorkingHoursTemporary> outputWorkingHours = insProductList.stream().map(insProduct -> { + AuxiliaryOutputWorkingHoursTemporary auxiliaryOutputWorkingHours = new AuxiliaryOutputWorkingHoursTemporary(); + auxiliaryOutputWorkingHours.setInspectionItemClass(insProduct.getInspectionItemClass());//妫�娴嬮」鍒嗙被 + auxiliaryOutputWorkingHours.setInspectionItem(insProduct.getInspectionItem());//妫�娴嬬埗椤� + auxiliaryOutputWorkingHours.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());//妫�娴嬪瓙椤� + auxiliaryOutputWorkingHours.setSample(sampleMap.get(insProduct.getInsSampleId()));//鏍峰搧缂栧彿 + auxiliaryOutputWorkingHours.setOrderId(order.getId());//璁㈠崟id + auxiliaryOutputWorkingHours.setOrderNo(order.getEntrustCode());//闈炲姞鐝鎵樺崟鍙� + auxiliaryOutputWorkingHours.setWorkTime(insProduct.getManHour());//闈炲姞鐝伐鏃� + auxiliaryOutputWorkingHours.setAmount(1);//闈炲姞鐝暟閲� + auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime()) ? auxiliaryOutputWorkingHours.getOvertimeWorkTime() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime()) ? auxiliaryOutputWorkingHours.getWorkTime() : BigDecimal.ZERO));//浜ч噺宸ユ椂 + auxiliaryOutputWorkingHours.setManHourGroup(insProduct.getManHourGroup());//宸ユ椂鍒嗙粍 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + auxiliaryOutputWorkingHours.setDateTime(LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters));//鏃ユ湡 + LocalDateTime localDateTime = LocalDateTime.now(); + DateTime parse = DateUtil.parse(localDateTime.format(formatter)); + auxiliaryOutputWorkingHours.setWeekDay(getWeek(localDateTime.format(formatters)));//鏄熸湡 + auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//鍛ㄦ + auxiliaryOutputWorkingHours.setCheck(userId);//妫�娴嬩汉 + auxiliaryOutputWorkingHours.setPrice(insProduct.getPrice());//鍗曚环 + auxiliaryOutputWorkingHours.setSampleId(insProduct.getInsSampleId());//鏍峰搧id + auxiliaryOutputWorkingHours.setInsProductId(insProduct.getId());//妫�楠岄」id + + return auxiliaryOutputWorkingHours; + }).collect(Collectors.toList()); + auxiliaryOutputWorkingHoursTemporaryService.saveBatch(outputWorkingHours); + } + + 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 "鏈煡"; + } + } + + @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 (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("鏈夋楠岄」鐨勮姹傚�兼垨瑕佹眰鎻忚堪涓虹┖, 璇峰厛鍘绘爣鍑嗗簱閰嶇疆瑕佹眰鍊兼垨瑕佹眰鎻忚堪"); + } + 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/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); + 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 int updateStatus(Integer id) { + return insOrderMapper.updateStatus(id); + } + + + /** + * 鑾峰彇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); + + 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); + // 鏌ヨ浜т笟閾炬娴嬫暟鎹� + 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) + .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) { + //鍒ゆ柇鍏ㄩ儴,涓汉,缁勭粐鐨勬潈闄� + //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("瀵煎嚭澶辫触"); + } + } + + /** + * 淇敼鏍峰搧鍨嬪彿 + * @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())); + } + +} + + + + -- Gitblit v1.9.3