From 1214b18558c19b09c02161b1dbbef342ad2c1e8f Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期六, 12 十月 2024 17:14:46 +0800 Subject: [PATCH] 试验前后样品检查+开始结束时间 --- inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java | 1280 +++++++++++++-------------------------------------------- 1 files changed, 299 insertions(+), 981 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 58ded93..6f76b2e 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,12 +15,6 @@ 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; @@ -32,18 +26,16 @@ 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.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.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,8 +43,6 @@ 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; @@ -81,17 +71,25 @@ @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; @@ -127,18 +125,6 @@ private String imgUrl; @Resource - private InsBushingService insBushingService; - - @Resource - private InsBushingMapper insBushingMapper; - - @Resource - private InsFiberMapper insFiberMapper; - - @Resource - private InsFibersMapper insFibersMapper; - - @Resource private InsOrderFileMapper insOrderFileMapper; @Override @@ -146,13 +132,9 @@ 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 +168,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()); @@ -225,14 +182,14 @@ if (BeanUtil.isEmpty(order.getInsTime())) { insOrder.setInsTime(LocalDateTime.now()); insOrderMapper.updateById(insOrder); - insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate().eq(InsOrderState::getInsOrderId, id).eq(InsOrderState::getLaboratory, laboratory).set(InsOrderState::getInsTime, LocalDateTime.now()).set(InsOrderState::getInsState, 1)); + insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() + .eq(InsOrderState::getInsOrderId, id) + .eq(InsOrderState::getLaboratory, laboratory) + .set(InsOrderState::getInsTime, LocalDateTime.now()) + .set(InsOrderState::getInsState, 1)); } Map<String, Object> map = insOrderService.getInsOrderAndSample(id, laboratory); 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,6 +201,37 @@ case 0: //鏍峰搧 insProducts = insSampleMapper.getInsProduct1(id, laboratory); + if (insProducts.size() == 0) { + insProducts = insSampleMapper.getIns2Product1(id, laboratory); + } + break; + case 1: + //鍏夌氦甯� + break; + case 2: + //鍏夌氦 + break; + case 3: + //濂楃 + break; + } + Set<Integer> set = new HashSet<>(); + Map<Integer, String> map2 = new HashMap<>(); + if (BeanUtil.isEmpty(insProducts)) return null; + getTemplateThing(set, map2, insProducts); + return insProducts; + } + + @Override + public List<InsProduct> getInsProduct2(Integer id, Integer type, String laboratory, HttpServletRequest request, Integer num) { + List<InsProduct> insProducts = new ArrayList<>(); + switch (type) { + case 0: + //鏍峰搧 + insProducts = insSampleMapper.get2InsProduct1(id, laboratory, num); + if (insProducts.size() == 0) { + throw new ErrorException("褰撳墠妫�楠屾暟鎹繕娌℃湁淇濆瓨,淇濆瓨涔嬪悗鏈夋暟鎹巻鍙�"); + } break; case 1: //鍏夌氦甯� @@ -325,185 +313,6 @@ } } - //鍒囨崲璁板綍妯$増鏌ヨ妫�楠屽唴瀹� - @Override - public Map<String, Object> getReportModel(Integer sampleId) { - Map<String, Object> map = new HashMap<>(); - //鍏堟煡鍑哄绠� - List<InsBushing> insBushings = insBushingMapper.selectList(Wrappers.<InsBushing>lambdaQuery().eq(InsBushing::getInsSampleId, sampleId)); - List<InsFibers> fibers = new ArrayList<>(); - List<InsFiber> fiber = new ArrayList<>(); - List<InsBushing> bush = new ArrayList<>(); - for (InsBushing insBushing : insBushings) { - //鍐嶆煡璇㈠嚭鎵�鏈夌殑鍏夌氦甯� - List<InsFibers> insFibers = insFibersMapper.selectList(Wrappers.<InsFibers>lambdaQuery().eq(InsFibers::getInsBushingId, insBushing.getId())); - List<InsFiber> insFiberList = insFiberMapper.selectList(Wrappers.<InsFiber>lambdaQuery().eq(InsFiber::getInsBushingId, insBushing.getId())); - if (CollectionUtils.isNotEmpty(insFibers)) { - for (InsFibers insFiber : insFibers) { - List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsFibersId, insFiber.getId())); - List<Integer> collect = insProducts.stream().map(InsProduct::getInsResult) - .filter(sm -> ObjectUtils.isNotEmpty(sm) && sm != 2).collect(Collectors.toList()); - if (insProducts.size() == collect.size()) { - insFiber.setState(1);//宸叉楠� - } else { - insFiber.setState(0);//鏈楠� - } - } - fibers.addAll(insFibers); - //鏌ュ嚭鍏夌氦甯︿笅鎵�鏈夌殑鍏夌氦 - List<InsFiber> fiberList = insFiberMapper.selectList(Wrappers.<InsFiber>lambdaQuery().in(InsFiber::getInsFibersId, insFibers.stream().map(InsFibers::getId).collect(Collectors.toList()))); - for (InsFiber insFiber : fiberList) { - List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsFiberId, insFiber.getId())); - List<Integer> collect = insProducts.stream().map(InsProduct::getInsResult) - .filter(sm -> ObjectUtils.isNotEmpty(sm) && sm != 2).collect(Collectors.toList()); - if (insProducts.size() == collect.size()) { - insFiber.setState(1);//宸叉楠� - } else { - insFiber.setState(0);//鏈楠� - } - } - fiber.addAll(fiberList); - } - //濡傛灉濂楃涓嬫病鏈夊厜绾ゅ甫灏卞彧鏈夊厜绾や簡 - else if (CollectionUtils.isNotEmpty(insFiberList)) { - for (InsFiber insFiber : insFiberList) { - List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsFiberId, insFiber.getId())); - List<Integer> collect = insProducts.stream().map(InsProduct::getInsResult) - .filter(sm -> ObjectUtils.isNotEmpty(sm) && sm != 2).collect(Collectors.toList()); - if (insProducts.size() == collect.size()) { - insFiber.setState(1);//宸叉楠� - } else { - insFiber.setState(0);//鏈楠� - } - } - fiber.addAll(insFiberList); - } - //濡傛灉鍏夌氦甯﹀拰鍏夌氦閮芥病鏈夊氨鍙湁濂楃(鏉惧绠�) - else { - List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() - .eq(InsProduct::getInsBushId, insBushing.getId())); - List<Integer> collect = insProducts.stream() - .map(InsProduct::getInsResult) - .filter(sm -> ObjectUtils.isNotEmpty(sm) && sm != 2).collect(Collectors.toList()); - if (insProducts.size() == collect.size()) { - insBushing.setState(1);//宸叉楠� - } else { - insBushing.setState(0);//鏈楠� - } - bush.add(insBushing); - } - } - map.put("鍏夌氦甯�", fibers); - map.put("鍏夌氦", fiber); - map.put("濂楃", bush); - return map; - } - - //娓╁害寰幆鏌ョ湅鍒楄〃鏁版嵁(鍖呮嫭閫氳繃鏍峰搧id,寰幆娆℃暟,娓╁害,寰幆娆℃暟杩涜绛涢��) - @Override - public Map<String, Object> temCycle(Integer sampleId, String inspectionItem, String inspectionItemSubclass) { - Map<String, Object> map = new HashMap<>(); - //鏍峰搧淇℃伅 - SampleVo sampleVo = insSampleMapper.getDetailById(sampleId); - map.put("sampleVo", sampleVo); - List<ProductVo> productVos = new ArrayList<>(); - //鍏堟煡鍑鸿繖涓牱鍝佷笅鏈夊摢浜涚鑹叉爣,鍏夌氦甯�,鍏夌氦鑹叉爣 - //鍏堟煡鍑哄绠� - List<InsBushing> insBushings = insBushingMapper.selectList(Wrappers.<InsBushing>lambdaQuery().eq(InsBushing::getInsSampleId, sampleId)); - if (insBushings.size() > 0) { - //閫氫俊--娓╁害寰幆 - for (InsBushing insBushing : insBushings) { - //鍐嶆煡璇㈠嚭鎵�鏈夌殑鍏夌氦甯� - List<InsFibers> insFibers = insFibersMapper.selectList(Wrappers.<InsFibers>lambdaQuery().eq(InsFibers::getInsBushingId, insBushing.getId())); - if (CollectionUtils.isNotEmpty(insFibers)) { - for (InsFibers insFiber : insFibers) { - //鏌ュ嚭鍏夌氦甯︿笅鎵�鏈夌殑鍏夌氦 - List<InsFiber> fiberList = insFiberMapper.selectList(Wrappers.<InsFiber>lambdaQuery().eq(InsFiber::getInsFibersId, insFiber.getId())); - for (InsFiber fiber : fiberList) { - //鍐嶆牴鎹叧鑱旂殑鍏夌氦閰嶇疆鐨刬d鍜屽惊鐜鏁板拰娓╁害鍜屾牱鍝乮d杩涜鏌ヨ妫�楠岄」鐩� - List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() - .eq(InsProduct::getInsSampleId, sampleId) - .eq(InsProduct::getInspectionItem, inspectionItem) - .eq(InsProduct::getInspectionItemSubclass, inspectionItemSubclass) - .eq(InsProduct::getInsFiberId, fiber.getId())); - for (InsProduct insProduct : insProducts) { - InsProductResult insProductResult = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery() - .eq(InsProductResult::getInsProductId, insProduct.getId())); - ProductVo productVo = new ProductVo(); - productVo.setCode(insFiber.getCode()); - productVo.setColor(fiber.getColor()); - productVo.setBushColor(insBushing.getColor()); - if (ObjectUtils.isNotEmpty(insProductResult)) { - insProduct.setInsProductResult(insProductResult); - } - //姹傚悓绛夋潯浠朵笅1娆″惊鐜�20搴﹀父娓╃殑璁$畻鍊� - InsProductResult insProductResult1 = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, insProductMapper.selectOne(Wrappers.<InsProduct>lambdaQuery() - .eq(InsProduct::getInsSampleId, sampleId) - .eq(InsProduct::getInspectionItem, "1") - .eq(InsProduct::getInspectionItemSubclass, "20鈩�(甯告俯)") - .eq(InsProduct::getInspectionItemClass, insProduct.getInspectionItemClass()) - .eq(InsProduct::getInsFiberId, fiber.getId())).getId())); - if (ObjectUtils.isNotEmpty(insProductResult1) && !insProductResult1.getComValue().equals("[]")) { - insProduct.setComplue(insProductResult1.getComValue().split(":")[1].split("\"")[1]); - } - productVo.setInsProduct(insProduct); - productVos.add(productVo); - } - } - } - } else { - //濡傛灉濂楃涓嬫病鏈夊厜绾ゅ甫灏卞彧鏈夊厜绾や簡 - List<InsFiber> insFiberList = insFiberMapper.selectList(Wrappers.<InsFiber>lambdaQuery().eq(InsFiber::getInsBushingId, insBushing.getId())); - for (InsFiber fiber : insFiberList) { - //鍐嶆牴鎹叧鑱旂殑鍏夌氦閰嶇疆鐨刬d鍜屽惊鐜鏁板拰娓╁害鍜屾牱鍝乮d杩涜鏌ヨ妫�楠岄」鐩� - List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() - .eq(InsProduct::getInsSampleId, sampleId) - .eq(InsProduct::getInspectionItem, inspectionItem) - .eq(InsProduct::getInspectionItemSubclass, inspectionItemSubclass) - .eq(InsProduct::getInsFiberId, fiber.getId())); - for (InsProduct insProduct : insProducts) { - InsProductResult insProductResult = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, insProduct.getId())); - ProductVo productVo = new ProductVo(); - productVo.setCode("-"); - productVo.setColor(fiber.getColor()); - productVo.setBushColor(fiber.getBushColor()); - insProduct.setInsProductResult(insProductResult); - //姹傚悓绛夋潯浠朵笅1娆″惊鐜�20搴﹀父娓╃殑璁$畻鍊� - InsProductResult insProductResult1 = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, insProductMapper.selectOne(Wrappers.<InsProduct>lambdaQuery() - .eq(InsProduct::getInsSampleId, sampleId) - .eq(InsProduct::getInspectionItem, "1") - .eq(InsProduct::getInspectionItemSubclass, "20鈩�(甯告俯)") - .eq(InsProduct::getInspectionItemClass, insProduct.getInspectionItemClass()) - .eq(InsProduct::getInsFiberId, fiber.getId())).getId())); - if (ObjectUtils.isNotEmpty(insProductResult1) && !insProductResult1.getComValue().equals("[]")) { - insProduct.setComplue(insProductResult1.getComValue().split(":")[1].split("\"")[1]); - } - productVo.setInsProduct(insProduct); - productVos.add(productVo); - } - } - } - } - productVos = productVos.stream().sorted(Comparator.comparing(productVo -> productVo.getInsProduct().getInspectionItemClass())).collect(Collectors.toList()); - } else { - //鐢靛姏--鐑惊鐜拰娓╁崌璇曢獙 - List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() - .eq(InsProduct::getInsSampleId, sampleId) - .eq(InsProduct::getInspectionItem, inspectionItem)); - for (InsProduct insProduct : insProducts) { - InsProductResult insProductResult = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, insProduct.getId())); - ProductVo productVo = new ProductVo(); - if (ObjectUtils.isNotEmpty(insProductResult)) { - insProduct.setInsProductResult(insProductResult); - } - productVo.setInsProduct(insProduct); - productVos.add(productVo); - } - } - map.put("productVos", productVos); - return map; - } - @Override public List<String> upPlanUser2(Integer orderId) { List<Integer> sampleId = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId)).stream().map(InsSample::getId).collect(Collectors.toList()); @@ -515,20 +324,145 @@ 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 deleteInsContext2(String frequency, Integer productId, String often) { - return insProductResult2Mapper.delete(Wrappers.<InsProductResult2>lambdaQuery() - .eq(InsProductResult2::getFrequency, frequency) - .eq(InsProductResult2::getInsProductId, productId) - .eq(InsProductResult2::getOften, often)); + 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<Integer> sampleIds = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery() + .eq(InsSample::getInsOrderId, insSample.getInsOrderId())).stream().map(InsSample::getId).collect(Collectors.toList()); + List<String> collect = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getState, 1) + .in(InsProduct::getInsSampleId, sampleIds)).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::getLaboratory, sonLaboratory)); + if (ObjectUtils.isNotEmpty(orderState)) { + //缁х画璇曢獙 + if (orderState.getInsState() == 6) { + orderState.setInsState(0); + orderState.setNum(orderState.getNum() + 1);//閫掑 + insOrderStateMapper.updateById(orderState); + } /*else { + throw new ErrorException("璇ヨ鍗曠珯鐐圭殑浠诲姟宸插垱寤�,鏃犳硶鍐嶆鍒涘缓!"); + }*/ + } else { + InsOrderState insOrderState = new InsOrderState(); + insOrderState.setInsOrderId(insSample.getInsOrderId()); + 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<Integer> sampleIds = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery() + .eq(InsSample::getInsOrderId, insSample.getInsOrderId())).stream().map(InsSample::getId).collect(Collectors.toList()); + List<String> collect = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getState, 1) + .in(InsProduct::getInsSampleId, sampleIds)).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()) + .and(wrapper -> wrapper + .eq(InsOrderState::getInsState, 5) + .or() + .eq(InsOrderState::getInsState, 6) + )); + if (CollectionUtils.isEmpty(orderStates)) { + throw new ErrorException("璇ユ牱鍝佺殑妫�楠屼换鍔¤繕娌℃湁缁撴潫璇曢獙,鏆傛椂鏃犳硶鍑哄簱!"); + } + warehouseService.outWarehouse(sampleCode); + 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) { + public void saveInsContext(Map<String, Object> insContext, Integer num) { Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); CompletableFuture.supplyAsync(() -> { insContext.forEach((k, v) -> { @@ -536,6 +470,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)) { @@ -544,6 +479,7 @@ result = results.get(0); } result.setInsProductId(Integer.parseInt(k)); + result.setNum(num); //妫�楠屽�� if (jo.get("insValue") != null) { JSONArray jsonArray = JSON.parseArray(JSON.toJSONString(jo.get("insValue"))); @@ -588,6 +524,26 @@ } } 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("");//'' } //璁惧缂栧彿 if (jo.get("equipValue") != null) { @@ -713,6 +669,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++) { @@ -744,23 +701,30 @@ //鐢佃矾璇曢獙鐨勪繚瀛樻楠屽唴瀹� @Override public List<Integer> saveInsContext2(InsProductResultDto insProductResultDtos) { - if (ObjectUtils.isEmpty(insProductResultDtos.getFrequency())){ + if (ObjectUtils.isEmpty(insProductResultDtos.getFrequency())) { throw new ErrorException("棰戠巼涓嶈兘涓虹┖"); } Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); //鏌ヨ妫�楠屽崟淇℃伅 InsOrder insOrder = insOrderMapper.selectById(insProductResultDtos.getOrderId()); + InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, insProductResultDtos.getOrderId()) + .eq(InsOrderState::getLaboratory, insProductResultDtos.getSonLaboratory()) + .orderByDesc(InsOrderState::getId) + .last("LIMIT 1"));// 纭繚鍙彇涓�鏉¤褰� //鏌ヨ鏍峰搧淇℃伅 InsSample insSample = insSampleMapper.selectById(insProductResultDtos.getSampleId()); List<Integer> list = new ArrayList<>(); /*鏂板妫�楠岄」鐩楠屽�艰褰曡〃(閲囧彇鍏堝垹鍚庡)*/ insProductResult2Mapper.delete(Wrappers.<InsProductResult2>lambdaQuery() .in(InsProductResult2::getInsProductId, insProductResultDtos.getInsProductResult2s().stream().map(InsProductResult2::getInsProductId).distinct().collect(Collectors.toList())) + .eq(InsProductResult2::getNum, orderState.getNum()) .eq(InsProductResult2::getFrequency, insProductResultDtos.getFrequency())); for (InsProductResult2 insProductResult2 : insProductResultDtos.getInsProductResult2s()) { InsProduct insProduct = new InsProduct(); insProduct.setId(insProductResult2.getInsProductId());//椤圭洰id InsProductResult2 result2 = new InsProductResult2(); + result2.setNum(orderState.getNum()); result2.setInsProductId(insProductResult2.getInsProductId()); //棰戠巼 result2.setFrequency(insProductResultDtos.getFrequency()); @@ -792,10 +756,14 @@ int ressult = 1; String valueStr = insProductResult2.getValue(); if (!insProduct.getAsk().contains(",")) { - if (!isValueValid(valueStr, new String[]{insProduct.getAsk()})) { + if (insProduct.getAsk().equals("/")) { + ressult = 3; //涓嶅垽瀹� + } + else if (!isValueValid(valueStr, new String[]{insProduct.getAsk()})) { ressult = 0; //涓嶅悎鏍� } - } else { + } + else { // 濡傛灉瑕佹眰鍊兼槸(2掳鈮�20,7掳鈮�25,12掳鈮�25)杩欑鎯呭喌 String[] askParts = insProduct.getAsk().split(","); String[] angles = insProductResult2.getAngle().split(","); @@ -803,7 +771,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 { @@ -818,11 +785,10 @@ ressult = 0; // 涓嶅悎鏍� break; } - }catch (Exception e) { - }finally { + } catch (Exception e) { + } finally { continue; } - } } } @@ -995,7 +961,7 @@ @Override @Transactional(rollbackFor = Exception.class) - public int verifyPlan(Integer orderId, String laboratory, Integer type, String tell) { + public int verifyPlan(Integer orderId, String laboratory, Integer type, String tell) throws IOException { LocalDateTime now = LocalDateTime.now(); Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); List<InsUnPass> insUnPasses = new ArrayList<>(); @@ -1034,720 +1000,57 @@ } 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, orderId) + .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, 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); + break; + case 1: + //缁х画璇曢獙:璇ョ珯鐐逛换鍔$粨鏉�(鍙互鍐嶆鎵爜妫�楠�)锛� + insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() + .eq(InsOrderState::getInsOrderId, orderId) + .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, orderId) + .eq(InsOrderState::getLaboratory, laboratory) + .set(InsOrderState::getInsState, 5) + .set(InsOrderState::getVerifyTell, tell) + .set(InsOrderState::getVerifyUser, userId)); + //濡傛灉璁㈠崟绫诲瀷鏄師鐞嗘牱鏈�,鍒欒璁㈠崟鐩存帴闂幆 + InsOrder insOrder = insOrderMapper.selectById(orderId); + if (insOrder.getFormType().equals("鍘熺悊鏍锋満")) { + insOrder.setState(4); + insOrderMapper.updateById(insOrder); } - // 鏌ユ壘鏁版嵁閲忔渶灏戠殑鍏冪礌 - 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(); - } - } - InsOrderState insOrderState = new InsOrderState(); - insOrderState.setInsOrderId(orderId); - insOrderState.setLaboratory(minElement); - insOrderState.setInsState(0); - 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)); - /*鐢熸垚鎶ュ憡*/ - generateReport(orderId); - break; + break; + } } return 1; - } - - //鐢熸垚鎶ュ憡 - private void generateReport(Integer orderId) { - LocalDateTime now = LocalDateTime.now(); - InsOrder insOrder = insOrderMapper.selectById(orderId); - Map<String, String> user = insProductMapper.selectUserById(insOrder.getUserId()); - //samples鏄繃婊ゆ帀娌℃湁妫�楠岄」鐩殑鏍峰搧 - List<SampleProductDto> samples = insSampleMapper.selectSampleProductListByOrderId(orderId); - InsReport insReport = new InsReport(); - insReport.setCode(insOrder.getEntrustCode()); - insReport.setInsOrderId(orderId); - List<Map<String, Object>> tables = new ArrayList<>(); - Set<String> standardMethod = new HashSet<>(); - Set<String> deviceSet = new HashSet<>(); - Set<String> models = new HashSet<>(); - AtomicReference<Integer> productSize = new AtomicReference<>(0); - String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; - AtomicReference<String> resultCh = new AtomicReference<>(""); - AtomicReference<String> resultEn = new AtomicReference<>(""); - /*鍩虹鎶ュ憡(7鍒�)*/ - samples.forEach(a -> { - Set<Integer> set = new HashSet<>(); - Map<Integer, String> map2 = new HashMap<>(); - Long productCount = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsSampleId, a.getId())); - productSize.set(productSize.get() + Integer.parseInt(productCount + "")); - models.add(a.getModel()); - standardMethod.add(baseMapper.getStandardMethodCode(a.getStandardMethodListId())); - getTemplateThing(set, map2, a.getInsProduct()); - for (InsProduct b : a.getInsProduct()) { - if (b.getInsProductResult() != null) { - List<JSONObject> jsonObjects = JSON.parseArray(b.getInsProductResult().getEquipValue(), JSONObject.class); - for (JSONObject jsonObject : jsonObjects) { - if (!"".equals(jsonObject.get("v") + "")) { - deviceSet.add(jsonObject.get("v") + ""); - } - } - } - } - AtomicInteger index = new AtomicInteger(); - Set<String> itemSet = new HashSet<>(); - List<RowRenderData> rows = new ArrayList<>(); - //琛ㄦ牸鐨勮鏁� - for (int i = 0; i < 3 + a.getInsProduct().size(); i++) { - RowRenderData rowRenderData = new RowRenderData(); - RowStyle rowStyle = new RowStyle(); - rowStyle.setHeight(40); - rowRenderData.setRowStyle(rowStyle); - List<CellRenderData> cells = new ArrayList<>(); - if (i >= 2 && i < 2 + a.getInsProduct().size()) { - if (itemSet.add(a.getInsProduct().get(i - 2).getInspectionItem())) { - index.getAndIncrement(); - } - } - //鍒楁暟 - for (int j = 0; j < 7; j++) { - CellRenderData cellRenderData = new CellRenderData(); - CellStyle cellStyle = new CellStyle(); - cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER); - cellRenderData.setCellStyle(cellStyle); - List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>(); - ParagraphRenderData paragraphRenderData = new ParagraphRenderData(); - ParagraphStyle paragraphStyle = new ParagraphStyle(); - paragraphStyle.setAlign(ParagraphAlignment.CENTER); - paragraphRenderData.setParagraphStyle(paragraphStyle); - List<RenderData> renderData = new ArrayList<>(); - TextRenderData textRenderData = new TextRenderData(); - Style style = new Style(); - style.setFontFamily("瀹嬩綋"); - style.setColor("000000"); - textRenderData.setStyle(style); - if (i == 0) { - //绗竴琛� - if (j == 0 || j == 1) { - //绗竴鍒楀拰绗簩鍒� - textRenderData.setText("鏍峰搧缂栧彿@Sample number鈭�1"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 2 || j == 3) { - //绗笁鍒楀拰绗洓鍒� - textRenderData.setText(a.getSampleCode() + "鈭�2"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 4) { - //绗簲鍒� - textRenderData.setText("瑙勬牸鍨嬪彿@Type"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else { - //绗叚鍒楀拰绗竷鍒� - textRenderData.setText(a.getModel() + "鈭�3"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } - } else if (i == 1) { - //绗簩琛� - if (j == 0) { - //绗竴鍒� - textRenderData.setText("搴忓彿@No."); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 1 || j == 2) { - //绗簩鍒楀拰绗笁鍒� - textRenderData.setText("妫�娴嬮」鐩瓳Testing item鈭�4"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 3) { - //绗洓鍒� - textRenderData.setText("鍗曚綅@Unit"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 4) { - //绗簲鍒� - textRenderData.setText("鏍囧噯瑕佹眰@Requirement"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 5) { - //绗叚鍒� - textRenderData.setText("妫�楠岀粨鏋淍Test result"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else { - //绗竷鍒� - textRenderData.setText("缁撹@Conclusion"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } - } else if (i == 2 + a.getInsProduct().size()) { - //鏈�鍚庝竴琛� - if (j == 0 || j == 1) { - //绗竴鍒楀拰绗簩鍒� - textRenderData.setText("澶囨敞鈭�5"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else { - //鍏朵綑鍒� - textRenderData.setText("鈥溾垰鈥濊〃绀洪」鐩悎鏍硷紝鈥溍椻�濊〃绀洪」鐩笉鍚堟牸銆侤鈥溾垰鈥� indicates test item is qualified,鈥溍椻�� indicates test item is not qualified 鈭�6"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } - } else { - //鍏朵綑琛� - if (j == 0) { - //绗竴鍒� - textRenderData.setText(index + "鈭�2" + index); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 1) { - //绗簩鍒� - if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemSubclass())) { - if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemEn())) { - textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "@" + a.getInsProduct().get(i - 2).getInspectionItemEn() + "鈭�3" + index); - } else { - textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "鈭�3" + index); - } - } else { - if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemEn())) { - textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "@" + a.getInsProduct().get(i - 2).getInspectionItemEn() + "鈭�3" + index); - } else { - textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "鈭�3" + index); - } - } - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 2) { - //绗笁鍒� - if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemSubclass())) { - if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemSubclassEn())) { - textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItemSubclass() + "@" + a.getInsProduct().get(i - 2).getInspectionItemSubclassEn()); - } else { - textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItemSubclass()); - } - } else { - if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemEn())) { - textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "@" + a.getInsProduct().get(i - 2).getInspectionItemEn() + "鈭�3" + index); - } else { - textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "鈭�3" + index); - } - } - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 3) { - //绗洓鍒� - textRenderData.setText(ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getUnit()) ? a.getInsProduct().get(i - 2).getUnit() : ""); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 4) { - //绗簲鍒� - textRenderData.setText(a.getInsProduct().get(i - 2).getTell()); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 5) { - //绗叚鍒� - textRenderData.setText(a.getInsProduct().get(i - 2).getLastValue()); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else { - //绗竷鍒� - if (ObjectUtils.isEmpty(a.getInsProduct().get(i - 2).getInsResult())) { - textRenderData.setText("-"); - } else if (a.getInsProduct().get(i - 2).getInsResult() == 1) { - textRenderData.setText("鈭�"); - } else if (a.getInsProduct().get(i - 2).getInsResult() == 0) { - textRenderData.setText("脳"); - } else { - textRenderData.setText("-"); - } - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } - } - } - rowRenderData.setCells(cells); - if (rowRenderData.getCells().size() != 0) { - rows.add(rowRenderData); - } - } - TableRenderData tableRenderData = new TableRenderData(); - tableRenderData.setRows(rows); - - List<TableRenderData> tables1 = new ArrayList<>(); - tableRenderData.setRows(new ArrayList<>()); - int totalHeight = 0; - int pageHeightLimit = 450; // 鍋囪姣忛〉鐨勯珮搴﹂檺鍒朵负500鍗曚綅 - int rowHeight = 0; - List<RowRenderData> firstTwoRows = new ArrayList<>(); // 淇濆瓨鍓嶄袱琛屼互渚垮鍒跺埌鏂拌〃鏍� - List<RowRenderData> endRows = new ArrayList<>(); // 淇濆瓨鏈�鍚庝竴琛屽娉ㄤ互渚垮鍒跺埌鏂拌〃鏍� - // 淇濆瓨鍓嶄袱琛屼互渚垮鍒跺埌鏂拌〃鏍� - if (rows.size() >= 3) { - firstTwoRows.add(rows.get(0)); - firstTwoRows.add(rows.get(1)); - endRows.add(rows.get(rows.size() - 1)); - } - for (RowRenderData row : rows) { - rowHeight = calculateRowHeight(row); // 鑷畾涔夋柟娉曡绠楄楂� - if (totalHeight + rowHeight > pageHeightLimit) { - tableRenderData.getRows().addAll(endRows); - // 鍒涘缓鏂拌〃鏍煎苟澶嶅埗鍓嶄袱琛� - TableRenderData newTableRenderData = new TableRenderData(); - newTableRenderData.setRows(new ArrayList<>(firstTwoRows)); - //璁剧疆鏍峰紡 - TableStyle tableStyle = new TableStyle(); - tableStyle.setColWidths(new int[]{650, 1600, 2000, 750, 2800, 1100, 1100}); - tableStyle.setWidth("10000"); - tableStyle.setAlign(TableRowAlign.CENTER); - BorderStyle borderStyle = new BorderStyle(); - borderStyle.setColor("000000"); - borderStyle.setType(XWPFTable.XWPFBorderType.THICK); - borderStyle.setSize(14); - tableStyle.setLeftBorder(borderStyle); - tableStyle.setTopBorder(borderStyle); - tableStyle.setRightBorder(borderStyle); - tableStyle.setBottomBorder(borderStyle); - tableRenderData.setTableStyle(tableStyle); - newTableRenderData.setTableStyle(tableStyle); - tables1.add(tableRenderData); - tableRenderData = newTableRenderData; - totalHeight = 0; - } - totalHeight += rowHeight; - tableRenderData.getRows().add(row); - } - if (!tableRenderData.getRows().isEmpty()) { - //璁剧疆鏍峰紡 - TableStyle tableStyle = new TableStyle(); - tableStyle.setColWidths(new int[]{650, 1600, 2000, 750, 2800, 1100, 1100}); - tableStyle.setWidth("10000"); - tableStyle.setAlign(TableRowAlign.CENTER); - BorderStyle borderStyle = new BorderStyle(); - borderStyle.setColor("000000"); - borderStyle.setType(XWPFTable.XWPFBorderType.THICK); - borderStyle.setSize(14); - tableStyle.setLeftBorder(borderStyle); - tableStyle.setTopBorder(borderStyle); - tableStyle.setRightBorder(borderStyle); - tableStyle.setBottomBorder(borderStyle); - tableRenderData.setTableStyle(tableStyle); - tables1.add(tableRenderData); - } - tables1.forEach(table -> { - Map<String, Object> tableMap = new HashMap<>(); - tableMap.put("table", table); - tableMap.put("report", insReport); - tables.add(tableMap); - }); - }); - - String url; - try { - InputStream inputStream = this.getClass().getResourceAsStream("/static/report-template.docx"); - File file = File.createTempFile("temp", ".tmp"); - OutputStream outputStream = new FileOutputStream(file); - IOUtils.copy(inputStream, outputStream); - url = file.getAbsolutePath(); - } catch (FileNotFoundException e) { - throw new ErrorException("鎵句笉鍒版ā鏉挎枃浠�"); - } catch (IOException e) { - throw new RuntimeException(e); - } - 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 = null; - if (deviceSet.size() != 0) { - 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("鍙戞斁鏃ユ湡", 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); - } - String modelStr = ""; - for (String model : models) { - modelStr += "," + model; - } - String finalModelStr = modelStr; - String sampleEn = insSampleMapper.getSampleEn(insOrder.getSample()); - String orderType = insOrderMapper.getEnumLabelByValue(insOrder.getOrderType()); - String formType = insOrderMapper.getEnumLabelByValue(insOrder.getFormType()); - ConfigureBuilder builder = Configure.builder(); - builder.useSpringEL(true); - List<Map<String, String>> finalDeviceList = deviceList; - Integer userId = insSampleUserMapper.selectOne(Wrappers.<InsSampleUser>lambdaQuery() - .eq(InsSampleUser::getInsSampleId, orderId).last("limit 1")).getUserId(); - String signatureUrl; - try { - signatureUrl = userMapper.selectById(userId).getSignatureUrl(); - } catch (Exception e) { - throw new ErrorException("鎵句笉鍒版楠屼汉鐨勭鍚�"); - } - if (ObjectUtils.isEmpty(signatureUrl) || signatureUrl.equals("")) { - throw new ErrorException("鎵句笉鍒版楠屼汉鐨勭鍚�"); - } - Custom custom = customMapper.selectById(insOrder.getCompanyId()); - if (!resultCh.get().equals("")) { - resultCh.set("渚濇嵁濮旀墭瑕佹眰锛�" + resultCh.get().replaceFirst("銆�", "") + "绛夋墍妫�椤圭洰涓嶇鍚堣姹傦紝鍏朵綑鎵�妫�椤圭洰鍧囩鍚堣姹傘��"); - resultEn.set("According to commissioned requirements," + resultEn.get().replaceFirst("銆�", "") + " these inspected items do not meet the requirements, all other inspected items meet the requirements."); - } else { - resultCh.set("渚濇嵁濮旀墭瑕佹眰锛屾墍妫�椤圭洰鍧囩鍚堣姹傘��"); - resultEn.set("According to commissioned requirements, all the tested items meet the requirements."); - } - - /*鑾峰彇闄勪欢鍥剧墖绫诲瀷*/ - List<Map<String, Object>> images = new ArrayList<>(); - List<InsOrderFile> insOrderFiles = insOrderFileMapper.selectList(Wrappers.<InsOrderFile>lambdaQuery().eq(InsOrderFile::getType, 1).eq(InsOrderFile::getInsOrderId, orderId)); - if (CollectionUtils.isNotEmpty(insOrderFiles)) { - insOrderFiles.forEach(insOrderFile -> { - Map<String, Object> image = new HashMap<>(); - PictureRenderData pictureRenderData = Pictures.ofLocal(imgUrl + "/" + insOrderFile.getFileUrl()).sizeInCm(17, 20).create(); - image.put("url", pictureRenderData); - image.put("report", insReport); - images.add(image); - }); - } - //濮旀墭浜哄拰鐢佃瘽瀛楁鍒ゆ柇 - if (ObjectUtils.isEmpty(insOrder.getPrepareUser())) { - insOrder.setPrepareUser("/"); - } - if (ObjectUtils.isEmpty(insOrder.getPhone())) { - insOrder.setPhone("/"); - } - //妫�楠岄」鐩殑鐜 - InsProduct insProduct = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getState, 1).eq(InsProduct::getInsSampleId, samples.get(0).getId())).get(0); - String environment = ""; - environment = (ObjectUtils.isNotEmpty(insProduct.getTemperature()) ? insProduct.getTemperature() + "鈩� " : "") + (ObjectUtils.isNotEmpty(insProduct.getHumidity()) ? insProduct.getHumidity() + "%" : ""); - String finalEnvironment = environment; - XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render( - new HashMap<String, Object>() {{ - put("order", insOrder); - put("report", insReport); - put("environment", finalEnvironment); - put("custom", custom); - put("sampleSize", samples.size()); - put("tables", tables); - put("tableSize", tables.size() + 1); - put("standardMethod", (standardMethod2.toString().equals("null") ? "" : standardMethod2)); - put("deviceList", finalDeviceList); - put("twoCode", Pictures.ofLocal(codePath).create()); - put("models", finalModelStr.replace(",", "")); - put("productSize", productSize); - put("createTime", now.format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"))); - put("createTimeEn", monthNames[now.getMonthValue() - 1] + " " + now.getDayOfMonth() + ", " + now.getYear()); - put("insTime", insOrder.getInsTime().format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"))); - put("insTimeEn", monthNames[insOrder.getInsTime().getMonthValue() - 1] + " " + insOrder.getInsTime().getDayOfMonth() + ", " + insOrder.getInsTime().getYear()); - put("writeUrl", null); - put("insUrl", Pictures.ofLocal(imgUrl + "/" + signatureUrl).create()); - put("images", images); - put("examineUrl", null); - put("ratifyUrl", null); - put("sampleEn", sampleEn); - put("orderType", orderType); - put("getTime", insOrder.getExamineTime().format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"))); - put("getTimeEn", monthNames[insOrder.getExamineTime().getMonthValue() - 1] + " " + insOrder.getExamineTime().getDayOfMonth() + ", " + insOrder.getExamineTime().getYear()); - put("seal1", null); - put("seal2", null); - put("formTypeCh", formType); - put("formTypeEn", insOrder.getFormType()); - put("resultCh", resultCh.get()); - put("resultEn", resultEn.get()); - }}); - try { - String name = insReport.getCode().replace("/", "") + ".docx"; - template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name))); - insReport.setUrl("/word/" + name); - insReportMapper.insert(insReport); - insOrder.setInsState(5); - insOrderMapper.updateById(insOrder); - } catch (IOException e) { - throw new RuntimeException(e); - } - // 澶勭悊鍚堝苟鍗曞厓鏍肩殑闂 - String path = wordUrl + "/" + insReport.getCode().replace("/", "") + ".docx"; - try { - FileInputStream stream = new FileInputStream(path); - XWPFDocument document = new XWPFDocument(stream); - List<XWPFTable> xwpfTables = document.getTables(); - for (int i = 1; i < xwpfTables.size() - (deviceList == null ? 1 : 2); i++) { - Set<String> set1 = new HashSet<>(); - Map<String, Map<String, Integer>> maps = new HashMap<>(); - for (int j = 0; j < xwpfTables.get(i).getRows().size(); j++) { - for (int k = 0; k < xwpfTables.get(i).getRows().get(j).getTableCells().size(); k++) { - if (xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().indexOf("鈭�") > -1) { - String[] split = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("鈭�"); - if (set1.add(split[1])) { - Map<String, Integer> map = new HashMap<>(); - map.put("sr", j); - map.put("sc", k); - map.put("er", j + 0); - map.put("ec", k + 0); - maps.put(split[1], map); - } else { - Map<String, Integer> map1 = maps.get(split[1]); - if (j == map1.get("sr")) { - map1.put("ec", map1.get("ec") + 1); - } else if (k == map1.get("sc")) { - map1.put("er", map1.get("er") + 1); - } - } - String str = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("鈭�")[0]; - xwpfTables.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0); - xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setText(str); - xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); - xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getParagraphArray(0).setAlignment(ParagraphAlignment.CENTER); - } - } - } - List<String> list = new ArrayList<>(); - for (String s : maps.keySet()) { - list.add(s); - } - for (int a = list.size() - 1; a >= 0; a--) { - Map<String, Integer> v = maps.get(list.get(a)); - for (int j = 0; j < v.get("er") - v.get("sr") + 1; j++) { - if (v.get("ec") > v.get("sc")) { - try { - TableTools.mergeCellsHorizonal(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec")); - } catch (Exception e) { - } - } - } - if (v.get("er") > v.get("sr")) { - try { - TableTools.mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er")); - } catch (Exception e) { - } - } - } - } - FileOutputStream fileOutputStream = new FileOutputStream(path); - document.write(fileOutputStream); - fileOutputStream.close(); - } catch (FileNotFoundException e) { - throw new RuntimeException(e); - } catch (IOException e) { - throw new RuntimeException(e); - } - //澶勭悊涓嫳鏂囨崲琛岀殑闂 - try { - FileInputStream stream1 = new FileInputStream(path); - XWPFDocument document1 = new XWPFDocument(stream1); - List<XWPFTable> xwpfTables1 = document1.getTables(); - for (int i = 1; i < xwpfTables1.size() - (deviceList == null ? 1 : 2); i++) { - for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) { - for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) { - if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) { - String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText(); - String[] split = text.split("@"); - xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0); - XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph(); - XWPFRun run = xwpfParagraph.createRun(); - run.setText(split[0]); - if (ObjectUtils.isNotNull(split[1])) { - run.addBreak(); - run.setText(split[1]); - } - xwpfParagraph.setAlignment(ParagraphAlignment.CENTER); - } - } - } - } - FileOutputStream fileOutputStream1 = new FileOutputStream(path); - document1.write(fileOutputStream1); - fileOutputStream1.close(); - } catch (FileNotFoundException e) { - throw new RuntimeException(e); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - - // 璁$畻琛岄珮鐨勬柟娉� - private int calculateRowHeight(RowRenderData rowRenderData) { - // 瀹炵幇璁$畻閫昏緫锛屽彲鑳介渶瑕佹牴鎹崟鍏冩牸鍐呭鍜屽瓧浣撶瓑鍙傛暟杩涜璁$畻 - int height = 0; - for (CellRenderData cell : rowRenderData.getCells()) { - int cellHeight = estimateCellHeight(cell); // 鏍规嵁鍐呭浼扮畻鍗曞厓鏍奸珮搴� - if (cellHeight > height) { - height = cellHeight; - } - } - return height; - } - - //鏍规嵁鍗曞厓鏍肩殑鏂囨湰鍐呭璁$畻瀹為檯琛岄珮 - private int estimateCellHeight(CellRenderData cellRenderData) { - // 鍋囪榛樿琛岄珮鏄�40 - int defaultHeight = 40; - // 鑾峰彇鍗曞厓鏍间腑鐨勬墍鏈夋钀� - List<ParagraphRenderData> paragraphs = cellRenderData.getParagraphs(); - int estimatedHeight = 0; - // 閬嶅巻娈佃惤锛屼及绠楁瘡涓钀界殑楂樺害 - for (ParagraphRenderData paragraph : paragraphs) { - List<RenderData> contents = paragraph.getContents(); - for (RenderData content : contents) { - if (content instanceof TextRenderData) { - TextRenderData text = (TextRenderData) content; - Style style = text.getStyle(); - // 鍋囪姣忚鏂囨湰鐨勯珮搴︿负瀛椾綋澶у皬鐨�1.2鍊� - Double fontSize = Objects.isNull(style.getFontSize()) ? 12.0 : style.getFontSize(); - int lines = (int) Math.ceil(text.getText().length() / 15.0); // 鍋囪姣忚绾�15涓瓧绗� - int textHeight = (int) (fontSize * 1.2 * lines); - // 绱姞娈佃惤鐨勯珮搴� - estimatedHeight += textHeight; - } - } - } - // 杩斿洖鏈�澶у�硷紝纭繚楂樺害涓嶄綆浜庨粯璁ら珮搴� - return Math.max(estimatedHeight, defaultHeight); } private void getTemplateThing(Set<Integer> set, Map<Integer, String> map2, List<InsProduct> insProducts) { @@ -1776,8 +1079,23 @@ } @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(Integer orderId, String laboratory, Integer verifyUser, String entrustCode, String note, String term) { + List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery() + .eq(InsSample::getInsOrderId, orderId).select(InsSample::getId)); + InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, orderId) + .eq(InsOrderState::getLaboratory, laboratory) + .orderByDesc(InsOrderState::getId) + .last("LIMIT 1"));// 纭繚鍙彇涓�鏉¤褰� + /*璁板綍妫�楠屼换鍔℃瘡娆$殑澶囨敞淇℃伅*/ + 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(note) ? note : null); + insOrderUser.setTerm(ObjectUtils.isNotEmpty(term) ? term : null); + insOrderUserMapper.insert(insOrderUser); List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList()); List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() .in(InsProduct::getInsSampleId, ids) @@ -1787,10 +1105,7 @@ .isNull(InsProduct::getInsResult) .or() .eq(InsProduct::getInsResult, 2) - ) - .isNull(InsProduct::getInsFiberId) - .isNull(InsProduct::getInsFibersId)); - insProducts.addAll(insProductMapper.selectFiberInsProduct(ids, laboratory)); + )); if (insProducts.size() > 0) { String str = ""; int count = 0; @@ -1804,6 +1119,7 @@ //鐢佃矾璇曢獙鐨勬楠岄」鐩�,闇�瑕佸湪鎻愪氦鐨勬椂鍊欏啀鍘昏祴鍊煎悎鏍间笌涓嶅悎鏍� 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);//涓嶅悎鏍� @@ -1823,14 +1139,17 @@ insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() .eq(InsOrderState::getInsOrderId, orderId) .eq(InsOrderState::getLaboratory, laboratory) - .set(InsOrderState::getInsTime, LocalDateTime.now()) .set(InsOrderState::getInsState, 3) .set(InsOrderState::getVerifyUser, verifyUser)); - /*濡傛灉鏄疌绫昏鍗曚笖鏄笅鍙戝埌璐ㄩ噺閮�,鍒欑洿鎺ュ鏍搁�氳繃(缁撴潫璇曢獙)*/ - InsOrder insOrder = insOrderMapper.selectById(orderId); - if (insOrder.getOrderType().equals("C") && insOrder.getDepartmentLims().equals("璐ㄩ噺閮�")) { - verifyPlan(orderId, laboratory, 2, null); - } else { + /*杩欎釜鎯呭喌鍏堝叧闂�----濡傛灉鏄疌绫昏鍗曚笖鏄笅鍙戝埌璐ㄩ噺閮�,鍒欑洿鎺ュ鏍搁�氳繃(缁撴潫璇曢獙)*/ +// InsOrder insOrder = insOrderMapper.selectById(orderId); +// if (insOrder.getOrderType().equals("C") && insOrder.getDepartmentLims().equals("璐ㄩ噺閮�")) { +// try { +// verifyPlan(orderId, laboratory, 2, null); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } else { Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); //LIMS绯荤粺娑堟伅鎺ㄩ�� InformationNotification info = new InformationNotification(); @@ -1858,7 +1177,7 @@ map.put("enable_id_trans", 0);//鏄惁寮�鍚痠d杞瘧.0鍚� map.put("enable_duplicate_check", 0);//鏄惁寮�鍚噸澶嶆秷鎭鏌�.0鍚� qywxApi.send(map);*/ - } +// } //澶嶆牳浜�--妫�楠屽崟鐩稿叧璐熻矗浜� InsSampleUser insSampleUser = new InsSampleUser(); insSampleUser.setUserId(verifyUser); @@ -1871,6 +1190,7 @@ 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++) { @@ -1880,23 +1200,19 @@ } return null; }); + /*鐢熸垚鐢佃矾璇曢獙鐨勭珯鐐规姤鍛婂苟涓婁紶鍒伴檮浠朵腑*/ + if (laboratory.equals("鐢佃矾璇曢獙")) { + wordUtils.generateWord(note, term, orderState); +// try { +// wordUtils.generateWord(note, term, orderState); +// }catch (Exception e){ +// throw new ErrorException("鐢佃矾璇曢獙鐨勭珯鐐规姤鍛婄敓鎴愭湁璇�,璇疯仈绯诲紑鍙戜汉鍛樿皟鏁�!"); +// } + } // 鍒犻櫎鏁伴噰閲囬泦娆℃暟 String key = "frequency" + ":" + entrustCode + ":*"; RedisUtil.delsLike(key); return 1; - } - - // 鑾峰彇涓や釜localDateTime鐨勬瘡涓�澶� - public static List<LocalDateTime> getLocalDateTimesBetween(LocalDateTime start, LocalDateTime end) { - List<LocalDateTime> localDateTimes = new ArrayList<>(); - LocalDate currentDate = start.toLocalDate(); - LocalDateTime currentLocalDateTime = start; - while (!currentDate.isAfter(end.toLocalDate())) { - localDateTimes.add(currentLocalDateTime); - currentLocalDateTime = currentLocalDateTime.plusDays(1); - currentDate = currentDate.plusDays(1); - } - return localDateTimes; } public static String getWeek(String dayStr) { @@ -1934,4 +1250,6 @@ return "鏈煡"; } } + + } -- Gitblit v1.9.3