From a5b1bad21ba279ade3954852a5e281e9086042f0 Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期二, 26 十一月 2024 15:22:52 +0800 Subject: [PATCH] 前端联调修改2.0 --- inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java | 1412 +++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 1,052 insertions(+), 360 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 08ed607..e7fd46d 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,62 +1,59 @@ 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; -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.Style; -import com.deepoove.poi.data.style.TableStyle; 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.SubmitPlanDto; +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.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.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.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,15 +72,23 @@ private InsOrderStateMapper insOrderStateMapper; @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 - private GiveCode giveCode; + WordUtils wordUtils; @Resource private InsReportMapper insReportMapper; @@ -91,20 +96,72 @@ @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; + + @Value("${file.path}") + private String imgUrl; + + @Resource + private InsOrderFileMapper insOrderFileMapper; + + @Resource + FuSheUtils fuSheUtils; + @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"); + String laboratory = null; + String userName = null; if (ObjectUtil.isNotEmpty(insOrderPlanDTO.getUserId())) { - insOrderPlanDTO.setUserId(userId.longValue()); + 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)) { @@ -112,81 +169,455 @@ } 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; } @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.setInsState(1); - 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, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, sampleId) + .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<>(); + 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; - getTemplateThing(set, map2, samples); - } 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 = 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: + //鍏夌氦甯� + 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); + if (insProducts.size() == 0) { + throw new ErrorException("褰撳墠妫�楠屾暟鎹繕娌℃湁淇濆瓨,淇濆瓨涔嬪悗鏈夋暟鎹巻鍙�"); + } + 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 sampleId, String laboratory) { + List<String> collect = new ArrayList<>(); + List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getInsSampleId, sampleId) + .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)); + 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, String sonLaboratory, Integer sampleId) { + String urlString; + String pathName; + String path; + String filename = file.getOriginalFilename(); + 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/")) { + // 鏄浘鐗� + 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().replace("#", "&"); + urlString = realpath + "/" + pathName; + file.transferTo(new File(urlString)); + insOrderFile.setFileUrl(pathName); + insOrderFileMapper.insert(insOrderFile); + //濡傛灉鏄緪灏勮瘯楠�(杩戝満/杩滅▼涓婁紶鐨刢sv鏂囦欢) + String[] split = filename.split("\\."); + if (ObjectUtils.isNotEmpty(sonLaboratory) && (sonLaboratory.equals("杩戝満") || sonLaboratory.equals("杩滃満")) && + split[split.length - 1].equals("csv")) { + //鍒ゆ柇鏄摢绉峜sv鏂囦欢,鏄惁鏈夆�斺�� + if (sonLaboratory.equals("杩戝満")) { + fuSheUtils.getFuSheWord1(sonLaboratory, insOrderFile); + } else { + fuSheUtils.getFuSheWord2(sonLaboratory, insOrderFile); + } + } + } catch (Exception e) { + System.err.println("闄勪欢涓婁紶閿欒"); + } + return 0; + } + + @Override + 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; + } + + @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 int scanInsOrderState(String sonLaboratory, String sampleCode, String trees) { + /*鏍峰搧鍏ュ簱*/ + warehouseService.inWarehouse(trees, sampleCode); + /*鏂板妫�楠屼换鍔�*/ + //鍏堝垽鏂鏍峰搧鏄惁鏈夎繖涓珯鐐圭殑椤圭洰 + InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, sampleCode)); + 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) { + //鍒ゆ柇璇ユ牱鍝佺殑妫�楠屼换鍔℃槸鍚﹀凡缁忕粨鏉�(缁х画璇曢獙鎴栬�呮槸缁撴潫璇曢獙) + //鍏堝垽鏂鏍峰搧鏄惁鏈夎繖涓珯鐐圭殑椤圭洰 + InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, sampleCode)); + 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); + return 0; + } + + @Override + 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++) { + //鑾峰彇鏈�鍚庡崟鍏冩牸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(","); + } + 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(() -> { - AtomicInteger count = new AtomicInteger(); 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::getNum, num) + .eq(InsProductResult::getInsProductId, insProduct.getId())); + InsProductResult result; + if (CollectionUtils.isEmpty(results)) { result = new InsProductResult(); + } else { + result = results.get(0); } result.setInsProductId(Integer.parseInt(k)); - JSONArray jsonArray = JSON.parseArray(JSON.toJSONString(jo.get("insValue"))); - List<Map<String, Object>> iv = new ArrayList<>(); - for (Object o : jsonArray) { - 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")); - 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); - } else { - map.put("u", insValue.get("u")); + result.setNum(num); + //妫�楠屽�� + if (jo.get("insValue") != null) { + JSONArray jsonArray = JSON.parseArray(JSON.toJSONString(jo.get("insValue"))); + List<Map<String, Object>> iv = new ArrayList<>(); + for (Object o : jsonArray) { + 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 + ""); + } else { + map.put("u", insValue.get("u")); + } + iv.add(map); + } catch (Exception e) { + } } - iv.add(map); + result.setInsValue(JSON.toJSONString(iv)); } - result.setInsValue(JSON.toJSONString(iv)); - JSONArray jsonArray2 = JSON.parseArray(JSON.toJSONString(jo.get("comValue"))); - List<Map<String, Object>> cv = new ArrayList<>(); - for (Object o : jsonArray2) { - JSONObject comValue = JSON.parseObject(JSON.toJSONString(o)); - Map<String, Object> map = new HashMap<>(); - map.put("v", JSON.parseObject(JSON.toJSONString(comValue.get("v"))).get("v")); - cv.add(map); + //璁$畻鍊� + 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) { + JSONObject comValue = JSON.parseObject(JSON.toJSONString(o)); + Map<String, Object> map = new HashMap<>(); + map.put("v", JSON.parseObject(JSON.toJSONString(comValue.get("v"))).get("v")); + cv.add(map); + } + result.setComValue(JSON.toJSONString(cv)); } - result.setComValue(JSON.toJSONString(cv)); - JSONObject resValue = JSON.parseObject(JSON.toJSONString(jo.get("resValue"))); - insProduct.setLastValue(JSON.parseObject(JSON.toJSONString(resValue.get("v"))).get("v") + ""); - JSONObject equipValue = JSON.parseObject(JSON.toJSONString(jo.get("equipValue"))); + //鏈�缁堝�� try { - result.setEquipValue(JSON.parseObject(JSON.toJSONString(equipValue.get("v"))).get("v") + ""); - } catch (Exception ignored) { - result.setEquipValue(null); + 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("");//'' } - JSONObject insResult = JSON.parseObject(JSON.toJSONString(jo.get("insResult"))); - insProduct.setInsResult(Integer.parseInt(JSON.parseObject(JSON.toJSONString(insResult.get("v"))).get("v") + "")); + //璇曢獙鍓嶆牱鍝佹鏌� + 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("");//'' + } + //璁惧缂栧彿 + if (jo.get("equipValue") != null) { + JSONArray jsonArray2 = JSON.parseArray(JSON.toJSONString(jo.get("equipValue"))); + 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.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); result.setUpdateUser(userId); @@ -198,333 +629,594 @@ } insProduct.setUpdateUser(userId); insProductMapper.updateById(insProduct); - if (count.get() == 0) { - InsSample insSample = insSampleMapper.selectById(insProductMapper.selectById(insProduct.getId()).getInsSampleId()); - insSample.setInsState(1); - count.addAndGet(1); + insProductUserMapper.insert(new InsProductUser(null, userId, LocalDateTime.now(), insProduct.getId())); + insProduct = insProductMapper.selectById(insProduct); + 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()) + .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::getNum, num) + .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 + 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)); + } + } }).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"); + //鏌ヨ鏍峰搧淇℃伅 + InsSample insSample = insSampleMapper.selectById(insProductResultDtos.getSampleId()); + //鏌ヨ妫�楠屽崟淇℃伅 + InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, insProductResultDtos.getSampleId()) + .eq(InsOrderState::getLaboratory, insProductResultDtos.getSonLaboratory()) + .orderByDesc(InsOrderState::getId) + .last("LIMIT 1"));// 纭繚鍙彇涓�鏉¤褰� + 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(); + String regex ="[\u4e00-\u9fa5]"; + if (!insProduct.getAsk().contains(",")) { + if (insProduct.getAsk().equals("/") || Pattern.compile(regex).matcher(insProduct.getAsk()).find()) { + ressult = 3; //涓嶅垽瀹� + } else 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())); + /*鏇存柊鏍峰搧鐨勬楠岀姸鎬�*/ + 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(insSample.getInsOrderId()); + if (count == 0) { + insOrderStateMapper.update(new InsOrderState(), Wrappers.<InsOrderState>lambdaUpdate() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, insProductResultDtos.getSampleId()) + .eq(InsOrderState::getLaboratory, insProductResultDtos.getSonLaboratory()) + .set(InsOrderState::getInsState, 2)); + } + return list; + } + + //娓╂箍搴﹁瘯楠�+鍔熺巼璇曢獙鐨勪繚瀛樻楠屽唴瀹� + @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瀽瑕佹眰鍊肩殑鏍煎紡 + 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 = Math.abs(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 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); } @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()); - } - } - 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("鎵句笉鍒版ā鏉挎枃浠�"); + public int verifyPlan(Integer sampleId, String laboratory, Integer type, String tell) throws IOException { + LocalDateTime now = LocalDateTime.now(); + Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); + List<InsUnPass> insUnPasses = new ArrayList<>(); + /*鏍峰搧涓嬬殑椤圭洰鍙鏈変竴涓」鐩笉鍚堟牸鍒欐楠岀粨鏋滀负0,鍚﹀垯涓�1*/ + 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); } - 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); + } + insUnPassService.saveBatch(insUnPasses); + /*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) { + //鏇存柊璁板綍 + 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) + .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, 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)); + //濡傛灉璁㈠崟绫诲瀷鏄師鐞嗘牱鏈�,鍒欒璁㈠崟鐩存帴闂幆 + if (insOrder.getFormType().equals("鍘熺悊鏍锋満")) { + //鍑哄簱 + try { + outInsOrderState(laboratory, insSample.getSampleCode()); + } catch (Exception e) { + + } + } + insOrder.setState(4); + insOrderMapper.updateById(insOrder); + 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"))); List<JSONObject> cellData = JSON.parseArray(JSON.toJSONString(sheet.get("celldata")), JSONObject.class); -// List<JSONObject> tableData = new ArrayList<>(); Map<String, Object> style = new HashMap<>(); style.put("rowlen", config.get("rowlen")); style.put("columnlen", config.get("columnlen")); - int r = -1; - /*if (BeanUtil.isNotEmpty(cellData)) { - for (JSONObject o : cellData) { - JSONObject v = JSON.parseObject(JSON.toJSONString(o.get("v"))); - tableData.add(o); - if (BeanUtil.isNotEmpty(v.get("ps"))) { - JSONObject ps = JSON.parseObject(JSON.toJSONString(v.get("ps"))); - if (ps.get("value").equals("妫�楠岄」") && v.get("v").equals(product.getInspectionItem())) { - tableData.add(o); - r = Integer.parseInt(o.get("r") + ""); - continue; - } - } - if (tableData.size() > 0) { - if ((Integer.parseInt(o.get("r") + "") == r + 1 || Integer.parseInt(o.get("r") + "") == r) && !(o.get("v") + "").equals("{\"ht\":\"0\"}")) { - r = Integer.parseInt(o.get("r") + ""); - tableData.add(o); - } else { - break; - } - } - } - }*/ 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)); - 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).isNotNull(InsProduct::getInsResult)); - if (insProducts.size() == 0) { - return 0; + public int submitPlan(SubmitPlanDto submitPlanDto) { + InsSample insSample = insSampleMapper.selectById(submitPlanDto.getSampleId()); + InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, submitPlanDto.getSampleId()) + .eq(InsOrderState::getLaboratory, submitPlanDto.getLaboratory()) + .orderByDesc(InsOrderState::getId) + .last("LIMIT 1"));// 纭繚鍙彇涓�鏉¤褰� + /*璁板綍妫�楠屼换鍔℃瘡娆$殑澶囨敞淇℃伅*/ + InsOrderUser insOrderUser = new InsOrderUser(); + insOrderUser.setInsOrderStateId(orderState.getId()); + insOrderUser.setSubmitUser(getLook.selectPowerByMethodAndUserId(null).get("userId")); + 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() + .eq(InsProduct::getInsSampleId, insSample.getId()) + .eq(InsProduct::getSonLaboratory, submitPlanDto.getLaboratory()) + .and(wrapper -> wrapper + .isNull(InsProduct::getInsResult) + .or() + .eq(InsProduct::getInsResult, 2) + ) + .eq(InsProduct::getState, 1)); + if (insProducts.size() > 0) { + String str = ""; + int count = 0; + for (InsProduct product : insProducts) { + //杈愬皠璇曢獙,娓╂箍搴﹁瘯楠�,鍔熺巼璇曢獙鐨勬楠岄」鐩�,涓嶉渶瑕佸幓鎵嬪姩濉啓妫�楠屽��,鍙渶瑕佷笂浼犺〃鏍兼枃浠跺氨鍙互浜�,鍚庡彴鎻愪氦鐨勬椂鍊欐牎楠岃烦杩囪繖涓楠岄」鐩� + if (product.getInspectionItem().equals("杈愬皠璇曢獙") || product.getInspectionItem().equals("娓╂箍搴﹁瘯楠�") || 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/>"; + } + 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, insSample.getInsOrderId()) + .eq(InsOrderState::getInsSampleId, submitPlanDto.getSampleId()) + .eq(InsOrderState::getLaboratory, submitPlanDto.getLaboratory()) + .set(InsOrderState::getInsState, 3) + .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("鎮ㄦ湁涓�鏉℃楠屼换鍔″緟澶嶆牳娑堟伅"); + info.setSenderId(userId); + info.setConsigneeId(submitPlanDto.getVerifyUser()); + info.setViewStatus(false); + info.setJumpPath("b1-inspect-order-plan"); + informationNotificationService.addInformationNotification(info); + // 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() + ",璇峰墠寰�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); + //澶嶆牳浜�--妫�楠屽崟鐩稿叧璐熻矗浜� + InsSampleUser insSampleUser = new InsSampleUser(); + insSampleUser.setUserId(submitPlanDto.getVerifyUser()); + insSampleUser.setInsSampleId(submitPlanDto.getSampleId()); + insSampleUser.setState(1); + insSampleUser.setSonLaboratory(submitPlanDto.getLaboratory()); + insSampleUserMapper.insert(insSampleUser); + /*鐢熸垚鐢佃矾璇曢獙鐨勭珯鐐规姤鍛婂苟涓婁紶鍒伴檮浠朵腑*/ + if (submitPlanDto.getLaboratory().equals("鐢佃矾璇曢獙")) { + //wordUtils.generateWord(submitPlanDto.getTerm(), orderState); + //todo 鐢佃矾绔欑偣鎶ュ憡 姝e紡搴撻儴缃叉斁寮� + try { + wordUtils.generateWord(submitPlanDto.getTerm(), orderState); + } catch (Exception e) { + throw new ErrorException("鐢佃矾璇曢獙鐨勭珯鐐规姤鍛婄敓鎴愭湁璇�,璇疯仈绯诲紑鍙戜汉鍛樿皟鏁�!"); + } + } + /*// 鍒犻櫎鏁伴噰閲囬泦娆℃暟 + String key = "frequency" + ":" + submitPlanDto.getEntrustCode() + ":*"; + RedisUtil.delsLike(key);*/ + + /*鐢熸垚浜ч噺宸ユ椂*/ + //鏍¢獙濡傛灉杩欎釜浜鸿繖涓娴嬮」鐩凡缁忔坊鍔犺繃浜嗗垯涓嶉渶瑕佸啀鏂板 + //棣栧厛鍒ゆ柇褰撳墠浜虹殑褰撳墠鏃堕棿鏄惁鏄帓鐝椂闂村唴,濡傛灉涓嶆槸灏辨槸鍔犵彮 + 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 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