From 03d2740ecb063e39e3453402607eecca048d332d Mon Sep 17 00:00:00 2001 From: zhuo <2089219845@qq.com> Date: 星期六, 22 二月 2025 15:20:19 +0800 Subject: [PATCH] 移植设备停用启用, 设备报废 --- cnas-device/src/main/resources/mapper/DeviceScrappedMapper.xml | 27 cnas-device/src/main/java/com/ruoyi/device/excel/DeviceStateExport.java | 36 + cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java | 86 +++ cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceScrappedMapper.java | 35 + cnas-device/src/main/java/com/ruoyi/device/service/DeviceScrappedService.java | 43 + cnas-device/src/main/java/com/ruoyi/device/dto/DeviceScrappedDto.java | 26 cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java | 24 cnas-device/src/main/resources/static/word/incident-report.docx | 0 cnas-device/src/main/java/com/ruoyi/device/service/DeviceStateService.java | 31 + cnas-device/src/main/resources/static/word/quipment-details.docx | 0 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceBorrowServiceImpl.java | 116 ++++ cnas-device/src/main/resources/static/word/review-examine-record-contrast.docx | 0 cnas-device/src/main/resources/static/word/traceability-management-details.docx | 0 cnas-device/src/main/java/com/ruoyi/device/controller/DeviceStateController.java | 87 +++ cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceLogMapper.java | 9 cnas-device/src/main/resources/static/word/examine-plan-detail.docx | 0 cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceScrapped.java | 105 +++ cnas-device/src/main/java/com/ruoyi/device/controller/DeviceScrappedController.java | 82 ++ cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceStateServiceImpl.java | 159 +++++ cnas-device/src/main/resources/static/word/maintenance-plan.docx | 0 cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceState.java | 107 +++ cnas-device/src/main/java/com/ruoyi/device/controller/DeviceBorrowController.java | 73 ++ cnas-device/src/main/java/com/ruoyi/device/dto/DeviceStateDto.java | 32 + cnas-device/src/main/resources/static/word/device-accident-report.docx | 0 cnas-device/src/main/resources/static/word/maintenance-records.docx | 0 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceScrappedServiceImpl.java | 179 ++++++ cnas-device/src/main/resources/static/word/acceptance-certificate.docx | 0 cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java | 98 +++ cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceBorrowMapper.java | 25 cnas-device/src/main/resources/static/word/device-document.docx | 0 cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceLog.java | 29 + cnas-device/src/main/resources/static/word/device-breakdown-maintenance.docx | 0 cnas-device/src/main/resources/static/word/device-scrapped.docx | 0 cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceStateMapper.java | 20 cnas-device/src/main/resources/static/word/device-calibration-plan.docx | 0 cnas-device/src/main/resources/static/word/use-record.docx | 0 cnas-device/src/main/java/com/ruoyi/device/service/DeviceBorrowService.java | 28 + cnas-device/src/main/resources/mapper/DeviceBorrowMapper.xml | 21 cnas-device/src/main/resources/mapper/DeviceStateMapper.xml | 19 cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceBorrow.java | 133 ++++ cnas-device/src/main/resources/static/word/device-external-apply.docx | 0 cnas-device/src/main/resources/static/word/device-status.docx | 0 cnas-device/src/main/resources/static/word/examine-record.docx | 0 cnas-device/src/main/resources/static/word/device-inspection-record.docx | 0 44 files changed, 1,630 insertions(+), 0 deletions(-) diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceBorrowController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceBorrowController.java new file mode 100644 index 0000000..6ddde96 --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceBorrowController.java @@ -0,0 +1,73 @@ +package com.ruoyi.device.controller; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.domain.Result; +import com.ruoyi.device.pojo.DeviceBorrow; +import com.ruoyi.device.service.DeviceBorrowService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; + +/** + * <p> + * 鍓嶇鎺у埗鍣� + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-09-21 10:53:51 + */ +@RestController +@RequestMapping("/deviceBorrow") +public class DeviceBorrowController { + + @Resource + private DeviceBorrowService deviceBorrowService; + + + //鍒嗛〉 + @PostMapping("/deviceBorrowPage") + public Result deviceBorrowPage(Page page, DeviceBorrow deviceBorrow) throws Exception { + return Result.success(deviceBorrowService.deviceBorrowPage(page, deviceBorrow)); + } + + //鏌ヨ + @GetMapping("/getDeviceBorrow") + public Result getDeviceBorrow(Integer id) { + return Result.success(deviceBorrowService.getDeviceBorrow(id)); + } + + //鏂板 + @PostMapping("/saveDeviceBorrow") + public Result saveDeviceBorrow(@RequestBody DeviceBorrow deviceBorrow) { + return Result.success(deviceBorrowService.saveDeviceBorrow(deviceBorrow)); + } + + //鍒犻櫎 + @PostMapping("/deleteDeviceBorrow") + public Result deleteDeviceBorrow(Integer id) { + return Result.success(deviceBorrowService.removeById(id)); + } + + //瀵煎嚭 + @PostMapping("/deviceBorrowExport") + public Result deviceBorrowExport(@RequestParam("deviceId") Integer deviceId, HttpServletResponse response) throws Exception { + List<DeviceBorrow> deviceBorrows = deviceBorrowService.getDeviceBorrowBydeviceId(deviceId); + response.setHeader("requestType", "excel"); + response.setHeader("Access-Control-Expose-Headers", "requestType"); + // 璁剧疆鍗曞厓鏍兼牱寮� + // 淇濆瓨鍒扮涓�涓猻heet涓� + EasyExcel.write(response.getOutputStream()) + .head(DeviceBorrow.class) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 鑷�傚簲鍒楀 + .sheet() + .doWrite(deviceBorrows); + return Result.success(); + } + + +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java new file mode 100644 index 0000000..9420f41 --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java @@ -0,0 +1,98 @@ +package com.ruoyi.device.controller; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.domain.Result; +import com.ruoyi.common.numgen.NumberGenerator; +import com.ruoyi.device.excel.DeviceMaintenanceExport; +import com.ruoyi.device.pojo.DeviceMaintenance; +import com.ruoyi.device.service.DeviceMaintenanceService; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.usermodel.VerticalAlignment; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Locale; + +/** + * todo: 瀛欐渤婊� + */ +@RestController +@RequestMapping("/device-maintain") +public class DeviceMaintenanceController { + + @Autowired + private DeviceMaintenanceService deviceMaintenanceService; + + @Autowired + private NumberGenerator<DeviceMaintenance> numberGenerator; + //澧� + @PostMapping() + public Result create(@RequestBody DeviceMaintenance deviceMaintenance){ + String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date()); + String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date()); + String processNumber = numberGenerator.generateNumberWithPrefix(3, "DG-TC-23FM " + month + "-" + year + month, DeviceMaintenance::getDeviceNumber); + deviceMaintenance.setDeviceNumber(processNumber); + return Result.success(deviceMaintenanceService.save(deviceMaintenance)); + } + + //閫氳繃deviceId鏌ヨ缁存姢鏁版嵁 + @GetMapping("/getDeviceMaintenancePage") + public Result getDeviceMaintenancePage(@RequestParam("deviceId") Integer deviceId, Page page, String deviceNumber){ + return Result.success(deviceMaintenanceService.getDeviceMaintenancePage(page, deviceId, deviceNumber)); + } + + //鍒� + @DeleteMapping("/delete/{id}") + public void deleteDeviceFault(@PathVariable Integer id) { + deviceMaintenanceService.removeById(id); + } + + @GetMapping("/deviceMaintenanceExport") + public Result deviceMaintenanceExport(@RequestParam("deviceId") Integer deviceId, HttpServletResponse response) throws IOException { + List<DeviceMaintenanceExport> list = deviceMaintenanceService.deviceMaintenanceExport(deviceId); + response.setHeader("requestType","excel"); + response.setHeader("Access-Control-Expose-Headers", "requestType"); + // 璁剧疆鍗曞厓鏍兼牱寮� + // 淇濆瓨鍒扮涓�涓猻heet涓� + EasyExcel.write(response.getOutputStream()) + .head(DeviceMaintenanceExport.class) + .registerWriteHandler(getHorizontalCellStyleStrategy((short) 12)) + .sheet() + .doWrite(list); + return Result.success(); + } + + @ApiOperation(value = "璁惧缁存姢璁板綍瀵煎嚭") + @GetMapping("/exportMaintenanceRecord") + public void exportMaintenanceRecord(@RequestParam("deviceId") Integer deviceId, HttpServletResponse response) throws Exception { + deviceMaintenanceService.exportMaintenanceRecord(deviceId, response); + } + + /** + * 鍗曞厓鏍兼牱寮忕瓥鐣� + */ + public static HorizontalCellStyleStrategy getHorizontalCellStyleStrategy(Short fontHeightInPoints) { + // 鍐呭鐨勭瓥鐣� + WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); + + // 銆愭按骞冲眳涓渶瑕佷娇鐢ㄤ互涓嬩袱琛屻�� + // 璁剧疆鏂囧瓧宸﹀彸灞呬腑 + contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + // 璁剧疆鏂囧瓧涓婁笅灞呬腑 + contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + // 璁剧疆 鑷姩鎹㈣ + contentWriteCellStyle.setWrapped(true); + + // 鏍峰紡绛栫暐 + return new HorizontalCellStyleStrategy(null, contentWriteCellStyle); + } +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceScrappedController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceScrappedController.java new file mode 100644 index 0000000..9bada11 --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceScrappedController.java @@ -0,0 +1,82 @@ +package com.ruoyi.device.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.domain.Result; +import com.ruoyi.device.pojo.DeviceScrapped; +import com.ruoyi.device.service.DeviceScrappedService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.Map; + +/** + * <p> + * 璁惧鎶ュ簾鐢宠琛� 鍓嶇鎺у埗鍣� + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-12-17 01:53:47 + */ +@Api(tags = "璁惧鎶ュ簾鐢宠琛�") +@AllArgsConstructor +@RestController +@RequestMapping("/deviceScrapped") +public class DeviceScrappedController { + + private DeviceScrappedService deviceScrappedService; + + + /** + * 璁惧鎶ュ簾鐢宠鍒楄〃 + * @return + */ + @ApiOperation(value = "璁惧鎶ュ簾鐢宠鍒楄〃") + @PostMapping("/pageDeviceScrapped") + public Result<IPage<DeviceScrapped>> pageDeviceScrapped(Page page, DeviceScrapped deviceScrapped) { + return Result.success(deviceScrappedService.pageDeviceScrapped(page, deviceScrapped)); + } + + /** + * 鏌ヨ璁惧鎶ュ簾鐢宠 + * @return + */ + @ApiOperation(value = "鏌ヨ璁惧鎶ュ簾鐢宠") + @GetMapping("/getDeviceScrapped") + public Result getDeviceScrapped(Integer scrappedId){ + return Result.success(deviceScrappedService.getById(scrappedId)); + } + + /** + * 鍒犻櫎璁惧鏍告煡璁″垝璇︽儏 + * @return + */ + @ApiOperation(value = "鍒犻櫎璁惧鎶ュ簾鐢宠") + @GetMapping("/delDeviceScrapped") + public Result delDeviceScrapped(Integer scrappedId){ + return Result.success(deviceScrappedService.removeById(scrappedId)); + } + + /** + * 鏂板璁惧鎶ュ簾鐢宠 + * @return + */ + @ApiOperation(value = "鏂板璁惧鎶ュ簾鐢宠") + @PostMapping("/addDeviceScrapped") + public Result addDeviceScrapped(@RequestBody DeviceScrapped deviceScrapped){ + return Result.success(deviceScrappedService.addDeviceScrapped(deviceScrapped)); + } + + /** + * 瀵煎嚭璁惧鎶ュ簾鐢宠 + */ + @ApiOperation("瀵煎嚭璁惧鎶ュ簾鐢宠") + @GetMapping("/exportDeviceScrapped") + public Result exportDeviceScrapped(Integer scrappedId, HttpServletResponse response) { + return deviceScrappedService.exportDeviceScrapped(scrappedId, response); + } + +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceStateController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceStateController.java new file mode 100644 index 0000000..4c73996 --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceStateController.java @@ -0,0 +1,87 @@ +package com.ruoyi.device.controller; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.domain.Result; +import com.ruoyi.common.numgen.NumberGenerator; +import com.ruoyi.device.dto.DeviceStateDto; +import com.ruoyi.device.excel.DeviceStateExport; +import com.ruoyi.device.pojo.DeviceState; +import com.ruoyi.device.service.DeviceStateService; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Locale; + +/** + * <p> + * 璁惧鍋滅敤/鍚敤 鍓嶇鎺у埗鍣� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-09-26 09:51:40 + */ +@RestController +@RequestMapping("/deviceState") +public class DeviceStateController { + + @Autowired + private DeviceStateService deviceStateService; + + @Autowired + private NumberGenerator<DeviceState> numberGenerator; + + @PostMapping("saveDeviceState") + public Result saveIncidentReportData(@RequestBody DeviceState deviceState) { + if (ObjectUtils.isEmpty(deviceState.getProcessNumber())) { + String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date()); + String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date()); + String processNumber = numberGenerator.generateNumberWithPrefix(3, "DG-TC-23FM " + month + "-" + year + month, DeviceState::getProcessNumber); + deviceState.setProcessNumber(processNumber); + } + deviceStateService.saveOrUpdate(deviceState); + return Result.success(); + } + + @GetMapping("/getDeviceStatePage") + public Result getDeviceStatePage(@RequestParam("deviceId") Integer deviceId, Page page, String processNumber){ + return Result.success(deviceStateService.getDeviceStatePage(deviceId, page, processNumber)); + } + + @DeleteMapping("/deleteDeviceState") + public Result deleteDeviceState(@RequestParam("stateId") Integer stateId){ + return Result.success(deviceStateService.removeById(stateId)); + } + + @PostMapping("/deviceStateExport") + public Result deviceStateExport(@RequestParam("deviceId") Integer deviceId, String processNumber, HttpServletResponse response) throws Exception { + IPage<DeviceStateDto> deviceBorrows = deviceStateService.getDeviceStatePage(deviceId, new Page<>(1, -1), processNumber); + List<DeviceStateExport> studentList = JSONObject.parseArray(JSON.toJSONString(deviceBorrows.getRecords()), DeviceStateExport.class); + response.setHeader("requestType", "excel"); + response.setHeader("Access-Control-Expose-Headers", "requestType"); + // 璁剧疆鍗曞厓鏍兼牱寮� + // 淇濆瓨鍒扮涓�涓猻heet涓� + EasyExcel.write(response.getOutputStream()) + .head(DeviceStateExport.class) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 鑷�傚簲鍒楀 + .sheet("sheet") + .doWrite(studentList); + return Result.success(); + } + + @ApiOperation(value = "璁惧鍚姩/鍋滄瀵煎嚭") + @GetMapping("/exportDeviceStatus") + public void exportDeviceStatus(@RequestParam("processNumber") String processNumber,@RequestParam("deviceId") Integer deviceId, HttpServletResponse response) throws Exception { + deviceStateService.exportDeviceStatus(deviceId, processNumber, response); + } +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceScrappedDto.java b/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceScrappedDto.java new file mode 100644 index 0000000..4cac0ce --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceScrappedDto.java @@ -0,0 +1,26 @@ +package com.ruoyi.device.dto; + +import com.ruoyi.device.pojo.DeviceScrapped; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Author: yuan + * Date: 2024-12-17 鏄熸湡浜� 18:34:17 + * Description: + */ +@Data +public class DeviceScrappedDto extends DeviceScrapped { + + @ApiModelProperty("鐢宠鏃堕棿") + private String applicantDateStr; + + @ApiModelProperty("閮ㄩ棬璐熻矗浜哄~鍐欐椂闂�") + private String departmentHeadDateStr; + + @ApiModelProperty("璁¢噺瀹や汉濉啓鏃堕棿") + private String meteringRoomDateStr; + + @ApiModelProperty("鎵瑰噯浜哄~鍐欐椂闂�") + private String approverDateStr; +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceStateDto.java b/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceStateDto.java new file mode 100644 index 0000000..6e45eee --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceStateDto.java @@ -0,0 +1,32 @@ +package com.ruoyi.device.dto; + +import com.ruoyi.device.pojo.DeviceState; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceStateDto extends DeviceState { + @ApiModelProperty(value = "璁惧鍚嶇О") + private String deviceName; + + @ApiModelProperty(value = "瑙勬牸鍨嬪彿") + private String specificationModel; + + @ApiModelProperty(value = "绠$悊缂栧彿") + private String managementNumber; + + @ApiModelProperty(value = "鎿嶄綔鏃ユ湡 yyyy-MM-dd") + private String submitDateString; + + @ApiModelProperty("璐熻矗浜哄鎵规棩鏈� yyyy-MM-dd") + private String departmentDateString; + + @ApiModelProperty("璁¢噺瀹ゅ鎵规棩鏈� yyyy-MM-dd") + private String measuringRoomDateString; + + @ApiModelProperty("鎵瑰噯鏃ユ湡 yyyy-MM-dd") + private String approvalDateString; + + @ApiModelProperty(value = "璁惧绫诲瀷") + private String largeCategory; +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/excel/DeviceStateExport.java b/cnas-device/src/main/java/com/ruoyi/device/excel/DeviceStateExport.java new file mode 100644 index 0000000..f4e5592 --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/excel/DeviceStateExport.java @@ -0,0 +1,36 @@ +package com.ruoyi.device.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class DeviceStateExport { + @ExcelProperty(value = "璁惧鍚嶇О") + private String deviceName; + + @ExcelProperty(value = "瑙勬牸鍨嬪彿") + private String specificationModel; + + @ExcelProperty(value = "绠$悊缂栧彿") + private String managementNumber; + + @ExcelProperty("璁惧鐘舵��") + private String deviceStatus; + + @ExcelProperty("鍋滅敤鍚敤鐞嗙敱") + private String reason; + + @ExcelProperty("鎻愪氦浜�") + private String createUser; + + @ExcelProperty("鎻愪氦鏃ユ湡") + private LocalDateTime createTime; + + @ExcelProperty("褰撳墠鐘舵��") + private String currentState; + + @ExcelProperty("褰撳墠璐熻矗浜�") + private String currentResponsible; +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceBorrowMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceBorrowMapper.java new file mode 100644 index 0000000..498e972 --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceBorrowMapper.java @@ -0,0 +1,25 @@ +package com.ruoyi.device.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.device.pojo.DeviceBorrow; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * <p> + * Mapper 鎺ュ彛 + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-09-21 10:53:51 + */ +public interface DeviceBorrowMapper extends BaseMapper<DeviceBorrow> { + + IPage<DeviceBorrow> deviceBorrowPage(Page page, @Param("ew")QueryWrapper<DeviceBorrow> ew); + + List<DeviceBorrow> getDeviceBorrowBydeviceId(Integer deviceId); +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceLogMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceLogMapper.java new file mode 100644 index 0000000..193b5b6 --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceLogMapper.java @@ -0,0 +1,9 @@ +package com.ruoyi.device.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.device.pojo.DeviceLog; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface DeviceLogMapper extends BaseMapper<DeviceLog> { +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceScrappedMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceScrappedMapper.java new file mode 100644 index 0000000..bf6266f --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceScrappedMapper.java @@ -0,0 +1,35 @@ +package com.ruoyi.device.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.device.dto.DeviceScrappedDto; +import com.ruoyi.device.pojo.DeviceScrapped; +import org.apache.ibatis.annotations.Param; + +/** + * <p> + * 璁惧鎶ュ簾鐢宠琛� Mapper 鎺ュ彛 + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-12-17 01:53:47 + */ +public interface DeviceScrappedMapper extends BaseMapper<DeviceScrapped> { + + /** + * 璁惧鎶ュ簾鐢宠鍒楄〃 + * @param page + * @param ew + * @return + */ + IPage<DeviceScrapped> pageDeviceScrapped(Page page, @Param("ew") QueryWrapper<DeviceScrapped> ew); + + /** + * 鏍规嵁id鏌ヨ璁惧鎶ュ簾鐢宠 + * @param scrappedId + * @return + */ + DeviceScrappedDto selectDeviceScrappedById(@Param("scrappedId") Integer scrappedId); +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceStateMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceStateMapper.java new file mode 100644 index 0000000..db96d63 --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceStateMapper.java @@ -0,0 +1,20 @@ +package com.ruoyi.device.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.device.dto.DeviceStateDto; +import com.ruoyi.device.pojo.DeviceState; + +/** + * <p> + * 璁惧鍋滅敤/鍚敤 Mapper 鎺ュ彛 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-09-26 09:51:40 + */ +public interface DeviceStateMapper extends BaseMapper<DeviceState> { + + IPage<DeviceStateDto> getDeviceStatePage(Integer deviceId, Page page, String processNumber); +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceBorrow.java b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceBorrow.java new file mode 100644 index 0000000..da122b6 --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceBorrow.java @@ -0,0 +1,133 @@ +package com.ruoyi.device.pojo; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +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 lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + * <p> + * + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-09-21 10:53:51 + */ +@Getter +@Setter +@TableName("device_borrow") +@ApiModel(value = "DeviceBorrow瀵硅薄", description = "璁惧鍊熺敤") +@ExcelIgnoreUnannotated +public class DeviceBorrow implements Serializable { + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("娴佺▼缂栧彿") + @ExcelProperty(value = "娴佺▼缂栧彿") + private String processNumber; + + @ApiModelProperty("璁惧id") + private Integer deviceId; + + @ApiModelProperty("绠$悊缂栧彿") + @ExcelProperty(value = "绠$悊缂栧彿") + private String unifyNumber; + + @ApiModelProperty("鍊熺敤浜�") + @ExcelProperty(value = "鍊熺敤浜�") + private String recipientUser; + + @ExcelProperty(value = "鍊熺敤浜鸿仈绯绘柟寮�") + @ApiModelProperty("鍊熺敤浜鸿仈绯绘柟寮�") + private String borrowerContactInformation; + + @ApiModelProperty("鍊熺敤鏃剁姸鎬�") + @ExcelProperty(value = "鍊熺敤鏃剁姸鎬�") + //0鍚堟牸;1缁翠慨;2鍋滅敤;3鎶ュ簾 + private Integer recipientState; + + @ApiModelProperty("鍊熺敤鏃ユ湡") + @ExcelProperty(value = "鎻愪氦鏃ユ湡") + private Date recipientTime; + + @ApiModelProperty("鍊熷嚭浜�") + @ExcelProperty(value = "鍊熷嚭浜�") + private String submitUser; + + @ApiModelProperty("鍊熷嚭鏃ユ湡") + @ExcelProperty(value = "鍊熷嚭鏃ユ湡") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty("褰撳墠鐘舵��") + @ExcelProperty(value = "褰撳墠鐘舵��") + private String nowState; + + @ApiModelProperty("褰撳墠璐d换浜�") + @ExcelProperty(value = "褰撳墠璐d换浜�") + private String nowUser; + + @ApiModelProperty("闄勪欢") + //璺緞 + private String url; + + @ApiModelProperty("闄勪欢") + @ExcelProperty(value = "闄勪欢") + //鏂囦欢鍚� + private String fileName; + + @ApiModelProperty("涓嬬幆鑺傝矗浠讳汉") + private String nextUser; + + @ApiModelProperty("鎻愪氦鎿嶄綔浜�") + private String submitOperationUser; + + @ApiModelProperty("鎻愪氦鎿嶄綔鏃堕棿") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime submitOperationTime; + + @ApiModelProperty("褰掕繕浜�") + private String rebackUser; + + @ApiModelProperty("褰掕繕鏃ユ湡") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime rebackTime; + + @ApiModelProperty("鎺ュ彈鐘舵��0鍚堟牸;1缁翠慨;2鍋滅敤;3鎶ュ簾") + private Integer receiveState; + + @ApiModelProperty("璁惧璐d换浜�") + private String deviceUser; + + @ApiModelProperty("澶囨敞") + private String note; + + @ApiModelProperty("鎺ユ敹鎿嶄綔浜�") + private String receiveOperationUser; + + @ApiModelProperty("鎺ユ敹鎿嶄綔鏃堕棿") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime receiveOperationTime; + + @ApiModelProperty("璁惧鍚嶇О") + @TableField(select = false, exist = false) + @ExcelProperty(value = "璁惧鍚嶇О") + private String deviceName; + + + @ApiModelProperty("娴佺▼璺熻釜") + @TableField(select = false, exist = false) + private List<DeviceLog> deviceLogs; +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceLog.java b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceLog.java new file mode 100644 index 0000000..5141c82 --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceLog.java @@ -0,0 +1,29 @@ +package com.ruoyi.device.pojo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +@Data +@TableName("device_log") // 璁板綍 +public class DeviceLog implements Serializable { + + @TableId(type= IdType.AUTO) + private Integer id; + private String operator; +// @JsonFormat() + private LocalDateTime operationTime; + private String operationType; + private String operationContent; + private Integer deviceId; + + //鍏宠仈鐨勮〃鍚� + private String relevanceForm; + + //鍏宠仈鐨刬d + private Integer relevanceId; +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceScrapped.java b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceScrapped.java new file mode 100644 index 0000000..f60aefb --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceScrapped.java @@ -0,0 +1,105 @@ +package com.ruoyi.device.pojo; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * <p> + * 璁惧鎶ュ簾鐢宠琛� + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-12-17 01:53:47 + */ +@Getter +@Setter +@TableName("device_scrapped") +@ApiModel(value = "DeviceScrapped瀵硅薄", description = "璁惧鎶ュ簾鐢宠琛�") +public class DeviceScrapped { + + @TableId(value = "scrapped_id", type = IdType.AUTO) + private Integer scrappedId; + + @ApiModelProperty("璁惧id") + private Integer deviceId; + + @ApiModelProperty("閰嶄欢") + private String parts; + + @ApiModelProperty("鎶ュ簾鐞嗙敱") + private String reasonsForScrap; + + @ApiModelProperty("鐢宠浜篿d") + private Integer applicantUserId; + + @ApiModelProperty("鐢宠浜�") + private String applicantUser; + + @ApiModelProperty("鐢宠鏃堕棿") + private LocalDate applicantDate; + + @ApiModelProperty("閮ㄩ棬璐熻矗浜烘剰瑙�") + private String departmentHeadOpinion; + + @ApiModelProperty("閮ㄩ棬璐熻矗浜篿d") + private Integer departmentHeadUserId; + + @ApiModelProperty("閮ㄩ棬璐熻矗浜�") + private String departmentHeadUser; + + @ApiModelProperty("閮ㄩ棬璐熻矗浜哄~鍐欐椂闂�") + private LocalDate departmentHeadDate; + + @ApiModelProperty("璁¢噺瀹ゆ剰瑙�") + private String meteringRoomOpinion; + + @ApiModelProperty("璁¢噺瀹や汉id") + private Integer meteringRoomUserId; + + @ApiModelProperty("璁¢噺瀹や汉") + private String meteringRoomUser; + + @ApiModelProperty("璁¢噺瀹や汉濉啓鏃堕棿") + private LocalDate meteringRoomDate; + + @ApiModelProperty("鎵瑰噯浜烘剰瑙�") + private String approverOpinion; + + @ApiModelProperty("鎵瑰噯浜篿d") + private Integer approverUserId; + + @ApiModelProperty("鎵瑰噯浜�") + private String approverUser; + + @ApiModelProperty("鎵瑰噯浜哄~鍐欐椂闂�") + private LocalDate approverDate; + + @ApiModelProperty("鏄惁缁撴潫,0: 鏈粨鏉�, 1:缁撴潫") + private Integer isFinish; + + @ApiModelProperty("鍒涘缓浜�") + @TableField(fill = FieldFill.INSERT) + private Integer createUser; + + @ApiModelProperty("鍒涘缓鏃堕棿") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty("淇敼浜�") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Integer updateUser; + + @ApiModelProperty("淇敼鏃堕棿") + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + @TableField(exist = false,select = false) + @ApiModelProperty("娴佺▼, 0:鎶ュ簾鐢宠, 1鐢宠閮ㄩ棬璐熻矗浜烘剰瑙�, 2:璁¢噺瀹ゆ剰瑙�, 3:鎵瑰噯浜�") + private Integer flowType; +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceState.java b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceState.java new file mode 100644 index 0000000..e212f3e --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceState.java @@ -0,0 +1,107 @@ +package com.ruoyi.device.pojo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * <p> + * 璁惧鍋滅敤/鍚敤 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-09-26 09:51:40 + */ +@Getter +@Setter +@TableName("device_state") +@ApiModel(value = "DeviceState瀵硅薄", description = "璁惧鍋滅敤/鍚敤") +public class DeviceState implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("璁惧鍋滅敤鍚敤id") + @TableId(value = "state_id", type = IdType.AUTO) + private Integer stateId; + + @ApiModelProperty("娴佺▼缂栧彿") + private String processNumber; + + @ApiModelProperty("0閰嶄欢") + private String accessoryPart; + + @ApiModelProperty("0璁惧鐘舵��") + private String deviceStatus; + + @ApiModelProperty("0鍋滅敤鍚敤鐞嗙敱") + private String reason; + + @ApiModelProperty("0涓嬬幆鑺傝矗浠讳汉") + private String submitNextPesponsible; + + @ApiModelProperty("0鎿嶄綔浜�") + private String submitOperatingPersonnel; + + @ApiModelProperty("0鏃ユ湡") + private LocalDateTime submitDate; + + @ApiModelProperty("1閮ㄩ棬璐熻矗浜烘剰瑙�") + private String departmentReviewOpinion; + + @ApiModelProperty("1涓嬬幆鑺傝矗浠讳汉") + private String departmentNextPesponsible; + + @ApiModelProperty("1鎿嶄綔浜�") + private String departmentOperatingPersonnel; + + @ApiModelProperty("1鏃ユ湡") + private LocalDateTime departmentDate; + + @ApiModelProperty("2璁¢噺瀹ゆ剰瑙�") + private String measuringRoomReviewOpinion; + + @ApiModelProperty("2涓嬬幆鑺傝矗浠讳汉") + private String measuringRoomNextPesponsible; + + @ApiModelProperty("2鎿嶄綔浜�") + private String measuringRoomOperatingPersonnel; + + @ApiModelProperty("2鏃ユ湡") + private LocalDateTime measuringRoomDate; + + @ApiModelProperty("3鎵瑰噯鎰忚") + private String approvalOpinion; + + @ApiModelProperty("3涓嬬幆鑺傝矗浠讳汉") + private String approvalNextPesponsible; + + @ApiModelProperty("3鎿嶄綔浜�") + private String approvalOperatingPersonnel; + + @ApiModelProperty("3鏃ユ湡") + private LocalDateTime approvalDate; + + @ApiModelProperty("褰撳墠鐘舵��") + private String currentState; + + @ApiModelProperty("璁惧Id") + private Integer deviceId; + + @ApiModelProperty("褰撳墠鐜妭璐熻矗浜�") + private String currentResponsible; + + @ApiModelProperty("鎻愪氦浜�") + @ExcelProperty(value = "鎻愪氦浜�") + private String createUser; + + @ApiModelProperty("鎻愪氦鏃ユ湡") + @ExcelProperty(value = "鎻愪氦鏃ユ湡") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceBorrowService.java b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceBorrowService.java new file mode 100644 index 0000000..298b03e --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceBorrowService.java @@ -0,0 +1,28 @@ +package com.ruoyi.device.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.device.pojo.DeviceBorrow; + +import java.util.List; +import java.util.Map; + +/** + * <p> + * 鏈嶅姟绫� + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-09-21 10:53:51 + */ +public interface DeviceBorrowService extends IService<DeviceBorrow> { + + IPage<DeviceBorrow> deviceBorrowPage(Page page, DeviceBorrow deviceBorrow); + + int saveDeviceBorrow(DeviceBorrow deviceBorrow); + + DeviceBorrow getDeviceBorrow(Integer id); + + List<DeviceBorrow> getDeviceBorrowBydeviceId(Integer deviceId); +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java new file mode 100644 index 0000000..4883178 --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java @@ -0,0 +1,24 @@ +package com.ruoyi.device.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.device.excel.DeviceMaintenanceExport; +import com.ruoyi.device.pojo.DeviceMaintenance; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +public interface DeviceMaintenanceService extends IService<DeviceMaintenance> { + IPage<DeviceMaintenance> getDeviceMaintenancePage(Page page, Integer deviceId, String deviceNumber); + + List<DeviceMaintenanceExport> deviceMaintenanceExport(Integer deviceId); + + /** + * 瀵煎嚭Word璁惧缁存姢璁板綍 + * + * @param deviceId + * @param response + */ + void exportMaintenanceRecord(Integer deviceId, HttpServletResponse response); +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceScrappedService.java b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceScrappedService.java new file mode 100644 index 0000000..71cf704 --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceScrappedService.java @@ -0,0 +1,43 @@ +package com.ruoyi.device.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.core.domain.Result; +import com.ruoyi.device.pojo.DeviceScrapped; + +import javax.servlet.http.HttpServletResponse; + +/** + * <p> + * 璁惧鎶ュ簾鐢宠琛� 鏈嶅姟绫� + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-12-17 01:53:47 + */ +public interface DeviceScrappedService extends IService<DeviceScrapped> { + + /** + * 璁惧鎶ュ簾鐢宠鍒楄〃 + * @param page + * @param deviceScrapped + * @return + */ + IPage<DeviceScrapped> pageDeviceScrapped(Page page, DeviceScrapped deviceScrapped); + + /** + * 鏂板璁惧鎶ュ簾鐢宠 + * @param deviceScrapped + * @return + */ + boolean addDeviceScrapped(DeviceScrapped deviceScrapped); + + /** + * 淇敼璁惧鎶ュ簾鐢宠 + * @param scrappedId 璁惧鎶ュ簾鐢宠id + * @return + */ + Result exportDeviceScrapped(Integer scrappedId, HttpServletResponse response); + +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceStateService.java b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceStateService.java new file mode 100644 index 0000000..9a2b789 --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceStateService.java @@ -0,0 +1,31 @@ +package com.ruoyi.device.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.device.dto.DeviceStateDto; +import com.ruoyi.device.pojo.DeviceState; + +import javax.servlet.http.HttpServletResponse; + +/** + * <p> + * 璁惧鍋滅敤/鍚敤 鏈嶅姟绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-09-26 09:51:40 + */ +public interface DeviceStateService extends IService<DeviceState> { + + IPage<DeviceStateDto> getDeviceStatePage(Integer deviceId, Page page, String processNumber); + + /** + * 瀵煎嚭璁惧鐘舵�� + * + * @param deviceId + * @param processNumber + * @param response + */ + void exportDeviceStatus(Integer deviceId, String processNumber, HttpServletResponse response); +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceBorrowServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceBorrowServiceImpl.java new file mode 100644 index 0000000..72023fc --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceBorrowServiceImpl.java @@ -0,0 +1,116 @@ +package com.ruoyi.device.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.domain.entity.User; +import com.ruoyi.common.numgen.NumberGenerator; +import com.ruoyi.common.utils.QueryWrappers; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.device.mapper.DeviceBorrowMapper; +import com.ruoyi.device.mapper.DeviceLogMapper; +import com.ruoyi.device.pojo.DeviceBorrow; +import com.ruoyi.device.pojo.DeviceLog; +import com.ruoyi.device.service.DeviceBorrowService; +import com.ruoyi.system.mapper.UserMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.*; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-09-21 10:53:51 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class DeviceBorrowServiceImpl extends ServiceImpl<DeviceBorrowMapper, DeviceBorrow> implements DeviceBorrowService { + + @Resource + private DeviceBorrowMapper deviceBorrowMapper; + + @Resource + private DeviceLogMapper deviceLogMapper; + + @Resource + private UserMapper userMapper; + + @Autowired + private NumberGenerator<DeviceBorrow> numberGenerator; + + @Override + public IPage<DeviceBorrow> deviceBorrowPage(Page page, DeviceBorrow deviceBorrow) { + return deviceBorrowMapper.deviceBorrowPage(page, QueryWrappers.queryWrappers(deviceBorrow)); + } + + @Override + public int saveDeviceBorrow(DeviceBorrow deviceBorrow) { + Integer userId = SecurityUtils.getUserId().intValue(); + User user = userMapper.selectById(userId); + //鏂板鐨勬椂鍊欐坊鍔犳柊寤烘祦绋� + if (ObjectUtils.isEmpty(deviceBorrow.getId())) { + deviceBorrow.setSubmitUser(user.getName()); + String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date()); + String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date()); + String processNumber = numberGenerator.generateNumberWithPrefix(3, "DG-TC-23FM " + month + "-" + year + month, DeviceBorrow::getProcessNumber); + deviceBorrow.setProcessNumber(processNumber); + deviceBorrowMapper.insert(deviceBorrow); + DeviceLog deviceLog = new DeviceLog(); + deviceLog.setOperator(user.getName()); + deviceLog.setOperationTime(LocalDateTime.now()); + deviceLog.setOperationType("鏂板缓"); + deviceLog.setOperationContent("鏂板缓娴佺▼"); + deviceLog.setRelevanceForm("device_borrow"); + deviceLog.setRelevanceId(deviceBorrow.getId()); + deviceLogMapper.insert(deviceLog); + } else { + DeviceBorrow borrow = deviceBorrowMapper.selectById(deviceBorrow.getId()); + deviceBorrowMapper.updateById(deviceBorrow); + //閫氳繃鎴栬�呴┏鍥炲鍔犳祦绋嬭窡韪� + if (deviceBorrow.getNowState().equals("鍏抽棴")) { + DeviceLog deviceLog = new DeviceLog(); + deviceLog.setOperator(user.getName()); + deviceLog.setOperationTime(LocalDateTime.now()); + deviceLog.setOperationType("鎺ユ敹閫氳繃"); + deviceLog.setRelevanceForm("device_borrow"); + deviceLog.setRelevanceId(deviceBorrow.getId()); + deviceLogMapper.insert(deviceLog); + } + else if (deviceBorrow.getNowState().equals("鎻愪氦") && borrow.getNowState().equals("鎺ユ敹")) { + DeviceLog deviceLog = new DeviceLog(); + deviceLog.setOperator(user.getName()); + deviceLog.setOperationTime(LocalDateTime.now()); + deviceLog.setOperationType("鎺ユ敹椹冲洖"); + deviceLog.setRelevanceForm("device_borrow"); + deviceLog.setRelevanceId(deviceBorrow.getId()); + deviceLogMapper.insert(deviceLog); + } + } + return 0; + } + + @Override + public DeviceBorrow getDeviceBorrow(Integer id) { + List<DeviceLog> deviceLogs = deviceLogMapper.selectList(Wrappers.<DeviceLog>lambdaQuery() + .eq(DeviceLog::getRelevanceForm, "device_borrow") + .eq(DeviceLog::getRelevanceId, id)); + DeviceBorrow deviceBorrow = deviceBorrowMapper.selectById(id); + deviceBorrow.setDeviceLogs(deviceLogs); + return deviceBorrow; + } + + @Override + public List<DeviceBorrow> getDeviceBorrowBydeviceId(Integer deviceId) { + return deviceBorrowMapper.getDeviceBorrowBydeviceId(deviceId); + } +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java new file mode 100644 index 0000000..3487fc2 --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java @@ -0,0 +1,86 @@ +package com.ruoyi.device.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.ruoyi.device.excel.DeviceMaintenanceExport; +import com.ruoyi.device.mapper.DeviceMaintenanceMapper; +import com.ruoyi.device.mapper.DeviceMapper; +import com.ruoyi.device.pojo.DeviceMaintenance; +import com.ruoyi.device.service.DeviceMaintenanceService; +import com.ruoyi.inspect.util.HackLoopTableRenderPolicy; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.List; + +@Service +public class DeviceMaintenanceImpl extends ServiceImpl<DeviceMaintenanceMapper, DeviceMaintenance> implements DeviceMaintenanceService { + + @Override + public IPage<DeviceMaintenance> getDeviceMaintenancePage(Page page, Integer deviceId, String deviceNumber) { + return baseMapper.selectPage(page, Wrappers.<DeviceMaintenance>lambdaQuery() + .eq(DeviceMaintenance::getDeviceId, deviceId) + .like(DeviceMaintenance::getDeviceNumber, deviceNumber)); + } + + @Override + public List<DeviceMaintenanceExport> deviceMaintenanceExport(Integer deviceId) { + return baseMapper.deviceMaintenanceExport(deviceId); + } + + @Override + public void exportMaintenanceRecord(Integer deviceId, HttpServletResponse response) { + // 鏌ヨcnas璁惧缁翠慨璁板綍 + List<DeviceMaintenance> deviceMaintenanceList = baseMapper.selectList(Wrappers.<DeviceMaintenance>lambdaQuery() + .eq(DeviceMaintenance::getDeviceId, deviceId) + .select(DeviceMaintenance::getDate, + DeviceMaintenance::getDeviceNumber, + DeviceMaintenance::getDeviceName, + DeviceMaintenance::getManagementNumber, + DeviceMaintenance::getContent, + DeviceMaintenance::getName, + DeviceMaintenance::getComments)); + + + // 鑾峰彇璺緞 + InputStream inputStream = this.getClass().getResourceAsStream("/static/word/maintenance-records.docx"); + Configure configure = Configure.builder() + .bind("deviceMaintenanceList", new HackLoopTableRenderPolicy()) + .build(); + // 鑾峰彇璁惧 鍚嶇О 鍜� 缂栧彿 + DeviceMaintenance deviceMaintenance = deviceMaintenanceList.get(0); + String deviceName = deviceMaintenance.getDeviceName(); + String managementNumber = deviceMaintenance.getManagementNumber(); + XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( + new HashMap<String, Object>() {{ + put("deviceMaintenanceList", deviceMaintenanceList); + put("deviceName", deviceName); + put("managementNumber", managementNumber); + }}); + + try { + response.setContentType("application/msword"); + String fileName = URLEncoder.encode( + "璁惧缁存姢淇濆吇璁板綍", "UTF-8"); + response.setHeader("Content-disposition", + "attachment;filename=" + fileName + ".docx"); + OutputStream os = response.getOutputStream(); + template.write(os); + os.flush(); + os.close(); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("瀵煎嚭澶辫触"); + } + } + +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceScrappedServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceScrappedServiceImpl.java new file mode 100644 index 0000000..910617a --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceScrappedServiceImpl.java @@ -0,0 +1,179 @@ +package com.ruoyi.device.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.ruoyi.common.core.domain.Result; +import com.ruoyi.common.core.domain.entity.User; +import com.ruoyi.common.utils.QueryWrappers; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.device.dto.DeviceScrappedDto; +import com.ruoyi.device.mapper.DeviceMapper; +import com.ruoyi.device.mapper.DeviceScrappedMapper; +import com.ruoyi.device.pojo.Device; +import com.ruoyi.device.pojo.DeviceScrapped; +import com.ruoyi.device.service.DeviceScrappedService; +import com.ruoyi.inspect.util.UserUtils; +import com.ruoyi.system.mapper.UserMapper; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.time.LocalDate; +import java.util.HashMap; + +/** + * <p> + * 璁惧鎶ュ簾鐢宠琛� 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-12-17 01:53:47 + */ +@Service +public class DeviceScrappedServiceImpl extends ServiceImpl<DeviceScrappedMapper, DeviceScrapped> implements DeviceScrappedService { + + @Resource + private DeviceMapper deivceMapper; + @Resource + private UserMapper userMapper; + + + /** + * 璁惧鎶ュ簾鐢宠鍒楄〃 + * + * @param deviceScrapped + * @return + */ + @Override + public IPage<DeviceScrapped> pageDeviceScrapped(Page page, DeviceScrapped deviceScrapped) { + return baseMapper.pageDeviceScrapped(page, QueryWrappers.queryWrappers(deviceScrapped)); + } + + /** + * 鏂板璁惧鎶ュ簾鐢宠 + * + * @return + */ + @Override + public boolean addDeviceScrapped(DeviceScrapped deviceScrapped) { + DeviceScrapped scrapped = new DeviceScrapped(); + // 褰撳墠鐧诲綍鐢ㄦ埛淇℃伅鍜岄儴闂� + User user = userMapper.selectById(SecurityUtils.getUserId().intValue()); + switch (deviceScrapped.getFlowType()) { + case 0: + BeanUtils.copyProperties(deviceScrapped, scrapped); + // 鐢宠 + scrapped.setReasonsForScrap(deviceScrapped.getReasonsForScrap()); + scrapped.setApplicantUserId(user.getId()); + scrapped.setApplicantUser(user.getName()); + scrapped.setApplicantDate(LocalDate.now()); + + // 澶勭悊浜轰俊鎭� + User departmentHeadUser = userMapper.selectById(deviceScrapped.getDepartmentHeadUserId()); + scrapped.setApplicantUserId(departmentHeadUser.getId()); + scrapped.setApplicantUser(departmentHeadUser.getName()); + + baseMapper.insert(scrapped); + break; + case 1: + scrapped.setScrappedId(deviceScrapped.getScrappedId()); + // 鐢宠閮ㄩ棬璐熻矗浜烘剰瑙� + scrapped.setDepartmentHeadOpinion(deviceScrapped.getDepartmentHeadOpinion()); + scrapped.setDepartmentHeadDate(LocalDate.now()); + + // 璁¢噺瀹や俊鎭� + User meteringRoomUser = userMapper.selectById(deviceScrapped.getMeteringRoomUserId()); + scrapped.setMeteringRoomUserId(meteringRoomUser.getId()); + scrapped.setMeteringRoomUser(meteringRoomUser.getName()); + + baseMapper.updateById(scrapped); + break; + case 2: + scrapped.setScrappedId(deviceScrapped.getScrappedId()); + // 璁¢噺瀹ゆ剰瑙� + scrapped.setMeteringRoomOpinion(deviceScrapped.getMeteringRoomOpinion()); + scrapped.setMeteringRoomDate(LocalDate.now()); + + // 鎵瑰噯浜轰俊鎭� + User approverUser = userMapper.selectById(deviceScrapped.getApproverUserId()); + scrapped.setApproverUserId(approverUser.getId()); + scrapped.setApproverUser(approverUser.getName()); + + baseMapper.updateById(scrapped); + break; + case 3: + scrapped.setScrappedId(deviceScrapped.getScrappedId()); + //鎵瑰噯浜� + scrapped.setApproverOpinion(deviceScrapped.getApproverOpinion()); + scrapped.setApproverDate(LocalDate.now()); + scrapped.setIsFinish(1); + baseMapper.updateById(scrapped); + break; + } + + return true; + } + + /** + * 瀵煎嚭璁惧鎶ュ簾鐢宠 + * + * @param scrappedId 璁惧鎶ュ簾鐢宠id + * @param response 鍝嶅簲 + * @return 缁撴灉 + */ + @Override + public Result<?> exportDeviceScrapped(Integer scrappedId, HttpServletResponse response) { + // 鏌ヨ鎶ュ簾鏁版嵁 + DeviceScrappedDto deviceScrapped = baseMapper.selectDeviceScrappedById(scrappedId); + if (deviceScrapped == null) { + return Result.fail("璁惧鎶ュ簾鐢宠涓嶅瓨鍦�"); + } + Device device = null; + if (deviceScrapped.getDeviceId() != null) { + device = deivceMapper.selectById(deviceScrapped.getDeviceId()); + device = device == null ? new Device() : device; + } + // 鑾峰彇璺緞 + InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-scrapped.docx"); + Configure configure = Configure.builder() + .build(); + Device finalDevice = device; + XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( + new HashMap<String, Object>() {{ + put("deviceScrapped", deviceScrapped); + put("device", finalDevice); + // 鐢宠浜虹鍚� + put("applicantUrl", UserUtils.getFinalUserSignatureUrl(deviceScrapped.getApplicantUserId())); + // 閮ㄩ棬璐熻矗浜虹鍚� + put("headUrl", UserUtils.getFinalUserSignatureUrl(deviceScrapped.getDepartmentHeadUserId())); + // 璁¢噺瀹ょ鍚� + put("metrologyRoomUrl", UserUtils.getFinalUserSignatureUrl(deviceScrapped.getMeteringRoomUserId())); + // 鎵瑰噯浜虹鍚� + put("approverUrl", UserUtils.getFinalUserSignatureUrl(deviceScrapped.getApproverUserId())); + }}); + + try { + response.setContentType("application/msword"); + String deviceName = device.getDeviceName() == null ? "" : device.getDeviceName(); + String fileName = URLEncoder.encode( + deviceName + "璁惧鎶ュ簾鐢宠", "UTF-8"); + response.setHeader("Content-disposition", + "attachment;filename=" + fileName + ".docx"); + OutputStream os = response.getOutputStream(); + template.write(os); + os.flush(); + os.close(); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("瀵煎嚭澶辫触"); + } + return Result.success(); + } +} diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceStateServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceStateServiceImpl.java new file mode 100644 index 0000000..f4f7c5a --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceStateServiceImpl.java @@ -0,0 +1,159 @@ +package com.ruoyi.device.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.data.Pictures; +import com.ruoyi.basic.mapper.LaboratoryMapper; +import com.ruoyi.basic.pojo.Laboratory; +import com.ruoyi.common.core.domain.entity.User; +import com.ruoyi.device.dto.DeviceStateDto; +import com.ruoyi.device.mapper.DeviceStateMapper; +import com.ruoyi.device.pojo.DeviceState; +import com.ruoyi.device.service.DeviceStateService; +import com.ruoyi.framework.exception.ErrorException; +import com.ruoyi.system.mapper.UserMapper; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; + +/** + * <p> + * 璁惧鍋滅敤/鍚敤 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-09-26 09:51:40 + */ +@Service +public class DeviceStateServiceImpl extends ServiceImpl<DeviceStateMapper, DeviceState> implements DeviceStateService { + + @Resource + private LaboratoryMapper laboratoryMapper; + + @Resource + private UserMapper userMapper; + + @Value("${file.path}") + private String imgUrl; + + @Override + public IPage<DeviceStateDto> getDeviceStatePage(Integer deviceId, Page page, String processNumber) { + return baseMapper.getDeviceStatePage(deviceId, page, processNumber); + } + + @Override + public void exportDeviceStatus(Integer deviceId, String processNumber, HttpServletResponse response) { + // 鏍规嵁娴佺▼缂栧彿 鏌ヨcnas璁惧鐘舵�� + DeviceStateDto deviceStateDto = baseMapper.getDeviceStatePage(deviceId,new Page<DeviceStateDto>(1,1), processNumber).getRecords().get(0); + + // 瀵规椂闂磋繘琛屼慨鏀� + DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"); + deviceStateDto.setSubmitDateString(deviceStateDto.getSubmitDate() != null ? deviceStateDto.getSubmitDate().format(format) : " 骞� 鏈� 鏃�"); + deviceStateDto.setDepartmentDateString(deviceStateDto.getDepartmentDate() != null? deviceStateDto.getDepartmentDate().format(format) : " 骞� 鏈� 鏃�"); + deviceStateDto.setMeasuringRoomDateString(deviceStateDto.getMeasuringRoomDate() != null? deviceStateDto.getMeasuringRoomDate().format(format) : " 骞� 鏈� 鏃�"); + deviceStateDto.setApprovalDateString(deviceStateDto.getApprovalDate() != null? deviceStateDto.getApprovalDate().format(format) : " 骞� 鏈� 鏃�"); + + // 鏌ヨ璁惧灞炰簬鍝釜瀹為獙瀹� + String laboratoryName; + String largeCategory = deviceStateDto.getLargeCategory(); + if (StringUtils.isNotBlank(largeCategory)) { + largeCategory = largeCategory.substring(0, 1); + Laboratory laboratory = laboratoryMapper.selectOne(Wrappers.<Laboratory>lambdaQuery() + .eq(Laboratory::getLaboratoryNumber, largeCategory) + .select(Laboratory::getLaboratoryName)); + laboratoryName = laboratory.getLaboratoryName(); + } else { + laboratoryName = ""; + } + + //todo: 璁惧鐘舵�佹煡璇㈢鍚嶅湴鍧� 鏆傛椂浜哄悕鏌ヨ + //鑾峰彇鐢宠浜虹殑绛惧悕鍦板潃 + String applicantUrl = null; + if (deviceStateDto.getSubmitOperatingPersonnel() != null) { + applicantUrl = userMapper.selectOne(Wrappers.<User>lambdaQuery() + .eq(User::getName, deviceStateDto.getSubmitOperatingPersonnel())) + .getSignatureUrl(); + if (StringUtils.isBlank(applicantUrl)) { + throw new ErrorException("鎵句笉鍒扮敵璇蜂汉鐨勭鍚�"); + } + } + + //鑾峰彇閮ㄩ棬璐熻矗浜虹殑绛惧悕鍦板潃 + String headOfDepartmentUrl = null; + if (deviceStateDto.getDepartmentNextPesponsible() != null) { + headOfDepartmentUrl = userMapper.selectOne(Wrappers.<User>lambdaQuery() + .eq(User::getName, deviceStateDto.getDepartmentNextPesponsible())) + .getSignatureUrl(); + if (StringUtils.isBlank(headOfDepartmentUrl)) { + throw new ErrorException("鎵句笉鍒伴儴闂ㄨ礋璐d汉鐨勭鍚�"); + } + } + + //鑾峰彇璁¢噺瀹ゅ娴嬩汉鐨勭鍚嶅湴鍧� + String measurementRoomUrl = null; + if (deviceStateDto.getMeasuringRoomNextPesponsible() != null) { + measurementRoomUrl = userMapper.selectOne(Wrappers.<User>lambdaQuery() + .eq(User::getName, deviceStateDto.getMeasuringRoomNextPesponsible())) + .getSignatureUrl(); + if (StringUtils.isBlank(measurementRoomUrl)) { + throw new ErrorException("鎵句笉鍒拌閲忓澶嶆祴浜虹殑绛惧悕"); + } + } + + //鑾峰彇鎵瑰噯浜虹殑绛惧悕鍦板潃 + String approvedUrl = null; + if (deviceStateDto.getApprovalNextPesponsible() != null) { + approvedUrl = userMapper.selectOne(Wrappers.<User>lambdaQuery() + .eq(User::getName, deviceStateDto.getApprovalNextPesponsible())) + .getSignatureUrl(); + if (StringUtils.isBlank(approvedUrl)) { + throw new ErrorException("鎵句笉鍒版壒鍑嗕汉鐨勭鍚�"); + } + } + + // 鑾峰彇璺緞 + InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-status.docx"); + Configure configure = Configure.builder() + .build(); + String finalApplicantUrl = applicantUrl; // 鐢宠浜虹殑绛惧悕鍦板潃 + String finalHeadOfDepartmentUrl = headOfDepartmentUrl; // 閮ㄩ棬璐熻矗浜虹殑绛惧悕鍦板潃 + String finalMeasurementRoomUrl = measurementRoomUrl; // 璁¢噺瀹ゅ娴嬩汉鐨勭鍚嶅湴鍧� + String finalApprovedUrl = approvedUrl; // 鎵瑰噯浜虹殑绛惧悕鍦板潃 + XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( + new HashMap<String, Object>() {{ + put("deviceStateDto", deviceStateDto); + put("submitOperatingPersonnelUrl", StringUtils.isNotBlank(finalApplicantUrl) ? Pictures.ofLocal(imgUrl + "/" + finalApplicantUrl).create() : null); + put("departmentNextPesponsibleUrl", StringUtils.isNotBlank(finalHeadOfDepartmentUrl) ? Pictures.ofLocal(imgUrl + "/" + finalHeadOfDepartmentUrl).create() : null); + put("measuringRoomNextPesponsibleUrl", StringUtils.isNotBlank(finalMeasurementRoomUrl) ? Pictures.ofLocal(imgUrl + "/" + finalMeasurementRoomUrl).create() : null); + put("approvalNextPesponsibleUrl", StringUtils.isNotBlank(finalApprovedUrl) ? Pictures.ofLocal(imgUrl + "/" + finalApprovedUrl).create() : null); + put("laboratory", laboratoryName); + }}); + + try { + response.setContentType("application/msword"); + String fileName = URLEncoder.encode( + "璁惧缁存姢淇濆吇璁板綍", "UTF-8"); + response.setHeader("Content-disposition", + "attachment;filename=" + fileName + ".docx"); + OutputStream os = response.getOutputStream(); + template.write(os); + os.flush(); + os.close(); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("瀵煎嚭澶辫触"); + } + } +} diff --git a/cnas-device/src/main/resources/mapper/DeviceBorrowMapper.xml b/cnas-device/src/main/resources/mapper/DeviceBorrowMapper.xml new file mode 100644 index 0000000..bb2454d --- /dev/null +++ b/cnas-device/src/main/resources/mapper/DeviceBorrowMapper.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.device.mapper.DeviceBorrowMapper"> + + <select id="deviceBorrowPage" resultType="com.ruoyi.device.pojo.DeviceBorrow"> + select * from ( + select db.*,device_name + from device_borrow db + left join `center-lims`.device on db.device_id=device.id + )a + <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''"> + ${ew.customSqlSegment} + </if> + </select> + <select id="getDeviceBorrowBydeviceId" resultType="com.ruoyi.device.pojo.DeviceBorrow"> + select db.*,device_name + from device_borrow db + left join `center-lims`.device on db.device_id=device.id + where device_id=#{deviceId} + </select> +</mapper> diff --git a/cnas-device/src/main/resources/mapper/DeviceScrappedMapper.xml b/cnas-device/src/main/resources/mapper/DeviceScrappedMapper.xml new file mode 100644 index 0000000..9bc7595 --- /dev/null +++ b/cnas-device/src/main/resources/mapper/DeviceScrappedMapper.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.device.mapper.DeviceScrappedMapper"> + + <!-- 璁惧鎶ュ簾鐢宠鍒楄〃 --> + <select id="pageDeviceScrapped" resultType="com.ruoyi.device.pojo.DeviceScrapped"> + select * from ( + select * + from device_scrapped + order by create_time desc + ) a + <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''"> + ${ew.customSqlSegment} + </if> + </select> + <select id="selectDeviceScrappedById" resultType="com.ruoyi.device.dto.DeviceScrappedDto"> + select + *, + date_format(applicant_date,'%Y骞�%m鏈�%d鏃�') as applicantDateStr, + date_format(department_head_date,'%Y骞�%m鏈�%d鏃�') as departmentHeadDateStr, + date_format(metering_room_date,'%Y骞�%m鏈�%d鏃�') as meteringRoomDateStr, + date_format(approver_date,'%Y骞�%m鏈�%d鏃�') as approverDateStr + from device_scrapped + where scrapped_id = #{scrappedId} + </select> + +</mapper> diff --git a/cnas-device/src/main/resources/mapper/DeviceStateMapper.xml b/cnas-device/src/main/resources/mapper/DeviceStateMapper.xml new file mode 100644 index 0000000..3423111 --- /dev/null +++ b/cnas-device/src/main/resources/mapper/DeviceStateMapper.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.device.mapper.DeviceStateMapper"> + + + <select id="getDeviceStatePage" resultType="com.ruoyi.device.dto.DeviceStateDto"> + select ds.*, + d.device_name, + d.management_number, + d.specification_model, + d.large_category + from device_state ds + left join device d on d.id = ds.device_id + where ds.device_id = #{deviceId} + <if test="processNumber != '' and processNumber != null"> + and ds.process_number like concat('%', #{processNumber}, '%') + </if> + </select> +</mapper> diff --git a/cnas-device/src/main/resources/static/word/acceptance-certificate.docx b/cnas-device/src/main/resources/static/word/acceptance-certificate.docx new file mode 100644 index 0000000..c4412dd --- /dev/null +++ b/cnas-device/src/main/resources/static/word/acceptance-certificate.docx Binary files differ diff --git a/cnas-device/src/main/resources/static/word/device-accident-report.docx b/cnas-device/src/main/resources/static/word/device-accident-report.docx new file mode 100644 index 0000000..6263ba9 --- /dev/null +++ b/cnas-device/src/main/resources/static/word/device-accident-report.docx Binary files differ diff --git a/cnas-device/src/main/resources/static/word/device-breakdown-maintenance.docx b/cnas-device/src/main/resources/static/word/device-breakdown-maintenance.docx new file mode 100644 index 0000000..595edc5 --- /dev/null +++ b/cnas-device/src/main/resources/static/word/device-breakdown-maintenance.docx Binary files differ diff --git a/cnas-device/src/main/resources/static/word/device-calibration-plan.docx b/cnas-device/src/main/resources/static/word/device-calibration-plan.docx new file mode 100644 index 0000000..4f4e6ff --- /dev/null +++ b/cnas-device/src/main/resources/static/word/device-calibration-plan.docx Binary files differ diff --git a/cnas-device/src/main/resources/static/word/device-document.docx b/cnas-device/src/main/resources/static/word/device-document.docx new file mode 100644 index 0000000..d9e1d51 --- /dev/null +++ b/cnas-device/src/main/resources/static/word/device-document.docx Binary files differ diff --git a/cnas-device/src/main/resources/static/word/device-external-apply.docx b/cnas-device/src/main/resources/static/word/device-external-apply.docx new file mode 100644 index 0000000..8df765b --- /dev/null +++ b/cnas-device/src/main/resources/static/word/device-external-apply.docx Binary files differ diff --git a/cnas-device/src/main/resources/static/word/device-inspection-record.docx b/cnas-device/src/main/resources/static/word/device-inspection-record.docx new file mode 100644 index 0000000..2c7a4f4 --- /dev/null +++ b/cnas-device/src/main/resources/static/word/device-inspection-record.docx Binary files differ diff --git a/cnas-device/src/main/resources/static/word/device-scrapped.docx b/cnas-device/src/main/resources/static/word/device-scrapped.docx new file mode 100644 index 0000000..96dfdd8 --- /dev/null +++ b/cnas-device/src/main/resources/static/word/device-scrapped.docx Binary files differ diff --git a/cnas-device/src/main/resources/static/word/device-status.docx b/cnas-device/src/main/resources/static/word/device-status.docx new file mode 100644 index 0000000..5753f22 --- /dev/null +++ b/cnas-device/src/main/resources/static/word/device-status.docx Binary files differ diff --git a/cnas-device/src/main/resources/static/word/examine-plan-detail.docx b/cnas-device/src/main/resources/static/word/examine-plan-detail.docx new file mode 100644 index 0000000..118c324 --- /dev/null +++ b/cnas-device/src/main/resources/static/word/examine-plan-detail.docx Binary files differ diff --git a/cnas-device/src/main/resources/static/word/examine-record.docx b/cnas-device/src/main/resources/static/word/examine-record.docx new file mode 100644 index 0000000..2462971 --- /dev/null +++ b/cnas-device/src/main/resources/static/word/examine-record.docx Binary files differ diff --git a/cnas-device/src/main/resources/static/word/incident-report.docx b/cnas-device/src/main/resources/static/word/incident-report.docx new file mode 100644 index 0000000..c190287 --- /dev/null +++ b/cnas-device/src/main/resources/static/word/incident-report.docx Binary files differ diff --git a/cnas-device/src/main/resources/static/word/maintenance-plan.docx b/cnas-device/src/main/resources/static/word/maintenance-plan.docx new file mode 100644 index 0000000..d4e69a0 --- /dev/null +++ b/cnas-device/src/main/resources/static/word/maintenance-plan.docx Binary files differ diff --git a/cnas-device/src/main/resources/static/word/maintenance-records.docx b/cnas-device/src/main/resources/static/word/maintenance-records.docx new file mode 100644 index 0000000..ba8c9f8 --- /dev/null +++ b/cnas-device/src/main/resources/static/word/maintenance-records.docx Binary files differ diff --git a/cnas-device/src/main/resources/static/word/quipment-details.docx b/cnas-device/src/main/resources/static/word/quipment-details.docx new file mode 100644 index 0000000..d244180 --- /dev/null +++ b/cnas-device/src/main/resources/static/word/quipment-details.docx Binary files differ diff --git a/cnas-device/src/main/resources/static/word/review-examine-record-contrast.docx b/cnas-device/src/main/resources/static/word/review-examine-record-contrast.docx new file mode 100644 index 0000000..dd48c97 --- /dev/null +++ b/cnas-device/src/main/resources/static/word/review-examine-record-contrast.docx Binary files differ diff --git a/cnas-device/src/main/resources/static/word/traceability-management-details.docx b/cnas-device/src/main/resources/static/word/traceability-management-details.docx new file mode 100644 index 0000000..cb6d3b9 --- /dev/null +++ b/cnas-device/src/main/resources/static/word/traceability-management-details.docx Binary files differ diff --git a/cnas-device/src/main/resources/static/word/use-record.docx b/cnas-device/src/main/resources/static/word/use-record.docx new file mode 100644 index 0000000..236e645 --- /dev/null +++ b/cnas-device/src/main/resources/static/word/use-record.docx Binary files differ -- Gitblit v1.9.3