cnas-server/src/main/java/com/yuanchu/mom/controller/CapacityScopeController.java
@@ -376,6 +376,214 @@ } @ValueClassify(value = "能力范围") @ApiOperation(value = "装备导入检验项目") @PostMapping("/importEquipData") @Transactional public Result importEquipData(@RequestParam("file") MultipartFile file) throws Exception { InputStream inputStream = file.getInputStream(); List<StructureItemParameter> lists = new ArrayList<>(); AtomicReference<String> sample = new AtomicReference<>(); ExcelUtil.readBySax(inputStream, -1, (i, l, list1) -> { if (l == 1) { sample.set(list1.get(1) + ""); } if (l >= 1) { StructureItemParameter str = new StructureItemParameter(); if (list1.get(1) == null) { str.setSample(null); } else { String brand = (String) list1.get(1); StringBuilder builder = new StringBuilder(); builder.append("["); if (ObjectUtil.isNotEmpty(list1.get(2))) { String production = (String) list1.get(2); if (!production.contains(";")) { builder.append(String.format("[\"%s\",\"%s\"]", brand, production)); } else { Arrays.stream(production.split(";")).forEach(item -> { builder.append(String.format("[\"%s\",\"%s\"],", brand, item)); }); builder.deleteCharAt(builder.length() - 1); } } else { builder.append("["); builder.append(String.format("\"%s\"", brand)); builder.append("]"); } builder.append("]"); str.setSample(builder.toString()); } str.setInspectionItem(list1.get(4).toString()); if (list1.get(5) != null) { str.setInspectionItemEn(list1.get(5).toString()); } if (list1.get(6) == null) { str.setInspectionItemSubclass(null); } else { str.setInspectionItemSubclass(list1.get(6).toString()); } if (list1.get(7) == null) { str.setInspectionItemSubclassEn(null); } else { str.setInspectionItemSubclassEn(String.valueOf(list1.get(7).toString())); } StructureItemParameter db_str; if (StringUtils.isEmpty(str.getInspectionItemSubclass())) { // 比较两个条件 try { db_str = structureItemParameterService.getOne(Wrappers.lambdaQuery(StructureItemParameter.class) .eq(StructureItemParameter::getInspectionItem, str.getInspectionItem()) .eq(StructureItemParameter::getSample, str.getSample()) .last("limit 1") ); } catch (Exception e) { throw new ErrorException("重复查询:" + str.getInspectionItem()); } } else { try { db_str = structureItemParameterService.getOne(Wrappers.lambdaQuery(StructureItemParameter.class) .eq(StructureItemParameter::getInspectionItem, str.getInspectionItem()) .eq(StructureItemParameter::getSample, str.getSample()) .eq(StructureItemParameter::getInspectionItemSubclass, str.getInspectionItemSubclass()) .last("limit 1") ); } catch (Exception e) { throw new ErrorException("重复查询:" + str.getInspectionItem() + " " + str.getInspectionItemSubclass()); } } if (ObjectUtils.isNotEmpty(db_str)) { str.setId(db_str.getId()); } if (list1.get(8) == null) { str.setMethod(null); } else { StringBuffer buffer = new StringBuffer(); String input = list1.get(8).toString(); buffer.append("["); String[] values = input.split(";"); for (String value : values) { buffer.append("\"").append(value.trim()).append("\","); } buffer.deleteCharAt(buffer.length() - 1); buffer.append("]"); str.setMethod(buffer.toString()); } if (list1.get(9) == null) { str.setSonLaboratory(null); } else { str.setSonLaboratory(list1.get(9).toString()); } if (list1.get(10) == null) { str.setUnit(null); } else { str.setUnit(list1.get(10).toString()); } if (list1.get(11) == null) { str.setAskTell(null); } else { str.setAskTell(list1.get(11).toString()); } if (list1.get(12) == null) { str.setAsk(null); } else { str.setAsk(list1.get(12).toString()); } if (list1.get(13) == null) { str.setPrice(null); } else { str.setPrice(list1.get(13) + ""); } if (list1.get(14) == null) { str.setManHour(null); } else { str.setManHour(Double.valueOf(list1.get(14).toString())); } if (list1.get(15) == null) { str.setManHourGroup(null); } else { str.setManHourGroup(list1.get(15).toString()); } if (list1.get(16) == null) { str.setManDay(null); } else { str.setManDay(Integer.valueOf(list1.get(16).toString())); } String jy; if (list1.get(17).toString().equals("非采集类型")) { jy = "0"; } else { jy = "1"; } str.setInspectionItemType(jy); String validateValueType = list1.get(18).toString(); if (StringUtils.isNotBlank(validateValueType)) { Enums enums = enumService.getOne(Wrappers.lambdaQuery(Enums.class) .eq(Enums::getCategory, "检验值类型") .eq(Enums::getLabel, validateValueType)); str.setInspectionValueType(enums.getValue()); } int bsm; if (list1.get(19).toString().equals("否")) { bsm = 0; } else { bsm = 1; } str.setBsm(bsm + ""); if (list1.get(20) != null) { str.setDic(list1.get(20) + ""); } else { str.setDic(null); } StandardTemplate standTempIdByName = standardTemplateService.getStandTempIdByName(String.valueOf(list1.get(21))); if (standTempIdByName != null) { str.setTemplateId(standTempIdByName.getId()); } else { str.setTemplateId(null); } try { if (list1.get(22) != null && list1.get(22) != "") { str.setInspectionItemClass(list1.get(22) + ""); } else { str.setInspectionItemClass(null); } } catch (Exception e) { } try { if (list1.get(23) != null && list1.get(23) != "") { str.setInspectionItemClassEn(list1.get(23) + ""); } else { str.setInspectionItemClassEn(null); } } catch (Exception e) { } try { if (list1.get(24) != null) { str.setLaboratory(list1.get(24) + ""); } } catch (Exception e) { } lists.add(str); } }); structureItemParameterService.removeNoSample(sample.get()); // 如果数据库里面的数据存在那么就执行更新拷贝操作 try { structureItemParameterService.saveOrUpdateBatch(lists); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("服务端报错啦!!!"); } return Result.success(); } @ValueClassify(value = "能力范围") @ApiOperation(value = "导入检验对象") @PostMapping("/importExcel") public Result importExcel(@RequestParam("file") MultipartFile file) { @@ -386,4 +594,4 @@ } return Result.success(); } } } cnas-server/src/main/java/com/yuanchu/mom/pojo/Device.java
@@ -128,10 +128,10 @@ @ApiModelProperty("存储地址") private String storageUrl; @ApiModelProperty("设备IP") private String ip; @ApiModelProperty("是否为数采设备") @TableField(exist = false) private Boolean isItADataAcquisitionDevice; @ApiModelProperty("设备IP") private String ip; } cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
@@ -116,11 +116,6 @@ String[] ids = device.getInsProductIds().split(","); for (String i : ids) { if (i.equals(id + "")) { if (ObjectUtils.isEmpty(device.getFileType()) || ObjectUtils.isEmpty(device.getCollectUrl())) { device.setIsItADataAcquisitionDevice(false); } else { device.setIsItADataAcquisitionDevice(true); } devices2.add(device); break; } @@ -138,7 +133,7 @@ public Result<?> dataAcquisition(HttpServletRequest request, Integer id, String entrustCode, String sampleCode) { String ipAddress = request.getRemoteAddr(); // 防止回环地址变为IPv6 String ip = ipAddress.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ipAddress; String ip = ipAddress.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ipAddress; List<Device> device = baseMapper.selectList(Wrappers.<Device>lambdaQuery() .eq(Device::getIp, ip)); if (ObjectUtils.isEmpty(device)) { cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java
@@ -84,10 +84,10 @@ } // 如果存在存储地址,则移动地址 if (ObjectUtils.isNotEmpty(device.getStorageUrl())) { String s = HTTP + ip + MOVEFILE + "?startFilePath=" + device.getCollectUrl() + "&endFilePath=" + device.getStorageUrl(); String s = HTTP + ip + MOVEFILE + "?startFilePath=" + device.getCollectUrl() + "&endFilePath=" + device.getStorageUrl() + "&fileType=" + device.getFileType(); String storageUrlResult = HttpUtil.get(s); JSONObject storageUrlResultJson = JSON.parseObject(storageUrlResult); if (Objects.equals(storageUrlResultJson.get("code"), 1)) { if (Objects.equals(storageUrlResultJson.get("code"), 0)) { if (ObjectUtils.isEmpty(storageUrlResultJson.get("msg"))) { throw new ErrorException("存储地址错误,可能文件路径配置错误!"); } else { cnas-server/src/main/resources/mapper/DeviceMapper.xml
@@ -119,7 +119,8 @@ </select> <select id="getInspectionItemSubclass" resultType="java.lang.String"> SELECT ip.inspection_item_subclass FROM ins_product ip SELECT if(ip.inspection_item_subclass is not null and ip.inspection_item_subclass != '', ip.inspection_item_subclass, ip.inspection_item) inspection_item_subclass FROM ins_product ip where ip.ins_sample_id = #{id} </select> </mapper> inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
@@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.Map; @@ -80,8 +81,8 @@ @ValueAuth @PostMapping("/getInsProduct") @ApiOperation("获取检验项目和模板内容") public Result<?> getInsProduct(Integer id, Integer type, String laboratory) { return Result.success(insOrderPlanService.getInsProduct(id, type, laboratory)); public Result<?> getInsProduct(Integer id, Integer type, String laboratory, HttpServletRequest request) { return Result.success(insOrderPlanService.getInsProduct(id, type, laboratory, request)); } @ValueClassify("检验任务") inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderMapper.java
@@ -53,4 +53,6 @@ List<Map<Integer, Object>> selectReportModelByOrderId(@Param("id") Integer id, @Param("laboratory") String laboratory); String seldepLimsId(int depLimsId); Map<String, Object> getDeviceMessage(@Param("ip")String ip, @Param("inspectionItem") String inspectionItem); } inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult.java
@@ -1,15 +1,13 @@ package com.yuanchu.mom.pojo; import com.baomidou.mybatisplus.annotation.*; import java.io.Serializable; import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; /** * 检验项目的结果 * @TableName ins_product_result inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
@@ -6,6 +6,7 @@ import com.yuanchu.mom.pojo.InsProduct; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Map; @@ -29,7 +30,7 @@ int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode, String sampleCode); List<InsProduct> getInsProduct(Integer id, Integer type, String laboratory); List<InsProduct> getInsProduct(Integer id, Integer type, String laboratory, HttpServletRequest request); List<String> checkSubmitPlan(Integer orderId, String laboratory); inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
@@ -3,7 +3,6 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Console; import cn.hutool.core.lang.UUID; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -22,10 +21,11 @@ import com.deepoove.poi.data.*; import com.deepoove.poi.data.style.*; import com.deepoove.poi.util.TableTools; import com.deepoove.poi.xwpf.WidthScalePattern; import com.yuanchu.mom.common.GetLook; import com.yuanchu.mom.common.PrintChina; import com.yuanchu.mom.dto.*; import com.yuanchu.mom.dto.ExcelDto; import com.yuanchu.mom.dto.InsOrderPlanDTO; import com.yuanchu.mom.dto.SampleProductDto; import com.yuanchu.mom.exception.ErrorException; import com.yuanchu.mom.mapper.*; import com.yuanchu.mom.pojo.*; @@ -34,22 +34,17 @@ import com.yuanchu.mom.utils.MatrixToImageWriter; import com.yuanchu.mom.utils.QueryWrappers; import com.yuanchu.mom.utils.RedisUtil; import com.yuanchu.mom.vo.InsOrderPlanTaskSwitchVo; import com.yuanchu.mom.vo.InsOrderPlanVO; import com.yuanchu.mom.vo.ProductVo; import com.yuanchu.mom.vo.SampleVo; import com.yuanchu.mom.vo.*; import org.apache.commons.io.IOUtils; import org.apache.poi.xwpf.usermodel.*; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth; 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.math.BigInteger; import java.nio.file.Files; import java.nio.file.Paths; import java.text.SimpleDateFormat; @@ -132,7 +127,6 @@ @Resource private InsOrderFileMapper insOrderFileMapper; @Override public Map<String, Object> selectInsOrderPlanList(Page page, InsOrderPlanDTO insOrderPlanDTO) { Map<String, Object> map = new HashMap<>(); @@ -197,7 +191,7 @@ } @Override public List<InsProduct> getInsProduct(Integer id, Integer type, String laboratory) { public List<InsProduct> getInsProduct(Integer id, Integer type, String laboratory, HttpServletRequest request) { List<InsProduct> insProducts = new ArrayList<>(); switch (type) { case 0: @@ -210,6 +204,9 @@ insProducts = insSampleMapper.getInsProduct3(id); break; } // 数采新增 getDeviceMessage(insProducts, request); Set<Integer> set = new HashSet<>(); Map<Integer, String> map2 = new HashMap<>(); if (BeanUtil.isEmpty(insProducts)) return null; @@ -217,6 +214,30 @@ return insProducts; } private List<InsProduct> getDeviceMessage(List<InsProduct> insProducts, HttpServletRequest request) { String ipAddress = request.getRemoteAddr(); // 防止回环地址变为IPv6 String ip = ipAddress.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ipAddress; insProducts.forEach(i -> { Map<String, Object> devices = baseMapper.getDeviceMessage(ip, i.getInspectionItem()); if (ObjectUtils.isNotEmpty(devices)) { InsProductResult insProductResult = i.getInsProductResult(); List<Object> list = new ArrayList<>(); Map<Object, Object> hashMap = new HashMap<>(); hashMap.put("v", devices.get("device_name")); list.add(hashMap); insProductResult.setEquipName(JSON.toJSON(list).toString()); List<Object> listValue = new ArrayList<>(); Map<Object, Object> hashMapValue = new HashMap<>(); hashMapValue.put("v", devices.get("management_number")); listValue.add(hashMapValue); insProductResult.setEquipName(JSON.toJSON(list).toString()); insProductResult.setEquipValue(JSON.toJSON(listValue).toString()); } }); return insProducts; } @Override public List<String> checkSubmitPlan(Integer orderId, String laboratory) { List<String> collect = new ArrayList<>(); inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java
@@ -68,7 +68,12 @@ @Override @Transactional(rollbackFor = Exception.class) public int addStandardTree(StandardTree standardTree) { StandardTree tree = standardTreeMapper.selectOne(Wrappers.<StandardTree>lambdaQuery().eq(StandardTree::getModel, standardTree.getModel())); StandardTree tree = standardTreeMapper.selectOne(Wrappers.<StandardTree>lambdaQuery() .eq(StandardTree::getFactory, standardTree.getFactory()) .eq(StandardTree::getLaboratory, standardTree.getLaboratory()) .eq(StandardTree::getSampleType, standardTree.getSampleType()) .eq(StandardTree::getSample, standardTree.getSample()) .eq(StandardTree::getModel, standardTree.getModel())); if (tree != null) { throw new ErrorException("该型号已存在"); } inspect-server/src/main/resources/mapper/InsOrderMapper.xml
@@ -456,4 +456,12 @@ from department_lims where id = #{depLimsId} </select> <select id="getDeviceMessage" resultType="java.util.Map"> select d.* from device d, structure_item_parameter sip where d.ip = #{ip} and sip.inspection_item = #{inspectionItem} limit 1 </select> </mapper>