From 22d3a8dc4185c5461bee9e42a9f4a2775ff448e6 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期二, 10 九月 2024 17:28:17 +0800
Subject: [PATCH] 报告更改+再次试验
---
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java | 1387 +++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 1,097 insertions(+), 290 deletions(-)
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
index 2990f06..91912bb 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
@@ -1,12 +1,17 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.lang.UUID;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
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;
@@ -14,49 +19,49 @@
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.*;
-import com.deepoove.poi.data.style.Style;
-import com.deepoove.poi.data.style.TableStyle;
+import com.deepoove.poi.data.style.*;
+import com.deepoove.poi.util.TableTools;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.dto.InsOrderPlanDTO;
+import com.yuanchu.mom.dto.InsProductResultDto;
import com.yuanchu.mom.dto.SampleProductDto;
+import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.*;
import com.yuanchu.mom.pojo.*;
-import com.yuanchu.mom.exception.ErrorException;
-import com.yuanchu.mom.service.InsOrderPlanService;
-import com.yuanchu.mom.service.InsOrderService;
-import com.yuanchu.mom.service.StandardTemplateService;
-import com.yuanchu.mom.utils.GiveCode;
-import com.yuanchu.mom.utils.JackSonUtil;
-import com.yuanchu.mom.utils.MatrixToImageWriter;
-import com.yuanchu.mom.utils.QueryWrappers;
-import com.yuanchu.mom.vo.InsOrderPlanVO;
-import org.apache.poi.xwpf.usermodel.TableRowAlign;
-import org.apache.poi.xwpf.usermodel.XWPFTable;
+import com.yuanchu.mom.service.*;
+import com.yuanchu.mom.utils.*;
+import com.yuanchu.mom.vo.*;
+import org.apache.commons.io.IOUtils;
+import org.apache.poi.xwpf.usermodel.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.ResourceUtils;
+import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
-import java.io.FileNotFoundException;
-import java.io.IOException;
+import javax.servlet.http.HttpServletRequest;
+import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
import java.time.LocalDateTime;
+import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.stream.Collectors;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicInteger;
-import java.util.stream.Stream;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
/**
* 妫�楠屼换鍔�-涓氬姟瀹炵幇灞�
*/
@Service
-//@AllArgsConstructor
+@Transactional(rollbackFor = Exception.class)
public class InsOrderPlanServiceImpl extends ServiceImpl<InsOrderMapper, InsOrder> implements InsOrderPlanService {
@Resource
@@ -75,6 +80,12 @@
private InsOrderStateMapper insOrderStateMapper;
@Resource
private InsProductMapper insProductMapper;
+ @Resource
+ private ShiftTimeMapper shiftTimeMapper;
+ @Resource
+ private PerformanceShiftMapper performanceShiftMapper;
+ @Resource
+ private WarehouseHistoryMapper warehouseHistoryMapper;
@Value("${wordUrl}")
private String wordUrl;
@@ -83,39 +94,126 @@
private String twoCode;
@Resource
- private GiveCode giveCode;
-
- @Resource
private InsReportMapper insReportMapper;
@Resource
private InsProductResultMapper insProductResultMapper;
@Resource
+ private InsProductResult2Mapper insProductResult2Mapper;
+
+ @Resource
private InsProductUserMapper insProductUserMapper;
+
+ @Resource
+ private InsUnPassService insUnPassService;
+
+ @Resource
+ AuxiliaryOutputWorkingHoursMapper auxiliaryOutputWorkingHoursMapper;
+
+ @Resource
+ QYWXApi qywxApi;
+
+ @Resource
+ private InformationNotificationService informationNotificationService;
+
+ @Resource
+ private UserMapper userMapper;
+
+ @Resource
+ private CustomMapper customMapper;
+
+ @Value("${file.path}")
+ private String imgUrl;
+
+ @Resource
+ private InsBushingService insBushingService;
+
+ @Resource
+ private InsBushingMapper insBushingMapper;
+
+ @Resource
+ private InsFiberMapper insFiberMapper;
+
+ @Resource
+ private InsFibersMapper insFibersMapper;
+
+ @Resource
+ private InsOrderFileMapper insOrderFileMapper;
@Override
public Map<String, Object> selectInsOrderPlanList(Page page, InsOrderPlanDTO insOrderPlanDTO) {
Map<String, Object> map = new HashMap<>();
map.put("head", PrintChina.printChina(InsOrderPlanVO.class));
Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId(null);
- Integer userId = map1.get("userId");
+ User user = userMapper.selectById(map1.get("userId"));//褰撳墠鐧诲綍鐨勪汉
+
+ String laboratory = null;
+ String userName = null;
+ Integer userId = null;
if (ObjectUtil.isNotEmpty(insOrderPlanDTO.getUserId())) {
- insOrderPlanDTO.setUserId(userId.longValue());
+ userId = map1.get("userId");
+ userName = userMapper.selectById(map1.get("userId")).getName();
+ insOrderPlanDTO.setUserId(null);
}
- IPage<InsOrderPlanVO> insOrderPage = insSampleMapper.findInsSampleAndOrder(page, QueryWrappers.queryWrappers(insOrderPlanDTO), userId);
+ String sonLaboratory = insOrderPlanDTO.getSonLaboratory();//璇曢獙瀹�
+ insOrderPlanDTO.setSonLaboratory(null);
+ IPage<InsOrderPlanVO> insOrderPage = insSampleMapper.findInsSampleAndOrder(page, QueryWrappers.queryWrappers(insOrderPlanDTO), userName, sonLaboratory, laboratory);
map.put("body", insOrderPage);
return map;
}
@Override
+ public Map<String, Object> inspectionOrderDetailsTaskSwitching(Page page, InsOrderPlanDTO insOrderPlanDTO) {
+ Map<String, Object> map = new HashMap<>();
+ map.put("head", PrintChina.printChina(InsOrderPlanTaskSwitchVo.class));
+ Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId(null);
+ Integer userId = map1.get("userId");
+ User user = userMapper.selectById(map1.get("userId"));//褰撳墠鐧诲綍鐨勪汉
+ String laboratory = null;
+ if (ObjectUtil.isNotEmpty(insOrderPlanDTO.getUserId())) {
+ insOrderPlanDTO.setUserId(userId.longValue());
+ }
+ String sonLaboratory = insOrderPlanDTO.getSonLaboratory();//璇曢獙瀹�
+ IPage<InsOrderPlanTaskSwitchVo> insOrderPage = insSampleMapper.inspectionOrderDetailsTaskSwitching(page, QueryWrappers.queryWrappers(insOrderPlanDTO), userId, sonLaboratory, laboratory);
+ map.put("body", insOrderPage);
+ return map;
+ }
+
+ //璁ら浠诲姟
+ @Override
public boolean claimInsOrderPlan(InsOrderPlanDTO entity) {
if (Objects.isNull(entity)) {
return false;
}
+ /*璁ら闇�瑕佸垽鏂鏍峰搧鏄惁鍦ㄥ簱*/
+ //鏌ヨ鏍峰搧id(杩囨护娌℃湁妫�楠岄」鐩殑鏍峰搧)
+ List<Integer> sampleIds = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
+ .eq(InsSample::getInsOrderId, entity.getInsSampleId())).stream().map(InsSample::getId).collect(Collectors.toList());
+ for (Integer samId : sampleIds) {
+ //杩囨护娌℃湁妫�楠岄」鐩殑鏍峰搧id
+ if (ObjectUtils.isEmpty(insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+ .eq(InsProduct::getInsSampleId, samId)
+ .eq(InsProduct::getState, 1)))) {
+ continue;
+ }
+ //鍏ュ簱娆℃暟
+ Long inCount = warehouseHistoryMapper.selectCount(Wrappers.<WarehouseHistory>lambdaQuery()
+ .eq(WarehouseHistory::getState, 1)
+ .eq(WarehouseHistory::getInsSampleId, samId));
+ //鍑哄簱娆℃暟
+ Long outCount = warehouseHistoryMapper.selectCount(Wrappers.<WarehouseHistory>lambdaQuery()
+ .eq(WarehouseHistory::getState, 2)
+ .eq(WarehouseHistory::getInsSampleId, samId));
+ if (inCount > 0 && inCount > outCount) {
+ continue;
+ } else {
+ throw new ErrorException("鎵�閫夌殑鏍峰搧搴撳瓨涓嶈冻,璇锋鏌ュ叆搴撳拰鍑哄簱璁板綍!");
+ }
+ }
Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId(null);
Integer userId = map1.get("userId");
- InsSampleUser insSampleUser = new InsSampleUser(entity.getInsSampleId().intValue(), userId, 1);
+ InsSampleUser insSampleUser = new InsSampleUser(entity.getInsSampleId().intValue(), userId, 0, entity.getSonLaboratory());
return insSampleUserMapper.insert(insSampleUser) > 0;
}
@@ -123,39 +221,352 @@
public Map<String, Object> doInsOrder(Integer id, String laboratory) {
InsOrder insOrder = new InsOrder();
insOrder.setId(id);
- insOrder.setInsState(1);
InsOrder order = insOrderMapper.selectById(id);
if (BeanUtil.isEmpty(order.getInsTime())) {
insOrder.setInsTime(LocalDateTime.now());
insOrderMapper.updateById(insOrder);
+ insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate().eq(InsOrderState::getInsOrderId, id).eq(InsOrderState::getLaboratory, laboratory).set(InsOrderState::getInsTime, LocalDateTime.now()).set(InsOrderState::getInsState, 1));
}
- insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate().eq(InsOrderState::getInsOrderId, id).eq(InsOrderState::getLaboratory, laboratory).set(InsOrderState::getInsTime, LocalDateTime.now()).set(InsOrderState::getInsState, 1));
Map<String, Object> map = insOrderService.getInsOrderAndSample(id, laboratory);
- Set<Integer> set = new HashSet<>();
- Map<Integer, String> map2 = new HashMap<>();
List<SampleProductDto> list = JSON.parseArray(JSON.toJSONString(map.get("sampleProduct")), SampleProductDto.class);
for (SampleProductDto samples : list) {
if (BeanUtil.isEmpty(samples.getInsProduct())) continue;
- getTemplateThing(set, map2, samples);
+ samples.setBushing(insBushingService.selectBushingBySampleId(samples.getId()));
}
map.put("sampleProduct", list);
return map;
}
@Override
- @Transactional(rollbackFor = Exception.class)
- public void saveInsContext(Map<String, Object> insContext) {
+ public List<InsProduct> getInsProduct(Integer id, Integer type, String laboratory, HttpServletRequest request) {
+ List<InsProduct> insProducts = new ArrayList<>();
+ switch (type) {
+ case 0:
+ //鏍峰搧
+ insProducts = insSampleMapper.getInsProduct1(id, laboratory);
+ if (insProducts.size()==0){
+ insProducts = insSampleMapper.getIns2Product1(id, laboratory);
+ }
+ break;
+ case 1:
+ //鍏夌氦甯�
+ break;
+ case 2:
+ //鍏夌氦
+ break;
+ case 3:
+ //濂楃
+ break;
+ }
+ Set<Integer> set = new HashSet<>();
+ Map<Integer, String> map2 = new HashMap<>();
+ if (BeanUtil.isEmpty(insProducts)) return null;
+ getTemplateThing(set, map2, insProducts);
+ return insProducts;
+ }
+
+ @Override
+ public List<InsProduct> getInsProduct2(Integer id, Integer type, String laboratory, HttpServletRequest request,Integer num) {
+ List<InsProduct> insProducts = new ArrayList<>();
+ switch (type) {
+ case 0:
+ //鏍峰搧
+ insProducts = insSampleMapper.get2InsProduct1(id, laboratory,num);
+ break;
+ case 1:
+ //鍏夌氦甯�
+ break;
+ case 2:
+ //鍏夌氦
+ break;
+ case 3:
+ //濂楃
+ break;
+ }
+ Set<Integer> set = new HashSet<>();
+ Map<Integer, String> map2 = new HashMap<>();
+ if (BeanUtil.isEmpty(insProducts)) return null;
+ getTemplateThing(set, map2, insProducts);
+ return insProducts;
+ }
+
+ @Override
+ public List<String> checkSubmitPlan(Integer orderId, String laboratory) {
+ List<String> collect = new ArrayList<>();
+ 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::getSonLaboratory, laboratory)
+ .eq(InsProduct::getState, 1)
+ .eq(InsProduct::getInsResult, 0));
+ if (insProducts.size() > 0) {
+ collect = insProducts.stream().map(insProduct -> {
+ return insProduct.getInspectionItem() + "-" + insProduct.getInspectionItemSubclass();
+ }).collect(Collectors.toList());
+ }
+ return collect;
+ }
+
+ @Override
+ public Map<String, Object> getFileList(Page page, InsOrderFile insOrderFile) {
+ Map<String, Object> map = new HashMap<>();
+ map.put("head", PrintChina.printChina(InsOrderFile.class));
+ IPage<InsOrderFile> insOrderFileIPage = insOrderFileMapper.getFileList(page, QueryWrappers.queryWrappers(insOrderFile));
+ map.put("body", insOrderFileIPage);
+ return map;
+ }
+
+ @Override
+ public int uploadFile(Integer orderId, MultipartFile file) {
+ String urlString;
+ String pathName;
+ String path;
+ String filename = file.getOriginalFilename();
+ String contentType = file.getContentType();
+ InsOrderFile insOrderFile = new InsOrderFile();
+ insOrderFile.setInsOrderId(orderId);
+ insOrderFile.setFileName(filename);
+ if (contentType != null && contentType.startsWith("image/")) {
+ // 鏄浘鐗�
+ path = imgUrl;
+ insOrderFile.setType(1);
+ } else {
+ // 鏄枃浠�
+ path = wordUrl;
+ insOrderFile.setType(2);
+ }
+ try {
+ File realpath = new File(path);
+ if (!realpath.exists()) {
+ realpath.mkdirs();
+ }
+ pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
+ urlString = realpath + "/" + pathName;
+ file.transferTo(new File(urlString));
+ insOrderFile.setFileUrl(pathName);
+ return insOrderFileMapper.insert(insOrderFile);
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.err.println("闄勪欢涓婁紶閿欒");
+ return 0;
+ }
+ }
+
+ //鍒囨崲璁板綍妯$増鏌ヨ妫�楠屽唴瀹�
+ @Override
+ public Map<String, Object> getReportModel(Integer sampleId) {
+ Map<String, Object> map = new HashMap<>();
+ //鍏堟煡鍑哄绠�
+ List<InsBushing> insBushings = insBushingMapper.selectList(Wrappers.<InsBushing>lambdaQuery().eq(InsBushing::getInsSampleId, sampleId));
+ List<InsFibers> fibers = new ArrayList<>();
+ List<InsFiber> fiber = new ArrayList<>();
+ List<InsBushing> bush = new ArrayList<>();
+ for (InsBushing insBushing : insBushings) {
+ //鍐嶆煡璇㈠嚭鎵�鏈夌殑鍏夌氦甯�
+ List<InsFibers> insFibers = insFibersMapper.selectList(Wrappers.<InsFibers>lambdaQuery().eq(InsFibers::getInsBushingId, insBushing.getId()));
+ List<InsFiber> insFiberList = insFiberMapper.selectList(Wrappers.<InsFiber>lambdaQuery().eq(InsFiber::getInsBushingId, insBushing.getId()));
+ if (CollectionUtils.isNotEmpty(insFibers)) {
+ for (InsFibers insFiber : insFibers) {
+ List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsFibersId, insFiber.getId()));
+ List<Integer> collect = insProducts.stream().map(InsProduct::getInsResult)
+ .filter(sm -> ObjectUtils.isNotEmpty(sm) && sm != 2).collect(Collectors.toList());
+ if (insProducts.size() == collect.size()) {
+ insFiber.setState(1);//宸叉楠�
+ } else {
+ insFiber.setState(0);//鏈楠�
+ }
+ }
+ fibers.addAll(insFibers);
+ //鏌ュ嚭鍏夌氦甯︿笅鎵�鏈夌殑鍏夌氦
+ List<InsFiber> fiberList = insFiberMapper.selectList(Wrappers.<InsFiber>lambdaQuery().in(InsFiber::getInsFibersId, insFibers.stream().map(InsFibers::getId).collect(Collectors.toList())));
+ for (InsFiber insFiber : fiberList) {
+ List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsFiberId, insFiber.getId()));
+ List<Integer> collect = insProducts.stream().map(InsProduct::getInsResult)
+ .filter(sm -> ObjectUtils.isNotEmpty(sm) && sm != 2).collect(Collectors.toList());
+ if (insProducts.size() == collect.size()) {
+ insFiber.setState(1);//宸叉楠�
+ } else {
+ insFiber.setState(0);//鏈楠�
+ }
+ }
+ fiber.addAll(fiberList);
+ }
+ //濡傛灉濂楃涓嬫病鏈夊厜绾ゅ甫灏卞彧鏈夊厜绾や簡
+ else if (CollectionUtils.isNotEmpty(insFiberList)) {
+ for (InsFiber insFiber : insFiberList) {
+ List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsFiberId, insFiber.getId()));
+ List<Integer> collect = insProducts.stream().map(InsProduct::getInsResult)
+ .filter(sm -> ObjectUtils.isNotEmpty(sm) && sm != 2).collect(Collectors.toList());
+ if (insProducts.size() == collect.size()) {
+ insFiber.setState(1);//宸叉楠�
+ } else {
+ insFiber.setState(0);//鏈楠�
+ }
+ }
+ fiber.addAll(insFiberList);
+ }
+ //濡傛灉鍏夌氦甯﹀拰鍏夌氦閮芥病鏈夊氨鍙湁濂楃(鏉惧绠�)
+ else {
+ List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+ .eq(InsProduct::getInsBushId, insBushing.getId()));
+ List<Integer> collect = insProducts.stream()
+ .map(InsProduct::getInsResult)
+ .filter(sm -> ObjectUtils.isNotEmpty(sm) && sm != 2).collect(Collectors.toList());
+ if (insProducts.size() == collect.size()) {
+ insBushing.setState(1);//宸叉楠�
+ } else {
+ insBushing.setState(0);//鏈楠�
+ }
+ bush.add(insBushing);
+ }
+ }
+ map.put("鍏夌氦甯�", fibers);
+ map.put("鍏夌氦", fiber);
+ map.put("濂楃", bush);
+ return map;
+ }
+
+ //娓╁害寰幆鏌ョ湅鍒楄〃鏁版嵁(鍖呮嫭閫氳繃鏍峰搧id,寰幆娆℃暟,娓╁害,寰幆娆℃暟杩涜绛涢��)
+ @Override
+ public Map<String, Object> temCycle(Integer sampleId, String inspectionItem, String inspectionItemSubclass) {
+ Map<String, Object> map = new HashMap<>();
+ //鏍峰搧淇℃伅
+ SampleVo sampleVo = insSampleMapper.getDetailById(sampleId);
+ map.put("sampleVo", sampleVo);
+ List<ProductVo> productVos = new ArrayList<>();
+ //鍏堟煡鍑鸿繖涓牱鍝佷笅鏈夊摢浜涚鑹叉爣,鍏夌氦甯�,鍏夌氦鑹叉爣
+ //鍏堟煡鍑哄绠�
+ List<InsBushing> insBushings = insBushingMapper.selectList(Wrappers.<InsBushing>lambdaQuery().eq(InsBushing::getInsSampleId, sampleId));
+ if (insBushings.size() > 0) {
+ //閫氫俊--娓╁害寰幆
+ for (InsBushing insBushing : insBushings) {
+ //鍐嶆煡璇㈠嚭鎵�鏈夌殑鍏夌氦甯�
+ List<InsFibers> insFibers = insFibersMapper.selectList(Wrappers.<InsFibers>lambdaQuery().eq(InsFibers::getInsBushingId, insBushing.getId()));
+ if (CollectionUtils.isNotEmpty(insFibers)) {
+ for (InsFibers insFiber : insFibers) {
+ //鏌ュ嚭鍏夌氦甯︿笅鎵�鏈夌殑鍏夌氦
+ List<InsFiber> fiberList = insFiberMapper.selectList(Wrappers.<InsFiber>lambdaQuery().eq(InsFiber::getInsFibersId, insFiber.getId()));
+ for (InsFiber fiber : fiberList) {
+ //鍐嶆牴鎹叧鑱旂殑鍏夌氦閰嶇疆鐨刬d鍜屽惊鐜鏁板拰娓╁害鍜屾牱鍝乮d杩涜鏌ヨ妫�楠岄」鐩�
+ List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+ .eq(InsProduct::getInsSampleId, sampleId)
+ .eq(InsProduct::getInspectionItem, inspectionItem)
+ .eq(InsProduct::getInspectionItemSubclass, inspectionItemSubclass)
+ .eq(InsProduct::getInsFiberId, fiber.getId()));
+ for (InsProduct insProduct : insProducts) {
+ InsProductResult insProductResult = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery()
+ .eq(InsProductResult::getInsProductId, insProduct.getId()));
+ ProductVo productVo = new ProductVo();
+ productVo.setCode(insFiber.getCode());
+ productVo.setColor(fiber.getColor());
+ productVo.setBushColor(insBushing.getColor());
+ if (ObjectUtils.isNotEmpty(insProductResult)) {
+ insProduct.setInsProductResult(insProductResult);
+ }
+ //姹傚悓绛夋潯浠朵笅1娆″惊鐜�20搴﹀父娓╃殑璁$畻鍊�
+ InsProductResult insProductResult1 = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, insProductMapper.selectOne(Wrappers.<InsProduct>lambdaQuery()
+ .eq(InsProduct::getInsSampleId, sampleId)
+ .eq(InsProduct::getInspectionItem, "1")
+ .eq(InsProduct::getInspectionItemSubclass, "20鈩�(甯告俯)")
+ .eq(InsProduct::getInspectionItemClass, insProduct.getInspectionItemClass())
+ .eq(InsProduct::getInsFiberId, fiber.getId())).getId()));
+ if (ObjectUtils.isNotEmpty(insProductResult1) && !insProductResult1.getComValue().equals("[]")) {
+ insProduct.setComplue(insProductResult1.getComValue().split(":")[1].split("\"")[1]);
+ }
+ productVo.setInsProduct(insProduct);
+ productVos.add(productVo);
+ }
+ }
+ }
+ } else {
+ //濡傛灉濂楃涓嬫病鏈夊厜绾ゅ甫灏卞彧鏈夊厜绾や簡
+ List<InsFiber> insFiberList = insFiberMapper.selectList(Wrappers.<InsFiber>lambdaQuery().eq(InsFiber::getInsBushingId, insBushing.getId()));
+ for (InsFiber fiber : insFiberList) {
+ //鍐嶆牴鎹叧鑱旂殑鍏夌氦閰嶇疆鐨刬d鍜屽惊鐜鏁板拰娓╁害鍜屾牱鍝乮d杩涜鏌ヨ妫�楠岄」鐩�
+ List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+ .eq(InsProduct::getInsSampleId, sampleId)
+ .eq(InsProduct::getInspectionItem, inspectionItem)
+ .eq(InsProduct::getInspectionItemSubclass, inspectionItemSubclass)
+ .eq(InsProduct::getInsFiberId, fiber.getId()));
+ for (InsProduct insProduct : insProducts) {
+ InsProductResult insProductResult = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, insProduct.getId()));
+ ProductVo productVo = new ProductVo();
+ productVo.setCode("-");
+ productVo.setColor(fiber.getColor());
+ productVo.setBushColor(fiber.getBushColor());
+ insProduct.setInsProductResult(insProductResult);
+ //姹傚悓绛夋潯浠朵笅1娆″惊鐜�20搴﹀父娓╃殑璁$畻鍊�
+ InsProductResult insProductResult1 = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, insProductMapper.selectOne(Wrappers.<InsProduct>lambdaQuery()
+ .eq(InsProduct::getInsSampleId, sampleId)
+ .eq(InsProduct::getInspectionItem, "1")
+ .eq(InsProduct::getInspectionItemSubclass, "20鈩�(甯告俯)")
+ .eq(InsProduct::getInspectionItemClass, insProduct.getInspectionItemClass())
+ .eq(InsProduct::getInsFiberId, fiber.getId())).getId()));
+ if (ObjectUtils.isNotEmpty(insProductResult1) && !insProductResult1.getComValue().equals("[]")) {
+ insProduct.setComplue(insProductResult1.getComValue().split(":")[1].split("\"")[1]);
+ }
+ productVo.setInsProduct(insProduct);
+ productVos.add(productVo);
+ }
+ }
+ }
+ }
+ productVos = productVos.stream().sorted(Comparator.comparing(productVo -> productVo.getInsProduct().getInspectionItemClass())).collect(Collectors.toList());
+ } else {
+ //鐢靛姏--鐑惊鐜拰娓╁崌璇曢獙
+ List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+ .eq(InsProduct::getInsSampleId, sampleId)
+ .eq(InsProduct::getInspectionItem, inspectionItem));
+ for (InsProduct insProduct : insProducts) {
+ InsProductResult insProductResult = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, insProduct.getId()));
+ ProductVo productVo = new ProductVo();
+ if (ObjectUtils.isNotEmpty(insProductResult)) {
+ insProduct.setInsProductResult(insProductResult);
+ }
+ productVo.setInsProduct(insProduct);
+ productVos.add(productVo);
+ }
+ }
+ map.put("productVos", productVos);
+ return map;
+ }
+
+ @Override
+ public List<String> upPlanUser2(Integer orderId) {
+ List<Integer> sampleId = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId)).stream().map(InsSample::getId).collect(Collectors.toList());
+ List<String> sonLaboratory = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getState, 1).in(InsProduct::getInsSampleId, sampleId)).stream().map(InsProduct::getSonLaboratory).distinct().collect(Collectors.toList());
+ return sonLaboratory;
+ }
+
+ @Override
+ public int deleteInsContext(InsProductResultVo insProductResultVo) {
+ return insProductResult2Mapper.delete(Wrappers.<InsProductResult2>lambdaQuery()
+ .eq(InsProductResult2::getFrequency, insProductResultVo.getFrequency())
+ .eq(InsProductResult2::getNum, insProductResultVo.getNum())
+ .in(InsProductResult2::getInsProductId, insProductResultVo.getProductIds()));
+ }
+
+
+ @Override
+ public void saveInsContext(Map<String, Object> insContext,Integer num) {
Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
CompletableFuture.supplyAsync(() -> {
insContext.forEach((k, v) -> {
JSONObject jo = JSON.parseObject(JSON.toJSONString(v));
InsProduct insProduct = new InsProduct();
insProduct.setId(Integer.parseInt(k));
- InsProductResult result = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, insProduct.getId()));
- if (BeanUtil.isEmpty(result)) {
+ List<InsProductResult> results = insProductResultMapper.selectList(Wrappers.<InsProductResult>lambdaQuery()
+ .eq(InsProductResult::getInsProductId, insProduct.getId()));
+ InsProductResult result;
+ if (CollectionUtils.isEmpty(results)) {
result = new InsProductResult();
+ } else {
+ result = results.get(0);
}
result.setInsProductId(Integer.parseInt(k));
+ result.setNum(num);
+ //妫�楠屽��
if (jo.get("insValue") != null) {
JSONArray jsonArray = JSON.parseArray(JSON.toJSONString(jo.get("insValue")));
List<Map<String, Object>> iv = new ArrayList<>();
@@ -163,6 +574,9 @@
JSONObject insValue = JSON.parseObject(JSON.toJSONString(o));
Map<String, Object> map = new HashMap<>();
map.put("v", JSON.parseObject(JSON.toJSONString(insValue.get("v"))).get("v"));
+ map.put("r", JSON.toJSONString(insValue.get("r")));
+ map.put("c", JSON.toJSONString(insValue.get("c")));
+ map.put("w", insValue.get("w"));
try {
if ((insValue.get("u") == null || insValue.get("u").equals("")) && StrUtil.isNotEmpty(JSON.parseObject(JSON.toJSONString(insValue.get("v"))).get("v").toString())) {
map.put("u", userId + "");
@@ -175,7 +589,8 @@
}
result.setInsValue(JSON.toJSONString(iv));
}
- if (jo.get("comValue") != null) {
+ //璁$畻鍊�
+ if (jo.get("comValue") != null && !Objects.equals(jo.get("comValue"), "")) {
JSONArray jsonArray2 = JSON.parseArray(JSON.toJSONString(jo.get("comValue")));
List<Map<String, Object>> cv = new ArrayList<>();
for (Object o : jsonArray2) {
@@ -186,10 +601,17 @@
}
result.setComValue(JSON.toJSONString(cv));
}
- JSONObject resValue = JSON.parseObject(JSON.toJSONString(jo.get("resValue")));
- if (resValue.get("v") != null) {
- insProduct.setLastValue(JSON.parseObject(JSON.toJSONString(resValue.get("v"))).get("v") + "");
+ //鏈�缁堝��
+ try {
+ JSONObject resValue = JSON.parseObject(JSON.toJSONString(jo.get("resValue")));
+ if (resValue.get("v") != null) {
+ Object o = JSON.parseObject(JSON.toJSONString(resValue.get("v"))).get("v");
+ insProduct.setLastValue(o.equals("") ? null : (o.toString()));
+ }
+ } catch (Exception e) {
+ insProduct.setLastValue("");//''
}
+ //璁惧缂栧彿
if (jo.get("equipValue") != null) {
JSONArray jsonArray2 = JSON.parseArray(JSON.toJSONString(jo.get("equipValue")));
List<Map<String, Object>> ev = new ArrayList<>();
@@ -201,11 +623,25 @@
}
result.setEquipValue(JSON.toJSONString(ev));
}
+ //璁惧鍚嶇О
+ if (jo.get("equipName") != null) {
+ JSONArray jsonArray2 = JSON.parseArray(JSON.toJSONString(jo.get("equipName")));
+ List<Map<String, Object>> ev = new ArrayList<>();
+ for (Object o : jsonArray2) {
+ JSONObject equipValue = JSON.parseObject(JSON.toJSONString(o));
+ Map<String, Object> map = new HashMap<>();
+ map.put("v", JSON.parseObject(JSON.toJSONString(equipValue.get("v"))).get("v"));
+ ev.add(map);
+ }
+ result.setEquipName(JSON.toJSONString(ev));
+ }
+ //缁撹
try {
JSONObject insResult = JSON.parseObject(JSON.toJSONString(jo.get("insResult")));
String ir = JSON.parseObject(JSON.toJSONString(insResult.get("v"))).get("v") + "";
insProduct.setInsResult(Integer.parseInt(ir));
} catch (Exception e) {
+ insProduct.setInsResult(2);//寰呭畾
}
if (BeanUtil.isEmpty(result.getId())) {
result.setCreateUser(userId);
@@ -219,288 +655,523 @@
insProduct.setUpdateUser(userId);
insProductMapper.updateById(insProduct);
insProductUserMapper.insert(new InsProductUser(null, userId, LocalDateTime.now(), insProduct.getId()));
+ insProduct = insProductMapper.selectById(insProduct);
+ /*鐢熸垚浜ч噺宸ユ椂*/
+ //鏌ヨ妫�楠屽崟淇℃伅
+ InsOrder insOrder = insOrderMapper.selectById(insSampleMapper.selectById(insProduct.getInsSampleId()).getInsOrderId());
+ //鏍¢獙濡傛灉杩欎釜浜鸿繖涓娴嬮」鐩凡缁忔坊鍔犺繃浜嗗垯涓嶉渶瑕佸啀鏂板
+ //棣栧厛鍒ゆ柇褰撳墠浜虹殑褰撳墠鏃堕棿鏄惁鏄帓鐝椂闂村唴,濡傛灉涓嶆槸灏辨槸鍔犵彮
+ LocalDateTime today = LocalDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT);
+ PerformanceShift performanceShift = performanceShiftMapper.selectOne(Wrappers.<PerformanceShift>lambdaQuery()
+ .eq(PerformanceShift::getUserId, userId)
+ .eq(PerformanceShift::getWorkTime, today));
+ if (ObjectUtils.isNotEmpty(performanceShift)) {
+ ShiftTime shiftTime = shiftTimeMapper.selectOne(Wrappers.<ShiftTime>lambdaQuery().eq(ShiftTime::getShift, performanceShift.getShift()));
+ if (ObjectUtils.isNotEmpty(shiftTime)) {
+ DateTimeFormatter forma = DateTimeFormatter.ofPattern("HH:mm");
+ LocalTime now = LocalTime.now();
+ LocalTime startTime = LocalTime.parse(shiftTime.getStartTime(), forma);
+ LocalTime endTime = LocalTime.parse(shiftTime.getEndTime(), forma);
+ // 妫�鏌ュ綋鍓嶆椂闂存槸鍚﹀湪鑼冨洿鍐咃紙鍖呮嫭杈圭晫锛�
+ boolean isWithinRange;
+ if (endTime.isAfter(startTime)) {
+ // 涓嶈法澶╃殑鎯呭喌
+ isWithinRange = !now.isBefore(startTime) && !now.isAfter(endTime);
+ } else {
+ // 璺ㄥぉ鐨勬儏鍐�
+ isWithinRange = !now.isBefore(startTime) || !now.isAfter(endTime);
+ }
+ if (ObjectUtils.isNotEmpty(insProduct.getManHour())) {
+ //鍏堝垹鍚庡姞(宸ユ椂璁板綍鏈�鍚庝竴娆′繚瀛樼殑鏃堕棿)
+ auxiliaryOutputWorkingHoursMapper.delete(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
+ .eq(AuxiliaryOutputWorkingHours::getInsProductId, insProduct.getId()));
+ AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHours = new AuxiliaryOutputWorkingHours();
+ if (isWithinRange) {
+ //鍦ㄦ椂闂村唴灏辨槸姝e父涓婄彮
+ auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode());//闈炲姞鐝鎵樺崟鍙�
+ auxiliaryOutputWorkingHours.setWorkTime(insProduct.getManHour());//闈炲姞鐝伐鏃�
+ auxiliaryOutputWorkingHours.setAmount(1);//闈炲姞鐝暟閲�
+ auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime()) ? auxiliaryOutputWorkingHours.getOvertimeWorkTime() : 0) + (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime()) ? auxiliaryOutputWorkingHours.getWorkTime() : 0));//浜ч噺宸ユ椂
+
+ } else {
+ //鍔犵彮
+ auxiliaryOutputWorkingHours.setOvertimeOrderNo(insOrder.getEntrustCode());//鍔犵彮濮旀墭鍗曞彿
+ auxiliaryOutputWorkingHours.setOvertimeWorkTime(insProduct.getManHour());//鍔犵彮宸ユ椂
+ auxiliaryOutputWorkingHours.setOvertimeAmount(1);//鍔犵彮鏁伴噺
+ auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime()) ? auxiliaryOutputWorkingHours.getOvertimeWorkTime() : 0) + (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime()) ? auxiliaryOutputWorkingHours.getWorkTime() : 0));//浜ч噺宸ユ椂
+ }
+ auxiliaryOutputWorkingHours.setInspectionItem(insProduct.getInspectionItem());//妫�娴嬬埗椤�
+ auxiliaryOutputWorkingHours.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());//妫�娴嬪瓙椤�
+ auxiliaryOutputWorkingHours.setSample(insSampleMapper.selectById(insProduct.getInsSampleId()).getSampleCode());//鏍峰搧缂栧彿
+ 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.setInsProductId(insProduct.getId());//妫�楠岄」鐩甶d
+ auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours);
+ }
+ }
+ }
InsSample insSample = insSampleMapper.selectById(insProductMapper.selectById(insProduct.getId()).getInsSampleId());
insSample.setInsState(1);
Long l = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
.eq(InsProduct::getInsSampleId, insSample.getId()));
Long l1 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
- .eq(InsProduct::getInsSampleId, insSample.getId()).isNotNull(InsProduct::getInsResult));
+ .eq(InsProduct::getInsSampleId, insSample.getId())
+ .and(wrapper -> wrapper
+ .isNotNull(InsProduct::getInsResult)
+ .or()
+ .ne(InsProduct::getInsResult, 2)
+ ));
if (l == l1) {
+ //濡傛灉鎵�鏈夐」鐩兘鏈夌粨璁�,閭d箞璇ユ牱鍝佺姸鎬佸凡妫�
insSample.setInsState(2);
}
insSampleMapper.updateById(insSample);
+ /*鏍¢獙涓�涓媟esult琛�*/
+ List<InsProductResult> insProductResults = insProductResultMapper.selectList(Wrappers.<InsProductResult>lambdaQuery()
+ .eq(InsProductResult::getInsProductId, insProduct.getId()));
+ if (insProductResults.size() > 1) {
+ for (int i = 1; i < insProductResults.size(); i++) {
+ insProductResultMapper.deleteById(insProductResults.get(i));
+ }
+ }
});
- return null;
+ return insContext.keySet().stream().findFirst().orElse(null);
}).thenAccept(res -> {
+ if (res != null) {
+ int pId = Integer.parseInt(res.replaceAll("\\D+", ""));
+ InsProduct insProduct = insProductMapper.selectById(pId);
+ // 閫氳繃鏍锋湰id鑾峰彇璁㈠崟id
+ int orderId = insSampleMapper.selectById(insProduct.getInsSampleId()).getInsOrderId();
+ int count = insProductMapper.selectInsProductCountByOrderId(orderId);
+ if (count == 0) {
+ insOrderStateMapper.update(new InsOrderState(), Wrappers.<InsOrderState>lambdaUpdate()
+ .eq(InsOrderState::getInsOrderId, orderId)
+ .eq(InsOrderState::getLaboratory, insProduct.getSonLaboratory())
+ .set(InsOrderState::getInsState, 2));
+ }
+ }
}).exceptionally(e -> {
e.printStackTrace();
return null;
});
}
+ //鐢佃矾璇曢獙鐨勪繚瀛樻楠屽唴瀹�
@Override
- public int upPlanUser(Integer userId, Integer orderId) {
+ public List<Integer> saveInsContext2(InsProductResultDto insProductResultDtos) {
+ if (ObjectUtils.isEmpty(insProductResultDtos.getFrequency())) {
+ throw new ErrorException("棰戠巼涓嶈兘涓虹┖");
+ }
+ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+ //鏌ヨ妫�楠屽崟淇℃伅
+ InsOrder insOrder = insOrderMapper.selectById(insProductResultDtos.getOrderId());
+ InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
+ .eq(InsOrderState::getInsOrderId, insProductResultDtos.getOrderId())
+ .eq(InsOrderState::getLaboratory, insProductResultDtos.getSonLaboratory())
+ .orderByDesc(InsOrderState::getId)
+ .last("LIMIT 1"));// 纭繚鍙彇涓�鏉¤褰�
+ //鏌ヨ鏍峰搧淇℃伅
+ InsSample insSample = insSampleMapper.selectById(insProductResultDtos.getSampleId());
+ List<Integer> list = new ArrayList<>();
+ /*鏂板妫�楠岄」鐩楠屽�艰褰曡〃(閲囧彇鍏堝垹鍚庡)*/
+ insProductResult2Mapper.delete(Wrappers.<InsProductResult2>lambdaQuery()
+ .in(InsProductResult2::getInsProductId, insProductResultDtos.getInsProductResult2s().stream().map(InsProductResult2::getInsProductId).distinct().collect(Collectors.toList()))
+ .eq(InsProductResult2::getNum, orderState.getNum())
+ .eq(InsProductResult2::getFrequency, insProductResultDtos.getFrequency()));
+ for (InsProductResult2 insProductResult2 : insProductResultDtos.getInsProductResult2s()) {
+ InsProduct insProduct = new InsProduct();
+ insProduct.setId(insProductResult2.getInsProductId());//椤圭洰id
+ InsProductResult2 result2 = new InsProductResult2();
+ result2.setNum(orderState.getNum());
+ result2.setInsProductId(insProductResult2.getInsProductId());
+ //棰戠巼
+ result2.setFrequency(insProductResultDtos.getFrequency());
+ //棰戠偣
+ if (insProductResult2.getOften() != null) {
+ result2.setOften(insProductResult2.getOften());
+ }
+ //绔彛
+ if (insProductResult2.getPort() != null) {
+ result2.setPort(insProductResult2.getPort());
+ }
+ //瑙掑害
+ if (insProductResult2.getAngle() != null) {
+ result2.setAngle(insProductResult2.getAngle());
+ }
+ //璁惧缂栧彿
+ if (insProductResult2.getEquipValue() != null) {
+ result2.setEquipValue(insProductResult2.getEquipValue());
+ }
+ //璁惧鍚嶇О
+ if (insProductResult2.getEquipName() != null) {
+ result2.setEquipName(insProductResult2.getEquipName());
+ }
+ insProduct = insProductMapper.selectById(insProduct.getId());
+ //鍊�
+ if (insProductResult2.getValue() != null) {
+ result2.setValue(insProductResult2.getValue());
+ //缁撹
+ int ressult = 1;
+ String valueStr = insProductResult2.getValue();
+ if (!insProduct.getAsk().contains(",")) {
+ if (!isValueValid(valueStr, new String[]{insProduct.getAsk()})) {
+ ressult = 0; //涓嶅悎鏍�
+ }
+ } else {
+ // 濡傛灉瑕佹眰鍊兼槸(2掳鈮�20,7掳鈮�25,12掳鈮�25)杩欑鎯呭喌
+ String[] askParts = insProduct.getAsk().split(",");
+ String[] angles = insProductResult2.getAngle().split(",");
+ for (String s : askParts) {
+ String[] askSplit = s.split("掳");
+ String angleKey = askSplit[0];
+ String angleValue = askSplit[1];
+
+ for (int i = 0; i < angles.length; i++) {
+ if (angles[i].split("掳")[0].equals(angleKey)) {
+ try {
+ String s1 = valueStr.substring(1, valueStr.length() - 1).split("\\],\\[")[i];
+ if (!s1.startsWith("[")) {
+ s1 = "[" + s1;
+ }
+ if (!s1.endsWith("]")) {
+ s1 = s1 + "]";
+ }
+ if (!isValueValid("[" + s1 + "]", new String[]{angleValue})) {
+ ressult = 0; // 涓嶅悎鏍�
+ break;
+ }
+ } catch (Exception e) {
+ } finally {
+ continue;
+ }
+
+ }
+ }
+ }
+ }
+ result2.setResult(ressult);
+ list.add(ressult);
+ }
+ result2.setCreateUser(userId);
+ result2.setUpdateUser(userId);
+ insProductResult2Mapper.insert(result2);
+ insProduct.setUpdateUser(userId);
+ insProductMapper.updateById(insProduct);
+ insProductUserMapper.insert(new InsProductUser(null, userId, LocalDateTime.now(), insProduct.getId()));
+ /*鐢熸垚浜ч噺宸ユ椂*/
+ //鏍¢獙濡傛灉杩欎釜浜鸿繖涓娴嬮」鐩凡缁忔坊鍔犺繃浜嗗垯涓嶉渶瑕佸啀鏂板
+ //棣栧厛鍒ゆ柇褰撳墠浜虹殑褰撳墠鏃堕棿鏄惁鏄帓鐝椂闂村唴,濡傛灉涓嶆槸灏辨槸鍔犵彮
+ LocalDateTime today = LocalDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT);
+ PerformanceShift performanceShift = performanceShiftMapper.selectOne(Wrappers.<PerformanceShift>lambdaQuery()
+ .eq(PerformanceShift::getUserId, userId)
+ .eq(PerformanceShift::getWorkTime, today));
+ if (ObjectUtils.isNotEmpty(performanceShift)) {
+ ShiftTime shiftTime = shiftTimeMapper.selectOne(Wrappers.<ShiftTime>lambdaQuery().eq(ShiftTime::getShift, performanceShift.getShift()));
+ if (ObjectUtils.isNotEmpty(shiftTime)) {
+ DateTimeFormatter forma = DateTimeFormatter.ofPattern("HH:mm");
+ LocalTime now = LocalTime.now();
+ LocalTime startTime = LocalTime.parse(shiftTime.getStartTime(), forma);
+ LocalTime endTime = LocalTime.parse(shiftTime.getEndTime(), forma);
+ // 妫�鏌ュ綋鍓嶆椂闂存槸鍚﹀湪鑼冨洿鍐咃紙鍖呮嫭杈圭晫锛�
+ boolean isWithinRange;
+ if (endTime.isAfter(startTime)) {
+ // 涓嶈法澶╃殑鎯呭喌
+ isWithinRange = !now.isBefore(startTime) && !now.isAfter(endTime);
+ } else {
+ // 璺ㄥぉ鐨勬儏鍐�
+ isWithinRange = !now.isBefore(startTime) || !now.isAfter(endTime);
+ }
+ if (ObjectUtils.isNotEmpty(insProduct.getManHour())) {
+ //鍏堝垹鍚庡姞(宸ユ椂璁板綍鏈�鍚庝竴娆′繚瀛樼殑鏃堕棿)
+ auxiliaryOutputWorkingHoursMapper.delete(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
+ .eq(AuxiliaryOutputWorkingHours::getInsProductId, insProduct.getId()));
+ AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHours = new AuxiliaryOutputWorkingHours();
+ if (isWithinRange) {
+ //鍦ㄦ椂闂村唴灏辨槸姝e父涓婄彮
+ auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode());//闈炲姞鐝鎵樺崟鍙�
+ auxiliaryOutputWorkingHours.setWorkTime(insProduct.getManHour());//闈炲姞鐝伐鏃�
+ auxiliaryOutputWorkingHours.setAmount(1);//闈炲姞鐝暟閲�
+ auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime()) ? auxiliaryOutputWorkingHours.getOvertimeWorkTime() : 0) + (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime()) ? auxiliaryOutputWorkingHours.getWorkTime() : 0));//浜ч噺宸ユ椂
+
+ } else {
+ //鍔犵彮
+ auxiliaryOutputWorkingHours.setOvertimeOrderNo(insOrder.getEntrustCode());//鍔犵彮濮旀墭鍗曞彿
+ auxiliaryOutputWorkingHours.setOvertimeWorkTime(insProduct.getManHour());//鍔犵彮宸ユ椂
+ auxiliaryOutputWorkingHours.setOvertimeAmount(1);//鍔犵彮鏁伴噺
+ auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime()) ? auxiliaryOutputWorkingHours.getOvertimeWorkTime() : 0) + (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime()) ? auxiliaryOutputWorkingHours.getWorkTime() : 0));//浜ч噺宸ユ椂
+ }
+ auxiliaryOutputWorkingHours.setInspectionItem(insProduct.getInspectionItem());//妫�娴嬬埗椤�
+ auxiliaryOutputWorkingHours.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());//妫�娴嬪瓙椤�
+ auxiliaryOutputWorkingHours.setSample(insSampleMapper.selectById(insProduct.getInsSampleId()).getSampleCode());//鏍峰搧缂栧彿
+ 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.setInsProductId(insProduct.getId());//妫�楠岄」鐩甶d
+ auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours);
+ }
+ }
+ }
+ /*鏇存柊鏍峰搧鐨勬楠岀姸鎬�*/
+ insSample.setInsState(1);
+ Long l = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
+ .eq(InsProduct::getInsSampleId, insSample.getId()));
+ Long l1 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
+ .eq(InsProduct::getInsSampleId, insSample.getId())
+ .and(wrapper -> wrapper
+ .isNotNull(InsProduct::getInsResult)
+ .or()
+ .ne(InsProduct::getInsResult, 2)
+ ));
+ if (l == l1) {
+ //濡傛灉鎵�鏈夐」鐩兘鏈夌粨璁�,閭d箞璇ユ牱鍝佺姸鎬佸凡妫�
+ insSample.setInsState(2);
+ }
+ insSampleMapper.updateById(insSample);
+ }
+ /*鍒ゆ柇璇ョ珯鐐圭殑妫�楠岄」鐩槸鍚﹀叏閮ㄥ凡妫�*/
+ int count = insProductMapper.selectInsProductCountByOrderId(insProductResultDtos.getOrderId());
+ if (count == 0) {
+ insOrderStateMapper.update(new InsOrderState(), Wrappers.<InsOrderState>lambdaUpdate()
+ .eq(InsOrderState::getInsOrderId, insProductResultDtos.getOrderId())
+ .eq(InsOrderState::getLaboratory, insProductResultDtos.getSonLaboratory())
+ .set(InsOrderState::getInsState, 2));
+ }
+ return list;
+ }
+
+ //瑙f瀽瑕佹眰鍊肩殑鏍煎紡
+ private boolean getResult(double s, String ask) {
+ // 澶勭悊卤鑼冨洿鐨勬潯浠�
+ if (ask.contains("卤")) {
+ Pattern pattern = Pattern.compile("(\\d+)卤(\\d+)");
+ Matcher matcher = pattern.matcher(ask);
+ if (matcher.matches()) {
+ double center = Double.parseDouble(matcher.group(1));
+ double tolerance = Double.parseDouble(matcher.group(2));
+ return Math.abs(s - center) <= tolerance;
+ }
+ }
+ // 澶勭悊鍏朵粬姣旇緝鏉′欢
+ if (ask.startsWith(">")) {
+ double threshold = Double.parseDouble(ask.substring(1));
+ return s > threshold;
+ } else if (ask.startsWith("鈮�")) {
+ double threshold = Double.parseDouble(ask.substring(1));
+ return s >= threshold;
+ } else if (ask.startsWith("<")) {
+ double threshold = Double.parseDouble(ask.substring(1));
+ return s < threshold;
+ } else if (ask.startsWith("鈮�")) {
+ double threshold = Double.parseDouble(ask.substring(1));
+ return s <= threshold;
+ } else if (ask.equals("=")) {
+ double exactValue = Double.parseDouble(ask.substring(1));
+ return s == exactValue;
+ }
+ // 澶勭悊涓嶆敮鎸佺殑鏉′欢
+ throw new IllegalArgumentException("鏈煡鏍煎紡瑕佹眰鍊艰妫�鏌�" + ask);
+ }
+
+ //灏嗗墠绔紶杩囨潵鐨勫�艰浆鎹㈡垚鏁扮粍鐨勫舰寮�
+ private String[] parseValues(String valueStr) {
+ String trimmedStr = valueStr.substring(1, valueStr.length() - 1);
+ return Arrays.stream(trimmedStr.split("\\],\\["))
+ .map(s -> s.substring(1, s.length() - 1).split(","))
+ .flatMap(Arrays::stream)
+ .map(s -> s.replace("\"", ""))
+ .toArray(String[]::new);
+ }
+
+ //鍒よ鍚堟牸涓庝笉鍚堟牸
+ private boolean isValueValid(String valueStr, String[] valuesToCheck) {
+ for (String s : parseValues(valueStr)) {
+ if (ObjectUtils.isEmpty(s)) {
+ continue;
+ }
+ double numericValue = Double.parseDouble(s);
+ boolean valid = Arrays.stream(valuesToCheck)
+ .allMatch(v -> getResult(numericValue, v));
+ if (!valid) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ //浜ゆ帴
+ @Override
+ public int upPlanUser(Integer userId, Integer orderId, String sonLaboratory) {
InsSampleUser insSampleUser = new InsSampleUser();
insSampleUser.setUserId(userId);
insSampleUser.setInsSampleId(orderId);
insSampleUser.setState(0);
+ insSampleUser.setSonLaboratory(sonLaboratory);
return insSampleUserMapper.insert(insSampleUser);
}
@Override
@Transactional(rollbackFor = Exception.class)
public int verifyPlan(Integer orderId, String laboratory, Integer type, String tell) {
- Integer num = (type == 1 ? 5 : 4);
- insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate().eq(InsOrderState::getInsOrderId, orderId).eq(InsOrderState::getLaboratory, laboratory).set(InsOrderState::getInsTime, LocalDateTime.now()).set(InsOrderState::getInsState, num).set(InsOrderState::getVerifyTell, tell).set(InsOrderState::getVerifyUser, getLook.selectPowerByMethodAndUserId(null).get("userId")));
- List<InsOrderState> insOrderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery().eq(InsOrderState::getInsOrderId, orderId));
- long count = insOrderStates.stream().filter(a -> a.getInsState() == 5).count();
- if (count == insOrderStates.size() && num == 5) {
- InsOrder insOrder = insOrderMapper.selectById(orderId);
- Map<String, String> user = insProductMapper.selectUserById(insOrder.getUserId());
- List<SampleProductDto> samples = insSampleMapper.selectSampleProductListByOrderId(orderId);
- InsReport insReport = new InsReport();
- insReport.setCode(giveCode.giveCode("JCZX/TX-", "ins_report", "-", "yyMMdd"));
- insReport.setInsOrderId(orderId);
- Set<Integer> set = new HashSet<>();
- Map<Integer, String> map2 = new HashMap<>();
- List<Map<String, Object>> tables = new ArrayList<>();
- Set<String> standardMethod = new HashSet<>();
- Set<String> deviceSet = new HashSet<>();
- samples.forEach(a -> {
- Set<String> templateSet = new HashSet<>();
- getTemplateThing(set, map2, a);
- a.getInsProduct().forEach(b -> {
- String[] split = b.getMethod().replaceAll("]", "").replaceAll("\\[", "").replaceAll("\"", "").split(",");
- standardMethod.addAll(Arrays.asList(split));
- if (b.getInsProductResult() != null) {
- if (b.getInsProductResult().getEquipValue() != null && !Objects.equals(b.getInsProductResult().getEquipValue(), "")) {
- deviceSet.add(b.getInsProductResult().getEquipValue());
+ LocalDateTime now = LocalDateTime.now();
+ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+ List<InsUnPass> insUnPasses = new ArrayList<>();
+ /*鏍峰搧涓嬬殑椤圭洰鍙鏈変竴涓」鐩笉鍚堟牸鍒欐楠岀粨鏋滀负0,鍚﹀垯涓�1*/
+ //杩欓噷鐨刬nsSamples鏄鍗曚笅鐨勬墍鏈夋牱鍝佸寘鎷�("/")
+ List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId));
+ for (InsSample insSample : samples) {
+ List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+ .eq(InsProduct::getInsSampleId, insSample.getId())
+ .eq(InsProduct::getSonLaboratory, laboratory)
+ .eq(InsProduct::getState, 1));
+ List<Integer> results = insProducts.stream().map(InsProduct::getInsResult).filter(str -> str != null).collect(Collectors.toList());
+ if (results.contains(0)) {
+ insSample.setInsResult(0);
+ } else {
+ insSample.setInsResult(1);
+ }
+ insSampleMapper.updateById(insSample);
+ /*澶嶆牳鍚庯紝灏嗕笉鍚堟牸鐨勯」鐩俊鎭坊鍔犲埌ins_un_pass琛ㄤ腑*/
+ for (InsProduct insProduct : insProducts) {
+ if (insProduct.getInsResult() == 0) {
+ InsUnPass insUnPass = new InsUnPass();
+ insUnPass.setId(null);
+ insUnPass.setModel(insSample.getModel());
+ insUnPass.setSample(insSample.getSample());
+ insUnPass.setInspectionItem(insProduct.getInspectionItem());
+ insUnPass.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());
+ insUnPass.setLastValue(insProduct.getLastValue());
+ insUnPass.setEntrustCode(insOrderMapper.selectById(orderId).getEntrustCode());
+ List<Integer> userIds = insProductUserMapper.selectList(Wrappers.<InsProductUser>lambdaQuery().eq(InsProductUser::getInsProductId, insProduct.getId())).stream().map(InsProductUser::getCreateUser).distinct().collect(Collectors.toList());
+ String name = userMapper.selectBatchIds(userIds).stream().map(User::getName).collect(Collectors.joining(","));
+ insUnPass.setName(name);
+ insUnPasses.add(insUnPass);
+ }
+ }
+ }
+ insUnPassService.saveBatch(insUnPasses);
+ /*type=0 鍐嶆璇曢獙; type=1 缁х画璇曢獙 ; type=2 缁撴潫璇曢獙*/
+ switch (type) {
+ case 0:
+ /*鍐嶆璇曢獙:璇ュ崟瀛愰��鍥炲埌妫�楠岀姸鎬�(鎺掑簭鏀规垚褰撳墠鐨勬渶鍚�),娆℃暟閫掑(淇濈暀浠ュ墠鐨勬暟鎹�)锛�*/
+ //鏇存柊鍘熸潵鐨勬楠屼换鍔�
+ // 鏌ヨ鏍规嵁 id 鍊掑簭鎺掑垪鐨勭涓�鏉¤褰�
+ InsOrderState record = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
+ .eq(InsOrderState::getInsOrderId, orderId)
+ .eq(InsOrderState::getLaboratory, laboratory)
+ .orderByDesc(InsOrderState::getId)
+ .last("LIMIT 1")); // 纭繚鍙彇涓�鏉¤褰�
+ if (record != null) {
+ // 鑾峰彇鍒扮涓�鏉¤褰曠殑 id 鍚庯紝鎵ц鏇存柊鎿嶄綔
+ insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
+ .eq(InsOrderState::getId, record.getId())
+ .set(InsOrderState::getInsTime, now)
+ .set(InsOrderState::getInsState, 4)
+ .set(InsOrderState::getVerifyTell, tell)
+ .set(InsOrderState::getVerifyUser, userId)
+ .set(InsOrderState::getNum, record.getNum() + 1)//娆℃暟鍔�1
+ .set(InsOrderState::getCreateTime, LocalDateTime.now()));
+ }
+ break;
+ case 1:
+ //缁х画璇曢獙:鍒欑户缁皢妫�楠屼换鍔¤浆鎺ヨ嚦涓嬩竴绔欑偣锛�
+ insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
+ .eq(InsOrderState::getInsOrderId, orderId)
+ .eq(InsOrderState::getLaboratory, laboratory)
+ .set(InsOrderState::getInsTime, now)
+ .set(InsOrderState::getInsState, 6)
+ .set(InsOrderState::getVerifyTell, tell)
+ .set(InsOrderState::getVerifyUser, userId));
+ //杞帴鑷充笅涓�绔欑偣,闇�瑕佸厛鍒ゆ柇鏄惁杩樻湁鍏朵綑璇曢獙瀹�,濡傛灉鏈夊叾浣欒瘯楠屽闇�瑕佸皢璁㈠崟涓嬪彂
+ 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));
+ List<Integer> list = new ArrayList<>();
+ list.add(4);
+ list.add(5);
+ list.add(6);
+ List<InsOrderState> insOrderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery()
+ .eq(InsOrderState::getInsOrderId, orderId)
+ .in(InsOrderState::getInsState, list));
+ List<String> strings = insOrderStates.stream().map(InsOrderState::getLaboratory).distinct().collect(Collectors.toList());
+ //闄ゅ幓褰撳墠澶嶆牳鐨勮瘯楠屽鍜屽凡缁忓鏍哥殑璇曢獙瀹�
+ List<String> collect = insProducts.stream()
+ .map(InsProduct::getSonLaboratory)
+ .distinct()
+ .filter(s -> !s.equals(laboratory))
+ .filter(s -> !strings.contains(s))
+ .collect(Collectors.toList());
+ if (collect.size() > 0) {
+ //瑕佸垽鏂墿浣欒瘯楠屽涓摢涓渶绌洪棽灏卞畨鎺掔粰鍝釜
+ Map<String, Long> dataCounts = new HashMap<>();
+ for (String sonLaboratory : collect) {
+ Long count = insOrderStateMapper.selectCount(Wrappers.<InsOrderState>lambdaQuery()
+ .eq(InsOrderState::getLaboratory, sonLaboratory)
+ .ne(InsOrderState::getInsState, 4)
+ .ne(InsOrderState::getInsState, 5)
+ .ne(InsOrderState::getInsState, 6));
+ dataCounts.put(sonLaboratory, count);
+ }
+ // 鏌ユ壘鏁版嵁閲忔渶灏戠殑鍏冪礌
+ String minElement = null;
+ Long minCount = Long.MAX_VALUE;
+ for (Map.Entry<String, Long> entry : dataCounts.entrySet()) {
+ if (entry.getValue() < minCount) {
+ minCount = entry.getValue();
+ minElement = entry.getKey();
}
}
- if (b.getTemplate().size() == 0) {
- return;
- }
- templateSet.add(JSON.toJSONString(b.getTemplate()));
- });
- AtomicInteger index = new AtomicInteger();
- templateSet.forEach(tem -> {
- Set<Integer> set2 = new HashSet<>();
- List<RowRenderData> rows = new ArrayList<>();
- List<TextRenderData> text = new ArrayList<>();
- RowRenderData rowRenderData;
- Set<String> delSet = new HashSet<>();
- List<JSONObject> temp = JSON.parseArray(tem, JSONObject.class);
- Map<String, InsProduct> pMap = new HashMap<>();
- Set<String> delRSet = new HashSet<>();
- for (JSONObject jo1 : temp) {
- JSONObject v = JSON.parseObject(JSON.toJSONString(jo1.get("v")));
- if (v.get("ps") != null) {
- if ("妫�楠屽��".equals(JSON.parseObject(JSON.toJSONString(v.get("ps"))).get("value") + "") || "璁惧".equals(JSON.parseObject(JSON.toJSONString(v.get("ps"))).get("value") + "")) {
- delSet.add(jo1.get("c") + "");
- }
- if ("妫�楠屽瓙椤�".equals(JSON.parseObject(JSON.toJSONString(v.get("ps"))).get("value") + "")) {
- int count2 = 0;
- for (InsProduct p : a.getInsProduct()) {
- if (v.get("v").equals(p.getInspectionItemSubclass())) {
- pMap.put(jo1.get("r") + "", p);
- break;
- } else {
- count2++;
- }
- }
- if (count2 == a.getInsProduct().size()) {
- delRSet.add(jo1.get("r") + "");
- }
- }
- }
- }
- for (int i = 0; i < temp.size(); i++) {
- JSONObject jo1 = temp.get(i);
- if (delRSet.stream().anyMatch(e -> e.equals(jo1.get("r") + ""))) {
- continue;
- }
- if (delSet.stream().anyMatch(e -> e.equals(jo1.get("c") + ""))) {
- continue;
- }
- TextRenderData textRenderData = new TextRenderData();
- if (set2.add(Integer.parseInt(jo1.get("r") + ""))) {
- if (text.size() > 0) {
- TextRenderData[] text2 = text.toArray(new TextRenderData[0]);
- rowRenderData = Rows.of(text2).center().rowAtleastHeight(1).create();
- rows.add(rowRenderData);
- text = new ArrayList<>();
- }
- }
- JSONObject v = JSON.parseObject(JSON.toJSONString(jo1.get("v")));
- InsProduct p = pMap.get(jo1.get("r") + "");
- if (p != null && v.get("ps") != null) {
- String value = JSON.parseObject(JSON.toJSONString(v.get("ps"))).get("value") + "";
- if (value.equals("瑕佹眰鍊�")) {
- textRenderData.setText(p.getAsk());
- } else if (value.equals("鍗曚綅")) {
- textRenderData.setText(p.getUnit());
- } else if (value.equals("缁撹")) {
- switch (p.getInsResult()) {
- case 1:
- textRenderData.setText("鈭�");
- break;
- case 0:
- textRenderData.setText("脳");
- break;
- default:
- textRenderData.setText("-");
- break;
- }
- } else if (value.equals("搴忓彿")) {
- index.getAndIncrement();
- textRenderData.setText(index + "");
- } else if (value.equals("璁$畻鍊�")) {
- JSONArray jsonArray = JSON.parseArray(p.getInsProductResult().getComValue());
- textRenderData.setText((JSON.parseObject(JSON.toJSONString(jsonArray.get(0))).get("v") + "").equals("") ? "/" : JSON.parseObject(JSON.toJSONString(jsonArray.get(0))).get("v") + "");
- } else if (value.equals("鏈�缁堝��")) {
- textRenderData.setText(p.getLastValue());
- } else if (value.equals("鏍峰搧缂栧彿")) {
- textRenderData.setText(a.getSampleCode());
- } else if (value.equals("鏍峰搧鍨嬪彿")) {
- textRenderData.setText(a.getModel());
- } else if (value.equals("鏍峰搧鍚嶇О")) {
- textRenderData.setText(a.getSample());
- } else {
- textRenderData.setText(v.get("v") == null ? "" : v.get("v") + "");
- }
- } else if (p == null && v.get("ps") != null) {
- String value = JSON.parseObject(JSON.toJSONString(v.get("ps"))).get("value") + "";
- p = pMap.get(pMap.keySet().iterator().next());
- if (value.equals("鏈�缁堝��")) {
- textRenderData.setText(p.getLastValue());
- } else if (value.equals("缁撹")) {
- switch (p.getInsResult()) {
- case 1:
- textRenderData.setText("鉁�");
- break;
- case 0:
- textRenderData.setText("鉁�");
- break;
- default:
- textRenderData.setText("-");
- break;
- }
- } else if (value.equals("鏍峰搧缂栧彿")) {
- textRenderData.setText(a.getSampleCode());
- } else if (value.equals("鏍峰搧鍨嬪彿")) {
- textRenderData.setText(a.getModel());
- } else if (value.equals("鏍峰搧鍚嶇О")) {
- textRenderData.setText(a.getSample());
- } else {
- textRenderData.setText(v.get("v") == null ? "" : v.get("v") + "");
- }
- } else {
- textRenderData.setText(v.get("v") == null ? "" : v.get("v") + "");
- }
- Style style = new Style();
- style.setFontFamily(v.get("ff") == null ? "寰蒋闆呴粦" : v.get("ff") + "");
-// style.setFontSize(v.get("fs")==null?14:Integer.parseInt(v.get("fs")+""));
- style.setColor(v.get("fc") == null ? "000000" : (v.get("fc") + "").replace("#", ""));
- textRenderData.setStyle(style);
- text.add(textRenderData);
- if (i == temp.size() - 1) {
- TextRenderData[] text2 = text.toArray(new TextRenderData[0]);
- rowRenderData = Rows.of(text2).rowAtleastHeight(1).center().create();
- rows.add(rowRenderData);
- text = new ArrayList<>();
- }
- }
- TableRenderData tableRenderData = new TableRenderData();
- tableRenderData.setRows(rows);
- TableStyle tableStyle = new TableStyle();
- /*JSONObject styleJo = JSON.parseObject(JSON.toJSONString(b.getStyle().get("columnlen")));
- List<Integer> colLen = new ArrayList<>();
- int colSize = rows.get(0).getCells().size();
- int colOne = Integer.parseInt(b.getTemplate().get(0).get("r") + "");
- for (int i = colOne; i < colSize + colOne; i++) {
- if (styleJo.get(i + "") == null) {
- colLen.add(pxToCm(100));
- } else {
- int i1 = Integer.parseInt(styleJo.get(i + "") + "");
- colLen.add(pxToCm(i1));
- }
- }*/
-// tableStyle.setColWidths(ArrayUtils.toPrimitive(colLen.toArray(new Integer[0])));
- tableStyle.setAlign(TableRowAlign.CENTER);
- tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
- tableRenderData.setTableStyle(tableStyle);
- Map<String, Object> table = new HashMap<>();
- table.put("table", tableRenderData);
- table.put("report", insReport);
- tables.add(table);
- });
- });
- String url;
- try {
- url = ResourceUtils.getURL("classpath:static/report-template.docx").getPath();
- } catch (FileNotFoundException e) {
- throw new ErrorException("鎵句笉鍒版ā鏉挎枃浠�");
- }
- StringBuilder standardMethod2 = new StringBuilder();
- for (String s : standardMethod) {
- standardMethod2.append("銆�").append(s);
- }
- standardMethod2.replace(0, 1, "");
- tables.forEach(table -> {
- table.put("tableSize", tables.size() + 1);
- });
- List<Map<String, String>> deviceList = insOrderMapper.selectDeviceList(deviceSet);
- Map<String, String> codeStr = new HashMap<>();
- codeStr.put("鎶ュ憡缂栧彿", insReport.getCode());
- codeStr.put("鏍峰搧鍚嶇О", insOrder.getSample());
- codeStr.put("瑙勬牸鍨嬪彿", samples.get(0).getModel());
- codeStr.put("鍙戞斁鏃ユ湡", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
- String codePath;
- try {
- codePath = new MatrixToImageWriter().code(JackSonUtil.marshal(codeStr).replaceAll("\\{", "")
- .replaceAll("}", "").replaceAll(",", "").replaceAll("\"", ""), twoCode);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- ConfigureBuilder builder = Configure.builder();
- builder.useSpringEL(true);
- XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
- new HashMap<String, Object>() {{
- put("order", insOrder);
- put("report", insReport);
- put("user", user);
-// put("samples", samples);
- put("sampleSize", samples.size() + samples.get(0).getUnit());
- put("tables", tables);
- put("tableSize", tables.size() + 1);
- put("standardMethod", standardMethod2);
- put("deviceList", deviceList);
- put("twoCode", Pictures.ofLocal(codePath).create());
- }});
- try {
- String name = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yy_MM_dd&HH_mm_ss")) + ".docx";
- template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
- insReport.setUrl("/word/" + name);
- insReportMapper.insert(insReport);
- insOrder.setState(4);
- insOrderMapper.updateById(insOrder);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
+ InsOrderState insOrderState = new InsOrderState();
+ insOrderState.setInsOrderId(orderId);
+ insOrderState.setLaboratory(minElement);
+ insOrderState.setInsState(0);
+ insOrderState.setNum(1);//鍒濆鏄涓�娆�
+ insOrderStateMapper.insert(insOrderState);
+ } else {
+ //濡傛灉缁х画璇曢獙娌℃湁鍏朵粬绔欑偣鐨勬楠屼换鍔¢偅灏辩粨鏉熻瘯楠�
+ verifyPlan(orderId, laboratory, 2, tell);
+ }
+ break;
+ case 2:
+ //缁撴潫璇曢獙:姝ゅ鎵樺崟鍋滄璇曢獙锛岀洿鎺ョ敓鎴愭渶缁堟姤鍛婂拰璐圭敤缁熻銆�
+ insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
+ .eq(InsOrderState::getInsOrderId, orderId)
+ .eq(InsOrderState::getLaboratory, laboratory)
+ .set(InsOrderState::getInsTime, now)
+ .set(InsOrderState::getInsState, 5)
+ .set(InsOrderState::getVerifyTell, tell)
+ .set(InsOrderState::getVerifyUser, userId));
+ break;
}
return 1;
}
- private void getTemplateThing(Set<Integer> set, Map<Integer, String> map2, SampleProductDto a) {
- for (InsProduct product : a.getInsProduct()) {
+ private void getTemplateThing(Set<Integer> set, Map<Integer, String> map2, List<InsProduct> insProducts) {
+ for (InsProduct product : insProducts) {
if (product.getTemplateId() == null) {
product.setTemplate(new ArrayList<>());
continue;
}
- if (set.add(product.getTemplateId())) {
+ String thing = null;
+ if (product.getTemplateId() != null && set.add(product.getTemplateId())) {
map2.put(product.getTemplateId(), standardTemplateService.getStandTempThingById(product.getTemplateId()) + "");
+ thing = map2.get(product.getTemplateId());
}
- String thing = map2.get(product.getTemplateId());
if (StrUtil.isNotEmpty(thing)) {
JSONObject sheet = JSON.parseObject(JSON.toJSONString(JSON.parseArray(JSON.toJSONString(JSON.parseObject(thing).get("data"))).get(0)));
JSONObject config = JSON.parseObject(JSON.toJSONString(sheet.get("config")));
@@ -510,27 +1181,163 @@
style.put("columnlen", config.get("columnlen"));
product.setTemplate(cellData);
product.setStyle(style);
+ product.setTemplateName(standardTemplateService.getStandTempNameById(product.getTemplateId()));
}
}
}
@Override
- public int submitPlan(Integer orderId, String laboratory) {
- List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId).select(InsSample::getId));
+ public int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode) {
+ List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
+ .eq(InsSample::getInsOrderId, orderId).select(InsSample::getId));
+ InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
+ .eq(InsOrderState::getInsOrderId, orderId)
+ .eq(InsOrderState::getLaboratory, laboratory)
+ .orderByDesc(InsOrderState::getId)
+ .last("LIMIT 1"));// 纭繚鍙彇涓�鏉¤褰�
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::getSonLaboratory, laboratory).eq(InsProduct::getState, 1).isNull(InsProduct::getInsResult));
+ List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+ .in(InsProduct::getInsSampleId, ids)
+ .eq(InsProduct::getSonLaboratory, laboratory)
+ .eq(InsProduct::getState, 1)
+ .and(wrapper -> wrapper
+ .isNull(InsProduct::getInsResult)
+ .or()
+ .eq(InsProduct::getInsResult, 2)
+ )
+ .isNull(InsProduct::getInsFiberId)
+ .isNull(InsProduct::getInsFibersId));
+ insProducts.addAll(insProductMapper.selectFiberInsProduct(ids, laboratory));
if (insProducts.size() > 0) {
String str = "";
+ int count = 0;
for (InsProduct product : insProducts) {
- str += product.getInspectionItem()+product.getInspectionItemSubclass()+"锛�";
+ //杈愬皠璇曢獙妫�娴嬬殑妫�楠岄」鐩�,涓嶉渶瑕佸幓鎵嬪姩濉啓妫�楠屽��,鍙渶瑕佷笂浼犺〃鏍兼枃浠跺氨鍙互浜�,鍚庡彴鎻愪氦鐨勬椂鍊欐牎楠岃烦杩囪繖涓楠岄」鐩�
+ if (product.getInspectionItem().equals("杈愬皠璇曢獙妫�娴�")) {
+ product.setInsResult(3);//涓嶅垽瀹�
+ insProductMapper.updateById(product);
+ continue;
+ }
+ //鐢佃矾璇曢獙鐨勬楠岄」鐩�,闇�瑕佸湪鎻愪氦鐨勬椂鍊欏啀鍘昏祴鍊煎悎鏍间笌涓嶅悎鏍�
+ if (product.getInspectionItem().equals("鐢佃矾璇曢獙")) {
+ List<Integer> collect = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery()
+ .eq(InsProductResult2::getNum, orderState.getNum())
+ .eq(InsProductResult2::getInsProductId, product.getId())).stream().map(InsProductResult2::getResult).distinct().collect(Collectors.toList());
+ if (collect.contains(0)) {
+ product.setInsResult(0);//涓嶅悎鏍�
+ } else {
+ product.setInsResult(1);//鍚堟牸
+ }
+ insProductMapper.updateById(product);
+ continue;
+ }
+ count++;
+ str += "<br/>" + count + "锛�" + product.getInspectionItem() + " " + product.getInspectionItemSubclass() + "<br/>";
}
- throw new ErrorException("浠ヤ笅鏄湭妫�楠岀殑椤圭洰锛�"+str);
+ if (ObjectUtils.isNotEmpty(str)) {
+ throw new ErrorException("<strong>瀛樺湪寰呮楠岀殑椤圭洰锛�</strong><br/>" + str);
+ }
}
- insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate().eq(InsOrderState::getInsOrderId, orderId).eq(InsOrderState::getLaboratory, laboratory).set(InsOrderState::getInsTime, LocalDateTime.now()).set(InsOrderState::getInsState, 3));
+ insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
+ .eq(InsOrderState::getInsOrderId, orderId)
+ .eq(InsOrderState::getLaboratory, laboratory)
+ .set(InsOrderState::getInsTime, LocalDateTime.now())
+ .set(InsOrderState::getInsState, 3)
+ .set(InsOrderState::getVerifyUser, verifyUser));
+ /*濡傛灉鏄疌绫昏鍗曚笖鏄笅鍙戝埌璐ㄩ噺閮�,鍒欑洿鎺ュ鏍搁�氳繃(缁撴潫璇曢獙)*/
+ InsOrder insOrder = insOrderMapper.selectById(orderId);
+ if (insOrder.getOrderType().equals("C") && insOrder.getDepartmentLims().equals("璐ㄩ噺閮�")) {
+ verifyPlan(orderId, laboratory, 2, null);
+ } else {
+ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+ //LIMS绯荤粺娑堟伅鎺ㄩ��
+ InformationNotification info = new InformationNotification();
+ info.setCreateUser(insProductMapper.selectUserById(userId).get("name"));
+ info.setMessageType("2");
+ info.setTheme("澶嶆牳閫氱煡");
+ info.setContent("鎮ㄦ湁涓�鏉℃楠屼换鍔″緟澶嶆牳娑堟伅");
+ info.setSenderId(userId);
+ info.setConsigneeId(verifyUser);
+ info.setViewStatus(false);
+ info.setJumpPath("b1-inspect-order-plan");
+ informationNotificationService.addInformationNotification(info);
+ //todo 浼佷笟寰俊娑堟伅鎺ㄩ�丂zss
+ /* HashMap<String, Object> map = new HashMap<>();
+ String account = userMapper.selectById(userId).getAccount();
+ map.put("touser", *//*account*//*"ZT-012117");//鎺ユ敹娑堟伅鎴愬憳鐨勮处鍙�'ZT-031292'杩欑绫诲瀷(濡傛灉鏈夊涓敤'|'鍒嗛殧)
+ map.put("toparty", "");//鎺ユ敹閮ㄩ棬id
+ map.put("totag", "");//娑堟伅鏍囩id
+ map.put("msgtype", "text");//娑堟伅绫诲瀷 text:鏂囨湰
+ map.put("agentid", 1000513);//搴旂敤id
+ HashMap<String, Object> hashMap = new HashMap<>();
+ hashMap.put("content", "鎮ㄦ湁涓�鏉℃楠屼换鍔″緟澶嶆牳娑堟伅,璇峰墠寰�LIMS绯荤粺鏌ョ湅銆�<a href=\"http://10.1.13.77/enter\"> </a>");
+ map.put("text", JSONArray.toJSONString(hashMap));//娑堟伅鍐呭
+ map.put("safe", 0);//鏄惁淇濆瘑娑堟伅.0鍚�
+ map.put("enable_id_trans", 0);//鏄惁寮�鍚痠d杞瘧.0鍚�
+ map.put("enable_duplicate_check", 0);//鏄惁寮�鍚噸澶嶆秷鎭鏌�.0鍚�
+ qywxApi.send(map);*/
+ }
+ //澶嶆牳浜�--妫�楠屽崟鐩稿叧璐熻矗浜�
+ InsSampleUser insSampleUser = new InsSampleUser();
+ insSampleUser.setUserId(verifyUser);
+ insSampleUser.setInsSampleId(orderId);
+ insSampleUser.setState(1);
+ insSampleUser.setSonLaboratory(laboratory);
+ insSampleUserMapper.insert(insSampleUser);
+ /*鏍¢獙涓�涓媟esult琛�*/
+ CompletableFuture.supplyAsync(() -> {
+ List<Integer> ips = insProducts.stream().map(InsProduct::getId).distinct().collect(Collectors.toList());
+ for (Integer ip : ips) {
+ List<InsProductResult> insProductResults = insProductResultMapper.selectList(Wrappers.<InsProductResult>lambdaQuery()
+ .eq(InsProductResult::getNum, orderState.getNum())
+ .eq(InsProductResult::getInsProductId, ip));
+ if (insProductResults.size() > 1) {
+ for (int i = 1; i < insProductResults.size(); i++) {
+ insProductResultMapper.deleteById(insProductResults.get(i));
+ }
+ }
+ }
+ return null;
+ });
+ // 鍒犻櫎鏁伴噰閲囬泦娆℃暟
+ String key = "frequency" + ":" + entrustCode + ":*";
+ RedisUtil.delsLike(key);
return 1;
}
- public int pxToCm(int px) {
- return px / 9;
+ 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 "鏈煡";
+ }
}
}
--
Gitblit v1.9.3