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
@@ -6,14 +6,14 @@ /** * åå ¸è¡¨ æ°æ®å± * * * @author ruoyi */ public interface SysDictDataMapper { /** * æ ¹æ®æ¡ä»¶å页æ¥è¯¢åå ¸æ°æ® * * * @param dictData åå ¸æ°æ®ä¿¡æ¯ * @return åå ¸æ°æ®éåä¿¡æ¯ */ @@ -21,7 +21,7 @@ /** * æ ¹æ®åå ¸ç±»åæ¥è¯¢åå ¸æ°æ® * * * @param dictType åå ¸ç±»å * @return åå ¸æ°æ®éåä¿¡æ¯ */ @@ -29,7 +29,7 @@ /** * æ ¹æ®åå ¸ç±»åååå ¸é®å¼æ¥è¯¢åå ¸æ°æ®ä¿¡æ¯ * * * @param dictType åå ¸ç±»å * @param dictValue åå ¸é®å¼ * @return åå ¸æ ç¾ @@ -37,8 +37,17 @@ 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 * @return åå ¸æ°æ® */ @@ -46,7 +55,7 @@ /** * æ¥è¯¢åå ¸æ°æ® * * * @param dictType åå ¸ç±»å * @return åå ¸æ°æ® */ @@ -54,7 +63,7 @@ /** * éè¿åå ¸IDå é¤åå ¸æ°æ®ä¿¡æ¯ * * * @param dictCode åå ¸æ°æ®ID * @return ç»æ */ @@ -62,7 +71,7 @@ /** * æ¹éå é¤åå ¸æ°æ®ä¿¡æ¯ * * * @param dictCodes éè¦å é¤çåå ¸æ°æ®ID * @return ç»æ */ @@ -70,7 +79,7 @@ /** * æ°å¢åå ¸æ°æ®ä¿¡æ¯ * * * @param dictData åå ¸æ°æ®ä¿¡æ¯ * @return ç»æ */ @@ -78,7 +87,7 @@ /** * ä¿®æ¹åå ¸æ°æ®ä¿¡æ¯ * * * @param dictData åå ¸æ°æ®ä¿¡æ¯ * @return ç»æ */ @@ -86,7 +95,7 @@ /** * åæ¥ä¿®æ¹åå ¸ç±»å * * * @param oldDictType æ§åå ¸ç±»å * @param newDictType æ°æ§åå ¸ç±»å * @return ç»æ ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml
@@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.system.mapper.SysDictDataMapper"> <resultMap type="SysDictData" id="SysDictDataResult"> <id property="dictCode" column="dict_code" /> <result property="dictSort" column="dict_sort" /> @@ -19,9 +19,9 @@ <result property="updateBy" column="update_by" /> <result property="updateTime" column="update_time" /> </resultMap> <sql id="selectDictDataVo"> select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark from sys_dict_data </sql> @@ -40,37 +40,37 @@ </where> order by dict_sort asc </select> <select id="selectDictDataByType" parameterType="String" resultMap="SysDictDataResult"> <include refid="selectDictDataVo"/> where status = '0' and dict_type = #{dictType} order by dict_sort asc </select> <select id="selectDictLabel" resultType="String"> select dict_label from sys_dict_data where dict_type = #{dictType} and dict_value = #{dictValue} </select> <select id="selectDictDataById" parameterType="Long" resultMap="SysDictDataResult"> <include refid="selectDictDataVo"/> where dict_code = #{dictCode} </select> <select id="countDictDataByType" resultType="Integer"> select count(1) from sys_dict_data where dict_type=#{dictType} select count(1) from sys_dict_data where dict_type=#{dictType} </select> <delete id="deleteDictDataById" parameterType="Long"> delete from sys_dict_data where dict_code = #{dictCode} </delete> <delete id="deleteDictDataByIds" parameterType="Long"> delete from sys_dict_data where dict_code in <foreach collection="array" item="dictCode" open="(" separator="," close=")"> #{dictCode} </foreach> </foreach> </delete> <update id="updateDictData" parameterType="SysDictData"> update sys_dict_data <set> @@ -88,11 +88,11 @@ </set> where dict_code = #{dictCode} </update> <update id="updateDictDataType" parameterType="String"> update sys_dict_data set dict_type = #{newDictType} where dict_type = #{oldDictType} </update> <insert id="insertDictData" parameterType="SysDictData"> insert into sys_dict_data( <if test="dictSort != null">dict_sort,</if> @@ -120,5 +120,9 @@ sysdate() ) </insert> </mapper> <select id="selectDictValue" resultType="java.lang.String"> select dict_label from sys_dict_data where dict_type = #{dictType} and dict_label = #{dictLabel} </select> </mapper>