cnas-device/src/main/java/com/ruoyi/device/controller/DeviceController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
cnas-device/src/main/java/com/ruoyi/device/excel/upload/DeviceListener.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
cnas-device/src/main/java/com/ruoyi/device/pojo/Device.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
cnas-device/src/main/java/com/ruoyi/device/service/DeviceService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-admin/src/main/resources/application-druid.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceController.java
@@ -1,17 +1,22 @@ package com.ruoyi.device.controller; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.excel.StructureTestObjectData; import com.ruoyi.basic.excel.StructureTestObjectListener; import com.ruoyi.common.core.domain.Result; import com.ruoyi.device.dto.DataConfigDto; import com.ruoyi.device.dto.DeviceCollectionDto; import com.ruoyi.device.dto.DeviceDto; import com.ruoyi.device.excel.upload.DeviceListener; import com.ruoyi.device.pojo.DataConfig; import com.ruoyi.device.pojo.Device; import com.ruoyi.device.service.DataConfigService; import com.ruoyi.device.service.DeviceService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.codec.digest.DigestUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; @@ -21,12 +26,11 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.*; import java.util.stream.Collectors; /** @@ -196,4 +200,20 @@ public void exportEquipmentDetails(HttpServletResponse response) throws Exception { deviceService.exportEquipmentDetails(response); } /** * å¯¼å ¥è®¾å¤ * @return */ @ApiOperation(value = "å¯¼å ¥è®¾å¤") @PostMapping("/importDevice") public Result importDevice(@RequestParam("file") MultipartFile file){ try { EasyExcel.read(file.getInputStream(), Device.class, new DeviceListener(deviceService)).sheet().doRead(); } catch (IOException e) { // è¿éå¯ä»¥æ ¹æ®å®é æ åµè¿è¡æ´å®åçé误å¤çï¼æ¯å¦è®°å½æ¥å¿ç System.err.println("读åæä»¶æ¶åçé误: " + e.getMessage()); } return Result.success(); } } cnas-device/src/main/java/com/ruoyi/device/excel/upload/DeviceListener.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,45 @@ package com.ruoyi.device.excel.upload; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.ruoyi.basic.excel.StructureTestObjectData; import com.ruoyi.basic.service.ProductService; import com.ruoyi.device.pojo.Device; import com.ruoyi.device.service.DeviceService; import com.ruoyi.performance.dto.AuxiliaryCorrectionHoursDto; import com.ruoyi.performance.service.AuxiliaryCorrectionHoursService; import java.util.ArrayList; import java.util.List; public class DeviceListener extends AnalysisEventListener<Device> { private static final int BATCH_COUNT = 1000; List<Device> list = new ArrayList<>(); private DeviceService deviceService; public DeviceListener(DeviceService deviceService) { this.deviceService = deviceService; } @Override public void invoke(Device data, AnalysisContext analysisContext) { list.add(data); if (list.size() >= BATCH_COUNT) { save(); list.clear(); } } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { save(); } private void save() { deviceService.importExcel(list); } } cnas-device/src/main/java/com/ruoyi/device/pojo/Device.java
@@ -1,9 +1,13 @@ package com.ruoyi.device.pojo; import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.math.BigDecimal; @@ -21,64 +25,99 @@ private Integer id; @ApiModelProperty(value = "设å¤åç§°") @ExcelProperty(value = "设å¤åç§°") private String deviceName; @ApiModelProperty(value = "en设å¤åç§°") @ExcelProperty(value = "设å¤åç§°EN") private String enDeviceName; @ApiModelProperty(value = "è§æ ¼åå·") @ExcelProperty(value = "è§æ ¼åå·") private String specificationModel; @ApiModelProperty(value = "ç产åå®¶") @ExcelProperty(value = "ç产åå®¶") private String manufacturer; @ApiModelProperty(value = "åºåç¼å·") @ExcelProperty(value = "åºåç¼å·") private String factoryNo; @ApiModelProperty(value = "管çç¼å·") @ExcelProperty(value = "管çç¼å·") private String managementNumber; @ApiModelProperty(value = "ææ¯ææ ") @ExcelProperty(value = "ææ¯ææ ") private String technicalIndicators; @ApiModelProperty(value = "è´ç½®æ¥æ") @ExcelProperty(value = "è´ç½®æ¥æ") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime acquisitionDate; @ApiModelProperty(value = "æ ¡åæææ¥æ") @ExcelProperty(value = "å¯ç¨æ¥æ") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime activationDate; @ApiModelProperty(value = "管ç人Id") private Integer equipmentManager; @TableField(select = false,exist = false) @ExcelProperty(value = "管ç人") private String equipmentManagerName; @ApiModelProperty(value = "åæ¾ç¹") @ExcelProperty(value = "åæ¾ç¹") private String storagePoint; @ApiModelProperty(value = "æå±é¨é¨Id") private Integer subordinateDepartmentsId; @TableField(select = false,exist = false) @ExcelProperty(value = "æå±é¨é¨") private String subordinateDepartments; @ApiModelProperty(value = "æ£éªé¡¹ç®Id") private String insProductIds; @ApiModelProperty(value = "æ ¡åæå¡æºæ") @ExcelProperty(value = "æ ¡åæå¡æºæ") private String calibrationServices; @ApiModelProperty(value = "æè¿æ ¡åæ¥æ") @ExcelProperty(value = "æè¿æ ¡åæ¥æ") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime lastCalibrationDate; @ApiModelProperty(value = "䏿¬¡æ ¡åæ¥æ") @ExcelProperty(value = "䏿¬¡æ ¡åæ¥æ") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime nextCalibrationDate; @ApiModelProperty(value = "设å¤ç±»å") @ExcelProperty(value = "设å¤åç±»") private String largeCategory; @ApiModelProperty(value = "åä»·") @ExcelProperty(value = "åä»·") private BigDecimal unitPrice; @ApiModelProperty(value = "设å¤ç¶æ") private Integer deviceStatus; @TableField(select = false,exist = false) @ExcelProperty(value = "设å¤ç¶æ") private String deviceStatusName; @ApiModelProperty(value = "æ ¡å卿(æ)") @ExcelProperty(value = "æ ¡å卿(æ)") private String calibrationDate; @ApiModelProperty(value = "å¾çä¸ä¼ ") cnas-device/src/main/java/com/ruoyi/device/service/DeviceService.java
@@ -8,6 +8,7 @@ import com.ruoyi.device.dto.DeviceCollectionDto; import com.ruoyi.device.dto.DeviceDto; import com.ruoyi.device.pojo.Device; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -54,4 +55,11 @@ * @param response */ void exportEquipmentDetails(HttpServletResponse response); /** * å¯¼å ¥è®¾å¤ * @param list * @return */ void importExcel(List<Device> list); } cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
@@ -1,5 +1,6 @@ package com.ruoyi.device.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import com.alibaba.fastjson2.JSON; @@ -12,7 +13,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.ruoyi.basic.mapper.LaboratoryMapper; import com.ruoyi.basic.mapper.StructureItemParameterMapper; import com.ruoyi.basic.pojo.Laboratory; import com.ruoyi.basic.pojo.StructureItemParameter; import com.ruoyi.common.core.domain.Result; import com.ruoyi.common.core.domain.entity.User; @@ -31,12 +34,16 @@ import com.ruoyi.inspect.mapper.InsSampleMapper; import com.ruoyi.inspect.pojo.InsProduct; import com.ruoyi.inspect.util.HackLoopTableRenderPolicy; import com.ruoyi.performance.dto.AuxiliaryCorrectionHoursDto; import com.ruoyi.performance.pojo.AuxiliaryCorrectionHours; import com.ruoyi.system.mapper.SysDictDataMapper; import com.ruoyi.system.mapper.UserMapper; import lombok.AllArgsConstructor; import org.apache.logging.log4j.util.Strings; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -47,6 +54,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -59,6 +67,10 @@ private DeviceMapper deviceMapper; private UserMapper userMapper; private LaboratoryMapper laboratoryMapper; private SysDictDataMapper sysDictDataMapper; private StructureItemParameterMapper structureItemParameterMapper; @@ -496,4 +508,50 @@ throw new RuntimeException("导åºå¤±è´¥"); } } //å¯¼å ¥è®¾å¤ @Override public void importExcel(List<Device> list){ if (CollectionUtil.isEmpty(list)) { return; } List<Device> deviceList = new ArrayList<>(); List<Device> devices = new ArrayList<>(); for (Device device : list) { Device device1 = deviceMapper.selectOne(Wrappers.<Device>lambdaQuery() .eq(Device::getDeviceName, device.getDeviceName()) .eq(Device::getSpecificationModel, device.getSpecificationModel()) .eq(Device::getManagementNumber, device.getManagementNumber())); //管ç人 if (ObjectUtils.isNotEmpty(device.getEquipmentManagerName())){ //æ¥å¯¹åºç®¡ç人 User user = userMapper.selectOne(Wrappers.<User>lambdaQuery() .eq(User::getName, device.getEquipmentManagerName())); device.setEquipmentManager(user.getId()); } //æå±é¨é¨ if (ObjectUtils.isNotEmpty(device.getSubordinateDepartments())){ //æ¥å¯¹åºæå±é¨é¨ Laboratory laboratory = laboratoryMapper.selectOne(Wrappers.<Laboratory>lambdaQuery() .eq(Laboratory::getLaboratoryName,device.getSubordinateDepartments())); device.setSubordinateDepartmentsId(laboratory.getId()); } //设å¤ç¶æ if (ObjectUtils.isNotEmpty(device.getDeviceStatusName())){ //æ¥åå ¸å¯¹åºçå¼ String status = sysDictDataMapper.selectDictValue("device_status", device.getDeviceStatusName()); device.setDeviceStatus(Integer.parseInt(status)); } if (ObjectUtils.isNotEmpty(device1)) { devices.add(device1); } else { deviceList.add(device); } } //æ¹éæ°å¢ saveBatch(deviceList); //æ¹éä¿®æ¹ updateBatchById(devices); } } ruoyi-admin/src/main/resources/application-druid.yml
@@ -135,14 +135,14 @@ # 人äºç³»ç» personnel: code: appId: appSecret: companies: simple: password: department: person: code: https://ztt-sso.ztt.cn/oauth2/token appId: f6f3d70f-3666-4d3d-b9c5-430de3f6007c appSecret: a18923496542302066b0a7bec993a4e2 companies: https://ztt-connector.ztt.cn/api/org/v1/companies simple: https://ztt-connector.ztt.cn/api/org/v1/employees/simple?companyId= password: https://ztt-connector.ztt.cn/api/org/v1/employees/original_pwd/ department: https://ztt-connector.ztt.cn/api/org/v1/companies/companyId/departments person: https://ztt-connector.ztt.cn/api/org/v1/employees/simple/ # ä¼ä¸å¾®ä¿¡éç¥ wechat: ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
@@ -37,6 +37,15 @@ public String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue); /** * æ ¹æ®åå ¸ç±»åååå ¸é®æ¥è¯¢åå ¸æ°æ®ä¿¡æ¯ * * @param dictType åå ¸ç±»å * @param dictLabel åå ¸é® * @return åå ¸æ ç¾ */ public String selectDictValue(@Param("dictType") String dictType, @Param("dictLabel") String dictLabel); /** * æ ¹æ®åå ¸æ°æ®IDæ¥è¯¢ä¿¡æ¯ * * @param dictCode åå ¸æ°æ®ID ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml
@@ -121,4 +121,8 @@ ) </insert> <select id="selectDictValue" resultType="java.lang.String"> select dict_label from sys_dict_data where dict_type = #{dictType} and dict_label = #{dictLabel} </select> </mapper>