From c8355d4a1f27716edc510d936b6a7982b0ab99b3 Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期一, 24 三月 2025 13:37:26 +0800 Subject: [PATCH] Merge branch 'master' of http://114.132.189.42:9002/r/tx-lims-after --- inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java | 1475 +++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 880 insertions(+), 595 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 91912bb..5497fbe 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 @@ -15,35 +15,31 @@ 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.deepoove.poi.XWPFTemplate; -import com.deepoove.poi.config.Configure; -import com.deepoove.poi.config.ConfigureBuilder; -import com.deepoove.poi.data.*; -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.dto.*; import com.yuanchu.mom.exception.ErrorException; import com.yuanchu.mom.mapper.*; import com.yuanchu.mom.pojo.*; 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.apache.poi.hwpf.usermodel.*; +import org.apache.poi.ss.usermodel.CellValue; +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.imageio.ImageIO; 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; @@ -51,11 +47,11 @@ import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicReference; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; + +import org.apache.poi.hwpf.HWPFDocument; /** * 妫�楠屼换鍔�-涓氬姟瀹炵幇灞� @@ -81,17 +77,22 @@ @Resource private InsProductMapper insProductMapper; @Resource + private InsOrderUserMapper insOrderUserMapper; + @Resource private ShiftTimeMapper shiftTimeMapper; @Resource private PerformanceShiftMapper performanceShiftMapper; @Resource private WarehouseHistoryMapper warehouseHistoryMapper; + @Resource + private WarehouseService warehouseService; + @Value("${wordUrl}") private String wordUrl; - @Value("${twoCode}") - private String twoCode; + @Resource + WordUtils wordUtils; @Resource private InsReportMapper insReportMapper; @@ -120,39 +121,26 @@ @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; + + @Resource + FuSheUtils fuSheUtils; + + @Resource + DianLuUtils dianLuUtils; @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); - User user = userMapper.selectById(map1.get("userId"));//褰撳墠鐧诲綍鐨勪汉 - String laboratory = null; String userName = null; - Integer userId = null; if (ObjectUtil.isNotEmpty(insOrderPlanDTO.getUserId())) { - userId = map1.get("userId"); userName = userMapper.selectById(map1.get("userId")).getName(); insOrderPlanDTO.setUserId(null); } @@ -186,31 +174,6 @@ 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, 0, entity.getSonLaboratory()); @@ -218,21 +181,30 @@ } @Override - public Map<String, Object> doInsOrder(Integer id, String laboratory) { + public Map<String, Object> doInsOrder(Integer sampleId, String laboratory) { + InsSample insSample = insSampleMapper.selectById(sampleId); InsOrder insOrder = new InsOrder(); - insOrder.setId(id); - InsOrder order = insOrderMapper.selectById(id); + insOrder.setId(insSample.getInsOrderId()); + InsOrder order = insOrderMapper.selectById(insSample.getInsOrderId()); if (BeanUtil.isEmpty(order.getInsTime())) { - insOrder.setInsTime(LocalDateTime.now()); + 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)); } - Map<String, Object> map = insOrderService.getInsOrderAndSample(id, laboratory); + InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, sampleId) + .eq(InsOrderState::getLaboratory, laboratory)); + if (ObjectUtils.isEmpty(orderState.getInsTime())) { + //鏇存柊妫�楠屼换鍔¤〃鐨勬楠屾椂闂� + insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, sampleId) + .eq(InsOrderState::getLaboratory, laboratory) + .set(InsOrderState::getInsTime, LocalDateTime.now()) + .set(InsOrderState::getInsState, 1)); + } + Map<String, Object> map = insOrderService.getInsOrderAndSample(sampleId, laboratory); List<SampleProductDto> list = JSON.parseArray(JSON.toJSONString(map.get("sampleProduct")), SampleProductDto.class); - for (SampleProductDto samples : list) { - if (BeanUtil.isEmpty(samples.getInsProduct())) continue; - samples.setBushing(insBushingService.selectBushingBySampleId(samples.getId())); - } map.put("sampleProduct", list); return map; } @@ -244,8 +216,19 @@ case 0: //鏍峰搧 insProducts = insSampleMapper.getInsProduct1(id, laboratory); - if (insProducts.size()==0){ - insProducts = insSampleMapper.getIns2Product1(id, laboratory); + if (insProducts.size() == 0) { + insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getInsSampleId, id) + .eq(InsProduct::getState, 1) + .eq(InsProduct::getSonLaboratory, laboratory)); + for (InsProduct insProduct : insProducts) { + List<InsProductResult2> insProductResult2List = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery() + .eq(InsProductResult2::getInsProductId, insProduct.getId()).isNull(InsProductResult2::getNum)); + insProduct.setInsProductResult2(insProductResult2List); + InsProductResult insProductResult = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery() + .eq(InsProductResult::getInsProductId, insProduct.getId()).isNull(InsProductResult::getNum)); + insProduct.setInsProductResult(insProductResult); + } } break; case 1: @@ -266,12 +249,15 @@ } @Override - public List<InsProduct> getInsProduct2(Integer id, Integer type, String laboratory, HttpServletRequest request,Integer num) { + 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); + insProducts = insSampleMapper.get2InsProduct1(id, laboratory, num); + if (insProducts.size() == 0) { + throw new ErrorException("褰撳墠妫�楠屾暟鎹繕娌℃湁淇濆瓨,淇濆瓨涔嬪悗鏈夋暟鎹巻鍙�"); + } break; case 1: //鍏夌氦甯� @@ -291,12 +277,10 @@ } @Override - public List<String> checkSubmitPlan(Integer orderId, String laboratory) { + public List<String> checkSubmitPlan(Integer sampleId, 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::getInsSampleId, sampleId) .eq(InsProduct::getSonLaboratory, laboratory) .eq(InsProduct::getState, 1) .eq(InsProduct::getInsResult, 0)); @@ -312,13 +296,26 @@ 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)); + Integer insOrderId = insOrderFile.getInsOrderId(); + insOrderFile.setInsOrderId(null); + String sonLaboratory = null; + Integer sampleId = null; + if (ObjectUtils.isNotEmpty(insOrderFile.getSonLaboratory())) { + sonLaboratory = insOrderFile.getSonLaboratory(); + insOrderFile.setSonLaboratory(null); + } + if (ObjectUtils.isNotEmpty(insOrderFile.getInsSampleId())) { + sampleId = insOrderFile.getInsSampleId(); + insOrderFile.setInsSampleId(null); + } + IPage<InsOrderFile> insOrderFileIPage = insOrderFileMapper.getFileList(page, QueryWrappers.queryWrappers(insOrderFile), insOrderId, sonLaboratory, sampleId); map.put("body", insOrderFileIPage); return map; } @Override - public int uploadFile(Integer orderId, MultipartFile file) { + public Object uploadFile(Integer orderId, MultipartFile file, String sonLaboratory, Integer sampleId) { + InsOrder insOrder = insOrderMapper.selectById(orderId); String urlString; String pathName; String path; @@ -326,6 +323,12 @@ String contentType = file.getContentType(); InsOrderFile insOrderFile = new InsOrderFile(); insOrderFile.setInsOrderId(orderId); + if (ObjectUtils.isNotEmpty(sampleId)) { + insOrderFile.setInsSampleId(sampleId); + } + if (ObjectUtils.isNotEmpty(sonLaboratory)) { + insOrderFile.setSonLaboratory(sonLaboratory); + } insOrderFile.setFileName(filename); if (contentType != null && contentType.startsWith("image/")) { // 鏄浘鐗� @@ -341,201 +344,43 @@ if (!realpath.exists()) { realpath.mkdirs(); } - pathName = UUID.randomUUID() + "_" + file.getOriginalFilename(); + pathName = UUID.randomUUID() + "_" + file.getOriginalFilename().replace("#", "&"); urlString = realpath + "/" + pathName; file.transferTo(new File(urlString)); insOrderFile.setFileUrl(pathName); - return insOrderFileMapper.insert(insOrderFile); + insOrderFileMapper.insert(insOrderFile); + String[] split = filename.split("\\."); + if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("杩戝満") && split[split.length - 1].equals("csv")) { + fuSheUtils.getFuSheWord1(sonLaboratory, insOrderFile); + } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("杩滃満") && split[split.length - 1].equals("xlsx")) { + fuSheUtils.getFuSheWord2(sonLaboratory, insOrderFile); + } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("鐢佃矾璇曢獙") && split[split.length - 1].equals("xlsx") && filename.contains("浜よ皟")) { + dianLuUtils.readDianLuFile1(sampleId, insOrderFile); + } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("鐢佃矾璇曢獙") && split[split.length - 1].equals("csv") && filename.contains("椹绘尝")) { + dianLuUtils.readDianLuFile2(sampleId, insOrderFile); + } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("鐢佃矾璇曢獙") && split[split.length - 1].equals("csv") && insOrder.getSampleType().equals("鏃犳簮鍣ㄤ欢")) { + dianLuUtils.readDianLuFile3(sampleId, insOrderFile); + } + // 鐢佃矾瀹為獙杩斿洖鏂囦欢鍚� + if(ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("鐢佃矾璇曢獙")){ + return pathName; + } + // 闇囧姩doc鏂囦欢瑙f瀽 + if(filename.contains(".doc") && sonLaboratory.equals("鎸姩")){ + return docAnalysis(urlString,orderId,sampleId,file.getOriginalFilename()); + } } catch (Exception e) { - e.printStackTrace(); - System.err.println("闄勪欢涓婁紶閿欒"); - return 0; + throw new ErrorException(e.getMessage()); } - } - - //鍒囨崲璁板綍妯$増鏌ヨ妫�楠屽唴瀹� - @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; + return 0; } @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()); + public List<String> upPlanUser2(Integer sampleId) { + List<String> sonLaboratory = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getState, 1) + .eq(InsProduct::getInsSampleId, sampleId)) + .stream().map(InsProduct::getSonLaboratory).distinct().collect(Collectors.toList()); return sonLaboratory; } @@ -547,9 +392,196 @@ .in(InsProductResult2::getInsProductId, insProductResultVo.getProductIds())); } + //鎵爜鎶ユ + @Override + public int scanInsOrderState(String sonLaboratory, String sampleCode, String trees, String entrustCode) { + /*鏍峰搧鍏ュ簱*/ + warehouseService.inWarehouse(trees, sampleCode, entrustCode); + /*鏂板妫�楠屼换鍔�*/ + //鍏堝垽鏂鏍峰搧鏄惁鏈夎繖涓珯鐐圭殑椤圭洰 + List<InsOrder> insOrders = insOrderMapper.selectList(Wrappers.<InsOrder>lambdaQuery().eq(InsOrder::getEntrustCode, entrustCode)); + InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery() + .eq(InsSample::getSampleCode, sampleCode) + .eq(InsSample::getInsOrderId, insOrders.get(0).getId())); + List<String> collect = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getState, 1) + .eq(InsProduct::getInsSampleId, insSample.getId())).stream().map(InsProduct::getSonLaboratory).collect(Collectors.toList()); + if (!collect.contains(sonLaboratory)) { + throw new ErrorException("璇ユ牱鍝佹病鏈�" + sonLaboratory + "绔欑偣鐨勭浉鍏抽」鐩�,璇锋煡鐪嬩笅鍗曡鎯�!"); + } + //鍒ゆ柇璇ヨ鍗曟槸鍚︾珯鐐逛换鍔℃湁缁撴潫璇曢獙(鍙浠讳竴浠诲姟缁撴潫璇曢獙閮戒笉鑳藉啀娆¤瘯楠�) + List<InsOrderState> orderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsState, 5)); + if (CollectionUtils.isNotEmpty(orderStates)) { + throw new ErrorException("璇ヨ鍗曠珯鐐圭殑浠诲姟宸茬粡缁撴潫璇曢獙,鏃犳硶鍐嶆杩涜璇曢獙!"); + } + InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, insSample.getId()) + .eq(InsOrderState::getLaboratory, sonLaboratory)); + if (ObjectUtils.isNotEmpty(orderState)) { + //缁х画璇曢獙 + if (orderState.getInsState() == 6) { + orderState.setInsState(0); + orderState.setNum(orderState.getNum() + 1);//閫掑 + insOrderStateMapper.updateById(orderState); + } + } else { + InsOrderState insOrderState = new InsOrderState(); + insOrderState.setInsOrderId(insSample.getInsOrderId()); + insOrderState.setInsSampleId(insSample.getId()); + insOrderState.setLaboratory(sonLaboratory); + insOrderState.setInsState(0); + insOrderState.setNum(1);//鍒濆鏄涓�娆� + insOrderStateMapper.insert(insOrderState); + } + return 1; + } + + //鎵爜鍑哄簱 + @Override + public int outInsOrderState(String sonLaboratory, String sampleCode, String entrustCode) { + //鍒ゆ柇璇ユ牱鍝佺殑妫�楠屼换鍔℃槸鍚﹀凡缁忕粨鏉�(缁х画璇曢獙鎴栬�呮槸缁撴潫璇曢獙) + //鍏堝垽鏂鏍峰搧鏄惁鏈夎繖涓珯鐐圭殑椤圭洰 + List<InsOrder> insOrders = insOrderMapper.selectList(Wrappers.<InsOrder>lambdaQuery().eq(InsOrder::getEntrustCode, entrustCode)); + InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery() + .eq(InsSample::getSampleCode, sampleCode) + .eq(InsSample::getInsOrderId, insOrders.get(0).getId())); + List<String> collect = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getState, 1) + .eq(InsProduct::getInsSampleId, insSample.getId())).stream().map(InsProduct::getSonLaboratory).collect(Collectors.toList()); + if (!collect.contains(sonLaboratory)) { + throw new ErrorException("璇ユ牱鍝佹病鏈�" + sonLaboratory + "绔欑偣鐨勭浉鍏抽」鐩�,璇锋煡鐪嬩笅鍗曡鎯�!"); + } + //鍒ゆ柇璇ヨ鍗曟槸鍚︾珯鐐逛换鍔℃湁(缁х画璇曢獙鎴栬�呮槸缁撴潫璇曢獙) + List<InsOrderState> orderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsState, 5));//缁撴潫璇曢獙 + if (CollectionUtils.isEmpty(orderStates)) { + List<InsOrderState> orderStates1 = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, insSample.getId()) + .eq(InsOrderState::getLaboratory, sonLaboratory) + .eq(InsOrderState::getInsState, 6));//缁х画璇曢獙 + if (CollectionUtils.isEmpty(orderStates1)) { + throw new ErrorException("璇ユ牱鍝佺殑妫�楠屼换鍔¤繕娌℃湁缁撴潫璇曢獙鎴栫户缁瘯楠�,鏆傛椂鏃犳硶鍑哄簱!"); + } + } + boolean a = true; + warehouseService.outWarehouse(sampleCode, a, entrustCode); + return 0; + } @Override - public void saveInsContext(Map<String, Object> insContext,Integer num) { + public List<InsOrderUser> getInsOrderUserList(Integer insOrderStateId) { + return insOrderUserMapper.getInsOrderUserList(insOrderStateId); + } + + private static final String splitIdentifier = "@-@"; // 鑷畾涔夊敮涓�鏍囪瘑鍒嗗壊绗� + + //棰勮鏂囦欢 + @Override + public Object preview(Integer id) throws Exception { + InsOrderFile insOrderFile = insOrderFileMapper.selectById(id); + File file = new File(wordUrl + "/" + insOrderFile.getFileUrl()); + StringBuilder stringBuilder = new StringBuilder(); + // 鍒涘缓 reader + try (BufferedReader br = Files.newBufferedReader(file.toPath())) { + // CSV鏂囦欢鐨勫垎闅旂 + String DELIMITER = ","; + // 鎸夎璇诲彇 + String line; + while ((line = br.readLine()) != null) { + // 鍒嗗壊 + String[] columns = line.split(DELIMITER); + // 鎵撳嵃琛� + stringBuilder.append(String.join(splitIdentifier, columns)).append("\n"); + } + } catch (Exception ex) { + List<Object> list = new ArrayList<>(); + //鍒涘缓宸ヤ綔绨垮璞� + XSSFWorkbook xssfWorkbook = new XSSFWorkbook(new FileInputStream(file)); + //鑾峰彇宸ヤ綔绨夸笅sheet鐨勪釜鏁� 鍙鍙栫涓�涓猻heet + int sheetNum = xssfWorkbook.getNumberOfSheets(); + //閬嶅巻宸ヤ綔绨夸腑鐨勬墍鏈夋暟鎹� + for (int i = 0; i < sheetNum; i++) { + Map<String, Object> map = new HashMap<>(); + StringBuilder result = new StringBuilder(); + XSSFSheet sheet = xssfWorkbook.getSheetAt(i); + //鑾峰彇鏈�鍚庝竴琛岀殑num锛屽嵆鎬昏鏁般�傛澶勪粠0寮�濮� + int maxRow = sheet.getLastRowNum(); + for (int row = 0; row <= maxRow; row++) { + XSSFRow xssfRow = sheet.getRow(row); + //鑾峰彇鏈�鍚庡崟鍏冩牸num锛屽嵆鎬诲崟鍏冩牸鏁� ***娉ㄦ剰锛氭澶勪粠1寮�濮嬭鏁�*** + int maxRol = sheet.getRow(row).getLastCellNum(); + StringBuilder aLine = new StringBuilder(); + /*for (int rol = 0; rol < maxRol; rol++) { + aLine.append(sheet.getRow(row).getCell(rol)).append(","); + }*/ + for (int rol = 0; rol < maxRol; rol++) { + XSSFCell cell = xssfRow.getCell(rol); + if (cell == null) { + aLine.append(","); + } else { + switch (cell.getCellType()) { + case FORMULA: + // 璁$畻鍏紡骞惰幏鍙栫粨鏋� + CellValue cellValue = xssfWorkbook.getCreationHelper().createFormulaEvaluator().evaluate(cell); + switch (cellValue.getCellType()) { + case NUMERIC: + String formattedValue = String.format("%.4f", cellValue.getNumberValue()); + aLine.append(formattedValue); + break; + case STRING: + aLine.append(cellValue.getStringValue()); + break; + case BOOLEAN: + aLine.append(cellValue.getBooleanValue()); + break; + case ERROR: + aLine.append("#ERR!"); + break; + default: + aLine.append(""); + break; + } + break; + case NUMERIC: + String formattedValue = String.format("%.4f", cell.getNumericCellValue()); + aLine.append(formattedValue); + break; + case STRING: + aLine.append(cell.getStringCellValue()); + break; + case BOOLEAN: + aLine.append(cell.getBooleanCellValue()); + break; + case ERROR: + aLine.append("#ERR!"); + break; + default: + aLine.append(""); + break; + } + aLine.append(","); + } + } + String substring = aLine.substring(0, aLine.length() - 1); + result.append(substring).append("\n"); + } + map.put("sheetName", sheet.getSheetName()); + map.put("content", result.toString()); + list.add(map); + } + return list; + } + return stringBuilder.toString(); + } + + //妯$増淇濆瓨妫�楠屽唴瀹� + @Override + public void saveInsContext(Map<String, Object> insContext, Integer num) { Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); CompletableFuture.supplyAsync(() -> { insContext.forEach((k, v) -> { @@ -557,6 +589,7 @@ InsProduct insProduct = new InsProduct(); insProduct.setId(Integer.parseInt(k)); List<InsProductResult> results = insProductResultMapper.selectList(Wrappers.<InsProductResult>lambdaQuery() + .eq(InsProductResult::getNum, num) .eq(InsProductResult::getInsProductId, insProduct.getId())); InsProductResult result; if (CollectionUtils.isEmpty(results)) { @@ -611,6 +644,36 @@ } catch (Exception e) { insProduct.setLastValue("");//'' } + //璇曢獙鍓嶆牱鍝佹鏌� + try { + JSONObject resValue = JSON.parseObject(JSON.toJSONString(jo.get("beforeCheck"))); + if (resValue.get("v") != null) { + Object o = JSON.parseObject(JSON.toJSONString(resValue.get("v"))).get("v"); + result.setBeforeCheck(o.equals("") ? null : (o.toString())); + } + } catch (Exception e) { + result.setBeforeCheck("");//'' + } + //璇曢獙鍚庢牱鍝佹鏌� + try { + JSONObject resValue = JSON.parseObject(JSON.toJSONString(jo.get("afterCheck"))); + if (resValue.get("v") != null) { + Object o = JSON.parseObject(JSON.toJSONString(resValue.get("v"))).get("v"); + result.setAfterCheck(o.equals("") ? null : (o.toString())); + } + } catch (Exception e) { + result.setAfterCheck("");//'' + } + //瀹為獙缁撴灉 + try { + JSONObject resValue = JSON.parseObject(JSON.toJSONString(jo.get("testResult"))); + if (resValue.get("v") != null) { + Object o = JSON.parseObject(JSON.toJSONString(resValue.get("v"))).get("v"); + result.setTestResult(o.equals("") ? null : (o.toString())); + } + } catch (Exception e) { + result.setTestResult("");//'' + } //璁惧缂栧彿 if (jo.get("equipValue") != null) { JSONArray jsonArray2 = JSON.parseArray(JSON.toJSONString(jo.get("equipValue"))); @@ -656,67 +719,6 @@ 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() @@ -735,6 +737,7 @@ insSampleMapper.updateById(insSample); /*鏍¢獙涓�涓媟esult琛�*/ List<InsProductResult> insProductResults = insProductResultMapper.selectList(Wrappers.<InsProductResult>lambdaQuery() + .eq(InsProductResult::getNum, num) .eq(InsProductResult::getInsProductId, insProduct.getId())); if (insProductResults.size() > 1) { for (int i = 1; i < insProductResults.size(); i++) { @@ -748,11 +751,13 @@ 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); + InsSample insSample = insSampleMapper.selectById(insProduct.getInsSampleId()); + int orderId = insSample.getInsOrderId(); + int count = insProductMapper.selectInsProductCountByOrderId(insSample.getId()); if (count == 0) { insOrderStateMapper.update(new InsOrderState(), Wrappers.<InsOrderState>lambdaUpdate() .eq(InsOrderState::getInsOrderId, orderId) + .eq(InsOrderState::getInsSampleId, insSample.getId()) .eq(InsOrderState::getLaboratory, insProduct.getSonLaboratory()) .set(InsOrderState::getInsState, 2)); } @@ -770,21 +775,23 @@ throw new ErrorException("棰戠巼涓嶈兘涓虹┖"); } Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); + //鏌ヨ鏍峰搧淇℃伅 + InsSample insSample = insSampleMapper.selectById(insProductResultDtos.getSampleId()); //鏌ヨ妫�楠屽崟淇℃伅 - InsOrder insOrder = insOrderMapper.selectById(insProductResultDtos.getOrderId()); InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery() - .eq(InsOrderState::getInsOrderId, insProductResultDtos.getOrderId()) + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, insProductResultDtos.getSampleId()) .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())); + List<InsProductResult2> result2s = new ArrayList<>(); + List<InsProductUser> insProductUsers = new ArrayList<>(); for (InsProductResult2 insProductResult2 : insProductResultDtos.getInsProductResult2s()) { InsProduct insProduct = new InsProduct(); insProduct.setId(insProductResult2.getInsProductId());//椤圭洰id @@ -820,8 +827,11 @@ //缁撹 int ressult = 1; String valueStr = insProductResult2.getValue(); + String regex = "[\u4e00-\u9fa5]"; if (!insProduct.getAsk().contains(",")) { - if (!isValueValid(valueStr, new String[]{insProduct.getAsk()})) { + if (insProduct.getAsk().equals("/") || Pattern.compile(regex).matcher(insProduct.getAsk()).find()) { + ressult = 3; //涓嶅垽瀹� + } else if (!isValueValid(valueStr, new String[]{insProduct.getAsk()})) { ressult = 0; //涓嶅悎鏍� } } else { @@ -832,7 +842,6 @@ 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 { @@ -851,7 +860,6 @@ } finally { continue; } - } } } @@ -861,69 +869,13 @@ } 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); - } - } - } + result2s.add(result2); + //insProductResult2Mapper.insert(result2); + //insProduct.setUpdateUser(userId); + //insProducts.add(insProduct); + //insProductMapper.updateById(insProduct); + insProductUsers.add(new InsProductUser(null, userId, LocalDateTime.now(), insProduct.getId())); + //insProductUserMapper.insert(new InsProductUser(null, userId, LocalDateTime.now(), insProduct.getId())); /*鏇存柊鏍峰搧鐨勬楠岀姸鎬�*/ insSample.setInsState(1); Long l = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() @@ -939,17 +891,152 @@ //濡傛灉鎵�鏈夐」鐩兘鏈夌粨璁�,閭d箞璇ユ牱鍝佺姸鎬佸凡妫� insSample.setInsState(2); } - insSampleMapper.updateById(insSample); } + insProductResult2Mapper.saveBatch(result2s); + insProductUserMapper.saveBatch(insProductUsers); + insSampleMapper.updateById(insSample); /*鍒ゆ柇璇ョ珯鐐圭殑妫�楠岄」鐩槸鍚﹀叏閮ㄥ凡妫�*/ - int count = insProductMapper.selectInsProductCountByOrderId(insProductResultDtos.getOrderId()); + int count = insProductMapper.selectInsProductCountByOrderId(insSample.getInsOrderId()); if (count == 0) { insOrderStateMapper.update(new InsOrderState(), Wrappers.<InsOrderState>lambdaUpdate() - .eq(InsOrderState::getInsOrderId, insProductResultDtos.getOrderId()) + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, insProductResultDtos.getSampleId()) .eq(InsOrderState::getLaboratory, insProductResultDtos.getSonLaboratory()) .set(InsOrderState::getInsState, 2)); } return list; + } + + //鐢佃矾璇曢獙鐨勪繚瀛樻楠屽唴瀹�(杩斿洖/鎻愪氦) + @Override + public int saveInsContext2s(InsProductResultDtos insProductResultDtos) { + for (InsProductResultDto insProductResultDto : insProductResultDtos.getInsProductResultDtos()) { + saveInsContext2(insProductResultDto); + } + return 1; + } + + /** + * 闇囧姩doc鏂囦欢瑙f瀽 + * @param urlString + * @param orderId + * @param sampleId + * @param originFileName + * @return + */ + private Map<String, String> docAnalysis(String urlString,Integer orderId,Integer sampleId,String originFileName) { + Map<String, String> analysisMap = new HashMap<>(); + try { + File file = new File(urlString); + HWPFDocument document = new HWPFDocument(new FileInputStream(file)); + Range range = document.getRange(); + TableIterator tableIterator = new TableIterator(range); + List<Table> tableList = new ArrayList<>(); + while (tableIterator.hasNext()) { + tableList.add(tableIterator.next()); + } + for (int tableIndex = 0; tableIndex < tableList.size(); tableIndex++) { + // 鍙栫涓�涓〃鍗曢檺鍒跺弬鏁扮殑 鎸姩鍙板瀷鍙枫�佽繍鍔ㄩ儴浠剁瓑鏁堣川閲忋�佽瘯浠惰川閲忔暟鍊� + if(tableIndex == 0){ + Table table = tableList.get(0); + for (int i = 0; i < table.numRows(); i++) { + String columnText = ObjectUtils.isEmpty(table.getRow(i).getCell(0))? "" : table.getRow(i).getCell(0).text(); + String columnValue = ObjectUtils.isEmpty(table.getRow(i).getCell(1))? "" : table.getRow(i).getCell(1).text(); + if(columnValue.contains("\u0007")){ + columnValue = columnValue.replace("\u0007",""); + } + if(columnText.contains("\u0007")){ + columnText = columnText.replace("\u0007",""); + } + if(columnText.equals("鎸姩鍙板瀷鍙�")){ + analysisMap.put("11",columnValue); + } + if(columnText.equals("杩愬姩閮ㄤ欢绛夋晥璐ㄩ噺")){ + analysisMap.put("12",columnValue); + } + if(columnText.equals("璇曚欢璐ㄩ噺")){ + analysisMap.put("1",columnValue); + } + } + } + //鍙栫涓�涓〃鍗曡緭鍏ラ�氶亾鍙傛暟绗竴鏉℃暟鎹� + if(tableIndex == 1){ + Table table = tableList.get(1); + if(ObjectUtils.isNotEmpty(table)&& table.numRows() > 0){ + String columnValue = ObjectUtils.isEmpty(table.getRow(1).getCell(2))? "" : table.getRow(1).getCell(2).text(); + if(columnValue.contains("\u0007")){ + columnValue = columnValue.replace("\u0007",""); + } + analysisMap.put("9",columnValue); + } + } + // 鍙栨渶鍚庝竴涓〃鍗曠涓夌鍥涜淇℃伅 + if(tableIndex == tableList.size() - 1){ + Table table = tableList.get(tableIndex); + for (int i = 0; i < table.numRows(); i++) { + String columnText = ObjectUtils.isEmpty(table.getRow(i).getCell(0))? "" : table.getRow(i).getCell(0).text(); + String columnValue = ObjectUtils.isEmpty(table.getRow(i).getCell(1))? "" : table.getRow(i).getCell(1).text(); + if(columnValue.contains("\u0007")){ + columnValue = columnValue.replace("\u0007",""); + } + if(columnText.contains("\u0007")){ + columnText = columnText.replace("\u0007",""); + } + if(columnText.contains("鎬昏繍琛屾椂闂�")){ + analysisMap.put("13",columnValue); + } + if(columnText.contains("璇曢獙鎵鏁�")){ + analysisMap.put("10",columnValue); + } + } + } + } + // 鍥剧墖缁戝畾 + List<Picture> pictureList = document.getPicturesTable().getAllPictures(); + String[] split = originFileName.split("\\."); + String docName = ""; + if(null != split && split.length > 0){ + docName = split[0]; + } + for (Picture picture : pictureList) { + byte[] pictureData = picture.getContent(); + File imgDir = new File(imgUrl); + if (!imgDir.exists()) { + imgDir.mkdirs(); + } + String filename = docName + "_" + UUID.randomUUID()+".png"; + File pictureFile = new File(imgUrl + File.separatorChar + filename); + // 鍒涘缓杈撳嚭娴佷互灏嗗浘鐗囨暟鎹啓鍏ュ埌鎸囧畾璺緞 + try (OutputStream outputStream = new FileOutputStream(pictureFile)) { + // 鍐欏叆鏁版嵁 + outputStream.write(pictureData); + } + InsOrderFile insOrderFile = new InsOrderFile(); + insOrderFile.setInsOrderId(orderId); + insOrderFile.setInsSampleId(sampleId); + insOrderFile.setSonLaboratory("鎸姩"); + insOrderFile.setType(1); + insOrderFile.setFileName(filename); + insOrderFile.setFileUrl(filename); + insOrderFileMapper.insert(insOrderFile); + } + }catch (Exception e){ + log.error(e.getMessage()); + } + return analysisMap; + } + + //娓╂箍搴﹁瘯楠�+鍔熺巼璇曢獙鐨勪繚瀛樻楠屽唴瀹� + @Override + public int saveInsContext3(InsProductResult insProductResult) { + //鍏堝垹鍚庡姞 + insProductResultMapper.delete(Wrappers.<InsProductResult>lambdaQuery() + .eq(InsProductResult::getInsProductId, insProductResult.getInsProductId()) + .eq(InsProductResult::getNum, insProductResult.getNum())); + insProductResult.setEquipValue("[{\"v\":\"" + insProductResult.getEquipValue() + "\"}]"); + insProductResult.setEquipName("[{\"v\":\"" + insProductResult.getEquipName() + "\"}]"); + insProductResultMapper.insert(insProductResult); + return 0; } //瑙f瀽瑕佹眰鍊肩殑鏍煎紡 @@ -965,19 +1052,19 @@ } } // 澶勭悊鍏朵粬姣旇緝鏉′欢 - if (ask.startsWith(">")) { + if (ask.startsWith(">") || 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("<")) { + } else if (ask.startsWith("<")|| 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("=")) { + } else if (ask.equals("=")|| ask.startsWith("锛�")) { double exactValue = Double.parseDouble(ask.substring(1)); return s == exactValue; } @@ -1001,7 +1088,7 @@ if (ObjectUtils.isEmpty(s)) { continue; } - double numericValue = Double.parseDouble(s); + double numericValue = Math.abs(Double.parseDouble(s)); boolean valid = Arrays.stream(valuesToCheck) .allMatch(v -> getResult(numericValue, v)); if (!valid) { @@ -1013,10 +1100,10 @@ //浜ゆ帴 @Override - public int upPlanUser(Integer userId, Integer orderId, String sonLaboratory) { + public int upPlanUser(Integer userId, Integer sampleId, String sonLaboratory) { InsSampleUser insSampleUser = new InsSampleUser(); insSampleUser.setUserId(userId); - insSampleUser.setInsSampleId(orderId); + insSampleUser.setInsSampleId(sampleId); insSampleUser.setState(0); insSampleUser.setSonLaboratory(sonLaboratory); return insSampleUserMapper.insert(insSampleUser); @@ -1024,57 +1111,59 @@ @Override @Transactional(rollbackFor = Exception.class) - public int verifyPlan(Integer orderId, String laboratory, Integer type, String tell) { + public int verifyPlan(Integer sampleId, String laboratory, Integer type, String tell) { 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); - } + InsSample insSample = insSampleMapper.selectById(sampleId); + 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琛ㄤ腑*/ + InsOrder insOrder = insOrderMapper.selectById(insSample.getInsOrderId()); + 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(insOrder.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 鍚庯紝鎵ц鏇存柊鎿嶄綔 + // 鏌ヨ鏍规嵁 id 鍊掑簭鎺掑垪鐨勭涓�鏉¤褰� + InsOrderState record = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, sampleId) + .eq(InsOrderState::getLaboratory, laboratory) + .orderByDesc(InsOrderState::getId) + .last("LIMIT 1")); // 纭繚鍙彇涓�鏉¤褰� + if (record != null) { + //鏇存柊璁板綍 + insOrderUserMapper.update(null, Wrappers.<InsOrderUser>lambdaUpdate() + .eq(InsOrderUser::getInsOrderStateId, record.getId()) + .eq(InsOrderUser::getNum, record.getNum()) + .set(InsOrderUser::getTell, tell)); + switch (type) { + case 0: + //鍐嶆璇曢獙:璇ュ崟瀛愰��鍥炲埌妫�楠岀姸鎬�(鎺掑簭鏀规垚褰撳墠鐨勬渶鍚�),娆℃暟閫掑(淇濈暀浠ュ墠鐨勬暟鎹�)锛� insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() .eq(InsOrderState::getId, record.getId()) .set(InsOrderState::getInsTime, now) @@ -1083,85 +1172,154 @@ .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(); + break; + case 1: + //缁х画璇曢獙:璇ユ牱鍝佽绔欑偣浠诲姟缁撴潫(鍙互鍐嶆鎵爜妫�楠�)锛� + insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, sampleId) + .eq(InsOrderState::getLaboratory, laboratory) + .set(InsOrderState::getInsState, 6) + .set(InsOrderState::getVerifyTell, tell) + .set(InsOrderState::getVerifyUser, userId)); + break; + case 2: + //缁撴潫璇曢獙:姝ゅ鎵樺崟鍋滄璇曢獙(鏃犳硶鍐嶆妫�楠�)銆� + insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, sampleId) + .eq(InsOrderState::getLaboratory, laboratory) + .set(InsOrderState::getInsState, 5) + .set(InsOrderState::getVerifyTell, tell) + .set(InsOrderState::getVerifyUser, userId)); + //濡傛灉璁㈠崟绫诲瀷鏄師鐞嗘牱鏈�,鍒欒璁㈠崟鐩存帴闂幆 + List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, insSample.getInsOrderId())); + for (InsSample sample : insSamples) { + try{ + outInsOrderState(laboratory, sample.getSampleCode(), insOrder.getEntrustCode()); + }catch (Exception 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; + /*鐢熸垚瀵瑰簲鐨勬楠屾姤鍛�*/ + List<InsReportDto1> insReportDto1s=insOrderUserMapper.selectInsReportDto1(insOrder.getId()); + createReport(insOrder.getId(),insReportDto1s); + //璇ヨ鍗曢棴鐜� + insOrder.setState(4); + insOrderMapper.updateById(insOrder); + break; + } } return 1; } - private void getTemplateThing(Set<Integer> set, Map<Integer, String> map2, List<InsProduct> insProducts) { + @Override + @Transactional(rollbackFor = Exception.class) + public int verifyPlan2(Integer sampleId, String laboratory, Integer type, String tell) { + Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); + InsSample insSample = insSampleMapper.selectById(sampleId); + InsOrder insOrder = insOrderMapper.selectById(insSample.getInsOrderId()); + /*type=0 鍐嶆璇曢獙; type=1 缁х画璇曢獙 ; type=2 缁撴潫璇曢獙*/ + // 鏌ヨ鏍规嵁 id 鍊掑簭鎺掑垪鐨勭涓�鏉¤褰� + InsOrderState record = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, sampleId) + .eq(InsOrderState::getLaboratory, laboratory) + .orderByDesc(InsOrderState::getId) + .last("LIMIT 1")); // 纭繚鍙彇涓�鏉¤褰� + if (record != null) { + switch (type) { + case 0: + //鍐嶆璇曢獙:璇ュ崟瀛愰��鍥炲埌妫�楠岀姸鎬�(鎺掑簭鏀规垚褰撳墠鐨勬渶鍚�),娆℃暟閫掑(淇濈暀浠ュ墠鐨勬暟鎹�)锛� + insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() + .eq(InsOrderState::getId, record.getId()) + .set(InsOrderState::getInsTime, LocalDateTime.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: + //缁х画璇曢獙:璇ユ牱鍝佽绔欑偣浠诲姟缁撴潫(鍙互鍐嶆鎵爜妫�楠�)锛� + //鍏堝垽鏂笂涓�涓鏍告槸浠�涔堢粨璁� + if (record.getInsState()==4){ + insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, sampleId) + .eq(InsOrderState::getLaboratory, laboratory) + .set(InsOrderState::getInsState, 6) + .set(InsOrderState::getVerifyTell, tell) + .set(InsOrderState::getNum, record.getNum() - 1)//娆℃暟-1 + .set(InsOrderState::getVerifyUser, userId)); + }else { + insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, sampleId) + .eq(InsOrderState::getLaboratory, laboratory) + .set(InsOrderState::getInsState, 6) + .set(InsOrderState::getVerifyTell, tell) + .set(InsOrderState::getVerifyUser, userId)); + } + break; + case 2: + //缁撴潫璇曢獙:姝ゅ鎵樺崟鍋滄璇曢獙(鏃犳硶鍐嶆妫�楠�)銆� + //鍏堝垽鏂笂涓�涓鏍告槸浠�涔堢粨璁� + if (record.getInsState()==4){ + insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, sampleId) + .eq(InsOrderState::getLaboratory, laboratory) + .set(InsOrderState::getInsState, 5) + .set(InsOrderState::getNum, record.getNum() - 1)//娆℃暟-1 + .set(InsOrderState::getVerifyTell, tell) + .set(InsOrderState::getVerifyUser, userId)); + }else { + insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, sampleId) + .eq(InsOrderState::getLaboratory, laboratory) + .set(InsOrderState::getInsState, 5) + .set(InsOrderState::getVerifyTell, tell) + .set(InsOrderState::getVerifyUser, userId)); + } + //鍑哄簱 + List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, insSample.getInsOrderId())); + for (InsSample sample : insSamples) { + try{ + outInsOrderState(laboratory, sample.getSampleCode(), insOrder.getEntrustCode()); + }catch (Exception e){ + } + } + /*鐢熸垚瀵瑰簲鐨勬楠屾姤鍛�*/ + List<InsReportDto1> insReportDto1s=insOrderUserMapper.selectInsReportDto1(insOrder.getId()); + createReport(insOrder.getId(),insReportDto1s); + //璁㈠崟闂幆 + insOrder.setState(4); + insOrderMapper.updateById(insOrder); + break; + } + } + return 1; + } + + + /*鐢熸垚瀵瑰簲鐨勬楠屾姤鍛�*/ + private void createReport(Integer orderId,List<InsReportDto1> insReportDto1s){ + for (InsReportDto1 insReportDto1 : insReportDto1s) { + if (ObjectUtils.isNotEmpty(insReportDto1.getInsReportDto2s())){ + wordUtils.generateReport(orderId, insReportDto1); +// try{ +// wordUtils.generateReport(orderId, insReportDto1); +// }catch (Exception e){ +// throw new ErrorException("鎶ュ憡鏍煎紡鐢熸垚鏈夎,璇疯仈绯荤鐞嗗憳!"); +// } + } + } + } + + 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<>()); @@ -1187,33 +1345,39 @@ } @Override - 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)); + public int submitPlan(SubmitPlanDto submitPlanDto) { + InsSample insSample = insSampleMapper.selectById(submitPlanDto.getSampleId()); InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery() - .eq(InsOrderState::getInsOrderId, orderId) - .eq(InsOrderState::getLaboratory, laboratory) + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, submitPlanDto.getSampleId()) + .eq(InsOrderState::getLaboratory, submitPlanDto.getLaboratory()) .orderByDesc(InsOrderState::getId) .last("LIMIT 1"));// 纭繚鍙彇涓�鏉¤褰� - List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList()); + /*璁板綍妫�楠屼换鍔℃瘡娆$殑澶囨敞淇℃伅*/ + InsOrderUser insOrderUser = new InsOrderUser(); + insOrderUser.setInsOrderStateId(orderState.getId()); + insOrderUser.setSubmitUser(getLook.selectPowerByMethodAndUserId(null).get("userId")); + insOrderUser.setInsTime(orderState.getInsTime()); + insOrderUser.setSubmitTime(LocalDateTime.now()); + insOrderUser.setNum(orderState.getNum()); + insOrderUser.setNote(ObjectUtils.isNotEmpty(submitPlanDto.getNote()) ? submitPlanDto.getNote() : null); + insOrderUser.setTerm(ObjectUtils.isNotEmpty(submitPlanDto.getTerm()) ? submitPlanDto.getTerm() : null); + insOrderUserMapper.insert(insOrderUser); List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() - .in(InsProduct::getInsSampleId, ids) - .eq(InsProduct::getSonLaboratory, laboratory) - .eq(InsProduct::getState, 1) + .eq(InsProduct::getInsSampleId, insSample.getId()) + .eq(InsProduct::getSonLaboratory, submitPlanDto.getLaboratory()) .and(wrapper -> wrapper .isNull(InsProduct::getInsResult) .or() .eq(InsProduct::getInsResult, 2) ) - .isNull(InsProduct::getInsFiberId) - .isNull(InsProduct::getInsFibersId)); - insProducts.addAll(insProductMapper.selectFiberInsProduct(ids, laboratory)); + .eq(InsProduct::getState, 1)); if (insProducts.size() > 0) { String str = ""; int count = 0; for (InsProduct product : insProducts) { - //杈愬皠璇曢獙妫�娴嬬殑妫�楠岄」鐩�,涓嶉渶瑕佸幓鎵嬪姩濉啓妫�楠屽��,鍙渶瑕佷笂浼犺〃鏍兼枃浠跺氨鍙互浜�,鍚庡彴鎻愪氦鐨勬椂鍊欐牎楠岃烦杩囪繖涓楠岄」鐩� - if (product.getInspectionItem().equals("杈愬皠璇曢獙妫�娴�")) { + //娓╂箍搴﹁瘯楠�,鍔熺巼璇曢獙鐨勬楠岄」鐩�,涓嶉渶瑕佸幓鎵嬪姩濉啓妫�楠屽��,鍙渶瑕佷笂浼犺〃鏍兼枃浠跺氨鍙互浜�,鍚庡彴鎻愪氦鐨勬椂鍊欐牎楠岃烦杩囪繖涓楠岄」鐩� + if ( product.getInspectionItem().equals("娓╂箍搴﹁瘯楠�") || product.getInspectionItem().equals("鍔熺巼璇曢獙")) { product.setInsResult(3);//涓嶅垽瀹� insProductMapper.updateById(product); continue; @@ -1239,72 +1403,193 @@ } } insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() - .eq(InsOrderState::getInsOrderId, orderId) - .eq(InsOrderState::getLaboratory, laboratory) - .set(InsOrderState::getInsTime, LocalDateTime.now()) + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, submitPlanDto.getSampleId()) + .eq(InsOrderState::getLaboratory, submitPlanDto.getLaboratory()) .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);*/ - } + .set(InsOrderState::getVerifyUser, submitPlanDto.getVerifyUser())); + InsOrder insOrder = insOrderMapper.selectById(insSample.getInsOrderId()); + + 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("鎮ㄦ湁涓�鏉℃楠屼换鍔″緟澶嶆牳娑堟伅,璁㈠崟鍙锋槸锛�" + insOrder.getEntrustCode() + ",鏍峰搧鍚嶇О涓猴細" + insSample.getSample()); + info.setSenderId(userId); + info.setConsigneeId(submitPlanDto.getVerifyUser()); + info.setViewStatus(false); + info.setJumpPath("b1-inspect-order-plan"); + informationNotificationService.addInformationNotification(info); //澶嶆牳浜�--妫�楠屽崟鐩稿叧璐熻矗浜� InsSampleUser insSampleUser = new InsSampleUser(); - insSampleUser.setUserId(verifyUser); - insSampleUser.setInsSampleId(orderId); + insSampleUser.setUserId(submitPlanDto.getVerifyUser()); + insSampleUser.setInsSampleId(submitPlanDto.getSampleId()); insSampleUser.setState(1); - insSampleUser.setSonLaboratory(laboratory); + insSampleUser.setSonLaboratory(submitPlanDto.getLaboratory()); 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)); + /*鐢熸垚鐢佃矾璇曢獙鐨勭珯鐐规姤鍛婂苟涓婁紶鍒伴檮浠朵腑*/ + if (submitPlanDto.getLaboratory().equals("鐢佃矾璇曢獙")) { + if (!insOrder.getSampleType().equals("鏃犳簮鍣ㄤ欢")) { + wordUtils.generateWord(submitPlanDto.getTerm(), orderState); + } else { + wordUtils.generateWord2(submitPlanDto.getTerm(), orderState); + } + //todo 鐢佃矾绔欑偣鎶ュ憡 姝e紡搴撻儴缃叉斁寮� +// try { +// if (!insOrder.getSampleType().equals("鏃犳簮鍣ㄤ欢")) { +// wordUtils.generateWord(submitPlanDto.getTerm(), orderState); +// }else { +// wordUtils.generateWord2(submitPlanDto.getTerm(), orderState); +// } +// } catch (Exception e) { +// throw new ErrorException("鐢佃矾璇曢獙鐨勭珯鐐规姤鍛婄敓鎴愭湁璇�,璇疯仈绯诲紑鍙戜汉鍛樿皟鏁�!"); +// } + } + /*鐢熸垚浜ч噺宸ユ椂*/ + //鏍¢獙濡傛灉杩欎釜浜鸿繖涓娴嬮」鐩凡缁忔坊鍔犺繃浜嗗垯涓嶉渶瑕佸啀鏂板 + //棣栧厛鍒ゆ柇褰撳墠浜虹殑褰撳墠鏃堕棿鏄惁鏄帓鐝椂闂村唴,濡傛灉涓嶆槸灏辨槸鍔犵彮 + 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); + } + for (AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHours : submitPlanDto.getAuxiliaryOutputWorkingHoursList()) { + InsProduct insProduct = insProductMapper.selectById(auxiliaryOutputWorkingHours.getInsProductId()); + if (isWithinRange) { + //鍦ㄦ椂闂村唴灏辨槸姝e父涓婄彮 + auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode());//闈炲姞鐝鎵樺崟鍙� + auxiliaryOutputWorkingHours.setWorkTime(auxiliaryOutputWorkingHours.getOutputWorkTime());//闈炲姞鐝伐鏃� + auxiliaryOutputWorkingHours.setAmount(1);//闈炲姞鐝暟閲� + } else { + //鍔犵彮 + auxiliaryOutputWorkingHours.setOvertimeOrderNo(insOrder.getEntrustCode());//鍔犵彮濮旀墭鍗曞彿 + auxiliaryOutputWorkingHours.setOvertimeWorkTime(auxiliaryOutputWorkingHours.getOutputWorkTime());//鍔犵彮宸ユ椂 + auxiliaryOutputWorkingHours.setOvertimeAmount(1);//鍔犵彮鏁伴噺 } + 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))));//鍛ㄦ + auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours); } } - return null; - }); - // 鍒犻櫎鏁伴噰閲囬泦娆℃暟 - String key = "frequency" + ":" + entrustCode + ":*"; - RedisUtil.delsLike(key); + } + + // todo 浼佷笟寰俊娑堟伅鎺ㄩ�丂zss + HashMap<String, Object> map = new HashMap<>(); + String account = userMapper.selectById(submitPlanDto.getVerifyUser()).getAccount(); + map.put("touser", account);//鎺ユ敹娑堟伅鎴愬憳鐨勮处鍙�'ZT-031292'杩欑绫诲瀷(濡傛灉鏈夊涓敤'|'鍒嗛殧) + map.put("toparty", "");//鎺ユ敹閮ㄩ棬id + map.put("totag", "");//娑堟伅鏍囩id + map.put("msgtype", "text");//娑堟伅绫诲瀷 text:鏂囨湰 + map.put("agentid", 1000517);//搴旂敤id + HashMap<String, Object> hashMap = new HashMap<>(); + hashMap.put("content", "鎮ㄦ湁涓�鏉℃楠屼换鍔″緟澶嶆牳娑堟伅,璁㈠崟鍙锋槸锛�" + insOrder.getEntrustCode() + ",鏍峰搧鍚嶇О涓猴細" + insSample.getSample() + + ",璇峰墠寰�LIMS绯荤粺鏌ョ湅銆傝鐐瑰嚮<a href=\"https://ztwxlims.ztt.cn:7443/enter\">涓ぉ閫氫俊LIMS绯荤粺 </a>"); + map.put("text", hashMap);//娑堟伅鍐呭 + map.put("safe", 0);//鏄惁淇濆瘑娑堟伅.0鍚� + map.put("enable_id_trans", 0);//鏄惁寮�鍚痠d杞瘧.0鍚� + map.put("enable_duplicate_check", 0);//鏄惁寮�鍚噸澶嶆秷鎭鏌�.0鍚� + qywxApi.send(map); return 1; } + @Override + public int cancelSubmitPlan(Integer orderStateId) { + InsOrderState orderState = insOrderStateMapper.selectById(orderStateId); + InsOrder insOrder = insOrderMapper.selectById(orderState.getInsOrderId()); + InsSample insSample = insSampleMapper.selectById(orderState.getInsSampleId()); + /*鍒犻櫎璁板綍妫�楠屼换鍔℃瘡娆$殑澶囨敞淇℃伅*/ + insOrderUserMapper.delete(Wrappers.<InsOrderUser>lambdaQuery() + .eq(InsOrderUser::getInsOrderStateId, orderState.getId()) + .eq(InsOrderUser::getNum, orderState.getNum())); + //鎾ら攢鎻愪氦 + insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() + .eq(InsOrderState::getInsOrderId, orderState.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, orderState.getInsSampleId()) + .eq(InsOrderState::getLaboratory, orderState.getLaboratory()) + .set(InsOrderState::getInsState, 2)); + 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("鎮ㄦ湁涓�鏉℃楠屼换鍔″緟澶嶆牳宸叉挙閿�鐨勬秷鎭�,璁㈠崟鍙锋槸锛�" + insOrder.getEntrustCode() + ",鏍峰搧鍚嶇О涓猴細" + insSample.getSample()); + info.setSenderId(userId); + info.setConsigneeId(orderState.getVerifyUser()); + info.setViewStatus(false); + info.setJumpPath("b1-inspect-order-plan"); + informationNotificationService.addInformationNotification(info); + //鍒犻櫎澶嶆牳浜�--妫�楠屽崟鐩稿叧璐熻矗浜� + insSampleUserMapper.delete(Wrappers.<InsSampleUser>lambdaQuery() + .eq(InsSampleUser::getState, 1) + .eq(InsSampleUser::getSonLaboratory, orderState.getLaboratory()) + .eq(InsSampleUser::getUserId, orderState.getVerifyUser()) + .eq(InsSampleUser::getInsSampleId, orderState.getInsSampleId())); + //鍒犻櫎鐢熸垚鐨勬姤鍛� + if (orderState.getLaboratory().equals("鐢佃矾璇曢獙")) { + List<InsOrderFile> insOrderFiles = insOrderFileMapper.selectList(Wrappers.<InsOrderFile>lambdaQuery() + .eq(InsOrderFile::getType, 2) + .like(InsOrderFile::getFileName, "鐢佃矾鍙傛暟.docx") + .eq(InsOrderFile::getInsOrderId, insOrder.getId()) + .eq(InsOrderFile::getInsSampleId, orderState.getInsSampleId()) + .eq(InsOrderFile::getSonLaboratory, orderState.getLaboratory())); + for (InsOrderFile insOrderFile : insOrderFiles) { + File file = new File(wordUrl + "/" + insOrderFile.getFileUrl()); + file.delete(); + insOrderFileMapper.deleteById(insOrderFile.getId()); + } + } + + /*鍒犻櫎鐢熸垚浜ч噺宸ユ椂*/ + List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsSampleId, insSample.getId())); + List<Integer> productIds = insProducts.stream().map(InsProduct::getId).distinct().collect(Collectors.toList()); + auxiliaryOutputWorkingHoursMapper.delete(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery() + .eq(AuxiliaryOutputWorkingHours::getSample, insSample.getSampleCode()) + .in(AuxiliaryOutputWorkingHours::getInsProductId, productIds) + .eq(AuxiliaryOutputWorkingHours::getNum, orderState.getNum())); + + // todo 浼佷笟寰俊娑堟伅鎺ㄩ�丂zss + HashMap<String, Object> map = new HashMap<>(); + String account = userMapper.selectById(orderState.getVerifyUser()).getAccount(); + map.put("touser", account);//鎺ユ敹娑堟伅鎴愬憳鐨勮处鍙�'ZT-031292'杩欑绫诲瀷(濡傛灉鏈夊涓敤'|'鍒嗛殧) + map.put("toparty", "");//鎺ユ敹閮ㄩ棬id + map.put("totag", "");//娑堟伅鏍囩id + map.put("msgtype", "text");//娑堟伅绫诲瀷 text:鏂囨湰 + map.put("agentid", 1000517);//搴旂敤id + HashMap<String, Object> hashMap = new HashMap<>(); + hashMap.put("content", "鎮ㄦ湁涓�鏉″鏍哥殑娑堟伅宸叉挙閿�,璁㈠崟鍙锋槸锛�" + insOrder.getEntrustCode() + ",鏍峰搧鍚嶇О涓猴細" + insSample.getSample() + + ",璇峰墠寰�LIMS绯荤粺鏌ョ湅銆傝鐐瑰嚮<a href=\"https://ztwxlims.ztt.cn:7443/enter\">涓ぉ閫氫俊LIMS绯荤粺 </a>"); + map.put("text", hashMap);//娑堟伅鍐呭 + map.put("safe", 0);//鏄惁淇濆瘑娑堟伅.0鍚� + map.put("enable_id_trans", 0);//鏄惁寮�鍚痠d杞瘧.0鍚� + map.put("enable_duplicate_check", 0);//鏄惁寮�鍚噸澶嶆秷鎭鏌�.0鍚� + qywxApi.send(map); + return 0; + } + public static String getWeek(String dayStr) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { -- Gitblit v1.9.3