From 1f15333b0a97a327865f7aab8f1e3f9ba8fc16f8 Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期五, 18 十月 2024 12:45:59 +0800 Subject: [PATCH] 电路站点报告调试+总报告ing --- inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java | 665 ++++++++++++++++++++++++++++++-- inspect-server/src/main/java/com/yuanchu/mom/dto/InsReportDto.java | 2 inspect-server/src/main/resources/mapper/InsSampleMapper.xml | 5 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java | 377 ------------------ inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java | 66 ++- inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java | 51 + inspect-server/src/main/resources/mapper/InsOrderFileMapper.xml | 3 system-run/src/main/resources/application-dev.yml | 5 inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderFileMapper.java | 3 inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java | 2 framework/src/main/java/com/yuanchu/mom/utils/QYWXApi.java | 2 inspect-server/src/main/resources/mapper/InsOrderUserMapper.xml | 1 inspect-server/src/main/resources/static/report-template.docx | 0 inspect-server/src/main/java/com/yuanchu/mom/dto/InsReportDto1.java | 2 14 files changed, 725 insertions(+), 459 deletions(-) diff --git a/framework/src/main/java/com/yuanchu/mom/utils/QYWXApi.java b/framework/src/main/java/com/yuanchu/mom/utils/QYWXApi.java index 67041a3..ff6e615 100644 --- a/framework/src/main/java/com/yuanchu/mom/utils/QYWXApi.java +++ b/framework/src/main/java/com/yuanchu/mom/utils/QYWXApi.java @@ -21,7 +21,7 @@ public static final String WWA_423654_B_975441_AC = "wwa423654b975441ac"; final String ip = "https://qyapi.weixin.qq.com/"; final String corpid = WWA_423654_B_975441_AC; - final String corpsecret = "VfTV3D0BFWORlBm8grykUhloQSTM06mIXYEHUqr3UIc"; + final String corpsecret = "rQ1_ddKBVW5qVSMNK_p0EnR3Z2OHrAMxGahBKTKWYxE"; /** diff --git a/inspect-server/src/main/java/com/yuanchu/mom/dto/InsReportDto.java b/inspect-server/src/main/java/com/yuanchu/mom/dto/InsReportDto.java index 8c3d3f6..521594f 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/dto/InsReportDto.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/dto/InsReportDto.java @@ -2,6 +2,7 @@ import lombok.Data; +import javax.validation.constraints.NotNull; import java.util.List; @Data @@ -14,5 +15,6 @@ private Integer state; //閫夋嫨鐨勬瘡涓珯鐐圭殑绗嚑娆℃暟鎹� + @NotNull private List<InsReportDto1> insReportDto1s; } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/dto/InsReportDto1.java b/inspect-server/src/main/java/com/yuanchu/mom/dto/InsReportDto1.java index c3fc8b2..dca5bd8 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/dto/InsReportDto1.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/dto/InsReportDto1.java @@ -8,4 +8,6 @@ private String laboratory; private Integer num; + + private Integer insOrderUsersId; } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderFileMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderFileMapper.java index dd3a93e..bd53c37 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderFileMapper.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderFileMapper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.mom.pojo.InsOrderFile; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; /** * <p> @@ -16,5 +17,5 @@ */ public interface InsOrderFileMapper extends BaseMapper<InsOrderFile> { - IPage<InsOrderFile> getFileList(Page page, QueryWrapper<InsOrderFile> ew); + IPage<InsOrderFile> getFileList(@Param("page") Page page, @Param("ew") QueryWrapper<InsOrderFile> ew , @Param("insOrderId") Integer insOrderId); } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java index 951385d..ab0a329 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java @@ -60,6 +60,8 @@ //鏌ヨ涓旇繃婊ゅ嚭鏈夌數璺瘯楠岀殑鏍峰搧 List<InsSample> selectSample(Integer insOrderId); + + List<SampleProductDto> selectList1(Integer id); } 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 ff49a1e..36aa8e2 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 @@ -204,8 +204,22 @@ //鏍峰搧 insProducts = insSampleMapper.getInsProduct1(id, laboratory); if (insProducts.size() == 0) { - insProducts = insSampleMapper.getIns2Product1(id, laboratory); + 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); + } } + /*if (insProducts.size() == 0) { + insProducts = insSampleMapper.getIns2Product1(id, laboratory); + }*/ break; case 1: //鍏夌氦甯� @@ -274,7 +288,9 @@ public Map<String, Object> getFileList(Page page, InsOrderFile insOrderFile) { Map<String, Object> map = new HashMap<>(); map.put("head", PrintChina.printChina(InsOrderFile.class)); - IPage<InsOrderFile> insOrderFileIPage = insOrderFileMapper.getFileList(page, QueryWrappers.queryWrappers(insOrderFile)); + Integer insOrderId = insOrderFile.getInsOrderId(); + insOrderFile.setInsOrderId(null); + IPage<InsOrderFile> insOrderFileIPage = insOrderFileMapper.getFileList(page, QueryWrappers.queryWrappers(insOrderFile), insOrderId); map.put("body", insOrderFileIPage); return map; } @@ -393,13 +409,15 @@ //鍒ゆ柇璇ヨ鍗曟槸鍚︾珯鐐逛换鍔℃湁(缁х画璇曢獙鎴栬�呮槸缁撴潫璇曢獙) 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) - )); + .eq(InsOrderState::getInsState, 5)); if (CollectionUtils.isEmpty(orderStates)) { - throw new ErrorException("璇ユ牱鍝佺殑妫�楠屼换鍔¤繕娌℃湁缁撴潫璇曢獙,鏆傛椂鏃犳硶鍑哄簱!"); + List<InsOrderState> orderStates1 = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .eq(InsOrderState::getLaboratory, sonLaboratory) + .eq(InsOrderState::getInsState, 6)); + if (CollectionUtils.isEmpty(orderStates1)) { + throw new ErrorException("璇ユ牱鍝佺殑妫�楠屼换鍔¤繕娌℃湁缁撴潫璇曢獙鎴栫户缁瘯楠�,鏆傛椂鏃犳硶鍑哄簱!"); + } } warehouseService.outWarehouse(sampleCode); return 0; @@ -857,7 +875,6 @@ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); List<InsUnPass> insUnPasses = new ArrayList<>(); /*鏍峰搧涓嬬殑椤圭洰鍙鏈変竴涓」鐩笉鍚堟牸鍒欐楠岀粨鏋滀负0,鍚﹀垯涓�1*/ - //杩欓噷鐨刬nsSamples鏄鍗曚笅鐨勬墍鏈夋牱鍝佸寘鎷�("/") List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId)); for (InsSample insSample : samples) { List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() @@ -935,6 +952,14 @@ //濡傛灉璁㈠崟绫诲瀷鏄師鐞嗘牱鏈�,鍒欒璁㈠崟鐩存帴闂幆 InsOrder insOrder = insOrderMapper.selectById(orderId); if (insOrder.getFormType().equals("鍘熺悊鏍锋満")) { + for (InsSample sample : samples) { + //鍑哄簱 + try{ + outInsOrderState(laboratory,sample.getSampleCode()); + }catch (Exception e){ + + } + } insOrder.setState(4); insOrderMapper.updateById(insOrder); } @@ -1032,8 +1057,8 @@ .eq(InsOrderState::getLaboratory, submitPlanDto.getLaboratory()) .set(InsOrderState::getInsState, 3) .set(InsOrderState::getVerifyUser, submitPlanDto.getVerifyUser())); + InsOrder insOrder = insOrderMapper.selectById(submitPlanDto.getOrderId()); /*杩欎釜鎯呭喌鍏堝叧闂�----濡傛灉鏄疌绫昏鍗曚笖鏄笅鍙戝埌璐ㄩ噺閮�,鍒欑洿鎺ュ鏍搁�氳繃(缁撴潫璇曢獙)*/ -// InsOrder insOrder = insOrderMapper.selectById(orderId); // if (insOrder.getOrderType().equals("C") && insOrder.getDepartmentLims().equals("璐ㄩ噺閮�")) { // try { // verifyPlan(orderId, laboratory, 2, null); @@ -1056,14 +1081,14 @@ //todo 浼佷笟寰俊娑堟伅鎺ㄩ�丂zss /* HashMap<String, Object> map = new HashMap<>(); String account = userMapper.selectById(userId).getAccount(); - map.put("touser", *//*account*//*"ZT-012117");//鎺ユ敹娑堟伅鎴愬憳鐨勮处鍙�'ZT-031292'杩欑绫诲瀷(濡傛灉鏈夊涓敤'|'鍒嗛殧) + map.put("touser", account);//鎺ユ敹娑堟伅鎴愬憳鐨勮处鍙�'ZT-031292'杩欑绫诲瀷(濡傛灉鏈夊涓敤'|'鍒嗛殧) map.put("toparty", "");//鎺ユ敹閮ㄩ棬id map.put("totag", "");//娑堟伅鏍囩id map.put("msgtype", "text");//娑堟伅绫诲瀷 text:鏂囨湰 - map.put("agentid", 1000513);//搴旂敤id + map.put("agentid", 1000517);//搴旂敤id HashMap<String, Object> hashMap = new HashMap<>(); - hashMap.put("content", "鎮ㄦ湁涓�鏉℃楠屼换鍔″緟澶嶆牳娑堟伅,璇峰墠寰�LIMS绯荤粺鏌ョ湅銆�<a href=\"http://10.1.13.77/enter\"> </a>"); - map.put("text", JSONArray.toJSONString(hashMap));//娑堟伅鍐呭 + 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鍚� @@ -1093,19 +1118,18 @@ });*/ /*鐢熸垚鐢佃矾璇曢獙鐨勭珯鐐规姤鍛婂苟涓婁紶鍒伴檮浠朵腑*/ if (submitPlanDto.getLaboratory().equals("鐢佃矾璇曢獙")) { - try { - wordUtils.generateWord(submitPlanDto.getNote(), submitPlanDto.getTerm(), orderState); - } catch (Exception e) { - throw new ErrorException("鐢佃矾璇曢獙鐨勭珯鐐规姤鍛婄敓鎴愭湁璇�,璇疯仈绯诲紑鍙戜汉鍛樿皟鏁�!"); - } + wordUtils.generateWord(submitPlanDto.getNote(), submitPlanDto.getTerm(), orderState); +// try { +// wordUtils.generateWord(submitPlanDto.getNote(), submitPlanDto.getTerm(), orderState); +// } catch (Exception e) { +// throw new ErrorException("鐢佃矾璇曢獙鐨勭珯鐐规姤鍛婄敓鎴愭湁璇�,璇疯仈绯诲紑鍙戜汉鍛樿皟鏁�!"); +// } } /*// 鍒犻櫎鏁伴噰閲囬泦娆℃暟 String key = "frequency" + ":" + submitPlanDto.getEntrustCode() + ":*"; RedisUtil.delsLike(key);*/ /*鐢熸垚浜ч噺宸ユ椂*/ - //鏌ヨ妫�楠屽崟淇℃伅 - InsOrder insOrder = insOrderMapper.selectById(submitPlanDto.getOrderId()); //鏍¢獙濡傛灉杩欎釜浜鸿繖涓娴嬮」鐩凡缁忔坊鍔犺繃浜嗗垯涓嶉渶瑕佸啀鏂板 //棣栧厛鍒ゆ柇褰撳墠浜虹殑褰撳墠鏃堕棿鏄惁鏄帓鐝椂闂村唴,濡傛灉涓嶆槸灏辨槸鍔犵彮 LocalDateTime today = LocalDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT); diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java index e74f015..a54776a 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java @@ -74,6 +74,10 @@ @Resource private InsSampleMapper insSampleMapper; @Resource + InsProductResult2Mapper insProductResult2Mapper; + @Resource + InsProductResultMapper insProductResultMapper; + @Resource private WarehouseHistoryMapper warehouseHistoryMapper; @Resource private InsProductMapper insProductMapper; @@ -247,7 +251,7 @@ } //濡傛灉鏈変笂浼犵殑闄勪欢 if (CollectionUtils.isNotEmpty(files)) { - for (MultipartFile file : files ) { + for (MultipartFile file : files) { String urlString; String pathName; String path; @@ -322,27 +326,22 @@ if (insOrder.getState() == 1) { //瀹℃牳閫氳繃鎵嶄細鐢熸垚濮旀墭缂栧彿 insOrder.setEntrustCode(giveCode.giveCode2("WT-", "ins_order", "-", "yyMMdd")); - //纭畾璁㈠崟鐨勪笅鍙戞椂闂村拰绾﹀畾鏃堕棿 - //int day = insProductService.selectOrderManDay(insOrder.getId());//棰勮瀹屾垚鏃堕棿 - //insOrder.setAppointed(LocalDate.parse(LocalDateTime.now().plusHours(day).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))); insOrder.setSendTime(LocalDateTime.now()); /*todo 鏍规嵁璁㈠崟绫诲瀷鍒ゆ柇鏄惁闇�瑕佹帹閫佷紒涓氬井淇� @zss*/ - if (!order.getFormType().equals("鍏朵粬鎴愬搧")) { - /* HashMap<String, Object> map = new HashMap<>(); + /*if (!order.getFormType().equals("鍏朵粬鎴愬搧")) { String account = userMapper.selectById(order.getIssueUser()).getAccount(); + HashMap<String, Object> map = new HashMap<>(); map.put("touser", account);//鎺ユ敹娑堟伅鎴愬憳鐨勮处鍙�'ZT-031292'杩欑绫诲瀷(濡傛灉鏈夊涓敤'|'鍒嗛殧) - map.put("toparty", "");//鎺ユ敹閮ㄩ棬id - map.put("totag", "");//娑堟伅鏍囩id map.put("msgtype", "text");//娑堟伅绫诲瀷 text:鏂囨湰 - map.put("agentid", 1000513);//搴旂敤id + map.put("agentid", 1000517);//搴旂敤id HashMap<String, Object> hashMap = new HashMap<>(); - hashMap.put("content", "鎮ㄦ湁涓�鏉¤鍗曢渶鐢熸垚妫�楠�,璇峰墠寰�LIMS绯荤粺鏌ョ湅銆�<a href=\"http://10.1.13.77/enter\"> </a>"); - map.put("text", JSONArray.toJSONString(hashMap));//娑堟伅鍐呭 + hashMap.put("content", "鎮ㄦ湁涓�鏉¤鍗曢渶瑕佸畬鎴�,璇峰墠寰�LIMS绯荤粺鏌ョ湅銆傝鍗曞彿鏄細"+order.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);*/ - } + qywxApi.send(map); + }*/ } return insOrderMapper.updateById(insOrder); } @@ -399,9 +398,31 @@ public Map<String, Object> getInsOrderAndSample(Integer id, String laboratory) { Map<String, Object> map = new HashMap<>(); InsOrder insOrder = insOrderMapper.selectById2(id); + List<SampleProductDto> insSamples = insSampleMapper.selectList1(insOrder.getId()); List<SampleProductDto> list = insSampleMapper.getInsOrderAndSample(id, laboratory); - if (list.size() == 0) { - list = insSampleMapper.getInsOrderAndSample2(id, laboratory); + //鍐嶆璇曢獙浼氬嚭鐜颁负绌虹殑鎯呭喌 + if (list.size() != insSamples.size()) { + List<Integer> ids = list.stream().map(sampleProductDto -> sampleProductDto.getId()).distinct().collect(Collectors.toList()); + List<SampleProductDto> samples = insSamples.stream().filter(insSample -> + !ids.contains(insSample.getId()) + ).collect(Collectors.toList()); + for (SampleProductDto insSample : samples) { + List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getInsSampleId, insSample.getId()) + .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); + } + insSample.setInsProduct(insProducts); + list.add(insSample); + } + } for (SampleProductDto sampleProductDto : list) { List<Integer> ids = sampleProductDto.getInsProduct().stream().map(InsProduct::getId).collect(Collectors.toList()); diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java index 14cea9a..d7805c8 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java @@ -17,6 +17,7 @@ import com.deepoove.poi.data.*; import com.deepoove.poi.data.style.*; import com.deepoove.poi.data.style.Style; +import com.deepoove.poi.data.style.TableStyle; import com.deepoove.poi.util.TableTools; import com.itextpdf.text.BadElementException; import com.itextpdf.text.DocumentException; @@ -37,9 +38,12 @@ import com.yuanchu.mom.utils.JackSonUtil; import com.yuanchu.mom.utils.MatrixToImageWriter; import com.yuanchu.mom.utils.QueryWrappers; +import com.yuanchu.mom.utils.WordUtils; import com.yuanchu.mom.vo.Result; import org.apache.commons.io.IOUtils; +import org.apache.logging.log4j.util.Strings; import org.apache.poi.xwpf.usermodel.*; +import org.apache.poi.xwpf.usermodel.ParagraphAlignment; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; @@ -103,6 +107,9 @@ private InsOrderStateMapper insOrderStateMapper; @Resource + WordUtils wordUtils; + + @Resource private InsProductMapper insProductMapper; @Resource @@ -110,6 +117,9 @@ @Resource private InsProductResult2Mapper insProductResult2Mapper; + + @Resource + private InsOrderUserMapper insOrderUserMapper; @Resource private InsSampleMapper insSampleMapper; @@ -380,7 +390,8 @@ Long count = insOrderStateMapper.selectCount(Wrappers.<InsOrderState>lambdaQuery().eq(InsOrderState::getInsOrderId, insReportDto.getId()).eq(InsOrderState::getInsState, 5)); if (count > 0) { if (insReportDto.getState() == 1) { - generateReport(insReportDto.getId(), insReportDto.getInsReportDto1s()); + List<InsReportDto1> insReportDto1s = insReportDto.getInsReportDto1s(); + wordUtils.generateReport(insReportDto.getId(), insReportDto1s); } else { //缁撴潫璁㈠崟 InsOrder insOrder = new InsOrder(); @@ -593,370 +604,6 @@ over.addImage(img); } stamp.close(); - } - - //鐢熸垚鎶ュ憡 - private void generateReport(Integer orderId, List<InsReportDto1> insReportDto1s) { - LocalDateTime now = LocalDateTime.now(); - InsOrder insOrder = insOrderMapper.selectById(orderId); - //濮旀墭閮ㄩ棬 departLims - String departLims = userMapper.selectDepartLims(insOrder.getPrepareUser()); - //samples鏄繃婊ゆ帀娌℃湁妫�楠岄」鐩殑鏍峰搧 - List<SampleProductDto> samples = insSampleMapper.selectSampleProductListByOrderId(orderId); - String sampleCode = samples.get(0).getSampleCode(); - InsReport insReport = new InsReport(); - insReport.setCode(insOrder.getEntrustCode().replace("WT","TXJC")); - 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); - AtomicReference<Integer> productSize1 = new AtomicReference<>(0); - AtomicReference<Integer> productSize2 = new AtomicReference<>(0); - AtomicReference<Integer> productSize3 = new AtomicReference<>(0); - String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; - samples.forEach(s -> { - models.add(s.getModel()); - standardMethod.addAll(standardMethodListMapper.selectList(Wrappers.<StandardMethodList>lambdaQuery() - .in(StandardMethodList::getId,Arrays.stream(s.getStandardMethodListId().replaceAll("[\\[\\]]", "").split(",")) - .map(String::trim).map(Integer::parseInt).collect(Collectors.toList()))).stream().map(aa->{return aa.getCode()+" "+aa.getName();}).distinct().collect(Collectors.toList())); - //鎬绘暟 - Long productCount = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() - .eq(InsProduct::getInsSampleId, s.getId())); - productSize.set(productSize.get() + Integer.parseInt(productCount + "")); - //涓嶅垽瀹� - Long productCount1 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() - .eq(InsProduct::getInsSampleId, s.getId()) - .eq(InsProduct::getInsResult, 3)); - productSize1.set(productSize1.get() + Integer.parseInt(productCount1 + "")); - //涓嶅悎鏍� - Long productCount2 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() - .eq(InsProduct::getInsSampleId, s.getId()) - .eq(InsProduct::getInsResult, 0)); - productSize2.set(productSize2.get() + Integer.parseInt(productCount2 + "")); - //鍚堟牸 - Long productCount3 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() - .eq(InsProduct::getInsSampleId, s.getId()) - .eq(InsProduct::getInsResult, 1)); - productSize3.set(productSize3.get() + Integer.parseInt(productCount3 + "")); - //灏嗛」鐩寜鐓х珯鐐硅繘琛屽垎绫� - Map<String, List<InsProduct>> listMap = s.getInsProduct().stream().collect(Collectors.groupingBy(InsProduct::getLaboratory)); - // 鍒涘缓涓�涓� Map 灏嗙珯鐐瑰拰椤圭洰ID鐨勬槧灏勫叧绯� - Map<String, Set<Integer>> labToDeviceMap = new HashMap<>(); - // 鑾峰彇鎵�鏈夌珯鐐圭殑椤圭洰ID 鍒楄〃 - for (Map.Entry<String, List<InsProduct>> entry : listMap.entrySet()) { - Set<Integer> deviceIds = entry.getValue().stream() - .map(InsProduct::getId) - .collect(Collectors.toSet()); - labToDeviceMap.put(entry.getKey(), deviceIds); - } - for (InsReportDto1 insReportDto1 : insReportDto1s) { - String laboratory = insReportDto1.getLaboratory(); - if (!labToDeviceMap.containsKey(laboratory)) { - continue; - } - Set<Integer> deviceIds = labToDeviceMap.get(laboratory); - Integer num = insReportDto1.getNum(); - List<InsProductResult> insProductResults = insProductResultMapper.selectList( - Wrappers.<InsProductResult>lambdaQuery() - .eq(InsProductResult::getNum, num) - .in(InsProductResult::getInsProductId, deviceIds)); - for (InsProductResult insProductResult : insProductResults) { - List<JSONObject> jsonObjects = JSON.parseArray(insProductResult.getEquipValue(), JSONObject.class); - for (JSONObject jsonObject : jsonObjects) { - String value = jsonObject.getString("v"); - if (value != null && !value.isEmpty()) { - deviceSet.add(value); - } - } - } - List<InsProductResult2> insProductResult2s = insProductResult2Mapper.selectList( - Wrappers.<InsProductResult2>lambdaQuery() - .eq(InsProductResult2::getNum, num) - .in(InsProductResult2::getInsProductId, deviceIds)); - for (InsProductResult2 result2 : insProductResult2s) { - String equipValue = result2.getEquipValue(); - if (equipValue != null && !equipValue.isEmpty()) { - deviceSet.add(equipValue); - } - } - } - }); - 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("锛沑n").append(s); - } - standardMethod2.append("锛沑n").append("GB/T 9410-2008 銆婄Щ鍔ㄩ�氫俊澶╃嚎閫氱敤鎶�鏈鑼冦��"); - 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; - List<Map<String, String>> sampleList = insSampleMapper.selectSampleList(orderId); - 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()); - - /*鑾峰彇闄勪欢鍥剧墖绫诲瀷*/ - 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; - List<SampleProductDto> finalSamples = samples; - XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render( - new HashMap<String, Object>() {{ - put("order", insOrder); - put("report", insReport); - put("departLims", departLims); - put("sampleCode", sampleCode); - put("environment", finalEnvironment); - put("custom", custom); - put("sampleSize", finalSamples.size()); - put("tables", tables); - put("tableSize", tables.size() + 1); - put("standardMethod", (standardMethod2.toString().equals("null") ? "" : standardMethod2)); - put("deviceList", finalDeviceList); - put("sampleList", sampleList); - put("twoCode", Pictures.ofLocal(codePath).create()); - put("models", finalModelStr.replace(",", "")); - put("productSize", productSize); - put("productSize1", productSize1); - put("productSize2", productSize2); - put("productSize3", productSize3); - 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()); - }}); - 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(org.apache.poi.xwpf.usermodel.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(org.apache.poi.xwpf.usermodel.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); } } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java b/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java index 9753772..62239b9 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java @@ -1,5 +1,8 @@ package com.yuanchu.mom.utils; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.deepoove.poi.XWPFTemplate; @@ -8,6 +11,8 @@ import com.deepoove.poi.data.*; import com.deepoove.poi.data.style.*; import com.deepoove.poi.util.TableTools; +import com.yuanchu.mom.dto.InsReportDto1; +import com.yuanchu.mom.dto.SampleProductDto; import com.yuanchu.mom.exception.ErrorException; import com.yuanchu.mom.mapper.*; import com.yuanchu.mom.pojo.*; @@ -24,8 +29,11 @@ import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @Component @@ -41,7 +49,22 @@ private InsOrderFileMapper insOrderFileMapper; @Resource + CustomMapper customMapper; + + @Value("${file.path}") + private String imgUrl; + + @Resource + InsReportMapper insReportMapper; + + @Resource private InsSampleMapper insSampleMapper; + + @Resource + StandardMethodListMapper standardMethodListMapper; + + @Value("${twoCode}") + private String twoCode; @Resource private InsProductMapper insProductMapper; @@ -49,12 +72,20 @@ @Resource private InsProductResult2Mapper insProductResult2Mapper; + @Resource + private InsProductResultMapper insProductResultMapper; - //鐢熸垚鎶ュ憡 + @Resource + UserMapper userMapper; + + @Resource + InsSampleUserMapper insSampleUserMapper; + + + //鐢熸垚绔欑偣鐢佃矾璇曢獙鎶ュ憡 public void generateWord(String note, String term, InsOrderState insOrderState) { AtomicInteger lable = new AtomicInteger(1); AtomicInteger index = new AtomicInteger(); - Set<String> itemSet = new HashSet<>(); String title = term + "鐢佃矾鍙傛暟"; List<Map<String, Object>> tables = new ArrayList<>(); //鏌ヨ璁㈠崟 @@ -84,7 +115,10 @@ } } //棰戠偣鏁� - long often = insProductResult2s.stream().filter(insProductResult2 -> ObjectUtils.isNotEmpty(insProductResult2.getOften())).distinct().count(); + long often = insProductResult2s.stream().filter(insProductResult2 -> insProductResult2.getFrequency().equals(s)) + .filter(insProductResult2 -> + insProductMapper.selectById(insProductResult2.getInsProductId()).getInspectionItemSubclass().equals("浜掕皟") + ).filter(insProductResult2 -> ObjectUtils.isNotEmpty(insProductResult2.getOften())).distinct().count(); List<String> inspectionItemSubclass = insProducts.stream().map(InsProduct::getInspectionItemSubclass).collect(Collectors.toList()); //琛屾暟 int aa = 0; @@ -150,6 +184,7 @@ } } List<RowRenderData> rows = new ArrayList<>(); + Set<String> itemSet = new HashSet<>(); int cc = 0; int dd = 0; int ee = 0; @@ -273,10 +308,18 @@ if (i % 2 == 0) { //鏈�宸�� String value = result2s.get(0).getValue().replaceAll("[\\[\\]\"]", ""); - textRenderData.setText(value.split(",")[(j - 5) + (i - 1) / 2 * (Math.min(ports, 8))]); + try { + textRenderData.setText(value.split(",")[(j - 5) + (i - 1) / 2 * (Math.min(ports, 8))]); + } catch (Exception e) { + textRenderData.setText(""); + } } else { //绔彛 - textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 5) + (i / 2) * (Math.min(ports, 8))]); + try { + textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 5) + (i / 2) * (Math.min(ports, 8))]); + } catch (Exception e) { + textRenderData.setText(""); + } } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); @@ -353,7 +396,11 @@ cells.add(cellRenderData); } else if (j % 2 == 0) { String value = result2s.get(0).getValue().replaceAll("[\\[\\]\"]", ""); - textRenderData.setText(value.split(",")[(j - 6) / 2 + (i - cc - 1) * 4] + "鈭�5" + i + (j - 6)); + try { + textRenderData.setText(value.split(",")[(j - 6) / 2 + (i - cc - 1) * 4] + "鈭�5" + i + (j - 6)); + } catch (Exception e) { + textRenderData.setText(""); + } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); @@ -361,7 +408,11 @@ cells.add(cellRenderData); } else { String value = result2s.get(0).getValue().replaceAll("[\\[\\]\"]", ""); - textRenderData.setText(value.split(",")[(j - 5) / 2 + (i - cc - 1) * 4] + "鈭�5" + i + (j - 5)); + try { + textRenderData.setText(value.split(",")[(j - 5) / 2 + (i - cc - 1) * 4] + "鈭�5" + i + (j - 5)); + } catch (Exception e) { + textRenderData.setText(""); + } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); @@ -437,7 +488,11 @@ cells.add(cellRenderData); } else if (j % 2 == 0) { String value = result2s.get(0).getValue().replaceAll("[\\[\\]\"]", ""); - textRenderData.setText(value.split(",")[(j - 6) / 2 + (i - (dd == 0 ? cc : dd) - 1) * 4] + "鈭�5" + i + (j - 6)); + try { + textRenderData.setText(value.split(",")[(j - 6) / 2 + (i - (dd == 0 ? cc : dd) - 1) * 4] + "鈭�5" + i + (j - 6)); + } catch (Exception e) { + textRenderData.setText(""); + } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); @@ -445,7 +500,11 @@ cells.add(cellRenderData); } else { String value = result2s.get(0).getValue().replaceAll("[\\[\\]\"]", ""); - textRenderData.setText(value.split(",")[(j - 5) / 2 + (i - (dd == 0 ? cc : dd) - 1) * 4] + "鈭�5" + i + (j - 5)); + try { + textRenderData.setText(value.split(",")[(j - 5) / 2 + (i - (dd == 0 ? cc : dd) - 1) * 4] + "鈭�5" + i + (j - 5)); + } catch (Exception e) { + textRenderData.setText(""); + } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); @@ -514,11 +573,11 @@ textRenderData.setText("/"); } else { if (products.get(0).getInsResult() == 1) { - textRenderData.setText("鍚堟牸鈭�8" + index+ ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1)); + textRenderData.setText("鍚堟牸鈭�8" + index + ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1)); } else if (products.get(0).getInsResult() == 0) { - textRenderData.setText("涓嶅悎鏍尖垜8" + index+ ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1)); + textRenderData.setText("涓嶅悎鏍尖垜8" + index + ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1)); } else { - textRenderData.setText("涓嶅垽瀹氣垜8" + index+ ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1)); + textRenderData.setText("涓嶅垽瀹氣垜8" + index + ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1)); } } renderData.add(textRenderData); @@ -528,11 +587,15 @@ cells.add(cellRenderData); } else { if ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) % (angles + 1) == 1) { - textRenderData.setText(result2s.get((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) / (2 * (angles + 1))).getOften() + "鈭�6" + index); + textRenderData.setText(result2s.get((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) / portRow / (angles + 1)).getOften() + "鈭�6" + i + index); } else { - String[] value = result2s.get((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) / (2 * (angles + 1))).getValue().split("\\],\\["); + String[] value = result2s.get((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) / portRow / (angles + 2)).getValue().split("\\],\\["); String[] split = value[(i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) - 2) % (angles + 1)].replaceAll("[\\[\\]\"]", "").split(","); - textRenderData.setText(split[(j - 5) + ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1) * (Math.min(ports, 8))]); + try { + textRenderData.setText(split[((j - 5) + ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) - 1) / (angles + 1) % portRow) * (Math.min(ports, 8)))]); + } catch (Exception e) { + textRenderData.setText(""); + } } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); @@ -606,11 +669,11 @@ } else { //缁撹 if (products.get(0).getInsResult() == 1) { - textRenderData.setText("鍚堟牸鈭�8" + index+ ((i + (angles - 1)) / (angles + 1) - 1)); + textRenderData.setText("鍚堟牸鈭�8" + index + ((i + (angles - 1)) / (angles + 1) - 1)); } else if (products.get(0).getInsResult() == 0) { - textRenderData.setText("涓嶅悎鏍尖垜8" + index+ ((i + (angles - 1)) / (angles + 1) - 1)); + textRenderData.setText("涓嶅悎鏍尖垜8" + index + ((i + (angles - 1)) / (angles + 1) - 1)); } else { - textRenderData.setText("涓嶅垽瀹氣垜8" + index+ ((i + (angles - 1)) / (angles + 1) - 1)); + textRenderData.setText("涓嶅垽瀹氣垜8" + index + ((i + (angles - 1)) / (angles + 1) - 1)); } } renderData.add(textRenderData); @@ -622,12 +685,20 @@ //鍏朵綑鍒� if (i % (angles + 1) == 1) { //绔彛 - textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 5) + (i / (angles + 1)) * (Math.min(ports, 8))]); + try { + textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 5) + (i / (angles + 1)) * (Math.min(ports, 8))]); + } catch (Exception e) { + textRenderData.setText(""); + } } else { //鏈�宸�� String[] value = result2s.get(0).getValue().split("\\],\\["); String[] split = value[(i + (angles - 1)) % (angles + 1)].replaceAll("[\\[\\]\"]", "").split(","); - textRenderData.setText(split[(j - 5) + ((i + (angles - 1)) / (angles + 1) - 1) * (Math.min(ports, 8))]); + try { + textRenderData.setText(split[(j - 5) + ((i + (angles - 1)) / (angles + 1) - 1) * (Math.min(ports, 8))]); + } catch (Exception e) { + textRenderData.setText(""); + } } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); @@ -703,11 +774,11 @@ } else { //缁撹 if (products.get(0).getInsResult() == 1) { - textRenderData.setText("鍚堟牸鈭�8" + index+((i - cc) / (angles + 2))); + textRenderData.setText("鍚堟牸鈭�8" + index + ((i - cc) / (angles + 2))); } else if (products.get(0).getInsResult() == 0) { - textRenderData.setText("涓嶅悎鏍尖垜8" + index+((i - cc) / (angles + 2))); + textRenderData.setText("涓嶅悎鏍尖垜8" + index + ((i - cc) / (angles + 2))); } else { - textRenderData.setText("涓嶅垽瀹氣垜8" + index+((i - cc) / (angles + 2))); + textRenderData.setText("涓嶅垽瀹氣垜8" + index + ((i - cc) / (angles + 2))); } } renderData.add(textRenderData); @@ -721,13 +792,13 @@ //绔彛 if (j % 2 == 0) { try { - textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 6) / 2 + ((i - cc) / (angles + 2)) * (ports > 8 ? 4 : (ports + 1) / 2)] + "鈭�5" + i + (j - 6)); + textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 6) / 2 + ((i - cc) / (angles + 1)) * (ports > 8 ? 4 : (ports + 1) / 2)] + "鈭�5" + i + (j - 6)); } catch (Exception e) { textRenderData.setText(""); } } else { try { - textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 5) / 2 + ((i - cc) / (angles + 2)) * (ports > 8 ? 4 : (ports + 1) / 2)] + "鈭�5" + i + (j - 5)); + textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 5) / 2 + ((i - cc) / (angles + 1)) * (ports > 8 ? 4 : (ports + 1) / 2)] + "鈭�5" + i + (j - 5)); } catch (Exception e) { textRenderData.setText(""); } @@ -826,11 +897,11 @@ } else { //缁撹 if (products.get(0).getInsResult() == 1) { - textRenderData.setText("鍚堟牸鈭�8" + index+ ((i - (dd == 0 ? cc : dd)) / (angles + 2))); + textRenderData.setText("鍚堟牸鈭�8" + index + ((i - (dd == 0 ? cc : dd)) / (angles + 2))); } else if (products.get(0).getInsResult() == 0) { - textRenderData.setText("涓嶅悎鏍尖垜8" + index+ ((i - (dd == 0 ? cc : dd)) / (angles + 2))); + textRenderData.setText("涓嶅悎鏍尖垜8" + index + ((i - (dd == 0 ? cc : dd)) / (angles + 2))); } else { - textRenderData.setText("涓嶅垽瀹氣垜8" + index+ ((i - (dd == 0 ? cc : dd)) / (angles + 2))); + textRenderData.setText("涓嶅垽瀹氣垜8" + index + ((i - (dd == 0 ? cc : dd)) / (angles + 2))); } } renderData.add(textRenderData); @@ -844,13 +915,13 @@ //绔彛 if (j % 2 == 0) { try { - textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 6) / 2 + ((i - (dd == 0 ? cc : dd)) / (angles + 2)) * (ports > 8 ? 4 : (ports + 1) / 2)] + "鈭�5" + i + (j - 6)); + textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 6) / 2 + ((i - (dd == 0 ? cc : dd)) / (angles + 1)) * (ports > 8 ? 4 : (ports + 1) / 2)] + "鈭�5" + i + (j - 6)); } catch (Exception e) { textRenderData.setText(""); } } else { try { - textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 5) / 2 + ((i - (dd == 0 ? cc : dd)) / (angles + 2)) * (ports > 8 ? 4 : (ports + 1) / 2)] + "鈭�5" + i + (j - 5)); + textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 5) / 2 + ((i - (dd == 0 ? cc : dd)) / (angles + 1)) * (ports > 8 ? 4 : (ports + 1) / 2)] + "鈭�5" + i + (j - 5)); } catch (Exception e) { textRenderData.setText(""); } @@ -944,11 +1015,11 @@ } else { //缁撹 if (products.get(0).getInsResult() == 1) { - textRenderData.setText("鍚堟牸鈭�8" + index+ ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1)); + textRenderData.setText("鍚堟牸鈭�8" + index + ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1)); } else if (products.get(0).getInsResult() == 0) { - textRenderData.setText("涓嶅悎鏍尖垜8" + index+ ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1)); + textRenderData.setText("涓嶅悎鏍尖垜8" + index + ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1)); } else { - textRenderData.setText("涓嶅垽瀹氣垜8" + index+ ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1)); + textRenderData.setText("涓嶅垽瀹氣垜8" + index + ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1)); } } renderData.add(textRenderData); @@ -960,12 +1031,16 @@ //鍏朵綑鍒� if ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) % (angles + 1) == 1) { //棰戠偣 - textRenderData.setText(result2s.get((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) / (angles + 1)).getOften() + "鈭�6" + index); + textRenderData.setText(result2s.get((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) / portRow / (angles + 1)).getOften() + "鈭�6" + i + index); } else { //鏈�宸�� - String[] value = result2s.get((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) / (angles + 1)).getValue().split("\\],\\["); + String[] value = result2s.get((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) / portRow / (angles + 2)).getValue().split("\\],\\["); String[] split = value[(i + (angles - 1)) % (angles + 1)].replaceAll("[\\[\\]\"]", "").split(","); - textRenderData.setText(split[(j - 5) + (((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1) * (Math.min(ports, 8)))]); + try { + textRenderData.setText(split[((j - 5) + ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) - 1) / (angles + 1) % portRow)* (Math.min(ports, 8)))]); + } catch (Exception e) { + textRenderData.setText(""); + } } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); @@ -1058,7 +1133,7 @@ //鏈�宸�� String[] value = result2s.get(0).getValue().split("\\],\\["); String[] split = value[(i + (angles - 1)) % (angles + 1)].replaceAll("[\\[\\]\"]", "").split(","); - textRenderData.setText(split[0] + "鈭�7" + i + j); + textRenderData.setText(split[0] + "鈭�7" + i ); } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); @@ -1151,7 +1226,7 @@ //鏈�宸�� String[] value = result2s.get(0).getValue().split("\\],\\["); String[] split = value[(i + (angles - 1)) % (angles + 1)].replaceAll("[\\[\\]\"]", "").split(","); - textRenderData.setText(split[0] + "鈭�7" + i + j); + textRenderData.setText(split[0] + "鈭�7" + i ); } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); @@ -1220,19 +1295,18 @@ paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); - } - else if (j == bb - 1) { + } else if (j == bb - 1) { //鏈�鍚庝竴鍒� if ((i - (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh)) % (angles + 1) == 1) { textRenderData.setText("/"); } else { //缁撹 if (products.get(0).getInsResult() == 1) { - textRenderData.setText("鍚堟牸鈭�8" + index+ ((i - (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh)) / (angles + 2))); + textRenderData.setText("鍚堟牸鈭�8" + index + ((i - (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh)) / (angles + 2))); } else if (products.get(0).getInsResult() == 0) { - textRenderData.setText("涓嶅悎鏍尖垜8" + index+ ((i - (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh)) / (angles + 2))); + textRenderData.setText("涓嶅悎鏍尖垜8" + index + ((i - (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh)) / (angles + 2))); } else { - textRenderData.setText("涓嶅垽瀹氣垜8" + index+ ((i - (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh)) / (angles + 2))); + textRenderData.setText("涓嶅垽瀹氣垜8" + index + ((i - (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh)) / (angles + 2))); } } renderData.add(textRenderData); @@ -1240,8 +1314,7 @@ paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); - } - else { + } else { //鍏朵綑鍒� if ((i - (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh)) % (angles + 1) == 1) { //棰戞 @@ -1313,8 +1386,7 @@ paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); - } - else if (j == 4) { + } else if (j == 4) { //绗簲鍒� if ((i - (mm == 0 ? (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh) : mm)) % (angles + 1) == 1) { //棰戞 @@ -1328,19 +1400,18 @@ paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); - } - else if (j == bb - 1) { + } else if (j == bb - 1) { //鏈�鍚庝竴鍒� if ((i - (mm == 0 ? (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh) : mm)) % (angles + 1) == 1) { textRenderData.setText("/"); } else { //缁撹 if (products.get(0).getInsResult() == 1) { - textRenderData.setText("鍚堟牸鈭�8" + index+ ((i - (mm == 0 ? (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh) : mm)) / (angles + 2))); + textRenderData.setText("鍚堟牸鈭�8" + index + ((i - (mm == 0 ? (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh) : mm)) / (angles + 2))); } else if (products.get(0).getInsResult() == 0) { - textRenderData.setText("涓嶅悎鏍尖垜8" + index+ ((i - (mm == 0 ? (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh) : mm)) / (angles + 2))); + textRenderData.setText("涓嶅悎鏍尖垜8" + index + ((i - (mm == 0 ? (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh) : mm)) / (angles + 2))); } else { - textRenderData.setText("涓嶅垽瀹氣垜8" + index+ ((i - (mm == 0 ? (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh) : mm)) / (angles + 2))); + textRenderData.setText("涓嶅垽瀹氣垜8" + index + ((i - (mm == 0 ? (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh) : mm)) / (angles + 2))); } } renderData.add(textRenderData); @@ -1407,6 +1478,7 @@ table.put("table", tableRenderData); tables.add(table); lable.getAndIncrement(); + index.getAndIncrement(); }); }); String url; @@ -1518,4 +1590,493 @@ insOrderFile.setFileUrl(name); insOrderFileMapper.insert(insOrderFile); } + + //鐢熸垚鎬绘姤鍛� + public void generateReport(Integer orderId, List<InsReportDto1> insReportDto1s) { + LocalDateTime now = LocalDateTime.now(); + InsOrder insOrder = insOrderMapper.selectById(orderId); + //濮旀墭閮ㄩ棬 departLims + String departLims = userMapper.selectDepartLims(insOrder.getPrepareUser()); + //samples鏄繃婊ゆ帀娌℃湁妫�楠岄」鐩殑鏍峰搧 + List<SampleProductDto> samples = insSampleMapper.selectSampleProductListByOrderId(orderId); + String sampleCode = samples.get(0).getSampleCode(); + InsReport insReport = new InsReport(); + insReport.setCode(insOrder.getEntrustCode().replace("WT", "TXJC")); + insReport.setInsOrderId(orderId); + Set<String> standardMethod = new HashSet<>(); + Set<String> deviceSet = new HashSet<>(); + Set<String> models = new HashSet<>(); + + AtomicReference<Integer> productSize = new AtomicReference<>(0); + AtomicReference<Integer> productSize1 = new AtomicReference<>(0); + AtomicReference<Integer> productSize2 = new AtomicReference<>(0); + AtomicReference<Integer> productSize3 = new AtomicReference<>(0); + String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; + samples.forEach(s -> { + models.add(s.getModel()); + standardMethod.addAll(standardMethodListMapper.selectList(Wrappers.<StandardMethodList>lambdaQuery() + .in(StandardMethodList::getId, Arrays.stream(s.getStandardMethodListId().replaceAll("[\\[\\]]", "").split(",")) + .map(String::trim).map(Integer::parseInt).collect(Collectors.toList()))).stream().map(aa -> { + return aa.getCode() + " " + aa.getName(); + }).distinct().collect(Collectors.toList())); + //鎬绘暟 + Long productCount = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getInsSampleId, s.getId())); + productSize.set(productSize.get() + Integer.parseInt(productCount + "")); + //涓嶅垽瀹� + Long productCount1 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getInsSampleId, s.getId()) + .eq(InsProduct::getInsResult, 3)); + productSize1.set(productSize1.get() + Integer.parseInt(productCount1 + "")); + //涓嶅悎鏍� + Long productCount2 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getInsSampleId, s.getId()) + .eq(InsProduct::getInsResult, 0)); + productSize2.set(productSize2.get() + Integer.parseInt(productCount2 + "")); + //鍚堟牸 + Long productCount3 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getInsSampleId, s.getId()) + .eq(InsProduct::getInsResult, 1)); + productSize3.set(productSize3.get() + Integer.parseInt(productCount3 + "")); + //灏嗛」鐩寜鐓х珯鐐硅繘琛屽垎绫� + Map<String, List<InsProduct>> listMap = s.getInsProduct().stream().collect(Collectors.groupingBy(InsProduct::getLaboratory)); + // 鍒涘缓涓�涓� Map 灏嗙珯鐐瑰拰椤圭洰ID鐨勬槧灏勫叧绯� + Map<String, Set<Integer>> labToDeviceMap = new HashMap<>(); + // 鑾峰彇鎵�鏈夌珯鐐圭殑椤圭洰ID 鍒楄〃 + for (Map.Entry<String, List<InsProduct>> entry : listMap.entrySet()) { + Set<Integer> productIds = entry.getValue().stream() + .map(InsProduct::getId) + .collect(Collectors.toSet()); + labToDeviceMap.put(entry.getKey(), productIds); + } + for (InsReportDto1 insReportDto1 : insReportDto1s) { + String laboratory = insReportDto1.getLaboratory(); + if (!labToDeviceMap.containsKey(laboratory)) { + continue; + } + Set<Integer> productIds = labToDeviceMap.get(laboratory); + Integer num = insReportDto1.getNum(); + //鏅�氳瘯楠岀粨鏋滆〃 + List<InsProductResult> insProductResults = insProductResultMapper.selectList( + Wrappers.<InsProductResult>lambdaQuery() + .eq(InsProductResult::getNum, num) + .in(InsProductResult::getInsProductId, productIds)); + for (InsProductResult insProductResult : insProductResults) { + List<JSONObject> jsonObjects = JSON.parseArray(insProductResult.getEquipValue(), JSONObject.class); + for (JSONObject jsonObject : jsonObjects) { + String value = jsonObject.getString("v"); + if (value != null && !value.isEmpty()) { + deviceSet.add(value); + } + } + } + //鐢佃矾璇曢獙缁撴灉琛� + List<InsProductResult2> insProductResult2s = insProductResult2Mapper.selectList( + Wrappers.<InsProductResult2>lambdaQuery() + .eq(InsProductResult2::getNum, num) + .in(InsProductResult2::getInsProductId, productIds)); + for (InsProductResult2 result2 : insProductResult2s) { + String equipValue = result2.getEquipValue(); + if (equipValue != null && !equipValue.isEmpty()) { + deviceSet.add(equipValue); + } + } + } + }); + + /*妫�楠屾儏鍐典竴瑙堣〃*/ + List<Map<String, String>> tables = null; + List<Map<String, Object>> tables2 = null; + List<Map<String, Object>> tables3 = null; + List<Map<String, Object>> tables4 = null; + Map<String, String> table = null; + Integer indexs = 1; + //鍒ゆ柇鏄惁鏈夌數璺瘯楠�,鐜璇曢獙 + List<String> strings = insReportDto1s.stream().map(InsReportDto1::getLaboratory).distinct().collect(Collectors.toList()); + if (strings.contains("鐢佃矾璇曢獙")) { + strings.remove("鐢佃矾璇曢獙"); + strings.remove("杩戝満"); + strings.remove("杩滃満"); + List<Integer> productIdes = samples.stream().flatMap(sampleProductDto -> + sampleProductDto.getInsProduct().stream().map(InsProduct::getId)).collect(Collectors.toList()); + List<Integer> collect = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery() + .in(InsProductResult2::getInsProductId, productIdes)) + .stream().map(InsProductResult2::getResult).distinct().collect(Collectors.toList()); + //濡傛灉鏈夌幆澧冭瘯楠� + if (strings.size() > 0) { + table.put("indexs", indexs + ""); + table.put("term", "鐜璇曢獙鍓嶇數璺弬鏁�"); + if (collect.contains(0)) { + table.put("result", "涓嶅悎鏍�"); + } else { + table.put("result", "鍚堟牸"); + } + tables.add(table); + indexs += 1; + + table.put("indexs", "鐜璇曢獙:" + String.join("銆�", strings) + "鈭�1"); + table.put("term", "鐜璇曢獙:" + String.join("銆�", strings) + "鈭�1"); + table.put("result", "鐜璇曢獙:" + String.join("銆�", strings) + "鈭�1"); + tables.add(table); + + table.put("indexs", indexs + ""); + table.put("term", "鐜璇曢獙鍚庣數璺弬鏁�"); + if (collect.contains(0)) { + table.put("result", "涓嶅悎鏍�"); + } else { + table.put("result", "鍚堟牸"); + } + tables.add(table); + indexs += 1; + + /*鍒涘缓鐜璇曢獙鏉′欢琛�2*(椤圭洰鏁�+1)*/ + List<InsProduct> products = samples.stream().flatMap(sampleProductDto -> sampleProductDto.getInsProduct().stream() + .filter(insProduct -> !insProduct.getInspectionItem().equals("鐢佃矾璇曢獙")) + .filter(insProduct -> !insProduct.getInspectionItem().equals("杈愬皠璇曢獙"))).collect(Collectors.toList()); + List<RowRenderData> rows = new ArrayList<>(); + //琛屾暟 + for (int i = 0; i < products.size() + 1; i++) { + RowRenderData rowRenderData = new RowRenderData(); + RowStyle rowStyle = new RowStyle(); + rowStyle.setHeight(40); + rowRenderData.setRowStyle(rowStyle); + List<CellRenderData> cells = new ArrayList<>(); + //鍒楁暟 + for (int j = 0; j < 2; 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) { + //绗竴鍒� + textRenderData.setText("椤圭洰"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } else { + //绗簩鍒� + textRenderData.setText("璇曢獙瑕佹眰"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + } else { + //鍏朵綑琛� + if (j == 0) { + //绗竴鍒� + textRenderData.setText(products.get(i - 1).getInspectionItemSubclass()); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } else { + textRenderData.setText(products.get(i - 1).getTell()); + 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); + int countSize = tableRenderData.getRows().get(0).getCells().size(); + for (RowRenderData row : tableRenderData.getRows()) { + if (row.getCells().size() != countSize) { + throw new ErrorException("姣忚鍗曞厓鏍间笉鐩哥瓑"); + } + } + TableStyle tableStyle = new TableStyle(); + tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH); + tableStyle.setAlign(TableRowAlign.CENTER); + BorderStyle borderStyle = new BorderStyle(); + borderStyle.setColor("000000"); + borderStyle.setType(XWPFTable.XWPFBorderType.THICK); + borderStyle.setSize(4); + tableStyle.setLeftBorder(borderStyle); + tableStyle.setTopBorder(borderStyle); + tableStyle.setRightBorder(borderStyle); + tableStyle.setBottomBorder(borderStyle); + tableRenderData.setTableStyle(tableStyle); + Map<String, Object> table4 = new HashMap<>(); + table4.put("table4", tableRenderData); + tables4.add(table4); + } else { + table.put("indexs", indexs + ""); + table.put("term", "鐢佃矾鍙傛暟"); + if (collect.contains(0)) { + table.put("result", "涓嶅悎鏍�"); + } else { + table.put("result", "鍚堟牸"); + } + tables.add(table); + indexs += 1; + } + /*鎷兼帴鍕鹃�夌殑鐢佃矾璇曢獙琛�*/ + } + if (strings.contains("杩戝満") || strings.contains("杩滃満")) { + table.put("indexs", indexs + ""); + table.put("term", "杈愬皠鏂瑰悜鍥惧弬鏁�"); + table.put("result", "涓嶅垽瀹�"); + tables.add(table); + } + + + 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("锛沑n").append(s); + } + standardMethod2.append("锛沑n").append("GB/T 9410-2008 銆婄Щ鍔ㄩ�氫俊澶╃嚎閫氱敤鎶�鏈鑼冦��"); + standardMethod2.replace(0, 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; + List<Map<String, String>> sampleList = insSampleMapper.selectSampleList(orderId); + 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()); + + /*鑾峰彇闄勪欢鍥剧墖绫诲瀷*/ + 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; + List<SampleProductDto> finalSamples = samples; + XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render( + new HashMap<String, Object>() {{ + put("order", insOrder); + put("report", insReport); + put("departLims", departLims); + put("sampleCode", sampleCode); + put("environment", finalEnvironment); + put("custom", custom); + put("sampleSize", finalSamples.size()); + put("standardMethod", (standardMethod2.toString().equals("null") ? "" : standardMethod2)); + put("deviceList", finalDeviceList); + put("tables", tables); + put("tables2", tables2); + put("tables3", tables3); + put("tables4", tables4); + put("sampleList", sampleList); + put("twoCode", Pictures.ofLocal(codePath).create()); + put("models", finalModelStr.replace(",", "")); + put("productSize", productSize); + put("productSize1", productSize1); + put("productSize2", productSize2); + put("productSize3", productSize3); + 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()); + }}); + 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(org.apache.poi.xwpf.usermodel.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(org.apache.poi.xwpf.usermodel.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); + } + } } diff --git a/inspect-server/src/main/resources/mapper/InsOrderFileMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderFileMapper.xml index 9d060b9..3dbe7bd 100644 --- a/inspect-server/src/main/resources/mapper/InsOrderFileMapper.xml +++ b/inspect-server/src/main/resources/mapper/InsOrderFileMapper.xml @@ -17,7 +17,8 @@ select A.* from (select iof.*, name from ins_order_file iof - left join user u on iof.create_user = u.id) A + left join user u on iof.create_user = u.id + where ins_order_id=#{insOrderId}) A <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''"> ${ew.customSqlSegment} </if> diff --git a/inspect-server/src/main/resources/mapper/InsOrderUserMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderUserMapper.xml index 2750726..fa205eb 100644 --- a/inspect-server/src/main/resources/mapper/InsOrderUserMapper.xml +++ b/inspect-server/src/main/resources/mapper/InsOrderUserMapper.xml @@ -17,5 +17,6 @@ select iou.*, name submitUserName from ins_order_user iou left join user on submit_user = user.id + where ins_order_state_id=#{insOrderStateId} </select> </mapper> diff --git a/inspect-server/src/main/resources/mapper/InsSampleMapper.xml b/inspect-server/src/main/resources/mapper/InsSampleMapper.xml index 31aa13f..a52c2d0 100644 --- a/inspect-server/src/main/resources/mapper/InsSampleMapper.xml +++ b/inspect-server/src/main/resources/mapper/InsSampleMapper.xml @@ -367,6 +367,7 @@ and state = 1 and ip.son_laboratory = #{laboratory} and ios.laboratory = #{laboratory} + and (ipr2.num is null or ipr.num is null) </select> <select id="getSampleEn" resultType="java.lang.String"> select name_en @@ -950,4 +951,8 @@ and state = 1 and ins_order_id = #{insOrderId} </select> + <select id="selectList1" resultType="com.yuanchu.mom.dto.SampleProductDto"> + select * from ins_sample where ins_order_id=#{id +} + </select> </mapper> diff --git a/inspect-server/src/main/resources/static/report-template.docx b/inspect-server/src/main/resources/static/report-template.docx index 9c46fcd..8052ed3 100644 --- a/inspect-server/src/main/resources/static/report-template.docx +++ b/inspect-server/src/main/resources/static/report-template.docx Binary files differ diff --git a/system-run/src/main/resources/application-dev.yml b/system-run/src/main/resources/application-dev.yml index 2b97af2..43cd9bb 100644 --- a/system-run/src/main/resources/application-dev.yml +++ b/system-run/src/main/resources/application-dev.yml @@ -42,10 +42,8 @@ type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver # url: jdbc:mysql://localhost:3306/11?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 -# url: jdbc:mysql://10.1.200.86:3306/center-lims?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 -# url: jdbc:mysql://10.16.173.59:3306/center-lims?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 url: jdbc:mysql://10.1.13.77:3306/center-lims?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 -# url: jdbc:mysql://114.132.189.42:9004/center-lims?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 +# url: jdbc:mysql://192.168.22.29:3306/center-lims?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 username: remote_user # username: root password: zttZTT123! @@ -76,6 +74,7 @@ port: 6379 # redis璁块棶瀵嗙爜锛堥粯璁や负绌猴級 password: 123456 +# password: zttZTT123! # redis杩炴帴瓒呮椂鏃堕棿锛堝崟浣嶆绉掞級 timeout: 50 # redis杩炴帴姹犻厤缃� -- Gitblit v1.9.3