db/Êý¾Ý¿â²úÆ·»¯Éè¼Æ.pdma.json
@@ -2,9 +2,9 @@ "name": "æ°æ®åºäº§åå设计", "describe": "æè¿°è®¾å¤ç®¡çæ°æ®åºè®¾è®¡ææ¡£", "avatar": "", "version": "4.9.2", "version": "4.9.4", "createdTime": "2025-3-10 16:38:19", "updatedTime": "2025-6-9 10:59:32", "updatedTime": "2025-6-20 14:38:56", "dbConns": [], "profile": { "default": { @@ -632,7 +632,7 @@ "#DDE5FF" ], "DDLToggleCase": "L", "menuWidth": "420px" "menuWidth": "389px" }, "entities": [ { @@ -11850,6 +11850,24 @@ "baseType": "89D69E81-EA34-42EE-9FA2-93B8BD27E098" }, { "defKey": "repair_id", "defName": "ç»´ä¿®ID", "comment": "", "type": "", "len": "", "scale": "", "primaryKey": false, "notNull": false, "autoIncrement": false, "defaultValue": "", "hideInGraph": false, "refDict": "", "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64", "extProps": {}, "domain": "16120F75-6AA7-4483-868D-F07F511BB081", "id": "68C87AA2-0619-4565-8B30-1C4C8D27CD7C" }, { "defKey": "equipment_id", "defName": "设å¤ID", "comment": "", lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentPurchasePlanStatusEnum.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ package org.jeecg.modules.eam.constant; import lombok.Getter; /** * 设å¤éè´è®¡åç¶æ */ @Getter public enum EquipmentPurchasePlanStatusEnum { NEWLY("æ°å»º"),//æ°å»º PENDING_AUDIT("å¾ å®¡æ ¸"),//å¾ å®¡æ ¸ COMPLETED("已宿"), //已宿 REJECT("驳å"); //驳å private final String zhName; EquipmentPurchasePlanStatusEnum(String zhName) { this.zhName = zhName; } /** * æ ¹æ®ä¸æåè·åæä¸¾ */ public static EquipmentPurchasePlanStatusEnum fromZhName(String zhName) { for (EquipmentPurchasePlanStatusEnum e : values()) { if (e.getZhName().equals(zhName)) { return e; } } return null; } } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/util/ExcelUtils.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,51 @@ package org.jeecg.modules.eam.util; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.Row; import java.text.SimpleDateFormat; public class ExcelUtils { // è¾ å©æ¹æ³ï¼æ ¹æ®åå æ ¼ç±»åå®å ¨å°è·ååç¬¦ä¸²å¼ public static String getCellValueAsString(Cell cell) { if (cell == null) { return null; } switch (cell.getCellType()) { case STRING: return cell.getStringCellValue(); case NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { // å¦ææ¯æ¥ææ ¼å¼ï¼è¿åæ¥æå符串 return new SimpleDateFormat("yyyy-MM-dd").format(cell.getDateCellValue()); } else { // å¦åè¿åæ°å¼çåç¬¦ä¸²å½¢å¼ return String.valueOf(cell.getNumericCellValue()); } case BOOLEAN: return String.valueOf(cell.getBooleanCellValue()); case FORMULA: try { return String.valueOf(cell.getNumericCellValue()); // å°è¯è§£æå ¬å¼ç»æ } catch (Exception e) { return String.valueOf(cell.getStringCellValue()); // å¦æå ¬å¼ç»æä¸ºå符串 } default: return ""; } } // 夿æä¸è¡æ¯å¦å ¨ä¸ºç©º(æææ°æ®è¡å¤æ) public static boolean isRowEmpty(Row row) { if (row == null) return true; for (int c = row.getFirstCellNum(); c < row.getLastCellNum(); c++) { Cell cell = row.getCell(c); if (cell != null && cell.getCellType() != CellType.BLANK) { return false; } } return true; } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentPurchasePlanController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,414 @@ package org.jeecg.modules.eam.controller; import java.io.File; import java.io.InputStream; import java.math.BigDecimal; import java.text.ParseException; import java.util.*; import java.util.stream.Collectors; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.apache.commons.lang3.time.DateUtils; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.util.PmsUtil; import org.jeecg.common.util.StrUtils; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.eam.constant.EquipmentPurchasePlanStatusEnum; import org.jeecg.modules.eam.entity.EamEquipmentPurchasePlan; import org.jeecg.modules.eam.service.IEamEquipmentPurchasePlanService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; import org.jeecg.modules.eam.util.ExcelUtils; import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.service.IMdcProductionService; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.jeecg.modules.system.service.ISysUserService; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.jeecg.common.system.base.controller.JeecgController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import com.alibaba.fastjson.JSON; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.jeecg.common.aspect.annotation.AutoLog; /** * @Description: eam_equipment_purchase_plan * @Author: jeecg-boot * @Date: 2025-06-18 * @Version: V1.0 */ @Api(tags="eam_equipment_purchase_plan") @RestController @RequestMapping("/eam/eamEquipmentPurchasePlan") @Slf4j public class EamEquipmentPurchasePlanController extends JeecgController<EamEquipmentPurchasePlan, IEamEquipmentPurchasePlanService> { @Autowired private IEamEquipmentPurchasePlanService eamEquipmentPurchasePlanService; @Autowired private ISysUserService sysUserService; @Autowired private IMdcProductionService mdcProductionService; @Autowired private ISysBusinessCodeRuleService sysBusinessCodeRuleService; /** * å页å表æ¥è¯¢ * * @param eamEquipmentPurchasePlan * @param pageNo * @param pageSize * @param req * @return */ //@AutoLog(value = "eam_equipment_purchase_plan-å页å表æ¥è¯¢") @ApiOperation(value="eam_equipment_purchase_plan-å页å表æ¥è¯¢", notes="eam_equipment_purchase_plan-å页å表æ¥è¯¢") @GetMapping(value = "/list") public Result<IPage<EamEquipmentPurchasePlan>> queryPageList(EamEquipmentPurchasePlan eamEquipmentPurchasePlan, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { QueryWrapper<EamEquipmentPurchasePlan> queryWrapper = QueryGenerator.initQueryWrapper(eamEquipmentPurchasePlan, req.getParameterMap()); Page<EamEquipmentPurchasePlan> page = new Page<EamEquipmentPurchasePlan>(pageNo, pageSize); IPage<EamEquipmentPurchasePlan> pageList = eamEquipmentPurchasePlanService.page(page, queryWrapper); return Result.OK(pageList); } /** * æ·»å * * @param eamEquipmentPurchasePlan * @return */ @AutoLog(value = "eam_equipment_purchase_plan-æ·»å ") @ApiOperation(value="eam_equipment_purchase_plan-æ·»å ", notes="eam_equipment_purchase_plan-æ·»å ") //@RequiresPermissions("org.jeecg.modules:eam_equipment_purchase_plan:add") @PostMapping(value = "/add") public Result<String> add(@RequestBody EamEquipmentPurchasePlan eamEquipmentPurchasePlan) { eamEquipmentPurchasePlanService.savePurchasePlan(eamEquipmentPurchasePlan); return Result.OK("æ·»å æåï¼"); } /** * ç¼è¾ * * @param eamEquipmentPurchasePlan * @return */ @AutoLog(value = "eam_equipment_purchase_plan-ç¼è¾") @ApiOperation(value="eam_equipment_purchase_plan-ç¼è¾", notes="eam_equipment_purchase_plan-ç¼è¾") //@RequiresPermissions("org.jeecg.modules:eam_equipment_purchase_plan:edit") @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) public Result<String> edit(@RequestBody EamEquipmentPurchasePlan eamEquipmentPurchasePlan) { eamEquipmentPurchasePlanService.updateById(eamEquipmentPurchasePlan); return Result.OK("ç¼è¾æå!"); } @AutoLog(value = "eam_equipment_purchase_plan-æäº¤") @ApiOperation(value="eam_equipment_purchase_plan-æäº¤", notes = "eam_equipment_purchase_plan-æäº¤") //@RequiresPermissions("org.jeecg.modules:eam_equipment_purchase_plan:submit") @GetMapping(value = "/submit") public Result<String> submit(@RequestParam("id") String id) { EamEquipmentPurchasePlan plan = eamEquipmentPurchasePlanService.getById(id); if (Objects.isNull(plan) || !EquipmentPurchasePlanStatusEnum.NEWLY.name().equals(plan.getPlanStatus())) { return Result.error("éè´è®¡åä¸åå¨/计åå·²æäº¤ï¼"); } plan.setPlanStatus(EquipmentPurchasePlanStatusEnum.PENDING_AUDIT.name()); eamEquipmentPurchasePlanService.updateById(plan); return Result.OK("æäº¤æå!"); } @AutoLog(value = "eam_equipment_purchase_plan-å®¡æ ¸") @ApiOperation(value="eam_equipment_purchase_plan-å®¡æ ¸", notes = "eam_equipment_purchase_plan-å®¡æ ¸") //@RequiresPermissions("org.jeecg.modules:eam_equipment_purchase_plan:audit") @RequestMapping(value = "/audit", method = {RequestMethod.PUT,RequestMethod.POST}) public Result<String> audit(@RequestBody EamEquipmentPurchasePlan request) { EamEquipmentPurchasePlan plan = eamEquipmentPurchasePlanService.getById(request.getId()); if (Objects.isNull(plan)) { return Result.error("éè´è®¡åä¸åå¨ï¼"); } if (!EquipmentPurchasePlanStatusEnum.PENDING_AUDIT.name().equals(plan.getPlanStatus())) { return Result.error("è®¡åæªæäº¤æå·²å®¡æ ¸ï¼"); } if (EquipmentPurchasePlanStatusEnum.COMPLETED.name().equals(request.getPlanStatus())) { plan.setPlanStatus(EquipmentPurchasePlanStatusEnum.COMPLETED.name()); } if (EquipmentPurchasePlanStatusEnum.REJECT.name().equals(request.getPlanStatus())) { //妿驳åï¼ç¶ææ¹ä¸ºæ°å»ºï¼éæ°æäº¤å®¡æ ¸ plan.setPlanStatus(EquipmentPurchasePlanStatusEnum.NEWLY.name()); } eamEquipmentPurchasePlanService.updateById(plan); return Result.OK("å®¡æ ¸æå!"); } /** * éè¿idå é¤ * * @param id * @return */ @AutoLog(value = "eam_equipment_purchase_plan-éè¿idå é¤") @ApiOperation(value="eam_equipment_purchase_plan-éè¿idå é¤", notes="eam_equipment_purchase_plan-éè¿idå é¤") //@RequiresPermissions("org.jeecg.modules:eam_equipment_purchase_plan:delete") @DeleteMapping(value = "/delete") public Result<String> delete(@RequestParam(name="id",required=true) String id) { eamEquipmentPurchasePlanService.removeById(id); return Result.OK("å 餿å!"); } /** * æ¹éå é¤ * * @param ids * @return */ @AutoLog(value = "eam_equipment_purchase_plan-æ¹éå é¤") @ApiOperation(value="eam_equipment_purchase_plan-æ¹éå é¤", notes="eam_equipment_purchase_plan-æ¹éå é¤") //@RequiresPermissions("org.jeecg.modules:eam_equipment_purchase_plan:deleteBatch") @DeleteMapping(value = "/deleteBatch") public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { this.eamEquipmentPurchasePlanService.removeByIds(Arrays.asList(ids.split(","))); return Result.OK("æ¹éå 餿å!"); } /** * éè¿idæ¥è¯¢ * * @param id * @return */ //@AutoLog(value = "eam_equipment_purchase_plan-éè¿idæ¥è¯¢") @ApiOperation(value="eam_equipment_purchase_plan-éè¿idæ¥è¯¢", notes="eam_equipment_purchase_plan-éè¿idæ¥è¯¢") @GetMapping(value = "/queryById") public Result<EamEquipmentPurchasePlan> queryById(@RequestParam(name="id",required=true) String id) { EamEquipmentPurchasePlan eamEquipmentPurchasePlan = eamEquipmentPurchasePlanService.getById(id); if(eamEquipmentPurchasePlan==null) { return Result.error("æªæ¾å°å¯¹åºæ°æ®"); } return Result.OK(eamEquipmentPurchasePlan); } /** * 导åºexcel * * @param request * @param eamEquipmentPurchasePlan */ //@RequiresPermissions("org.jeecg.modules:eam_equipment_purchase_plan:exportXls") @RequestMapping(value = "/exportXls") public ModelAndView exportXls(HttpServletRequest request, EamEquipmentPurchasePlan eamEquipmentPurchasePlan) { return super.exportXls(request, eamEquipmentPurchasePlan, EamEquipmentPurchasePlan.class, "设å¤éè´è®¡å"); } /** * éè¿excelå¯¼å ¥æ°æ® * * @param request * @param response * @return */ //@RequiresPermissions("eam_equipment_purchase_plan:importExcel") @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); int successLines = 0,dataLines = 0; List<String> errorMessage = CollectionUtil.newArrayList(); List<EamEquipmentPurchasePlan> importList = CollectionUtil.newArrayList(); try { for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { // è·åä¸ä¼ æä»¶å¯¹è±¡ MultipartFile file = entity.getValue(); InputStream inputStream = file.getInputStream(); Workbook workbook = WorkbookFactory.create(inputStream); Sheet sheet = workbook.getSheetAt(0); for (Row row : sheet) { EamEquipmentPurchasePlan plan = new EamEquipmentPurchasePlan(); int rowNum = row.getRowNum(); int currentRowNum = rowNum + 1; if (rowNum < 3 || ExcelUtils.isRowEmpty(row)) { //è·³è¿è¡¨å¤´åç©ºè¡ continue; } dataLines++; Cell cell0 = row.getCell(0); if (cell0 == null || cell0.getCellType() == CellType.BLANK) { errorMessage.add("第" + currentRowNum + "è¡éè´è®¡ååç§°ä¸ºç©ºï¼æ æ³å¯¼å ¥"); continue; } else { plan.setPlanName(ExcelUtils.getCellValueAsString(cell0)); } Cell cell1 = row.getCell(1); if (cell1 == null || cell1.getCellType() == CellType.BLANK) { //å¦æè®¡åç¶æä¸ºç©ºï¼é»è®¤ç» æ°å»º ç¶æ plan.setPlanStatus(EquipmentPurchasePlanStatusEnum.NEWLY.name()); } else { String statusZh = ExcelUtils.getCellValueAsString(cell1).trim(); EquipmentPurchasePlanStatusEnum planStatusEnum = EquipmentPurchasePlanStatusEnum.fromZhName(statusZh); if (Objects.isNull(planStatusEnum)) { errorMessage.add("第 " + currentRowNum + " è¡è®¡åç¶æä¸åæ³ï¼æ æ³å¯¼å ¥ï¼è¯·ä½¿ç¨ [æ°å»º, å¾ å®¡æ ¸, 已宿] ä¸çä¸ä¸ªå¼"); continue; } plan.setPlanStatus(planStatusEnum.name()); } Cell cell2 = row.getCell(2); if (cell2 == null || cell2.getCellType() == CellType.BLANK) { errorMessage.add("第 " + currentRowNum + " è¡åå·ä¸ºç©ºï¼æ æ³å¯¼å ¥"); continue; } else { plan.setEquipmentModel(ExcelUtils.getCellValueAsString(cell2)); } Cell cell3 = row.getCell(3); if (cell3 == null || cell3.getCellType() == CellType.BLANK) { errorMessage.add("第 " + currentRowNum + " è¡éè´æ°éä¸ºç©ºï¼æ æ³å¯¼å ¥"); continue; } else { plan.setPurchaseNumber(Integer.valueOf(ExcelUtils.getCellValueAsString(cell3))); } Cell cell4 = row.getCell(4); if (cell4 == null || cell4.getCellType() == CellType.BLANK) { errorMessage.add("第 " + currentRowNum + " è¡é¢è®¡åä»·ä¸ºç©ºï¼æ æ³å¯¼å ¥"); continue; } else { plan.setEstimatedUnitPrice(new BigDecimal(ExcelUtils.getCellValueAsString(cell4))); } Cell cell5 = row.getCell(5); if (cell5 == null || cell5.getCellType() == CellType.BLANK) { errorMessage.add("第 " + currentRowNum + " è¡æ»ä»·ä¸ºç©ºï¼æ æ³å¯¼å ¥"); continue; } else { plan.setTotalPrice(new BigDecimal(ExcelUtils.getCellValueAsString(cell5))); } Cell cell6 = row.getCell(6); if (cell6 == null || cell6.getCellType() == CellType.BLANK) { errorMessage.add("第 " + currentRowNum + " è¡ååæ»éé¢ä¸ºç©ºï¼æ æ³å¯¼å ¥"); continue; } else { plan.setOverallContractAmount(new BigDecimal(ExcelUtils.getCellValueAsString(cell6))); } Cell cell7 = row.getCell(7); if (cell7 == null || cell7.getCellType() == CellType.BLANK) { errorMessage.add("第 " + currentRowNum + " è¡ç®¡çåç±»ä¸ºç©ºï¼æ æ³å¯¼å ¥"); continue; } else { plan.setEquipmentImportance(ExcelUtils.getCellValueAsString(cell7)); } Cell cell8 = row.getCell(8); if (cell8 == null || cell8.getCellType() == CellType.BLANK) { errorMessage.add("第 " + currentRowNum + " è¡ç³è¯·äººä¸ºç©ºï¼æ æ³å¯¼å ¥"); continue; } else { String username = ExcelUtils.getCellValueAsString(cell8); SysUser sysUser = sysUserService.getUserByName(username); if (sysUser == null) { errorMessage.add("第 " + currentRowNum + " è¡ç³è¯·äººä¸åå¨ï¼æ æ³å¯¼å ¥"); continue; } plan.setPlanCategory(username); } Cell cell9 = row.getCell(9); if (cell9 == null || cell9.getCellType() == CellType.BLANK) { errorMessage.add("第 " + currentRowNum + " è¡ç³è¯·è½¦é´ä¸ºç©ºï¼æ æ³å¯¼å ¥"); continue; } else { String productionName = ExcelUtils.getCellValueAsString(cell9); boolean present = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>() .eq(MdcProduction::getProductionName, productionName) .eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0)) .stream().findAny().isPresent(); if (!present) { errorMessage.add("第 " + currentRowNum + " è¡ç³è¯·è½¦é´ä¸åå¨ï¼æ æ³å¯¼å ¥"); continue; } plan.setApplicantProduction(productionName); } Cell cell10 = row.getCell(10); if (cell10 == null || cell10.getCellType() == CellType.BLANK) { errorMessage.add("第 " + currentRowNum + " è¡è®¡åå¼å§æ¥æä¸ºç©ºï¼æ æ³å¯¼å ¥"); continue; } else { String planStartDateStr = ExcelUtils.getCellValueAsString(cell10); try { Date date = DateUtils.parseDate(planStartDateStr, "yyyy/MM/dd HH", "yyyy/MM/dd", "yyyy-MM-dd HH", "yyyy-MM-dd"); plan.setPlanStartDate(date); } catch (ParseException e) { errorMessage.add("第 " + currentRowNum + " è¡è®¡åå¼å§æ¥ææ ¼å¼éè¯¯ï¼æ æ³å¯¼å ¥ï¼è¯·ä½¿ç¨ yyyy-MM-dd æ ¼å¼"); continue; } } Cell cell11 = row.getCell(11); if (cell11 == null || cell11.getCellType() == CellType.BLANK) { errorMessage.add("第 " + currentRowNum + " è¡è®¡å宿æ¶é´ä¸ºç©ºï¼æ æ³å¯¼å ¥"); continue; } else { String planEndDateStr = ExcelUtils.getCellValueAsString(cell11); try { Date date = DateUtils.parseDate(planEndDateStr, "yyyy/MM/dd HH", "yyyy/MM/dd", "yyyy-MM-dd HH", "yyyy-MM-dd"); plan.setPlanEndDate(date); } catch (ParseException e) { errorMessage.add("第 " + currentRowNum + " è¡è®¡åå®ææ¥ææ ¼å¼éè¯¯ï¼æ æ³å¯¼å ¥ï¼è¯·ä½¿ç¨ yyyy-MM-dd æ ¼å¼"); continue; } } Cell cell12 = row.getCell(12); plan.setPlanDescription(ExcelUtils.getCellValueAsString(cell12)); Cell cell13 = row.getCell(13); plan.setRelatedDeparts(ExcelUtils.getCellValueAsString(cell13)); Cell cell14 = row.getCell(14); plan.setRemark(ExcelUtils.getCellValueAsString(cell14)); plan.setPlanCode(sysBusinessCodeRuleService.generateBusinessCodeSeq("EquipmentPurchasePlanRule")); plan.setDelFlag(CommonConstant.DEL_FLAG_0); importList.add(plan); successLines++; } } eamEquipmentPurchasePlanService.saveBatch(importList); if (successLines == dataLines) { return Result.OK("å ±" + dataLines + "è¡æ°æ®å ¨é¨å¯¼å ¥æåï¼"); } else { JSONObject result = new JSONObject(5); result.put("successCount", successLines); result.put("msg", "æ»ä¸ä¼ è¡æ°ï¼" + dataLines + "ï¼æåå¯¼å ¥è¡æ°ï¼" + successLines); result.put("errorMsg", errorMessage); String fileUrl = PmsUtil.saveErrorMsgByList(errorMessage, "userImportExcelErrorLog"); int lastIndex = fileUrl.lastIndexOf(File.separator); String fileName = fileUrl.substring(lastIndex + 1); result.put("fileUrl", "/sys/common/static/" + fileUrl); result.put("fileName", fileName); Result res = Result.ok(result); res.setCode(201); res.setMessage("æä»¶å¯¼å ¥æåï¼ä½æé误ã"); return res; } } catch (IOException e) { throw new RuntimeException(e); } } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamPurchasePlanAttachmentController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,182 @@ package org.jeecg.modules.eam.controller; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.eam.entity.EamPurchasePlanAttachment; import org.jeecg.modules.eam.request.EamPurchasePlanAttachmentRequest; import org.jeecg.modules.eam.service.IEamPurchasePlanAttachmentService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.jeecg.common.system.base.controller.JeecgController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import com.alibaba.fastjson.JSON; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.jeecg.common.aspect.annotation.AutoLog; /** * @Description: eam_purchase_plan_attachment * @Author: jeecg-boot * @Date: 2025-06-18 * @Version: V1.0 */ @Api(tags="eam_purchase_plan_attachment") @RestController @RequestMapping("/eam/eamPurchasePlanAttachment") @Slf4j public class EamPurchasePlanAttachmentController extends JeecgController<EamPurchasePlanAttachment, IEamPurchasePlanAttachmentService> { @Autowired private IEamPurchasePlanAttachmentService eamPurchasePlanAttachmentService; /** * å页å表æ¥è¯¢ * * @param eamPurchasePlanAttachment * @param pageNo * @param pageSize * @param req * @return */ //@AutoLog(value = "eam_purchase_plan_attachment-å页å表æ¥è¯¢") @ApiOperation(value="eam_purchase_plan_attachment-å页å表æ¥è¯¢", notes="eam_purchase_plan_attachment-å页å表æ¥è¯¢") @GetMapping(value = "/list") public Result<IPage<EamPurchasePlanAttachment>> queryPageList(EamPurchasePlanAttachment eamPurchasePlanAttachment, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { QueryWrapper<EamPurchasePlanAttachment> queryWrapper = QueryGenerator.initQueryWrapper(eamPurchasePlanAttachment, req.getParameterMap()); Page<EamPurchasePlanAttachment> page = new Page<EamPurchasePlanAttachment>(pageNo, pageSize); IPage<EamPurchasePlanAttachment> pageList = eamPurchasePlanAttachmentService.page(page, queryWrapper); return Result.OK(pageList); } /** * æ·»å * * @param request * @return */ @AutoLog(value = "eam_purchase_plan_attachment-æ·»å ") @ApiOperation(value="eam_purchase_plan_attachment-æ·»å ", notes="eam_purchase_plan_attachment-æ·»å ") //@RequiresPermissions("org.jeecg.modules:eam_purchase_plan_attachment:add") @PostMapping(value = "/add") public Result<String> add(@RequestBody EamPurchasePlanAttachmentRequest request) { eamPurchasePlanAttachmentService.saveAttachmentList(request); return Result.OK("æ·»å æåï¼"); } /** * ç¼è¾ * * @param eamPurchasePlanAttachment * @return */ @AutoLog(value = "eam_purchase_plan_attachment-ç¼è¾") @ApiOperation(value="eam_purchase_plan_attachment-ç¼è¾", notes="eam_purchase_plan_attachment-ç¼è¾") //@RequiresPermissions("org.jeecg.modules:eam_purchase_plan_attachment:edit") @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) public Result<String> edit(@RequestBody EamPurchasePlanAttachment eamPurchasePlanAttachment) { eamPurchasePlanAttachmentService.updateById(eamPurchasePlanAttachment); return Result.OK("ç¼è¾æå!"); } /** * éè¿idå é¤ * * @param id * @return */ @AutoLog(value = "eam_purchase_plan_attachment-éè¿idå é¤") @ApiOperation(value="eam_purchase_plan_attachment-éè¿idå é¤", notes="eam_purchase_plan_attachment-éè¿idå é¤") //@RequiresPermissions("org.jeecg.modules:eam_purchase_plan_attachment:delete") @DeleteMapping(value = "/delete") public Result<String> delete(@RequestParam(name="id",required=true) String id) { eamPurchasePlanAttachmentService.removeById(id); return Result.OK("å 餿å!"); } /** * æ¹éå é¤ * * @param ids * @return */ @AutoLog(value = "eam_purchase_plan_attachment-æ¹éå é¤") @ApiOperation(value="eam_purchase_plan_attachment-æ¹éå é¤", notes="eam_purchase_plan_attachment-æ¹éå é¤") //@RequiresPermissions("org.jeecg.modules:eam_purchase_plan_attachment:deleteBatch") @DeleteMapping(value = "/deleteBatch") public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { this.eamPurchasePlanAttachmentService.removeByIds(Arrays.asList(ids.split(","))); return Result.OK("æ¹éå 餿å!"); } /** * éè¿idæ¥è¯¢ * * @param id * @return */ //@AutoLog(value = "eam_purchase_plan_attachment-éè¿idæ¥è¯¢") @ApiOperation(value="eam_purchase_plan_attachment-éè¿idæ¥è¯¢", notes="eam_purchase_plan_attachment-éè¿idæ¥è¯¢") @GetMapping(value = "/queryById") public Result<EamPurchasePlanAttachment> queryById(@RequestParam(name="id",required=true) String id) { EamPurchasePlanAttachment eamPurchasePlanAttachment = eamPurchasePlanAttachmentService.getById(id); if(eamPurchasePlanAttachment==null) { return Result.error("æªæ¾å°å¯¹åºæ°æ®"); } return Result.OK(eamPurchasePlanAttachment); } /** * 导åºexcel * * @param request * @param eamPurchasePlanAttachment */ //@RequiresPermissions("org.jeecg.modules:eam_purchase_plan_attachment:exportXls") @RequestMapping(value = "/exportXls") public ModelAndView exportXls(HttpServletRequest request, EamPurchasePlanAttachment eamPurchasePlanAttachment) { return super.exportXls(request, eamPurchasePlanAttachment, EamPurchasePlanAttachment.class, "eam_purchase_plan_attachment"); } /** * éè¿excelå¯¼å ¥æ°æ® * * @param request * @param response * @return */ //@RequiresPermissions("eam_purchase_plan_attachment:importExcel") @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { return super.importExcel(request, response, EamPurchasePlanAttachment.class); } @GetMapping("/downloadFile") public void downloadFile(@RequestParam("id") String id, HttpServletResponse response) { eamPurchasePlanAttachmentService.downloadFile(response, eamPurchasePlanAttachmentService.getById(id)); } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentPurchasePlan.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,132 @@ package org.jeecg.modules.eam.entity; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.util.Date; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableLogic; import lombok.Data; import com.fasterxml.jackson.annotation.JsonFormat; import org.springframework.format.annotation.DateTimeFormat; import org.jeecgframework.poi.excel.annotation.Excel; import org.jeecg.common.aspect.annotation.Dict; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** * @Description: eam_equipment_purchase_plan * @Author: jeecg-boot * @Date: 2025-06-18 * @Version: V1.0 */ @Data @TableName("eam_equipment_purchase_plan") @Accessors(chain = true) @EqualsAndHashCode(callSuper = false) @ApiModel(value="eam_equipment_purchase_plan对象", description="eam_equipment_purchase_plan") public class EamEquipmentPurchasePlan implements Serializable { private static final long serialVersionUID = 1L; /**主é®*/ @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "主é®") private String id; /**éè´è®¡ååç§°*/ @Excel(name = "éè´è®¡ååç§°", width = 20, orderNum = "2") @ApiModelProperty(value = "éè´è®¡ååç§°") private String planName; /**éè´è®¡åç¼ç */ @Excel(name = "éè´è®¡åç¼ç ", width = 20, orderNum = "1") @ApiModelProperty(value = "éè´è®¡åç¼ç ") private String planCode; /**计åç¶æ*/ @Dict(dicCode = "equipment_purchase_plan_status") @Excel(name = "计åç¶æ", width = 20, dicCode = "equipment_purchase_plan_status", orderNum = "3") @ApiModelProperty(value = "计åç¶æ") private String planStatus; /**åå·*/ @Excel(name = "åå·", width = 15, orderNum = "4") @ApiModelProperty(value = "åå·") private String equipmentModel; /**éè´æ°é*/ @Excel(name = "éè´æ°é", width = 15, orderNum = "5") @ApiModelProperty(value = "éè´æ°é") private Integer purchaseNumber; /**é¢è®¡åä»·*/ @Excel(name = "é¢è®¡åä»·", width = 15, orderNum = "6") @ApiModelProperty(value = "é¢è®¡åä»·") private BigDecimal estimatedUnitPrice; /**æ»ä»·*/ @Excel(name = "æ»ä»·", width = 15, orderNum = "7") @ApiModelProperty(value = "æ»ä»·") private BigDecimal totalPrice; /**ååæ»éé¢*/ @Excel(name = "ååæ»éé¢", width = 15, orderNum = "8") @ApiModelProperty(value = "ååæ»éé¢") private BigDecimal overallContractAmount; /**ABCæ è¯(管çåç±»)*/ @Excel(name = "管çåç±»", width = 10, orderNum = "9") @ApiModelProperty(value = "ABCæ è¯(管çåç±»)") private String equipmentImportance; /**计åç±»å«*/ @ApiModelProperty(value = "计åç±»å«") private String planCategory; /**ç³è¯·äºº*/ @Excel(name = "ç³è¯·äºº", width = 15, orderNum = "10") @ApiModelProperty(value = "ç³è¯·äºº") private String applicant; /**ç³è¯·è½¦é´*/ @Excel(name = "ç³è¯·è½¦é´", width = 15, dictTable = "mdc_production", dicText = "production_name", dicCode = "id", orderNum = "11") @ApiModelProperty(value = "ç³è¯·è½¦é´") @Dict(dictTable = "mdc_production", dicText = "production_name", dicCode = "id") private String applicantProduction; /**计åå¼å§æ¥æ*/ @Excel(name = "计åå¼å§æ¥æ", width = 15, format = "yyyy/MM/dd HH", orderNum = "12") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH") @DateTimeFormat(pattern="yyyy-MM-dd HH") @ApiModelProperty(value = "计åå¼å§æ¥æ") private Date planStartDate; /**计åå®ææ¥æ*/ @Excel(name = "计åå®ææ¥æ", width = 15, format = "yyyy/MM/dd HH", orderNum = "13") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH") @DateTimeFormat(pattern="yyyy-MM-dd HH") @ApiModelProperty(value = "计åå®ææ¥æ") private Date planEndDate; /**计åæè¿°*/ @Excel(name = "计åæè¿°", width = 50, orderNum = "14") @ApiModelProperty(value = "计åæè¿°") private String planDescription; /**宿½ååå©é¨é¨*/ @Excel(name = "宿½ååå©é¨é¨", width = 15, orderNum = "15") @ApiModelProperty(value = "宿½ååå©é¨é¨") private String relatedDeparts; /**夿³¨*/ @Excel(name = "夿³¨", width = 50, orderNum = "16") @ApiModelProperty(value = "夿³¨") private String remark; /**å建人*/ @ApiModelProperty(value = "å建人") private String createBy; /**å建æ¶é´*/ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH") @DateTimeFormat(pattern="yyyy-MM-dd HH") @ApiModelProperty(value = "å建æ¶é´") private Date createTime; /**æ´æ°äºº*/ @ApiModelProperty(value = "æ´æ°äºº") private String updateBy; /**æ´æ°æ¶é´*/ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH") @DateTimeFormat(pattern="yyyy-MM-dd HH") @ApiModelProperty(value = "æ´æ°æ¶é´") private Date updateTime; /**å 餿 è®°*/ @ApiModelProperty(value = "å 餿 è®°") @TableLogic private Integer delFlag; } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamPurchasePlanAttachment.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,83 @@ package org.jeecg.modules.eam.entity; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.util.Date; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableLogic; import lombok.Data; import com.fasterxml.jackson.annotation.JsonFormat; import org.springframework.format.annotation.DateTimeFormat; import org.jeecgframework.poi.excel.annotation.Excel; import org.jeecg.common.aspect.annotation.Dict; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** * @Description: eam_purchase_plan_attachment * @Author: jeecg-boot * @Date: 2025-06-18 * @Version: V1.0 */ @Data @TableName("eam_purchase_plan_attachment") @Accessors(chain = true) @EqualsAndHashCode(callSuper = false) @ApiModel(value="eam_purchase_plan_attachment对象", description="eam_purchase_plan_attachment") public class EamPurchasePlanAttachment implements Serializable { private static final long serialVersionUID = 1L; /**主é®*/ @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "主é®") private String id; /**计åID*/ @Excel(name = "计åID", width = 15) @ApiModelProperty(value = "计åID") private String planId; /**æä»¶å å¯å*/ @Excel(name = "æä»¶å å¯å", width = 15) @ApiModelProperty(value = "æä»¶å å¯å") private String fileEncodeName; /**æä»¶åç§°*/ @Excel(name = "æä»¶åç§°", width = 15) @ApiModelProperty(value = "æä»¶åç§°") private String fileName; /**æä»¶ä¿åè·¯å¾*/ @Excel(name = "æä»¶ä¿åè·¯å¾", width = 15) @ApiModelProperty(value = "æä»¶ä¿åè·¯å¾") private String filePath; /**æä»¶åç¼å*/ @Excel(name = "æä»¶åç¼å", width = 15) @ApiModelProperty(value = "æä»¶åç¼å") private String fileSuffix; /**æä»¶å¤§å°*/ @Excel(name = "æä»¶å¤§å°", width = 15) @ApiModelProperty(value = "æä»¶å¤§å°") private Long fileSize; /**æè¿°*/ @Excel(name = "æè¿°", width = 15) @ApiModelProperty(value = "æè¿°") private String description; /**å建人*/ @ApiModelProperty(value = "å建人") private String createBy; /**å建æ¶é´*/ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH") @DateTimeFormat(pattern="yyyy-MM-dd HH") @ApiModelProperty(value = "å建æ¶é´") private Date createTime; /**æ´æ°äºº*/ @ApiModelProperty(value = "æ´æ°äºº") private String updateBy; /**æ´æ°æ¶é´*/ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH") @DateTimeFormat(pattern="yyyy-MM-dd HH") @ApiModelProperty(value = "æ´æ°æ¶é´") private Date updateTime; } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderExpiredJob.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,96 @@ package org.jeecg.modules.eam.job; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.jeecg.modules.eam.constant.SecondMaintenanceStatusEnum; import org.jeecg.modules.eam.constant.WeekMaintenanceStatusEnum; import org.jeecg.modules.eam.entity.EamSecondMaintenanceOrder; import org.jeecg.modules.eam.entity.EamWeekMaintenanceOrder; import org.jeecg.modules.eam.service.IEamSecondMaintenanceOrderService; import org.jeecg.modules.eam.service.IEamWeekMaintenanceOrderService; import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; import org.jeecg.modules.flowable.service.IFlowTaskService; import org.jeecg.modules.mdc.util.ThrowableUtil; import org.jeecg.modules.quartz.entity.QuartzJob; import org.jeecg.modules.quartz.entity.SysQuartzLog; import org.jeecg.modules.quartz.service.IQuartzJobService; import org.jeecg.modules.quartz.service.ISysQuartzLogService; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.util.Date; import java.util.List; @Component @Slf4j public class SecondMaintenanceOrderExpiredJob implements Job { @Autowired private IEamSecondMaintenanceOrderService eamSecondMaintenanceOrderService; @Autowired private IFlowMyBusinessService flowMyBusinessService; @Autowired private IFlowTaskService flowTaskService; @Autowired private ISysQuartzLogService sysQuartzLogService; @Autowired private IQuartzJobService quartzJobService; @Override @Transactional(rollbackFor = Exception.class) public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { //任塿¥å¿ SysQuartzLog quartzLog = new SysQuartzLog(); quartzLog.setCreateTime(new Date()); List<QuartzJob> byJobClassName = quartzJobService.findByJobClassName(this.getClass().getName()); if (byJobClassName != null && !byJobClassName.isEmpty()) { quartzLog.setJobId(byJobClassName.get(0).getId()); } long startTime = System.currentTimeMillis(); LocalDate now = LocalDate.now(); try { List<EamSecondMaintenanceOrder> unCompleteOrderList = eamSecondMaintenanceOrderService.lambdaQuery() .lt(EamSecondMaintenanceOrder::getMaintenanceDate, now.toString()) .in(EamSecondMaintenanceOrder::getMaintenanceStatus, SecondMaintenanceStatusEnum.WAIT_MAINTENANCE, SecondMaintenanceStatusEnum.UNDER_MAINTENANCE) .orderByDesc(EamSecondMaintenanceOrder::getMaintenanceDate) .list(); if (CollectionUtil.isEmpty(unCompleteOrderList)) { //没æéè¦å¤ççæ°æ® return; } for (EamSecondMaintenanceOrder order : unCompleteOrderList) { if (SecondMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(order.getMaintenanceStatus())) { order.setMaintenanceStatus(SecondMaintenanceStatusEnum.ABOLISH.name()); } else if (WeekMaintenanceStatusEnum.UNDER_MAINTENANCE.name().equals(order.getMaintenanceStatus())) { //å·²ç»è¢«æ¥å 使ªæ§è¡å®æ order.setMaintenanceStatus(SecondMaintenanceStatusEnum.ABOLISH.name()); //强å¶ç»ææµç¨ å é¤ç¨æ·çæ¤å¾ åä»»å¡ FlowMyBusiness flowMyBusiness = flowMyBusinessService.selectByDataId(order.getId()); if (flowMyBusiness != null) { flowTaskService.end(flowMyBusiness.getProcessInstanceId(), "è¿æå é¤"); } } } eamSecondMaintenanceOrderService.updateBatchById(unCompleteOrderList); quartzLog.setIsSuccess(0); } catch (Exception e) { log.error("äºä¿è¿ææ§è¡å®æ¶ä»»å¡å¤±è´¥ï¼{}", e.getMessage(), e); quartzLog.setIsSuccess(-1); quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); } long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); sysQuartzLogService.save(quartzLog); } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderGenerateJob.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,139 @@ package org.jeecg.modules.eam.job; import cn.hutool.core.collection.CollectionUtil; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.eam.constant.BusinessCodeConst; import org.jeecg.modules.eam.constant.MaintenanceCategoryEnum; import org.jeecg.modules.eam.constant.OrderCreationMethodEnum; import org.jeecg.modules.eam.entity.*; import org.jeecg.modules.eam.request.EamSecondMaintenanceRequest; import org.jeecg.modules.eam.request.EamWeekMaintenanceRequest; import org.jeecg.modules.eam.service.IEamMaintenanceStandardDetailService; import org.jeecg.modules.eam.service.IEamMaintenanceStandardService; import org.jeecg.modules.eam.service.IEamSecondMaintenanceOrderService; import org.jeecg.modules.eam.service.IEamWeekMaintenanceOrderService; import org.jeecg.modules.mdc.util.ThrowableUtil; import org.jeecg.modules.quartz.entity.QuartzJob; import org.jeecg.modules.quartz.entity.SysQuartzLog; import org.jeecg.modules.quartz.service.IQuartzJobService; import org.jeecg.modules.quartz.service.ISysQuartzLogService; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @Component @Slf4j public class SecondMaintenanceOrderGenerateJob implements Job { @Autowired private IEamSecondMaintenanceOrderService eamSecondMaintenanceOrderService; @Autowired private IEamMaintenanceStandardService eamMaintenanceStandardService; @Autowired private IEamMaintenanceStandardDetailService eamMaintenanceStandardDetailService; @Autowired private ISysBusinessCodeRuleService businessCodeRuleService; @Autowired private ISysQuartzLogService sysQuartzLogService; @Autowired private IQuartzJobService quartzJobService; @Override @Transactional(rollbackFor = Exception.class) public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { //任塿¥å¿ SysQuartzLog quartzLog = new SysQuartzLog(); quartzLog.setCreateTime(new Date()); List<QuartzJob> byJobClassName = quartzJobService.findByJobClassName(this.getClass().getName()); if (byJobClassName != null && !byJobClassName.isEmpty()) { quartzLog.setJobId(byJobClassName.get(0).getId()); } long startTime = System.currentTimeMillis(); /** * è·å é ç½®äº äºä¿æ åç ä¿¡æ¯ */ List<EamMaintenanceStandard> standardList = eamMaintenanceStandardService.queryListByCategory(MaintenanceCategoryEnum.SECOND_MAINTENANCE.name()); if (CollectionUtil.isEmpty(standardList)) { log.warn("没æé 置任ä½äºä¿æ åï¼ä»»å¡ç»æ"); return; } //å½åæ¥æ LocalDate now = LocalDate.now(); try { for (EamMaintenanceStandard standard : standardList) { if (standard.getMaintenancePeriod() == null || standard.getMaintenancePeriod() < 1) { log.error("äºä¿æ åå¨æè®¾ç½®é误ï¼è¯·å é ç½®æ å卿, standard:{}", standard); continue; } if (standard.getInitialDate() == null) { //设置åå§æ¥æä¸ºåä¸å¤© standard.setInitialDate(DateUtils.localDateToDate(now.minusDays(1))); } LocalDate generateDate = DateUtils.dateToLocalDate(standard.getInitialDate()); if (standard.getLastGenerateTime() != null) { generateDate = DateUtils.dateToLocalDate(standard.getLastGenerateTime()); } //å 卿 do { //åå§æ¥æè®¾ç½®çæ¯è¾æ©ï¼æä»»å¡é¿æ¶é´æ²¡æ§è¡ï¼å¿ 须卿å°ä»å¤©æä¼çæå·¥å generateDate = generateDate.plusDays(standard.getMaintenancePeriod()); } while (now.isAfter(generateDate)); if(!now.isEqual(generateDate)) { //è¿æªå°çææ¥æï¼è·³è¿æ§è¡ continue; } //è·åä¿å »é¡¹æç» List<EamMaintenanceStandardDetail> standardDetailList = eamMaintenanceStandardDetailService.selectByStandardId(standard.getId()); if(CollectionUtil.isEmpty(standardDetailList)) { log.error("äºä¿æ åæ²¡æä¿å »æç»ï¼è¯·å é ç½®ä¿å »æç», standard:{}", standard); continue; } //å¼å§çæ EamSecondMaintenanceRequest request = new EamSecondMaintenanceRequest(); request.setEquipmentId(standard.getEquipmentId()); request.setStandardId(standard.getId()); request.setMaintenanceDate(DateUtils.localDateToDate(generateDate)); String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.SECOND_MAINTENANCE_CODE_RULE); request.setOrderNum(codeSeq); request.setCreationMethod(OrderCreationMethodEnum.AUTO.name()); List<EamSecondMaintenanceOrderDetail> tableDetailList = new ArrayList<>(); for (EamMaintenanceStandardDetail msd : standardDetailList) { EamSecondMaintenanceOrderDetail sod = new EamSecondMaintenanceOrderDetail(); sod.setItemCode(msd.getItemCode()); sod.setItemName(msd.getItemName()); sod.setItemDemand(msd.getItemDemand()); sod.setItemPart(msd.getItemPart()); tableDetailList.add(sod); } // List<EamSecondMaintenanceOrderDetail> collect = standardDetailList.stream().map(EamSecondMaintenanceOrderDetail::new).collect(Collectors.toList()); request.setTableDetailList(tableDetailList); eamSecondMaintenanceOrderService.addMaintenance(request); standard.setLastGenerateTime(new Date()); eamMaintenanceStandardService.updateById(standard); } quartzLog.setIsSuccess(0); } catch (Exception e) { log.error("äºä¿çææ§è¡å®æ¶ä»»å¡å¤±è´¥ï¼{}", e.getMessage(), e); quartzLog.setIsSuccess(-1); quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); } long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); sysQuartzLogService.save(quartzLog); } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderExpiredJob.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,96 @@ package org.jeecg.modules.eam.job; import cn.hutool.core.collection.CollectionUtil; import lombok.extern.slf4j.Slf4j; import org.jeecg.modules.eam.constant.SecondMaintenanceStatusEnum; import org.jeecg.modules.eam.constant.ThirdMaintenanceStatusEnum; import org.jeecg.modules.eam.constant.WeekMaintenanceStatusEnum; import org.jeecg.modules.eam.entity.EamSecondMaintenanceOrder; import org.jeecg.modules.eam.entity.EamThirdMaintenanceOrder; import org.jeecg.modules.eam.service.IEamSecondMaintenanceOrderService; import org.jeecg.modules.eam.service.IEamThirdMaintenanceOrderService; import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; import org.jeecg.modules.flowable.service.IFlowTaskService; import org.jeecg.modules.mdc.util.ThrowableUtil; import org.jeecg.modules.quartz.entity.QuartzJob; import org.jeecg.modules.quartz.entity.SysQuartzLog; import org.jeecg.modules.quartz.service.IQuartzJobService; import org.jeecg.modules.quartz.service.ISysQuartzLogService; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.util.Date; import java.util.List; @Component @Slf4j public class ThirdMaintenanceOrderExpiredJob implements Job { @Autowired private IEamThirdMaintenanceOrderService eamThirdMaintenanceOrderService; @Autowired private IFlowMyBusinessService flowMyBusinessService; @Autowired private IFlowTaskService flowTaskService; @Autowired private ISysQuartzLogService sysQuartzLogService; @Autowired private IQuartzJobService quartzJobService; @Override @Transactional(rollbackFor = Exception.class) public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { //任塿¥å¿ SysQuartzLog quartzLog = new SysQuartzLog(); quartzLog.setCreateTime(new Date()); List<QuartzJob> byJobClassName = quartzJobService.findByJobClassName(this.getClass().getName()); if (byJobClassName != null && !byJobClassName.isEmpty()) { quartzLog.setJobId(byJobClassName.get(0).getId()); } long startTime = System.currentTimeMillis(); LocalDate now = LocalDate.now(); try { List<EamThirdMaintenanceOrder> unCompleteOrderList = eamThirdMaintenanceOrderService.lambdaQuery() .lt(EamThirdMaintenanceOrder::getMaintenanceDate, now.toString()) .in(EamThirdMaintenanceOrder::getMaintenanceStatus, ThirdMaintenanceStatusEnum.WAIT_MAINTENANCE, ThirdMaintenanceStatusEnum.UNDER_MAINTENANCE) .orderByDesc(EamThirdMaintenanceOrder::getMaintenanceDate) .list(); if (CollectionUtil.isEmpty(unCompleteOrderList)) { //没æéè¦å¤ççæ°æ® return; } for (EamThirdMaintenanceOrder order : unCompleteOrderList) { if (ThirdMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(order.getMaintenanceStatus())) { order.setMaintenanceStatus(ThirdMaintenanceStatusEnum.ABOLISH.name()); } else if (ThirdMaintenanceStatusEnum.UNDER_MAINTENANCE.name().equals(order.getMaintenanceStatus())) { //å·²ç»è¢«æ¥å 使ªæ§è¡å®æ order.setMaintenanceStatus(ThirdMaintenanceStatusEnum.ABOLISH.name()); //强å¶ç»ææµç¨ å é¤ç¨æ·çæ¤å¾ åä»»å¡ FlowMyBusiness flowMyBusiness = flowMyBusinessService.selectByDataId(order.getId()); if (flowMyBusiness != null) { flowTaskService.end(flowMyBusiness.getProcessInstanceId(), "è¿æå é¤"); } } } eamThirdMaintenanceOrderService.updateBatchById(unCompleteOrderList); quartzLog.setIsSuccess(0); } catch (Exception e) { log.error("ä¸ä¿è¿ææ§è¡å®æ¶ä»»å¡å¤±è´¥ï¼{}", e.getMessage(), e); quartzLog.setIsSuccess(-1); quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); } long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); sysQuartzLogService.save(quartzLog); } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderGenerateJob.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,154 @@ package org.jeecg.modules.eam.job; import cn.hutool.core.collection.CollectionUtil; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.eam.constant.BusinessCodeConst; import org.jeecg.modules.eam.constant.MaintenanceCategoryEnum; import org.jeecg.modules.eam.constant.OrderCreationMethodEnum; import org.jeecg.modules.eam.entity.*; import org.jeecg.modules.eam.request.EamSecondMaintenanceRequest; import org.jeecg.modules.eam.request.EamThirdMaintenanceRequest; import org.jeecg.modules.eam.service.*; import org.jeecg.modules.mdc.util.ThrowableUtil; import org.jeecg.modules.quartz.entity.QuartzJob; import org.jeecg.modules.quartz.entity.SysQuartzLog; import org.jeecg.modules.quartz.service.IQuartzJobService; import org.jeecg.modules.quartz.service.ISysQuartzLogService; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @Component @Slf4j public class ThirdMaintenanceOrderGenerateJob implements Job { @Autowired private IEamEquipmentPrecisionParametersService eamEquipmentPrecisionParametersService; @Autowired private IEamThirdMaintenanceOrderService eamThirdMaintenanceOrderService; @Autowired private IEamMaintenanceStandardService eamMaintenanceStandardService; @Autowired private IEamMaintenanceStandardDetailService eamMaintenanceStandardDetailService; @Autowired private ISysBusinessCodeRuleService businessCodeRuleService; @Autowired private ISysQuartzLogService sysQuartzLogService; @Autowired private IQuartzJobService quartzJobService; @Override @Transactional(rollbackFor = Exception.class) public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { //任塿¥å¿ SysQuartzLog quartzLog = new SysQuartzLog(); quartzLog.setCreateTime(new Date()); List<QuartzJob> byJobClassName = quartzJobService.findByJobClassName(this.getClass().getName()); if (byJobClassName != null && !byJobClassName.isEmpty()) { quartzLog.setJobId(byJobClassName.get(0).getId()); } long startTime = System.currentTimeMillis(); /** * è·å é ç½®äº ä¸ä¿æ åç ä¿¡æ¯ */ List<EamMaintenanceStandard> standardList = eamMaintenanceStandardService.queryListByCategory(MaintenanceCategoryEnum.THIRD_MAINTENANCE.name()); if (CollectionUtil.isEmpty(standardList)) { log.warn("没æé 置任ä½ä¸ä¿æ åï¼ä»»å¡ç»æ"); return; } //å½åæ¥æ LocalDate now = LocalDate.now(); try { for (EamMaintenanceStandard standard : standardList) { if (standard.getMaintenancePeriod() == null || standard.getMaintenancePeriod() < 1) { log.error("ä¸ä¿æ åå¨æè®¾ç½®é误ï¼è¯·å é ç½®æ å卿, standard:{}", standard); continue; } if (standard.getInitialDate() == null) { //设置åå§æ¥æä¸ºåä¸å¤© standard.setInitialDate(DateUtils.localDateToDate(now.minusDays(1))); } LocalDate generateDate = DateUtils.dateToLocalDate(standard.getInitialDate()); if (standard.getLastGenerateTime() != null) { generateDate = DateUtils.dateToLocalDate(standard.getLastGenerateTime()); } //å 卿 do { //åå§æ¥æè®¾ç½®çæ¯è¾æ©ï¼æä»»å¡é¿æ¶é´æ²¡æ§è¡ï¼å¿ 须卿å°ä»å¤©æä¼çæå·¥å generateDate = generateDate.plusDays(standard.getMaintenancePeriod()); } while (now.isAfter(generateDate)); if(!now.isEqual(generateDate)) { //è¿æªå°çææ¥æï¼è·³è¿æ§è¡ continue; } //è·åä¿å »é¡¹æç» List<EamMaintenanceStandardDetail> standardDetailList = eamMaintenanceStandardDetailService.selectByStandardId(standard.getId()); if(CollectionUtil.isEmpty(standardDetailList)) { log.error("ä¸ä¿æ åæ²¡æä¿å »æç»ï¼è¯·å é ç½®ä¿å »æç», standard:{}", standard); continue; } //å¼å§çæ EamThirdMaintenanceRequest request = new EamThirdMaintenanceRequest(); request.setEquipmentId(standard.getEquipmentId()); request.setStandardId(standard.getId()); request.setMaintenanceDate(DateUtils.localDateToDate(generateDate)); String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.THIRD_MAINTENANCE_CODE_RULE); request.setOrderNum(codeSeq); request.setCreationMethod(OrderCreationMethodEnum.AUTO.name()); List<EamThirdMaintenanceOrderDetail> tableDetailList = new ArrayList<>(); for (EamMaintenanceStandardDetail msd : standardDetailList) { EamThirdMaintenanceOrderDetail tod = new EamThirdMaintenanceOrderDetail(); tod.setItemCode(msd.getItemCode()); tod.setItemName(msd.getItemName()); tod.setItemDemand(msd.getItemDemand()); tod.setItemPart(msd.getItemPart()); tableDetailList.add(tod); } // List<EamThirdMaintenanceOrderDetail> collect = standardDetailList.stream().map(EamThirdMaintenanceOrderDetail::new).collect(Collectors.toList()); request.setTableDetailList(tableDetailList); //éè¿è®¾å¤ è·å设å¤ç²¾åº¦åæ° List<EamEquipmentPrecisionParameters> precisionParametersList = eamEquipmentPrecisionParametersService .lambdaQuery().eq(EamEquipmentPrecisionParameters::getEquipmentId, standard.getEquipmentId()).list(); if(precisionParametersList.size()>0){ List<EamPrecisionCheckDetail> precisionDetailList = new ArrayList<>(); for (EamEquipmentPrecisionParameters epp : precisionParametersList) { EamPrecisionCheckDetail pcd = new EamPrecisionCheckDetail(); pcd.setParameterId(epp.getParameterId()); pcd.setEquipmentId(standard.getEquipmentId()); pcd.setParameterValue(epp.getParameterValue()); precisionDetailList.add(pcd); } request.setPrecisionDetailList(precisionDetailList); } eamThirdMaintenanceOrderService.addMaintenance(request); standard.setLastGenerateTime(new Date()); eamMaintenanceStandardService.updateById(standard); } quartzLog.setIsSuccess(0); } catch (Exception e) { log.error("ä¸ä¿çææ§è¡å®æ¶ä»»å¡å¤±è´¥ï¼{}", e.getMessage(), e); quartzLog.setIsSuccess(-1); quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); } long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); sysQuartzLogService.save(quartzLog); } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentPurchasePlanMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package org.jeecg.modules.eam.mapper; import java.util.List; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.eam.entity.EamEquipmentPurchasePlan; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * @Description: eam_equipment_purchase_plan * @Author: jeecg-boot * @Date: 2025-06-18 * @Version: V1.0 */ public interface EamEquipmentPurchasePlanMapper extends BaseMapper<EamEquipmentPurchasePlan> { } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamPurchasePlanAttachmentMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package org.jeecg.modules.eam.mapper; import java.util.List; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.eam.entity.EamPurchasePlanAttachment; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * @Description: eam_purchase_plan_attachment * @Author: jeecg-boot * @Date: 2025-06-18 * @Version: V1.0 */ public interface EamPurchasePlanAttachmentMapper extends BaseMapper<EamPurchasePlanAttachment> { } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentPurchasePlanMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,5 @@ <?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="org.jeecg.modules.eam.mapper.EamEquipmentPurchasePlanMapper"> </mapper> lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamPurchasePlanAttachmentMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,5 @@ <?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="org.jeecg.modules.eam.mapper.EamPurchasePlanAttachmentMapper"> </mapper> lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamPurchasePlanAttachmentRequest.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,33 @@ package org.jeecg.modules.eam.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.jeecg.common.api.vo.FileUploadResult; import java.io.Serializable; import java.util.List; /** * @Description: 设å¤é件管ç * @Author: jeecg-boot * @Date: 2025-03-17 * @Version: V1.0 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="请æ±å¯¹è±¡", description="设å¤éè´è®¡åé件管ç") public class EamPurchasePlanAttachmentRequest implements Serializable { /**æè¿°*/ @ApiModelProperty(value = "æè¿°") private String description; /**计åID*/ @ApiModelProperty(value = "计åID") private String planId; /**ä¸ä¼ æä»¶å¯¹ç³»*/ @ApiModelProperty(value = "ä¸ä¼ æä»¶å¯¹ç³»") private List<FileUploadResult> fileList; } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentPurchasePlanService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ package org.jeecg.modules.eam.service; import org.jeecg.modules.eam.entity.EamEquipmentPurchasePlan; import com.baomidou.mybatisplus.extension.service.IService; /** * @Description: eam_equipment_purchase_plan * @Author: jeecg-boot * @Date: 2025-06-18 * @Version: V1.0 */ public interface IEamEquipmentPurchasePlanService extends IService<EamEquipmentPurchasePlan> { void savePurchasePlan(EamEquipmentPurchasePlan eamEquipmentPurchasePlan); } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamPurchasePlanAttachmentService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package org.jeecg.modules.eam.service; import org.jeecg.modules.eam.entity.EamPurchasePlanAttachment; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.eam.request.EamPurchasePlanAttachmentRequest; import javax.servlet.http.HttpServletResponse; /** * @Description: eam_purchase_plan_attachment * @Author: jeecg-boot * @Date: 2025-06-18 * @Version: V1.0 */ public interface IEamPurchasePlanAttachmentService extends IService<EamPurchasePlanAttachment> { void saveAttachmentList(EamPurchasePlanAttachmentRequest request); void downloadFile(HttpServletResponse response, EamPurchasePlanAttachment byId); } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentPurchasePlanServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,33 @@ package org.jeecg.modules.eam.service.impl; import org.jeecg.common.constant.CommonConstant; import org.jeecg.modules.eam.constant.EquipmentPurchasePlanStatusEnum; import org.jeecg.modules.eam.entity.EamEquipmentPurchasePlan; import org.jeecg.modules.eam.mapper.EamEquipmentPurchasePlanMapper; import org.jeecg.modules.eam.service.IEamEquipmentPurchasePlanService; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * @Description: eam_equipment_purchase_plan * @Author: jeecg-boot * @Date: 2025-06-18 * @Version: V1.0 */ @Service public class EamEquipmentPurchasePlanServiceImpl extends ServiceImpl<EamEquipmentPurchasePlanMapper, EamEquipmentPurchasePlan> implements IEamEquipmentPurchasePlanService { @Autowired private ISysBusinessCodeRuleService sysBusinessCodeRuleService; @Override public void savePurchasePlan(EamEquipmentPurchasePlan eamEquipmentPurchasePlan) { eamEquipmentPurchasePlan.setPlanCode(sysBusinessCodeRuleService.generateBusinessCodeSeq("EquipmentPurchasePlanRule")); eamEquipmentPurchasePlan.setPlanStatus(EquipmentPurchasePlanStatusEnum.NEWLY.name()); eamEquipmentPurchasePlan.setDelFlag(CommonConstant.DEL_FLAG_0); save(eamEquipmentPurchasePlan); } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamPurchasePlanAttachmentServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,62 @@ package org.jeecg.modules.eam.service.impl; import cn.hutool.core.collection.CollectionUtil; import org.jeecg.common.util.FileUtil; import org.jeecg.modules.eam.entity.EamEquipmentPurchasePlan; import org.jeecg.modules.eam.entity.EamPurchasePlanAttachment; import org.jeecg.modules.eam.mapper.EamPurchasePlanAttachmentMapper; import org.jeecg.modules.eam.request.EamPurchasePlanAttachmentRequest; import org.jeecg.modules.eam.service.IEamEquipmentPurchasePlanService; import org.jeecg.modules.eam.service.IEamPurchasePlanAttachmentService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.Objects; /** * @Description: eam_purchase_plan_attachment * @Author: jeecg-boot * @Date: 2025-06-18 * @Version: V1.0 */ @Service public class EamPurchasePlanAttachmentServiceImpl extends ServiceImpl<EamPurchasePlanAttachmentMapper, EamPurchasePlanAttachment> implements IEamPurchasePlanAttachmentService { @Autowired private IEamEquipmentPurchasePlanService eamEquipmentPurchasePlanService; @Override @Transactional(rollbackFor = Exception.class) public void saveAttachmentList(EamPurchasePlanAttachmentRequest request) { if (Objects.isNull(request) || CollectionUtil.isEmpty(request.getFileList())) { throw new RuntimeException("è¯·éæ©ææ¡£åä¸ä¼ ï¼"); } EamEquipmentPurchasePlan plan = eamEquipmentPurchasePlanService.getById(request.getPlanId()); if (Objects.isNull(plan)) { throw new RuntimeException("请å éæ©è®¾å¤éè´è®¡ååä¸ä¼ ææ¡£ï¼"); } ArrayList<EamPurchasePlanAttachment> attachmentList = CollectionUtil.newArrayList(); request.getFileList().forEach(fileUploadResult -> { EamPurchasePlanAttachment attachment = new EamPurchasePlanAttachment() .setPlanId(request.getPlanId()) .setFilePath(fileUploadResult.getFilePath()) .setFileName(fileUploadResult.getFileName()) .setFileEncodeName(fileUploadResult.getFileEncodeName()) .setFileSize(fileUploadResult.getFileSize()) .setFileSuffix(fileUploadResult.getFileSuffix()) .setDescription(request.getDescription()); attachmentList.add(attachment); }); saveBatch(attachmentList); } @Override public void downloadFile(HttpServletResponse response, EamPurchasePlanAttachment entity) { FileUtil.downLoadFile(response, entity.getFilePath(), entity.getFileName()); } }