Merge remote-tracking branch 'origin/main'

This commit is contained in:
liuzhaotian
2024-06-26 14:56:28 +08:00
3 changed files with 35 additions and 32 deletions
@@ -2,12 +2,10 @@ package com.cf.imes.module.executor.service.process;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import com.cf.imes.framework.common.enums.ProcessProcessingTypeEnum;
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO; import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO; import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
import com.cf.imes.module.executor.dal.dataobject.processStep.ProcessStepDO; import com.cf.imes.module.executor.dal.dataobject.processStep.ProcessStepDO;
import com.cf.imes.module.executor.dal.dataobject.processStepItem.OrderProcessStepItemDO; import com.cf.imes.module.executor.dal.dataobject.processStepItem.OrderProcessStepItemDO;
import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper; import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper;
@@ -21,7 +19,6 @@ import com.cf.imes.module.executor.enums.OrderStatusEnum;
import com.cf.imes.module.executor.enums.ProcessTypeEnum; import com.cf.imes.module.executor.enums.ProcessTypeEnum;
import com.cf.imes.module.system.api.process.ProcessGroupApi; import com.cf.imes.module.system.api.process.ProcessGroupApi;
import com.cf.imes.module.system.api.process.dto.ProcessListReqDTO; import com.cf.imes.module.system.api.process.dto.ProcessListReqDTO;
import com.cf.imes.module.system.api.process.dto.ProcessRespDTO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -31,15 +28,14 @@ import org.springframework.validation.annotation.Validated;
import com.cf.imes.module.executor.controller.admin.process.vo.*; import com.cf.imes.module.executor.controller.admin.process.vo.*;
import com.cf.imes.module.executor.dal.dataobject.process.OrderProcessDO; import com.cf.imes.module.executor.dal.dataobject.process.OrderProcessDO;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.module.executor.dal.mysql.process.OrderProcessMapper; import com.cf.imes.module.executor.dal.mysql.process.OrderProcessMapper;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
@@ -84,7 +80,6 @@ public class OrderProcessServiceImpl implements OrderProcessService {
@Resource @Resource
private GoodsMapper goodsMapper; private GoodsMapper goodsMapper;
private static Integer INDEX = 0;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@@ -115,11 +110,11 @@ public class OrderProcessServiceImpl implements OrderProcessService {
// 需要获取工序组的具体信息,以及工序组中工序的信息,然后将工序组中工序的信息插入到生产单工序步骤表中 // 需要获取工序组的具体信息,以及工序组中工序的信息,然后将工序组中工序的信息插入到生产单工序步骤表中
ProcessListReqDTO processListReqDTO = processGroupApi.getProcessGroupDetail(createReqVO.getGroupId()); ProcessListReqDTO processListReqDTO = processGroupApi.getProcessGroupDetail(createReqVO.getGroupId());
AtomicInteger INDEX = new AtomicInteger(0);
processListReqDTO.getLists().forEach(processRespDTO -> { processListReqDTO.getLists().forEach(processRespDTO -> {
Long processStepDOId = (Long) identifierGenerator.nextId(null); Long processStepDOId = (Long) identifierGenerator.nextId(null);
ProcessStepDO processStepDO = BeanUtils.toBean(processRespDTO, ProcessStepDO.class).setId(processStepDOId).setOrderId(createReqVO.getOrderId()) ProcessStepDO processStepDO = BeanUtils.toBean(processRespDTO, ProcessStepDO.class).setId(processStepDOId).setOrderId(createReqVO.getOrderId())
.setStatus(false).setProcessinfoId(processRespDTO.getId()).setOrderProcessId(orderProcess.getId()).setFinishTime(null).setSort(INDEX++);// 计划日期没有填写 .setStatus(false).setProcessinfoId(processRespDTO.getId()).setOrderProcessId(orderProcess.getId()).setFinishTime(null).setSort(INDEX.getAndIncrement());// 计划日期没有填写
processStepDOS.add(processStepDO); processStepDOS.add(processStepDO);
// 生产单中是否存在加工组,若存在加工组,需要逐条加工组信息写入到生产单工序步骤表 // 生产单中是否存在加工组,若存在加工组,需要逐条加工组信息写入到生产单工序步骤表
@@ -171,7 +166,7 @@ public class OrderProcessServiceImpl implements OrderProcessService {
} }
} }
}); });
INDEX = 0; INDEX.set(0);
// 修改生产单的状态 // 修改生产单的状态
orderMapper.updateOrderStatus(createReqVO.getOrderId(), OrderStatusEnum.NO_SORT.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId()); orderMapper.updateOrderStatus(createReqVO.getOrderId(), OrderStatusEnum.NO_SORT.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId());
// 批量插入 // 批量插入
@@ -1,10 +1,9 @@
package com.cf.imes.module.executor.util.fileConversion.admin.files.excel; package com.cf.imes.module.executor.util.fileConversion.admin.files.excel;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.map.MapUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.nacos.common.utils.StringUtils; import com.alibaba.nacos.common.utils.StringUtils;
@@ -15,25 +14,21 @@ import com.cf.imes.module.system.api.dict.dto.DictDataRespDTO;
import com.cf.imes.module.system.enums.DictTypeConstants; import com.cf.imes.module.system.enums.DictTypeConstants;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.ResourceUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
@Slf4j @Slf4j
@Component @Component
public class ExcelReadUtil { // 文件读取 public class ExcelReadUtil { // 文件读取
private AtomicInteger isErr = new AtomicInteger(0);
private Boolean index = true;
private int isErr;
@Resource @Resource
private DictDataApi dictDataApi; private DictDataApi dictDataApi;
@@ -50,12 +45,13 @@ public class ExcelReadUtil { // 文件读取
List<Map<Integer, String>> dataLists = excelListener.getDataLists();// 读取的内容 List<Map<Integer, String>> dataLists = excelListener.getDataLists();// 读取的内容
List<OrderPlateImportExcelVO> list = new ArrayList<>();// plate List<OrderPlateImportExcelVO> list = new ArrayList<>();// plate
AtomicBoolean index = new AtomicBoolean(true);
dataLists.forEach( dataLists.forEach(
item -> { item -> {
if (item.get(0).equals("###")) { if (item.get(0).equals("###")) {
index = false; index.set(false);
} }
if (index) { if (index.get()) {
orderMap.put(item.get(0), item.get(1)); orderMap.put(item.get(0), item.get(1));
orderMap.put(item.get(12), item.get(13)); orderMap.put(item.get(12), item.get(13));
} else { } else {
@@ -66,12 +62,11 @@ public class ExcelReadUtil { // 文件读取
} }
} }
); );
index = true; index.set(true);
if (MapUtil.isEmpty(orderMap) || CollectionUtil.isEmpty(list)) {
isErr.set(-1);
}
map.put("order", orderMap); map.put("order", orderMap);
if (orderMap.size() == 0)
isErr = -1;
if (list.size() == 0)
isErr = -1;
map.put("plate", list); map.put("plate", list);
return map; return map;
@@ -391,7 +386,7 @@ public class ExcelReadUtil { // 文件读取
} }
if (!flag) { if (!flag) {
isErr++; isErr.getAndIncrement();
} }
JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(errList));// 错误列表 JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(errList));// 错误列表
vo.setResult(String.valueOf(jsonArray)); vo.setResult(String.valueOf(jsonArray));
@@ -432,10 +427,10 @@ public class ExcelReadUtil { // 文件读取
} }
public int isErr() { public int isErr() {
return isErr; return isErr.get();
} }
public void setErr(int isErr) { public void setErr(int isErr) {
this.isErr = isErr; this.isErr.set(isErr);
} }
} }
@@ -172,8 +172,9 @@ public class PermissionServiceImpl implements PermissionService {
throw new ServiceException(ErrorCodeConstants.ROLE_NOT_EXISTS); throw new ServiceException(ErrorCodeConstants.ROLE_NOT_EXISTS);
} }
// 前端没传或者查一次后切换了组织导致跟角色组织不一致的统一为角色的组织 // 前端没传或者查一次后切换了组织导致跟角色组织不一致的统一为角色的组织
if (Objects.isNull(organId) || ObjectUtil.notEqual(role.getOrganId(), organId)) { Long roleOrganId = role.getOrganId();
organId = role.getOrganId(); if (Objects.isNull(organId) || ObjectUtil.notEqual(roleOrganId, organId)) {
organId = roleOrganId;
} }
final Long finalOrganId = organId; final Long finalOrganId = organId;
@@ -304,6 +305,8 @@ public class PermissionServiceImpl implements PermissionService {
Set<Long> userIds = reqVO.getUserIds(); Set<Long> userIds = reqVO.getUserIds();
// 组织id // 组织id
Long organId = reqVO.getOrganId(); Long organId = reqVO.getOrganId();
// 角色id
Long roleId = reqVO.getRoleId();
// 超管不传组织id则操作本机构角色 // 超管不传组织id则操作本机构角色
// 非超管不传组织id不允许操作 // 非超管不传组织id不允许操作
if (isSupAdmin) { if (isSupAdmin) {
@@ -313,8 +316,18 @@ public class PermissionServiceImpl implements PermissionService {
throw new ServiceException(ErrorCodeConstants.ROLE_NOT_SUPERADMIN_NO_ORGAN_ID_OPER_ERROR); throw new ServiceException(ErrorCodeConstants.ROLE_NOT_SUPERADMIN_NO_ORGAN_ID_OPER_ERROR);
} }
} }
// 查询角色获取角色的组织id,如果没有传入组织id就跟角色的组织统一
RoleDO role = roleService.getRole(roleId);
if (Objects.isNull(role)) {
throw new ServiceException(ErrorCodeConstants.ROLE_NOT_EXISTS);
}
// 前端没传或者查一次后切换了组织导致跟角色组织不一致的统一为角色的组织
Long roleOrganId = role.getOrganId();
if (Objects.isNull(organId) || ObjectUtil.notEqual(roleOrganId, organId)) {
organId = roleOrganId;
}
final Long finalOrganId = organId; final Long finalOrganId = organId;
Long roleId = reqVO.getRoleId();
// 当前用户不能操作含有自己的角色 // 当前用户不能操作含有自己的角色
if (CollectionUtil.isNotEmpty(userIds)) { if (CollectionUtil.isNotEmpty(userIds)) {
Long incloudSelf = userIds.stream().filter(userId -> userId.equals(loginUser.getId())).findAny().orElse(null); Long incloudSelf = userIds.stream().filter(userId -> userId.equals(loginUser.getId())).findAny().orElse(null);