From 4dda0622ef6e588284dbdb7a155f58b622615e94 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期四, 15 五月 2025 13:33:58 +0800 Subject: [PATCH] art: 设备管理-三保,接口添加 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceOrderServiceImpl.java | 301 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 295 insertions(+), 6 deletions(-) diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceOrderServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceOrderServiceImpl.java index 26852dd..132c6f6 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceOrderServiceImpl.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceOrderServiceImpl.java @@ -1,19 +1,308 @@ package org.jeecg.modules.eam.service.impl; -import org.jeecg.modules.eam.entity.EamThirdMaintenanceOrder; -import org.jeecg.modules.eam.mapper.EamThirdMaintenanceOrderMapper; -import org.jeecg.modules.eam.service.IEamThirdMaintenanceOrderService; -import org.springframework.stereotype.Service; - +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.flowable.engine.TaskService; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.constant.DataBaseConstant; +import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.eam.constant.BusinessCodeConst; +import org.jeecg.modules.eam.constant.SecondMaintenanceStatusEnum; +import org.jeecg.modules.eam.constant.ThirdMaintenanceStatusEnum; +import org.jeecg.modules.eam.entity.EamEquipment; +import org.jeecg.modules.eam.entity.EamThirdMaintenanceOrder; +import org.jeecg.modules.eam.entity.EamThirdMaintenanceOrderDetail; +import org.jeecg.modules.eam.mapper.EamThirdMaintenanceOrderMapper; +import org.jeecg.modules.eam.request.EamThirdMaintenanceQuery; +import org.jeecg.modules.eam.request.EamThirdMaintenanceRequest; +import org.jeecg.modules.eam.service.*; +import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; +import org.jeecg.modules.flowable.apithird.service.FlowCommonService; +import org.jeecg.modules.flowable.service.IFlowDefinitionService; +import org.jeecg.modules.flowable.service.IFlowTaskService; +import org.jeecg.modules.system.service.ISysUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; /** * @Description: 璁惧涓夌骇淇濆吇 * @Author: jeecg-boot - * @Date: 2025-04-29 + * @Date: 2025-04-29 * @Version: V1.0 */ @Service public class EamThirdMaintenanceOrderServiceImpl extends ServiceImpl<EamThirdMaintenanceOrderMapper, EamThirdMaintenanceOrder> implements IEamThirdMaintenanceOrderService { + @Resource + private EamThirdMaintenanceOrderMapper eamThirdMaintenanceOrderMapper; + @Autowired + private IEamThirdMaintenanceOrderDetailService thirdMaintenanceOrderDetailService; + @Autowired + private FlowCommonService flowCommonService; + @Autowired + private IFlowDefinitionService flowDefinitionService; + @Autowired + private IFlowMyBusinessService flowMyBusinessService; + @Autowired + private TaskService taskService; + @Autowired + private IFlowTaskService flowTaskService; + @Autowired + private ISysUserService sysUserService; + @Autowired + private IEamEquipmentService eamEquipmentService; + @Autowired + private IEamReportRepairService eamReportRepairService; + @Autowired + private IEamEquipmentExtendService eamEquipmentExtendService; + + @Override + public IPage<EamThirdMaintenanceOrder> queryPageList(Page<EamThirdMaintenanceOrder> page, EamThirdMaintenanceQuery query) { + QueryWrapper<EamThirdMaintenanceOrder> queryWrapper = new QueryWrapper<>(); + //鐢ㄦ埛鏁版嵁鏉冮檺 + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (sysUser == null) { + return page; + } + if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) { + //閫夋嫨浜嗚澶囷紝鏍规嵁璁惧id杩囨护璁惧 + List<String> equipArr = Arrays.asList(sysUser.getEquipmentIds().split(",")); + queryWrapper.in("e.equipment_code", equipArr); + } else { + //娌℃湁閫夋嫨璁惧锛屾牴鎹溅闂磋繃婊よ澶� + queryWrapper.exists("select 1 from mdc_user_production t where t.user_id={0} and t.pro_id=e.org_id ", sysUser.getId()); + } + //鏌ヨ鏉′欢杩囨护 + if (query != null) { + if (StringUtils.isNotBlank(query.getEquipmentId())) { + queryWrapper.eq("wmo.equipment_id", query.getEquipmentId()); + } + if (StringUtils.isNotBlank(query.getOrderNum())) { + queryWrapper.like("wmo.order_num", query.getOrderNum()); + } + if (StringUtils.isNotBlank(query.getMaintenanceStatus())) { + queryWrapper.eq("wmo.maintenance_status", query.getMaintenanceStatus()); + } + if (query.getMaintenanceDateBegin() != null && query.getMaintenanceDateEnd() != null) { + queryWrapper.between("wmo.maintenance_date", query.getMaintenanceDateBegin(), query.getMaintenanceDateEnd()); + } + //鎺掑簭 + if (StringUtils.isNotBlank(query.getColumn()) && StringUtils.isNotBlank(query.getOrder())) { + String column = query.getColumn(); + if (column.endsWith(CommonConstant.DICT_TEXT_SUFFIX)) { + column = column.substring(0, column.lastIndexOf(CommonConstant.DICT_TEXT_SUFFIX)); + } + if (DataBaseConstant.SQL_ASC.equalsIgnoreCase(query.getOrder())) { + queryWrapper.orderByAsc("wmo." + oConvertUtils.camelToUnderline(column)); + } else { + queryWrapper.orderByDesc("wmo." + oConvertUtils.camelToUnderline(column)); + } + } else { + queryWrapper.orderByDesc("wmo.create_time"); + } + } else { + queryWrapper.orderByDesc("wmo.create_time"); + } + + return eamThirdMaintenanceOrderMapper.queryPageList(page, queryWrapper); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean addMaintenance(EamThirdMaintenanceRequest request) { + EamEquipment equipment = eamEquipmentService.getById(request.getEquipmentId()); + if (equipment == null) { + throw new JeecgBootException("璁惧涓嶅瓨鍦紝娣诲姞澶辫触锛�"); + } + EamThirdMaintenanceOrder order = new EamThirdMaintenanceOrder(); + order.setOrderNum(request.getOrderNum()); + order.setEquipmentId(request.getEquipmentId()); + order.setStandardId(request.getStandardId()); + order.setMaintenanceDate(request.getMaintenanceDate()); + order.setOperator(request.getOperator()); + order.setRemark(request.getRemark()); + //鐘舵�佸垵濮嬪寲 + order.setMaintenanceStatus(ThirdMaintenanceStatusEnum.WAIT_MAINTENANCE.name()); + order.setCreationMethod(request.getCreationMethod()); + //鍒犻櫎鏍囪 + order.setDelFlag(CommonConstant.DEL_FLAG_0); + eamThirdMaintenanceOrderMapper.insert(order); + //澶勭悊鏄庣粏鏁版嵁 + if (CollectionUtil.isNotEmpty(request.getTableDetailList())) { + request.getTableDetailList().forEach(tableDetail -> { + tableDetail.setId(null); + tableDetail.setOrderId(order.getId()); + }); + thirdMaintenanceOrderDetailService.saveBatch(request.getTableDetailList()); + } + //鍒ゆ柇鏄惁瀛樺湪淇濆吇浜� 濡傛灉瀛樺湪鍒欏惎鍔ㄦ祦绋� + if (StringUtils.isNotBlank(order.getOperator())) { + //鍚姩娴佺▼ TODO +// flowCommonService.initActBusiness("宸ュ崟鍙�:" + order.getOrderNum() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + ";杩涜璁惧浜屼繚", +// order.getId(), "IEamWeekMaintenanceOrderService", "week_maintenance_process", null); +// Map<String, Object> variables = new HashMap<>(); +// variables.put("dataId", order.getId()); +// if (StrUtil.isEmpty(order.getRemark())) { +// variables.put("organization", "鏂板鍛ㄤ繚宸ュ崟榛樿鍚姩娴佺▼"); +// variables.put("comment", "鏂板鍛ㄤ繚宸ュ崟榛樿鍚姩娴佺▼"); +// } else { +// variables.put("organization", order.getRemark()); +// variables.put("comment", order.getRemark()); +// } +// variables.put("proofreading", true); +// List<String> usernames = new ArrayList<>(); +// usernames.add(order.getOperator()); +// variables.put("NextAssignee", usernames); +// Result result = flowDefinitionService.startProcessInstanceByKey("week_maintenance_process", variables); +// if (result != null) { +// //鏇存柊鍛ㄤ繚鐘舵�� +// order.setMaintenanceStatus(WeekMaintenanceStatusEnum.UNDER_MAINTENANCE.name()); +// order.setActualStartTime(new Date()); +// eamWeekMaintenanceOrderMapper.updateById(order); +// //鏇存柊璁惧淇濆吇鐘舵�� +// eamEquipmentExtendService.updateEquipmentMaintenanceStatus(order.getEquipmentId(), EquipmentMaintenanceStatus.UNDER_MAINTENANCE.name()); +// return result.isSuccess(); +// } + } + + return true; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean editMaintenance(EamThirdMaintenanceRequest request) { + EamEquipment equipment = eamEquipmentService.getById(request.getEquipmentId()); + if (equipment == null) { + throw new JeecgBootException("璁惧涓嶅瓨鍦紝娣诲姞澶辫触锛�"); + } + EamThirdMaintenanceOrder entity = eamThirdMaintenanceOrderMapper.selectById(request.getId()); + if (entity == null) { + throw new JeecgBootException("缂栬緫鐨勬暟鎹凡鍒犻櫎锛岃鍒锋柊閲嶈瘯锛�"); + } + if (!ThirdMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(entity.getMaintenanceStatus())) { + throw new JeecgBootException("鍙湁寰呬繚鍏荤姸鎬佺殑鏁版嵁鎵嶅彲缂栬緫锛�"); + } + entity.setMaintenanceDate(request.getMaintenanceDate()); + entity.setOperator(request.getOperator()); + entity.setRemark(request.getRemark()); + + eamThirdMaintenanceOrderMapper.updateById(entity); + //澶勭悊璇︽儏 + if (CollectionUtil.isNotEmpty(request.getTableDetailList())) { + List<EamThirdMaintenanceOrderDetail> addList = new ArrayList<>(); + List<EamThirdMaintenanceOrderDetail> updateList = new ArrayList<>(); + request.getTableDetailList().forEach(tableDetail -> { + tableDetail.setOrderId(entity.getId()); + if (tableDetail.getId() == null) { + addList.add(tableDetail); + } else { + updateList.add(tableDetail); + } + }); + if (CollectionUtil.isNotEmpty(addList)) { + thirdMaintenanceOrderDetailService.saveBatch(addList); + } + if (CollectionUtil.isNotEmpty(updateList)) { + thirdMaintenanceOrderDetailService.updateBatchById(updateList); + } + } + if (CollectionUtil.isNotEmpty(request.getRemoveDetailList())) { + List<String> ids = request.getRemoveDetailList().stream().map(EamThirdMaintenanceOrderDetail::getId).collect(Collectors.toList()); + thirdMaintenanceOrderDetailService.removeBatchByIds(ids); + } + //鍒ゆ柇鏄惁瀛樺湪淇濆吇浜� 濡傛灉瀛樺湪鍒欏惎鍔ㄦ祦绋� + if (StringUtils.isNotBlank(entity.getOperator())) { + //鍚姩娴佺▼ TODO +// flowCommonService.initActBusiness("宸ュ崟鍙�:" + entity.getOrderNum() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + ";杩涜璁惧鍛ㄤ繚", +// entity.getId(), "IEamWeekMaintenanceOrderService", "week_maintenance_process", null); +// Map<String, Object> variables = new HashMap<>(); +// variables.put("dataId", entity.getId()); +// if (StrUtil.isEmpty(entity.getRemark())) { +// variables.put("organization", "鏂板鍛ㄤ繚宸ュ崟榛樿鍚姩娴佺▼"); +// variables.put("comment", "鏂板鍛ㄤ繚宸ュ崟榛樿鍚姩娴佺▼"); +// } else { +// variables.put("organization", entity.getRemark()); +// variables.put("comment", entity.getRemark()); +// } +// variables.put("proofreading", true); +// List<String> usernames = new ArrayList<>(); +// usernames.add(entity.getOperator()); +// variables.put("NextAssignee", usernames); +// Result result = flowDefinitionService.startProcessInstanceByKey("week_maintenance_process", variables); +// if (result != null) { +// //鏇存柊鍛ㄤ繚鐘舵�� +// entity.setMaintenanceStatus(WeekMaintenanceStatusEnum.UNDER_MAINTENANCE.name()); +// entity.setActualStartTime(new Date()); +// eamWeekMaintenanceOrderMapper.updateById(entity); +// //鏇存柊璁惧淇濆吇鐘舵�� +// eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.UNDER_MAINTENANCE.name()); +// return result.isSuccess(); +// } + + } + return true; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean collect(String id) { + EamThirdMaintenanceOrder entity = eamThirdMaintenanceOrderMapper.selectById(id); + if (entity == null) { + throw new JeecgBootException("瑕侀鍙栫殑宸ュ崟涓嶅瓨鍦紝璇峰埛鏂伴噸璇曪紒"); + } + if (!SecondMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(entity.getMaintenanceStatus())) { + throw new JeecgBootException("璇ュ伐鍗曞凡杩涜杩囬鍙栵紒"); + } + EamEquipment equipment = eamEquipmentService.getById(entity.getEquipmentId()); + if (equipment == null) { + throw new JeecgBootException("璁惧涓嶅瓨鍦紝娣诲姞澶辫触锛�"); + } + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if(sysUser == null || !BusinessCodeConst.PCR0001.equals(sysUser.getPost())) { + throw new JeecgBootException("涓嶆槸鎿嶄綔宸ワ紝鏃犳硶棰嗗彇姝ゅ伐鍗曪紒"); + } + entity.setOperator(sysUser.getUsername()); + entity.setMaintenanceStatus(ThirdMaintenanceStatusEnum.UNDER_MAINTENANCE.name()); + entity.setActualStartTime(new Date()); + eamThirdMaintenanceOrderMapper.updateById(entity); + +// //鍚姩娴佺▼ +// flowCommonService.initActBusiness("宸ュ崟鍙�:" + entity.getOrderNum() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + ";杩涜璁惧鍛ㄤ繚", +// entity.getId(), "IEamWeekMaintenanceOrderService", "week_maintenance_process", null); +// Map<String, Object> variables = new HashMap<>(); +// variables.put("dataId", entity.getId()); +// if (StrUtil.isEmpty(entity.getRemark())) { +// variables.put("organization", "鏂板鍛ㄤ繚宸ュ崟榛樿鍚姩娴佺▼"); +// variables.put("comment", "鏂板鍛ㄤ繚宸ュ崟榛樿鍚姩娴佺▼"); +// } else { +// variables.put("organization", entity.getRemark()); +// variables.put("comment", entity.getRemark()); +// } +// variables.put("proofreading", true); +// List<String> usernames = new ArrayList<>(); +// usernames.add(entity.getOperator()); +// variables.put("NextAssignee", usernames); +// Result result = flowDefinitionService.startProcessInstanceByKey("week_maintenance_process", variables); +// if (result != null) { +// //鏇存柊璁惧淇濆吇鐘舵�� +// eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.UNDER_MAINTENANCE.name()); +// return result.isSuccess(); +// } + return true; + } } -- Gitblit v1.9.3