From a4e554b7e6c5b98e728f96be80a12b0b04eebd48 Mon Sep 17 00:00:00 2001 From: cuijian <cuijian@xalxzn.com> Date: 星期三, 22 十一月 2023 19:10:28 +0800 Subject: [PATCH] 设备完好率、设备开动率报表逻辑开发 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/RepairOrderController.java | 284 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 234 insertions(+), 50 deletions(-) diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/RepairOrderController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/RepairOrderController.java index c4a5d40..fed8a69 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/RepairOrderController.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/RepairOrderController.java @@ -1,42 +1,45 @@ package org.jeecg.modules.eam.controller; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import org.jeecg.common.constant.CommonConstant; -import org.jeecg.common.system.query.QueryGenerator; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import lombok.extern.slf4j.Slf4j; -import org.jeecg.common.system.base.controller.JeecgController; -import org.jeecg.common.api.vo.Result; -import org.jeecg.modules.eam.entity.*; -import org.jeecg.modules.eam.service.*; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Lazy; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.springframework.web.servlet.ModelAndView; - -import java.math.BigDecimal; -import java.util.*; - -import org.jeecg.common.util.oConvertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.jeecg.common.aspect.annotation.AutoLog; +import lombok.extern.slf4j.Slf4j; import org.apache.shiro.SecurityUtils; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.eam.entity.*; +import org.jeecg.modules.eam.service.*; +import org.jeecg.modules.eam.vo.EquipmentAvailabilityVo; 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.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.transaction.annotation.Transactional; +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 javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.math.BigDecimal; +import java.text.ParseException; +import java.util.*; import java.util.stream.Collectors; /** @@ -93,6 +96,12 @@ @Autowired @Lazy private IProjectMaintenanceOrderService projectMaintenanceOrderService; + @Autowired + @Lazy + private IdentityService sysIdentityService; + + + @@ -115,28 +124,28 @@ HttpServletRequest req) { Page<RepairOrder> page = new Page<RepairOrder>(pageNo, pageSize); IPage<RepairOrder> pageList = repairOrderService.getRepairOrderList(page, repairOrder); - for(RepairOrder repairOrder1 : pageList.getRecords()){ - if(StringUtils.isNotBlank(repairOrder1.getReportRepairId())){ - EquipmentReportRepair equipmentReportRepair = equipmentReportRepairService.getById(repairOrder1.getReportRepairId()); - repairOrder1.setReportRepairNum(equipmentReportRepair.getNum()); - } - if(StringUtils.isNotBlank(repairOrder1.getProjectMaintenanceOrderId())){ - ProjectMaintenanceOrderDetail projectMaintenanceOrderDetail = projectMaintenanceOrderDetailService.getById(repairOrder1.getProjectMaintenanceOrderId()); - repairOrder1.setProjectMaintenanceOrderNum(projectMaintenanceOrderDetail.getTaskNum()); - } - - String id = repairOrder1.getId(); - QueryWrapper<RepairOrderActualWorkHours> wrapper = new QueryWrapper<>(); - wrapper.eq("repair_order_id", id) - .eq("del_flag", 0); - wrapper.select("sum(actual_hour) as actualHour"); - Map<String, Object> map = repairOrderActualWorkHoursService.getMap(wrapper); - BigDecimal actualHour = new BigDecimal(0); - if (map != null) { - actualHour = (BigDecimal) map.get("actualHour"); - } - repairOrder1.setActualHour(actualHour); - } +// for(RepairOrder repairOrder1 : pageList.getRecords()){ +// if(StringUtils.isNotBlank(repairOrder1.getReportRepairId())){ +// EquipmentReportRepair equipmentReportRepair = equipmentReportRepairService.getById(repairOrder1.getReportRepairId()); +// repairOrder1.setReportRepairNum(equipmentReportRepair.getNum()); +// } +// if(StringUtils.isNotBlank(repairOrder1.getProjectMaintenanceOrderId())){ +// ProjectMaintenanceOrderDetail projectMaintenanceOrderDetail = projectMaintenanceOrderDetailService.getById(repairOrder1.getProjectMaintenanceOrderId()); +// repairOrder1.setProjectMaintenanceOrderNum(projectMaintenanceOrderDetail.getTaskNum()); +// } +// +// String id = repairOrder1.getId(); +// QueryWrapper<RepairOrderActualWorkHours> wrapper = new QueryWrapper<>(); +// wrapper.eq("repair_order_id", id) +// .eq("del_flag", 0); +// wrapper.select("sum(actual_hour) as actualHour"); +// Map<String, Object> map = repairOrderActualWorkHoursService.getMap(wrapper); +// BigDecimal actualHour = new BigDecimal(0); +// if (map != null) { +// actualHour = (BigDecimal) map.get("actualHour"); +// } +// repairOrder1.setActualHour(actualHour); +// } return Result.OK(pageList); } @@ -280,7 +289,21 @@ //@RequiresPermissions("org.jeecg.modules.demo:mom_eam_repair_order:delete") @DeleteMapping(value = "/delete") public Result<String> delete(@RequestParam(name="id",required=true) String id) { - repairOrderService.update(new UpdateWrapper<RepairOrder>().set("del_flag", CommonConstant.DEL_FLAG_1).eq("id",id)); + /** + * 鏍规嵁涓氬姟绫诲瀷鑾峰彇缁翠慨宸ュ崟鐨勬潵婧� 鍒犻櫎宸ュ崟鏃舵仮澶嶆潵婧愮姸鎬� + * 2023-8-17 + */ + RepairOrder repairOrder = repairOrderService.getById(id); + String businessType = repairOrder.getBusinessType(); + if("2".equals(businessType)){//1:鎶ヤ慨鏁呴殰鍗� 2锛氶」鐩�х淮淇� + String projectMaintenanceOrderDetailId = repairOrder.getProjectMaintenanceOrderId(); + projectMaintenanceOrderDetailService.update(new UpdateWrapper<ProjectMaintenanceOrderDetail>().set("is_create_order",0).eq("id",projectMaintenanceOrderDetailId)); + }else if("1".equals(businessType)){ + String reportRepairId = repairOrder.getReportRepairId(); + equipmentReportRepairService.update(new UpdateWrapper<EquipmentReportRepair>().set("is_create_order",0).eq("id",reportRepairId)); + } + + repairOrderService.update(new UpdateWrapper<RepairOrder>().set("del_flag", CommonConstant.DEL_FLAG_1).eq("id",id)); return Result.OK("鍒犻櫎鎴愬姛!"); } @@ -337,6 +360,14 @@ IPage<RepairOrderDetail> pageList = repairOrderDetailService.page(page, queryWrapper); return Result.OK(pageList); } + + @GetMapping(value = "/pageRepairOrderDetailByMainId") + public Result<IPage<RepairOrderDetail>> pageRepairOrderDetailByMainId(@RequestParam("pageNo") Integer pageNo, + @RequestParam("pageSize") Integer pageSize, + @RequestParam Map<String, Object> params) { + IPage<RepairOrderDetail> pageList = repairOrderDetailService.pageRepairOrderDetailByMainId(pageNo, pageSize, params); + return Result.OK(pageList); + } /** * 娣诲姞 @@ -1470,18 +1501,43 @@ * @return */ @PutMapping(value = "/start") + @Transactional(rollbackFor = Exception.class) public Result<?> orderStart(@RequestBody RepairOrder repairOrder){ + if(StringUtils.isNotBlank(repairOrder.getReportRepairId())){ + EquipmentReportRepair equipmentReportRepair = equipmentReportRepairService.getById(repairOrder.getReportRepairId()); + equipmentReportRepair.setStatus("2"); + equipmentReportRepairService.updateById(equipmentReportRepair); + if(StringUtils.isNotBlank(equipmentReportRepair.getEquipmentId())){ + Equipment equipment = equipmentService.getById(equipmentReportRepair.getEquipmentId()); + equipment.setEquipmentStatus("7"); + equipmentService.updateById(equipment); + } + } if(StringUtils.isNotBlank(repairOrder.getProjectMaintenanceOrderId())){ //鍒ゆ柇椤圭洰鎬х淮淇瓙琛ㄧ姸鎬� ProjectMaintenanceOrderDetail projectMaintenanceOrderDetail = projectMaintenanceOrderDetailService.getById(repairOrder.getProjectMaintenanceOrderId()); projectMaintenanceOrderDetail.setTypeStatus("underExecution"); + projectMaintenanceOrderDetail.setActualStartTime(new Date()); projectMaintenanceOrderDetailService.updateById(projectMaintenanceOrderDetail); //鍒ゆ柇椤圭洰鎬х淮淇富琛ㄧ姸鎬� ProjectMaintenanceOrder projectMaintenanceOrder = projectMaintenanceOrderService.getById(projectMaintenanceOrderDetail.getProjectMaintenanceOrderId()); + /** + * 椤圭洰椤圭淮淇富琛ㄧ淮鎶ら娆″紑濮嬫椂闂达紝 + * 閫昏緫锛氬鏋滄槸null锛屾槑缁嗙敓鎴愮殑缁翠慨宸ュ崟寮�宸ユ椂锛岀淮鎶ゅ疄闄呭紑濮嬫椂闂达紝 + */ + Date actualStartTime = projectMaintenanceOrder.getActualStartTime(); + if(actualStartTime == null){ + projectMaintenanceOrder.setActualStartTime(new Date()); + } projectMaintenanceOrder.setTypeStatus("underExecution"); projectMaintenanceOrderService.updateById(projectMaintenanceOrder); } - return Result.OK(repairOrderService.update(new UpdateWrapper<RepairOrder>().set("status",3).set("actual_start_time",new Date(System.currentTimeMillis())).eq("id",repairOrder.getId()))); + repairOrder + .setStatus("3") + .setActualStartTime(new Date()) + .setRepairOrderUda1("normal"); + repairOrderService.updateById(repairOrder); + return Result.OK("寮�宸ユ垚鍔�"); } /** * 宸ュ崟鎶ュ伐 @@ -1489,15 +1545,19 @@ * @return */ @PutMapping(value = "/report") + @Transactional(rollbackFor = {Exception.class}) public Result<?> orderReport(@RequestBody RepairOrder repairOrder){ if(StringUtils.isNotBlank(repairOrder.getProjectMaintenanceOrderId())){ //鍒ゆ柇椤圭洰鎬х淮淇瓙琛ㄧ姸鎬� ProjectMaintenanceOrderDetail projectMaintenanceOrderDetail = projectMaintenanceOrderDetailService.getById(repairOrder.getProjectMaintenanceOrderId()); projectMaintenanceOrderDetail.setTypeStatus("completed"); + projectMaintenanceOrderDetail.setActualEndTime(new Date()); projectMaintenanceOrderDetailService.updateById(projectMaintenanceOrderDetail); //鍒ゆ柇椤圭洰鎬х淮淇富琛ㄧ姸鎬� - List<ProjectMaintenanceOrderDetail> projectMaintenanceOrderDetailList = projectMaintenanceOrderDetailService.lambdaQuery().eq(ProjectMaintenanceOrderDetail::getProjectMaintenanceOrderId,projectMaintenanceOrderDetail.getProjectMaintenanceOrderId()) - .eq(ProjectMaintenanceOrderDetail::getDelFlag,CommonConstant.DEL_FLAG_0).list(); + List<ProjectMaintenanceOrderDetail> projectMaintenanceOrderDetailList = projectMaintenanceOrderDetailService.lambdaQuery() + .eq(ProjectMaintenanceOrderDetail::getProjectMaintenanceOrderId,projectMaintenanceOrderDetail.getProjectMaintenanceOrderId()) + .eq(ProjectMaintenanceOrderDetail::getDelFlag,CommonConstant.DEL_FLAG_0) + .list(); ProjectMaintenanceOrder projectMaintenanceOrder = projectMaintenanceOrderService.getById(projectMaintenanceOrderDetail.getProjectMaintenanceOrderId()); boolean flag = true; for(ProjectMaintenanceOrderDetail projectMaintenanceOrderDetail1 : projectMaintenanceOrderDetailList){ @@ -1508,6 +1568,7 @@ } } if(flag){ + projectMaintenanceOrder.setActualEndTime(new Date()); projectMaintenanceOrder.setTypeStatus("completed"); }else { projectMaintenanceOrder.setTypeStatus("underExecution"); @@ -1516,9 +1577,19 @@ } LoginUser user= (LoginUser)SecurityUtils.getSubject().getPrincipal(); if(StringUtils.isNotBlank(repairOrder.getReportRepairId())){ - equipmentReportRepairService.update(new UpdateWrapper<EquipmentReportRepair>().eq("id",repairOrder.getReportRepairId()).set("status",3)); + equipmentReportRepairService.update(new UpdateWrapper<EquipmentReportRepair>().eq("id",repairOrder.getReportRepairId()).set("status",4)); } - return Result.OK(repairOrderService.update(new UpdateWrapper<RepairOrder>().set("status",4).set("actual_end_time",new Date(System.currentTimeMillis())).set("recipient_user_id",user.getId()).eq("id",repairOrder.getId()))); + Date now = new Date(); + Date start = repairOrder.getActualStartTime(); + long timeDifference = now.getTime() - start.getTime(); + BigDecimal hours = new BigDecimal(timeDifference) + .divide(new BigDecimal(60 * 60 * 1000), 3, BigDecimal.ROUND_HALF_EVEN); + repairOrder.setStatus("4"); + repairOrder.setActualEndTime(now); + repairOrder.setActualHour(hours); + repairOrder.setRecipientUserId(user.getId()); + repairOrderService.updateById(repairOrder); + return Result.OK("鎶ュ伐鎴愬姛"); } /** * 宸ュ崟鎾ら攢 @@ -1544,5 +1615,118 @@ } return Result.OK(repairOrderService.update(new UpdateWrapper<RepairOrder>().set("status",7).eq("id",repairOrder.getId()))); } + @PostMapping("addBySelectReport") + public Result<?> addBySelectReport(@RequestBody List<EquipmentReportRepair> equipmentReportRepairs){ + LoginUser user= (LoginUser)SecurityUtils.getSubject().getPrincipal(); + for(EquipmentReportRepair equipmentReportRepair:equipmentReportRepairs){ + String num = sysIdentityService.getNumByTypeAndLength("RepairOrder",4); + Equipment equipment = equipmentService.getById(equipmentReportRepair.getEquipmentId()); + equipmentReportRepair.setStatus("2"); + RepairOrder repairOrder = new RepairOrder(); + repairOrder.setNum(num); + repairOrder.setReportRepairId(equipmentReportRepair.getId()); + repairOrder.setStatus("2"); + repairOrder.setEquipmentId(equipment.getId()); + repairOrder.setTeamId(equipment.getTeamId()); + repairOrder.setDepartId(equipment.getUseId()); + repairOrder.setFaultDescription(equipmentReportRepair.getFaultDescription()); + repairOrder.setFaultTime(equipmentReportRepair.getFaultTime()); + repairOrder.setResponsibilityId(user.getId()); + repairOrder.setRepairOrderType(0); + repairOrder.setDelFlag(0); + repairOrderService.save(repairOrder); + } + equipmentReportRepairService.updateBatchById(equipmentReportRepairs); + return Result.OK("棰嗗彇鎴愬姛"); + } + /** + * 宸ュ崟绛夊浠� + * @param repairOrder + * @return + */ + @PutMapping(value = "/handleSpare") + @Transactional(rollbackFor = {Exception.class}) + public Result<?> handleSpare(@RequestBody RepairOrder repairOrder){ + repairOrder.setRepairOrderUda2(new Date()); + repairOrder.setRepairOrderUda1("needSpare"); + repairOrderService.updateById(repairOrder); + return Result.OK("鎿嶄綔鎴愬姛"); + } + /** + * 宸ュ崟鍋滄绛夊浠� + * @param repairOrder + * @return + */ + @PutMapping(value = "/handleSpareStop") + @Transactional(rollbackFor = {Exception.class}) + public Result<?> handleSpareStop(@RequestBody RepairOrder repairOrder){ + Date now = new Date(); + Date start = repairOrder.getRepairOrderUda2(); + long timeDifference = now.getTime() - start.getTime(); + BigDecimal hours = new BigDecimal(timeDifference) + .divide(new BigDecimal(60 * 60 * 1000), 3, BigDecimal.ROUND_HALF_EVEN); + repairOrder.setRepairOrderUda3(now); + repairOrder.setRepairOrderUda1("normal"); + repairOrder.setSpareTime(hours); + repairOrderService.updateById(repairOrder); + return Result.OK("鎿嶄綔鎴愬姛"); + } + /** + * 宸ュ崟绛夊姞宸ヤ欢 + * @param repairOrder + * @return + */ + @PutMapping(value = "/handlePart") + @Transactional(rollbackFor = {Exception.class}) + public Result<?> handlePart(@RequestBody RepairOrder repairOrder){ + repairOrder.setRepairOrderUda4(new Date()); + repairOrder.setRepairOrderUda1("needPart"); + repairOrderService.updateById(repairOrder); + return Result.OK("鎿嶄綔鎴愬姛"); + } + /** + * 宸ュ崟鍋滄绛夊姞宸ヤ欢 + * @param repairOrder + * @return + */ + @PutMapping(value = "/handlePartStop") + @Transactional(rollbackFor = {Exception.class}) + public Result<?> handlePartStop(@RequestBody RepairOrder repairOrder){ + Date now = new Date(); + Date start = repairOrder.getRepairOrderUda4(); + long timeDifference = now.getTime() - start.getTime(); + BigDecimal hours = new BigDecimal(timeDifference) + .divide(new BigDecimal(60 * 60 * 1000), 3, BigDecimal.ROUND_HALF_EVEN); + repairOrder.setRepairOrderUda5(now); + repairOrder.setRepairOrderUda1("normal"); + repairOrder.setPartTime(hours); + repairOrderService.updateById(repairOrder); + return Result.OK("鎿嶄綔鎴愬姛"); + } + /** + * 璁惧瀹屽ソ鐜� + * + * @return + */ + @GetMapping("/equipmentAvailability") + public JSONObject equipmentAvailability(@RequestParam Map<String, String> query) throws ParseException { + List<EquipmentAvailabilityVo> list = repairOrderService.equipmentAvailability(query); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("data",list); + return jsonObject; + } + + /** + * 璁惧鍙紑鍔ㄧ巼 + * + * @return + */ + @GetMapping("/getStartRate") + public JSONObject getStartRate(@RequestParam Map<String, String> query) throws ParseException { + List<EquipmentAvailabilityVo> list = repairOrderService.getStartRate(query); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("data",list); + return jsonObject; + } } -- Gitblit v1.9.3