From a4e30eb43219ccc05b0826f49ecd5a3b639cf0c0 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期四, 28 八月 2025 09:27:20 +0800
Subject: [PATCH] 修改计算百分比位置
---
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java | 614 ++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 462 insertions(+), 152 deletions(-)
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java
index d19d873..423acba 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java
@@ -3,44 +3,58 @@
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.flowable.engine.TaskService;
import org.flowable.task.api.Task;
-import org.jeecg.common.api.vo.FileUploadResult;
import org.jeecg.common.api.vo.Result;
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.DateUtils;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.eam.aspect.annotation.EquipmentHistoryLog;
import org.jeecg.modules.eam.constant.*;
+import org.jeecg.modules.eam.dto.EamSecondMaintenanceOrderExport;
import org.jeecg.modules.eam.entity.*;
+import org.jeecg.modules.eam.mapper.EamEquipmentMapper;
+import org.jeecg.modules.eam.mapper.EamMaintenanceStandardMapper;
import org.jeecg.modules.eam.mapper.EamSecondMaintenanceOrderMapper;
import org.jeecg.modules.eam.request.EamSecondMaintenanceQuery;
import org.jeecg.modules.eam.request.EamSecondMaintenanceRequest;
import org.jeecg.modules.eam.service.*;
+import org.jeecg.modules.eam.tree.FindsEquipmentEamCenterUtil;
+import org.jeecg.modules.eam.vo.EamEquipmentTree;
import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness;
import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService;
import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI;
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.entity.BaseFactory;
+import org.jeecg.modules.system.entity.BaseFactoryUser;
+import org.jeecg.modules.system.mapper.BaseFactoryMapper;
+import org.jeecg.modules.system.service.IBaseFactoryService;
+import org.jeecg.modules.system.service.IBaseFactoryUserService;
import org.jeecg.modules.system.service.ISysUserService;
import org.jeecg.modules.system.vo.UserSelector;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
import java.util.*;
+import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -50,12 +64,12 @@
* @Version: V1.0
*/
@Service("IEamSecondMaintenanceOrderService")
+@Slf4j
public class EamSecondMaintenanceOrderServiceImpl extends ServiceImpl<EamSecondMaintenanceOrderMapper, EamSecondMaintenanceOrder> implements IEamSecondMaintenanceOrderService, FlowCallBackServiceI {
@Resource
private EamSecondMaintenanceOrderMapper eamSecondMaintenanceOrderMapper;
@Autowired
private IEamSecondMaintenanceOrderDetailService secondMaintenanceOrderDetailService;
-
@Autowired
private FlowCommonService flowCommonService;
@Autowired
@@ -66,34 +80,61 @@
private TaskService taskService;
@Autowired
private IFlowTaskService flowTaskService;
-
+ @Autowired
+ private IBaseFactoryUserService baseFactoryUserService;
+ @Autowired
+ private IBaseFactoryService baseFactoryService;
@Autowired
private ISysUserService sysUserService;
@Autowired
private IEamEquipmentService eamEquipmentService;
@Autowired
- private IEamReportRepairService eamReportRepairService;
- @Autowired
private IEamEquipmentExtendService eamEquipmentExtendService;
+ @Autowired
+ private IEamBaseHFCodeService hfCodeService;
+ @Autowired
+ private IEamMaintenanceStandardDetailService eamMaintenanceStandardDetailService;
+ @Autowired
+ private EamMaintenanceStandardMapper eamMaintenanceStandardMapper;
+ @Resource
+ private BaseFactoryMapper baseFactoryMapper;
+ @Autowired
+ private IEamSecondMaintenanceOrderDetailService eamSecondMaintenanceOrderDetailService;
+ @Autowired
+ private EamSecondMaintenanceOrderAsyncService eamSecondMaintenanceOrderAsyncService;
+ @Autowired
+ private IEamFactorySecondMaintPlanService factorySecondMaintPlanService;
@Override
public IPage<EamSecondMaintenanceOrder> queryPageList(Page<EamSecondMaintenanceOrder> page, EamSecondMaintenanceQuery query) {
QueryWrapper<EamSecondMaintenanceOrder> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("wmo.del_flag",CommonConstant.DEL_FLAG_0.toString());
//鐢ㄦ埛鏁版嵁鏉冮檺
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if (sysUser == null) {
return page;
}
- if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) {
+ if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) {
//閫夋嫨浜嗚澶囷紝鏍规嵁璁惧id杩囨护璁惧
- List<String> equipArr = Arrays.asList(sysUser.getEquipmentIds().split(","));
+ List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().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());
+ //娌℃湁閫夋嫨璁惧锛屾牴鎹腑蹇冭繃婊よ澶�
+ List<BaseFactoryUser> baseFactoryUserList=baseFactoryUserService.
+ list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId,sysUser.getId()));
+ if(!CollectionUtils.isEmpty(baseFactoryUserList)){
+ Set<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toSet());
+ Set<String> factoryCode= baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getOrgCode).collect(Collectors.toSet());
+ queryWrapper.in("e.factory_org_code", factoryCode);
+ } else {
+ return page;
+ }
}
//鏌ヨ鏉′欢杩囨护
if (query != null) {
+ if (StringUtils.isNotBlank(query.getId())){
+ queryWrapper.eq("wmo.id", query.getId());
+ }
if (StringUtils.isNotBlank(query.getEquipmentId())) {
queryWrapper.eq("wmo.equipment_id", query.getEquipmentId());
}
@@ -127,6 +168,146 @@
return eamSecondMaintenanceOrderMapper.queryPageList(page, queryWrapper);
}
+ /**
+ * 鎵归噺鏂板鏍戠粨鏋�
+ */
+ @Override
+ public List<EamEquipmentTree> getTree(){
+ LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+ if (sysUser == null) return Collections.emptyList();
+
+ // 鏋勫缓閫氱敤鏌ヨ鏉′欢
+ QueryWrapper<EamMaintenanceStandard> baseQuery = new QueryWrapper<EamMaintenanceStandard>()
+ .eq("ems.maintenance_category", "SECOND_MAINTENANCE")
+ .eq("ems.standard_status", MaintenanceStandardStatusEnum.START.name())
+ .eq("ems.del_flag", CommonConstant.DEL_FLAG_0.toString());
+
+ // 搴旂敤鏁版嵁鏉冮檺杩囨护
+ applyDataPermissionFilter(sysUser, baseQuery);
+
+ // 鍗曟鏌ヨ璁惧鍒楄〃
+ List<EamEquipment> equipmentList = eamMaintenanceStandardMapper.queryList(baseQuery);
+ if (CollectionUtils.isEmpty(equipmentList)) {
+ return Collections.emptyList();
+ }
+
+ // 鑾峰彇鍏宠仈鐨勫伐鍘備唬鐮�
+ Set<String> factoryOrgCodes = equipmentList.stream()
+ .map(EamEquipment::getFactoryOrgCode)
+ .collect(Collectors.toSet());
+
+ // 鍗曟鏌ヨ鎵�鏈夊伐鍘傛暟鎹紙鍖呭惈瀹屾暣鏍戠粨鏋勶級
+ List<BaseFactory> allFactories = baseFactoryService.list(
+ new LambdaQueryWrapper<BaseFactory>()
+ .eq(BaseFactory::getDelFlag, CommonConstant.DEL_FLAG_0.toString())
+ .orderByAsc(BaseFactory::getSorter));
+
+ // 鎻愬彇鏉冮檺鍏宠仈鐨勫伐鍘傝妭鐐笽D锛堝寘鍚墍鏈夌埗鑺傜偣锛�
+ Set<String> authorizedFactoryIds = extractAuthorizedFactoryIds(
+ allFactories, factoryOrgCodes);
+
+ // 杩囨护鍑烘湁鏁堝伐鍘傜粨鏋�
+ List<BaseFactory> validFactories = allFactories.stream()
+ .filter(f -> authorizedFactoryIds.contains(f.getId()))
+ .collect(Collectors.toList());
+
+ // ===鏋勫缓璁惧鏍� ===
+ Map<String, List<EamEquipment>> equipmentMap = equipmentList.stream()
+ .collect(Collectors.groupingBy(EamEquipment::getFactoryOrgCode));
+
+ // 鏋勫缓鍩虹鏍�
+ List<EamEquipmentTree> treeList = FindsEquipmentEamCenterUtil.wrapEquipmentBaseFactoryTreeList(validFactories);
+
+ // 濉厖璁惧鏁版嵁
+ populateEquipmentNodes(treeList, equipmentMap);
+ return treeList;
+ }
+
+ // 搴旂敤鏁版嵁鏉冮檺鏉′欢锛堝叡鐢ㄦ柟娉曪級
+ private void applyDataPermissionFilter(LoginUser user, QueryWrapper<EamMaintenanceStandard> query) {
+ if (StringUtils.isNotBlank(user.getEamEquipmentIds())) {
+ List<String> equipmentIds = Arrays.asList(user.getEamEquipmentIds().split(","));
+ query.in("e.equipment_code", equipmentIds);
+ } else {
+ List<BaseFactoryUser> factoryUsers = baseFactoryUserService.list(
+ new LambdaQueryWrapper<BaseFactoryUser>()
+ .eq(BaseFactoryUser::getUserId, user.getId()));
+
+ if (CollectionUtils.isNotEmpty(factoryUsers)) {
+ Set<String> factoryIds = factoryUsers.stream()
+ .map(BaseFactoryUser::getFactoryId)
+ .collect(Collectors.toSet());
+
+ Set<String> factoryCodes = baseFactoryService.listByIds(factoryIds).stream()
+ .map(BaseFactory::getOrgCode)
+ .collect(Collectors.toSet());
+
+ query.in("e.factory_org_code", factoryCodes);
+ }
+ }
+ }
+
+ // 鎻愬彇鎺堟潈宸ュ巶ID
+ private Set<String> extractAuthorizedFactoryIds(List<BaseFactory> allFactories, Set<String> authOrgCodes) {
+ Set<String> result = new HashSet<>();
+ // 鏋勫缓ID->宸ュ巶鐨勬槧灏�
+ Map<String, BaseFactory> factoryMap = allFactories.stream()
+ .collect(Collectors.toMap(BaseFactory::getId, Function.identity()));
+
+ // 閫嗗悜鏌ユ壘鐖惰妭鐐归摼
+ for (BaseFactory factory : allFactories) {
+ if (authOrgCodes.contains(factory.getOrgCode())) {
+ collectParentIds(factoryMap, factory.getId(), result);
+ }
+ }
+ return result;
+ }
+
+ // 閫掑綊鏀堕泦鐖惰妭鐐笽D
+ private void collectParentIds(Map<String, BaseFactory> factoryMap, String currentId, Set<String> idSet) {
+ if (StringUtils.isEmpty(currentId) || idSet.contains(currentId)) return;
+
+ idSet.add(currentId);
+ BaseFactory factory = factoryMap.get(currentId);
+ if (factory != null && StringUtils.isNotBlank(factory.getParentId())) {
+ collectParentIds(factoryMap, factory.getParentId(), idSet);
+ }
+ }
+
+ // 濉厖璁惧鑺傜偣锛堥潪閫掑綊锛�
+ private void populateEquipmentNodes(List<EamEquipmentTree> treeList,
+ Map<String, List<EamEquipment>> equipmentMap) {
+ for (EamEquipmentTree node : treeList) {
+
+ String orgCode = resolveOrgCodeFromTree(node); // 闇�瀹炵幇璇ラ�昏緫
+
+ // 鍏宠仈璁惧鏁版嵁
+ List<EamEquipment> devices = equipmentMap.getOrDefault(orgCode, Collections.emptyList());
+ if (!CollectionUtils.isEmpty(devices)) {
+ for (EamEquipment device : devices) {
+ EamEquipmentTree deviceNode = new EamEquipmentTree().convert(device);
+ deviceNode.setParentId(node.getKey());
+ deviceNode.setType(2);
+ deviceNode.setLeaf(true); // 鏄庣‘鏍囪涓哄彾瀛愯妭鐐�
+ node.getChildren().add(deviceNode);
+ }
+ // 鍙湁褰撳瓨鍦ㄨ澶囨椂鎵嶆爣璁颁负闈炲彾瀛�
+ node.setLeaf(false);
+ }
+
+ // 缁х画澶勭悊瀛愯妭鐐癸紙宸ュ巶灞傜骇锛�
+ if (!CollectionUtils.isEmpty(node.getChildren())) {
+ populateEquipmentNodes(node.getChildren(), equipmentMap);
+ }
+ }
+ }
+
+ // 瑙f瀽鏂规硶
+ private String resolveOrgCodeFromTree(EamEquipmentTree node) {
+ BaseFactory factory =baseFactoryMapper.selectById(node.getKey());
+ return factory != null ? factory.getOrgCode() : null;
+ }
+
@Override
@Transactional(rollbackFor = Exception.class)
public boolean addMaintenance(EamSecondMaintenanceRequest request) {
@@ -140,6 +321,12 @@
order.setStandardId(request.getStandardId());
order.setMaintenanceDate(request.getMaintenanceDate());
order.setOperator(request.getOperator());
+ //鎶�鏈姸鎬侀壌瀹氳〃
+ EamBaseHFCode eamBaseHFCode = hfCodeService.selectByCategory(HfTemplateCategoryEnum.SECOND_MAINTENANCE.name());
+ if(eamBaseHFCode == null) {
+ throw new JeecgBootException("鏈厤缃妧鏈姸鎬侀壌瀹氳〃鐨凥F缂栫爜锛屾坊鍔犲け璐ワ紒");
+ }
+ order.setHfCode(eamBaseHFCode.getHfCode());
order.setRemark(request.getRemark());
//鐘舵�佸垵濮嬪寲
order.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_MAINTENANCE.name());
@@ -148,43 +335,23 @@
order.setDelFlag(CommonConstant.DEL_FLAG_0);
eamSecondMaintenanceOrderMapper.insert(order);
//澶勭悊鏄庣粏鏁版嵁
- if (CollectionUtil.isNotEmpty(request.getTableDetailList())) {
- request.getTableDetailList().forEach(tableDetail -> {
- tableDetail.setId(null);
- tableDetail.setOrderId(order.getId());
+ List<EamMaintenanceStandardDetail> eamMaintenanceStandardDetailList= eamMaintenanceStandardDetailService.selectByStandardId(order.getStandardId());
+ List<EamSecondMaintenanceOrderDetail> requestTableDetailList = new ArrayList<>();
+ if (CollectionUtil.isNotEmpty(eamMaintenanceStandardDetailList)) {
+ eamMaintenanceStandardDetailList.forEach(item -> {
+ EamSecondMaintenanceOrderDetail detail = new EamSecondMaintenanceOrderDetail();
+ BeanUtils.copyProperties(item, detail);
+ detail.setId(null);
+ detail.setOrderId(order.getId());
+ requestTableDetailList.add(detail);
});
- secondMaintenanceOrderDetailService.saveBatch(request.getTableDetailList());
+ secondMaintenanceOrderDetailService.saveBatch(requestTableDetailList);
}
- //鍒ゆ柇鏄惁瀛樺湪淇濆吇浜� 濡傛灉瀛樺湪鍒欏惎鍔ㄦ祦绋�
- if (StringUtils.isNotBlank(order.getOperator())) {
- //鍚姩娴佺▼
- flowCommonService.initActBusiness("宸ュ崟鍙�: " + order.getOrderNum() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + ";瀹夎浣嶇疆" + equipment.getInstallationPosition(),
- order.getId(), "IEamSecondMaintenanceOrderService", "second_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("second_maintenance_process", variables);
- if (result != null) {
- //鏇存柊鍛ㄤ繚鐘舵��
- order.setMaintenanceStatus(SecondMaintenanceStatusEnum.UNDER_MAINTENANCE.name());
- order.setActualStartTime(new Date());
- eamSecondMaintenanceOrderMapper.updateById(order);
- //鏇存柊璁惧淇濆吇鐘舵��
- eamEquipmentExtendService.updateEquipmentMaintenanceStatus(order.getEquipmentId(), EquipmentMaintenanceStatus.UNDER_SECOND_MAINTENANCE.name());
- return result.isSuccess();
- }
- }
-
+ // 鎻掑叆棣栭〉浜屼繚鍏昏鍒�
+ // 浣跨敤 SimpleDateFormat 鐩存帴鏍煎紡鍖栦负鈥測yyy骞碝M鏈堚�濇牸寮�
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy骞碝M鏈�");
+ String formattedDate = sdf.format(order.getMaintenanceDate());
+ factorySecondMaintPlanService.add(order.getEquipmentId(), formattedDate);
return true;
}
@@ -202,34 +369,15 @@
if (!SecondMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(entity.getMaintenanceStatus())) {
throw new JeecgBootException("鍙湁寰呬繚鍏荤姸鎬佺殑鏁版嵁鎵嶅彲缂栬緫锛�");
}
+ // 缂栬緫棣栭〉浜屼繚鍏昏鍒�
+ // 浣跨敤 SimpleDateFormat 鐩存帴鏍煎紡鍖栦负鈥測yyy骞碝M鏈堚�濇牸寮�
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy骞碝M鏈�");
+ String oldFormattedDate = sdf.format(entity.getMaintenanceDate());
+ String newFormattedDate = sdf.format(request.getMaintenanceDate());
+ factorySecondMaintPlanService.dateChange(entity.getEquipmentId(), oldFormattedDate,newFormattedDate);
entity.setMaintenanceDate(request.getMaintenanceDate());
- entity.setOperator(request.getOperator());
entity.setRemark(request.getRemark());
-
eamSecondMaintenanceOrderMapper.updateById(entity);
- //澶勭悊璇︽儏
- if (CollectionUtil.isNotEmpty(request.getTableDetailList())) {
- List<EamSecondMaintenanceOrderDetail> addList = new ArrayList<>();
- List<EamSecondMaintenanceOrderDetail> 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)) {
- secondMaintenanceOrderDetailService.saveBatch(addList);
- }
- if (CollectionUtil.isNotEmpty(updateList)) {
- secondMaintenanceOrderDetailService.updateBatchById(updateList);
- }
- }
- if (CollectionUtil.isNotEmpty(request.getRemoveDetailList())) {
- List<String> ids = request.getRemoveDetailList().stream().map(EamSecondMaintenanceOrderDetail::getId).collect(Collectors.toList());
- secondMaintenanceOrderDetailService.removeBatchByIds(ids);
- }
//鍒ゆ柇鏄惁瀛樺湪淇濆吇浜� 濡傛灉瀛樺湪鍒欏惎鍔ㄦ祦绋�
if (StringUtils.isNotBlank(entity.getOperator())) {
//鍚姩娴佺▼
@@ -258,7 +406,6 @@
eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.UNDER_SECOND_MAINTENANCE.name());
return result.isSuccess();
}
-
}
return true;
}
@@ -278,17 +425,28 @@
throw new JeecgBootException("璁惧涓嶅瓨鍦紝娣诲姞澶辫触锛�");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
- if(sysUser == null || !BusinessCodeConst.PCR0001.equals(sysUser.getPost())) {
- throw new JeecgBootException("涓嶆槸鎿嶄綔宸ワ紝鏃犳硶棰嗗彇姝ゅ伐鍗曪紒");
+ if(sysUser != null) {
+ if (!BusinessCodeConst.PCR0001.equals(sysUser.getPost()) && !BusinessCodeConst.PCR0002.equals(sysUser.getPost())){
+ throw new JeecgBootException("涓嶆槸鎿嶄綔宸ワ紝鏃犳硶棰嗗彇姝ゅ伐鍗曪紒");
+ }
}
- entity.setOperator(sysUser.getUsername());
+ List<String> usernames = new ArrayList<>();
+ if (sysUser != null) {
+ if (BusinessCodeConst.PCR0001.equals(sysUser.getPost())) {
+ entity.setOperator(sysUser.getUsername());
+ usernames.add(entity.getOperator());
+ }
+ if (BusinessCodeConst.PCR0002.equals(sysUser.getPost())) {
+ entity.setRepairman(sysUser.getUsername());
+ usernames.add(entity.getRepairman());
+ }
+ }
entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.UNDER_MAINTENANCE.name());
entity.setActualStartTime(new Date());
eamSecondMaintenanceOrderMapper.updateById(entity);
-
//鍚姩娴佺▼
- flowCommonService.initActBusiness("宸ュ崟鍙�: " + entity.getOrderNum() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + ";瀹夎浣嶇疆" + equipment.getInstallationPosition(),
- entity.getId(), "IEamSecondMaintenanceOrderService", "second_maintenance_process", null);
+ flowCommonService.initActBusiness("宸ュ崟鍙�: " + entity.getOrderNum() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + "杩涜璁惧浜岀骇淇濆吇",
+ entity.getId(), "IEamSecondMaintenanceOrderService", "SecondMaintenance_Process", null);
Map<String, Object> variables = new HashMap<>();
variables.put("dataId", entity.getId());
if (StrUtil.isEmpty(entity.getRemark())) {
@@ -299,10 +457,24 @@
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("second_maintenance_process", variables);
+ if (sysUser != null) {
+ if (BusinessCodeConst.PCR0001.equals(sysUser.getPost())) {
+ variables.put("operator_task", usernames);
+ List<UserSelector> userSelectorList = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0002);
+ if (!CollectionUtils.isEmpty(userSelectorList)) {
+ List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+ variables.put("maintenance_task",usernameList);
+ }
+ }else if (BusinessCodeConst.PCR0002.equals(sysUser.getPost())) {
+ variables.put("maintenance_task", usernames);
+ List<UserSelector> userSelectorList = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0001);
+ if (!CollectionUtils.isEmpty(userSelectorList)) {
+ List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+ variables.put("operator_task",usernameList);
+ }
+ }
+ }
+ Result result = flowDefinitionService.startProcessInstanceByKey("SecondMaintenance_Process", variables);
if (result != null) {
//鏇存柊璁惧淇濆吇鐘舵��
eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.UNDER_SECOND_MAINTENANCE.name());
@@ -326,7 +498,7 @@
}
request.setAssignee(user.getUsername());
// 鑾峰彇娴佺▼涓氬姟璁板綍
- FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(request.getInstanceId());
+ FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(request.getInstanceId(), request.getTaskId());
if (flowMyBusiness == null) {
throw new JeecgBootException("娴佺▼瀹炰緥涓嶅瓨鍦紝璇峰埛鏂板悗閲嶈瘯锛�");
}
@@ -355,97 +527,235 @@
List<UserSelector> userSelectors;
switch (status) {
case UNDER_MAINTENANCE:
+ //淇濆吇涓�
+ boolean parallelCompletion = flowTaskService.checkParallelCompletion(flowMyBusiness.getTaskId());
//鎵ц瀹屾垚
- //璁惧绠$悊鍛樼‘璁�
-// String equipmentManager = equipment.getEquipmentManager();
-// if(StringUtils.isBlank(equipmentManager)) {
-// throw new JeecgBootException("璁惧鏈垎閰嶈澶囩鐞嗗憳锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒");
-// }
-// userApprovalList = Collections.singletonList(equipmentManager);
- values.put("dataId", entity.getId());
- values.put("organization", "浜屼繚鎵ц缁撴潫");
- values.put("comment", "浜屼繚鎵ц缁撴潫");
-// values.put("NextAssignee", userApprovalList);
- request.setComment("浜屼繚鎵ц缁撴潫");
- //璁剧疆entity
- entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_CONFIRM.name());
- entity.setActualEndTime(new Date());
- //澶勭悊闄勪欢
- if (CollectionUtil.isNotEmpty(request.getImageFilesResult())) {
- List<FileUploadResult> fileUploadResultList = request.getImageFilesResult();
- ObjectMapper mapper = new ObjectMapper();
- try {
- String referenceFile = mapper.writeValueAsString(fileUploadResultList);
- entity.setImageFiles(referenceFile);
- } catch (JsonProcessingException e) {
- log.error("JSON杞崲澶辫触锛�" + e.getMessage(), e);
+ userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0004);
+ if (CollectionUtil.isEmpty(userSelectors)) {
+ throw new JeecgBootException("璁惧鏈瓨鍦ㄧ鐞嗗憳锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒");
+ }else{
+ userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+ if (parallelCompletion) {
+ values.put("NextAssignee", userApprovalList);
+ entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_ADMIN_CONFIRM.name());
+ entity.setActualEndTime(new Date());
}
}
- //澶勭悊璇︽儏
- if (CollectionUtil.isNotEmpty(request.getTableDetailList())) {
- secondMaintenanceOrderDetailService.updateBatchById(request.getTableDetailList());
+ if (BusinessCodeConst.PCR0001.equals(user.getPost())) {
+ entity.setOperator(user.getUsername());
+ values.put("organization", "浜屼繚鎿嶄綔宸ユ墽琛岀粨鏉�");
+ values.put("comment", "浜屼繚鎿嶄綔宸ユ墽琛岀粨鏉�");
+ request.setComment("浜屼繚鎿嶄綔宸ユ墽琛岀粨鏉�");
+ //澶勭悊瀵瑰簲璇︽儏
+ if (CollectionUtils.isNotEmpty(request.getTableDetailList())){
+ //鍒犻櫎鍘熸湁鏁版嵁
+ List<EamSecondMaintenanceOrderDetail> addList = new ArrayList<>();
+ //鍏堝垹闄ゅ師鏈�
+ LambdaQueryWrapper<EamSecondMaintenanceOrderDetail> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(EamSecondMaintenanceOrderDetail::getOrderId, entity.getId());
+ queryWrapper.eq(EamSecondMaintenanceOrderDetail::getItemCategory,EamMaintenanceStandardDetailCategory.OPERATOR_MAINTENANCE.name());
+ secondMaintenanceOrderDetailService.remove(queryWrapper);
+ request.getTableDetailList().forEach(tableDetail -> {
+ EamSecondMaintenanceOrderDetail eamMaintenanceStandardDetail=new EamSecondMaintenanceOrderDetail();
+ BeanUtils.copyProperties(tableDetail, eamMaintenanceStandardDetail);
+ eamMaintenanceStandardDetail.setOrderId(entity.getId());
+ eamMaintenanceStandardDetail.setCreateBy(user.getUsername());
+ addList.add(eamMaintenanceStandardDetail);
+ });
+ secondMaintenanceOrderDetailService.saveBatch(addList);
+ }
+ }else if (BusinessCodeConst.PCR0002.equals(user.getPost())) {
+ entity.setRepairman(user.getUsername());
+ values.put("organization", "浜屼繚缁翠慨宸ユ墽琛岀粨鏉�");
+ values.put("comment", "浜屼繚缁翠慨宸ユ墽琛岀粨鏉�");
+ request.setComment("浜屼繚缁翠慨宸ユ墽琛岀粨鏉�");
+ //澶勭悊瀵瑰簲璇︽儏
+ if (CollectionUtils.isNotEmpty(request.getTableDetailList())){
+ //鍒犻櫎鍘熸湁鏁版嵁
+ List<EamSecondMaintenanceOrderDetail> addList = new ArrayList<>();
+ //鍏堝垹闄ゅ師鏈�
+ LambdaQueryWrapper<EamSecondMaintenanceOrderDetail> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(EamSecondMaintenanceOrderDetail::getOrderId, entity.getId());
+ queryWrapper.eq(EamSecondMaintenanceOrderDetail::getItemCategory,EamMaintenanceStandardDetailCategory.REPAIRER_MAINTENANCE.name());
+ secondMaintenanceOrderDetailService.remove(queryWrapper);
+ request.getTableDetailList().forEach(tableDetail -> {
+ EamSecondMaintenanceOrderDetail eamMaintenanceStandardDetail=new EamSecondMaintenanceOrderDetail();
+ BeanUtils.copyProperties(tableDetail, eamMaintenanceStandardDetail);
+ eamMaintenanceStandardDetail.setOrderId(entity.getId());
+ eamMaintenanceStandardDetail.setCreateBy(user.getUsername());
+ addList.add(eamMaintenanceStandardDetail);
+ });
+ secondMaintenanceOrderDetailService.saveBatch(addList);
+ }
}
- //鏇存柊璁惧淇濆吇鐘舵��
- eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.SECOND_MAINTENANCE_WAIT_CONFIRM.name());
+ values.put("dataId", entity.getId());
break;
- case WAIT_CONFIRM:
- userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(),null, BusinessCodeConst.PCR0003);
+ case WAIT_ADMIN_CONFIRM:
+ //绠$悊鍛樼‘璁�
+ userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0006);
if (CollectionUtil.isEmpty(userSelectors)) {
- throw new JeecgBootException("璁惧鏈垎閰嶇粰杞﹂棿鐝粍闀匡紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�");
- }
- //鐝粍闀跨‘璁�
- userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
- values.put("dataId", entity.getId());
- values.put("organization", request.getConfirmComment());
- values.put("comment", request.getConfirmComment());
- values.put("NextAssignee", userApprovalList);
- values.put("confirmation", request.getConfirmDealType());
- request.setComment(request.getConfirmComment());
- //璁剧疆entity
- entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_LEADER_CONFIRM.name());
- entity.setConfirmUser(user.getUsername());
- entity.setConfirmComment(request.getConfirmComment());
- entity.setConfirmTime(new Date());
- entity.setConfirmDealType(request.getConfirmDealType());
- if (CommonConstant.HAS_CANCLE.equals(request.getConfirmDealType())) {
- //椹冲洖
- userApprovalList = new ArrayList<>();
- userApprovalList.add(entity.getOperator());
- values.put("NextAssignee", userApprovalList);
- entity.setMaintenanceStatus(WeekMaintenanceStatusEnum.UNDER_MAINTENANCE.name());
- }
- //澶勭悊鎶ヤ慨
- List<EamSecondMaintenanceOrderDetail> collect = request.getTableDetailList().stream().filter((detail) -> CommonConstant.DEFAULT_1.equals(detail.getReportFlag())).collect(Collectors.toList());
- if (CollectionUtil.isNotEmpty(collect)) {
- eamReportRepairService.reportRepairFromSecondMaintenance(equipment.getId(), entity.getOperator(), collect);
+ throw new JeecgBootException("璁惧鏈瓨鍦ㄦ鏌ヤ汉锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒");
+ }else{
+ userApprovalList= userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+ values.put("dataId", entity.getId());
+ if (StrUtil.isEmpty(request.getDealDescription())){
+ request.setDealDescription("");
+ }
+ values.put("organization",request.getDealDescription());
+ values.put("comment", request.getDealDescription());
+ values.put("manageUserResult",request.getManageUserResult());
+ request.setComment(request.getDealDescription());
+ if (request.getManageUserResult().equals("2")){
+ entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.UNDER_MAINTENANCE.name());
+ }else {
+ values.put("NextAssignee", userApprovalList);
+ entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_INSPECTOR_CONFIRM.name());
+ entity.setConfirmTime(new Date());
+ entity.setManageUser(user.getUsername());
+ entity.setProblemDescription(request.getProblemDescription());
+ entity.setManageUserResult(request.getManageUserResult());
+ entity.setDealDescription(request.getDealDescription());
+ }
}
break;
- case WAIT_LEADER_CONFIRM:
+ case WAIT_INSPECTOR_CONFIRM:
+ //妫�鏌ヤ汉纭
+ if (StrUtil.isEmpty(request.getInspectConfirmComment())){
+ request.setInspectConfirmComment("");
+ }
values.put("dataId", entity.getId());
- values.put("organization", request.getLeaderConfirmComment());
- values.put("comment", request.getLeaderConfirmComment());
- request.setComment(request.getLeaderConfirmComment());
- //璁剧疆entity
- entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.COMPLETE.name());
- entity.setConfirmLeader(user.getUsername());
- entity.setLeaderConfirmComment(request.getLeaderConfirmComment());
- entity.setLeaderConfirmTime(new Date());
- //鏇存柊璁惧淇濆吇鐘舵��
- eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.NORMAL.name());
+ values.put("organization",request.getInspectConfirmComment());
+ values.put("comment", request.getInspectConfirmComment());
+ values.put("inspectorResult",request.getInspectorResult());
+ request.setComment(request.getInspectConfirmComment());
+ if (request.getInspectorResult().equals("2")){
+ entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_ADMIN_CONFIRM.name());
+ userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0004);
+ if (CollectionUtil.isEmpty(userSelectors)) {
+ throw new JeecgBootException("璁惧鏈瓨鍦ㄨ溅闂磋澶囩鐞嗗憳锛屾棤娉曡繘鍏ラ┏鍥炲鎵癸紒");
+ }else{
+ userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+ values.put("NextAssignee", userApprovalList);
+ }
+ }else {
+ entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.COMPLETE.name());
+ entity.setInspector(user.getUsername());
+ entity.setInspectorResult(request.getInspectorResult());
+ entity.setInspectConfirmComment(request.getInspectConfirmComment());
+ entity.setInspectConfirmTime(new Date());
+ }
break;
+ default:
+ throw new JeecgBootException("瀹℃壒澶辫触");
}
request.setValues(values);
-
// 瀹屾垚娴佺▼浠诲姟
Result result = flowTaskService.complete(request);
if (!result.isSuccess()) {
throw new JeecgBootException("瀹℃壒澶辫触锛岃鍒锋柊鏌ョ湅锛�");
}
+ if (user.getPost().equals(BusinessCodeConst.PCR0004)&&request.getManageUserResult().equals("2")){
+ //绠$悊鍛樻嫆缁濓紝浼氱鑺傜偣淇敼瀵瑰簲鍏崇郴
+ List<FlowMyBusiness> list = flowMyBusinessService.list(new LambdaQueryWrapper<FlowMyBusiness>().eq(FlowMyBusiness::getProcessInstanceId, request.getInstanceId()));
+ if (CollectionUtils.isNotEmpty(list)) {
+ list.forEach(item -> {
+ if (item.getTaskNameId().equals("maintenance_task")) {
+ //鑾峰彇缁翠慨宸ュ矖浣嶇敤鎴�
+ List<UserSelector> userSelectorList = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0002);
+ if (!CollectionUtils.isEmpty(userSelectorList)) {
+ List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+ item.setTodoUsers(JSON.toJSONString(usernameList));
+ }
+ }
+ if (item.getTaskNameId().equals("operator_task")) {
+ //鑾峰彇鎿嶄綔浜哄矖浣嶇敤鎴�
+ List<UserSelector> userSelectorList = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0001);
+ if (!CollectionUtils.isEmpty(userSelectorList)) {
+ List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+ item.setTodoUsers(JSON.toJSONString(usernameList));
+ }
+ }
+ });
+ flowMyBusinessService.updateBatchById(list);
+ }
+ }
//淇濆瓨宸ュ崟
eamSecondMaintenanceOrderMapper.updateById(entity);
+ //寮傛鐢熸垚涓嬫浜屼繚宸ュ崟
+ if (SecondMaintenanceStatusEnum.COMPLETE.name().equals(entity.getMaintenanceStatus())) {
+ try {
+ eamSecondMaintenanceOrderAsyncService.asyncGenerateNextMaintenanceOrder(entity.getId());
+ } catch (Exception e) {
+ log.error("瑙﹀彂寮傛鐢熸垚涓嬫宸ュ崟澶辫触锛屽伐鍗旾D: {}", entity.getId(), e);
+ }
+ }
+
return entity;
}
+ /**
+ * 鎵归噺鎵撳嵃浜屼繚宸ュ崟
+ * @param ids
+ * @return
+ */
+ @Override
+ public List<EamSecondMaintenanceOrderExport> export(String ids){
+ QueryWrapper<EamSecondMaintenanceOrderExport> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("wmo.del_flag",CommonConstant.DEL_FLAG_0.toString());
+ queryWrapper.eq("wmo.maintenance_status",SecondMaintenanceStatusEnum.COMPLETE.name());
+ //鐢ㄦ埛鏁版嵁鏉冮檺
+ LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+ if (sysUser == null) {
+ return new ArrayList<>();
+ }
+ if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) {
+ //閫夋嫨浜嗚澶囷紝鏍规嵁璁惧id杩囨护璁惧
+ List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(","));
+ queryWrapper.in("e.equipment_code", equipArr);
+ } else {
+ //娌℃湁閫夋嫨璁惧锛屾牴鎹腑蹇冭繃婊よ澶�
+ List<BaseFactoryUser> baseFactoryUserList=baseFactoryUserService.
+ list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId,sysUser.getId()));
+ if(!CollectionUtils.isEmpty(baseFactoryUserList)){
+ Set<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toSet());
+ Set<String> factoryCode= baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getOrgCode).collect(Collectors.toSet());
+ queryWrapper.in("e.factory_org_code", factoryCode);
+ } else {
+ return new ArrayList<>();
+ }
+ }
+ //鏌ヨ鏉′欢杩囨护
+ if (StrUtil.isNotEmpty(ids)) {
+ List<String> idList = Arrays.asList(ids.split(","));
+ queryWrapper.in("wmo.id", idList);
+ } else {
+ queryWrapper.orderByDesc("wmo.create_time");
+ }
+ List<EamSecondMaintenanceOrderExport> eamSecondMaintenanceOrderExports=eamSecondMaintenanceOrderMapper.queryList(queryWrapper);
+ //濉厖瀵瑰簲浜屼繚鏄庣粏
+ if (!eamSecondMaintenanceOrderExports.isEmpty()){
+ eamSecondMaintenanceOrderExports.forEach(item->{
+ //缁翠慨浜哄憳淇濆吇鍐呭
+ List<EamSecondMaintenanceOrderDetail> maintenanceOrderDetails=eamSecondMaintenanceOrderDetailService.
+ list(new QueryWrapper<EamSecondMaintenanceOrderDetail>().eq("order_id",item.getId()).
+ eq("item_category",EamMaintenanceStandardDetailCategory.REPAIRER_MAINTENANCE.name())
+ .orderByAsc("item_code"));
+ if (!maintenanceOrderDetails.isEmpty()){
+ item.setMaintenanceOrderDetails(maintenanceOrderDetails);
+ }
+ //鎿嶄綔浜哄憳淇濆吇鍐呭
+ List<EamSecondMaintenanceOrderDetail> operationOrderDetails=eamSecondMaintenanceOrderDetailService.
+ list(new QueryWrapper<EamSecondMaintenanceOrderDetail>().eq("order_id",item.getId()).
+ eq("item_category",EamMaintenanceStandardDetailCategory.OPERATOR_MAINTENANCE.name())
+ .orderByAsc("item_code"));
+ if (!operationOrderDetails.isEmpty()) {
+ item.setOperationOrderDetails(operationOrderDetails);
+ }
+ });
+ }
+ return eamSecondMaintenanceOrderExports;
+ }
+
private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) {
List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class);
return todoUsers != null && todoUsers.contains(user.getUsername());
--
Gitblit v1.9.3