mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
未排单,排单管理Sonar代码检查问题修改
This commit is contained in:
+2
@@ -3,6 +3,7 @@ package com.cf.imes.module.executor;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
import org.springframework.context.annotation.EnableAspectJAutoProxy;
|
||||
import org.springframework.scheduling.annotation.EnableAsync;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
|
||||
@@ -10,6 +11,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
* @author there
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@EnableAspectJAutoProxy(exposeProxy = true) // add config
|
||||
@EnableFeignClients
|
||||
@EnableAsync
|
||||
@EnableScheduling //开启定时任务
|
||||
|
||||
+3
-2
@@ -63,7 +63,7 @@ public class OptimizePlanController {
|
||||
})
|
||||
@PreAuthorize("@ss.hasPermission('placeorder:optimize')")
|
||||
public CommonResult<Boolean> commit(@RequestParam("planId") @NotNull(message = "排单ID不能为空") Long planId,
|
||||
@RequestParam("goodsNo") @NotEmpty(message = "开料大板编号不能为空") List<Long> goodsNo) {
|
||||
@RequestParam("goodsNo") @NotEmpty(message = "排单异常,请重新优化或重新进入排单") List<Long> goodsNo) {
|
||||
|
||||
return CommonResult.success(optimizePlanService.commit(planId,goodsNo));
|
||||
}
|
||||
@@ -80,7 +80,8 @@ public class OptimizePlanController {
|
||||
@Operation(summary = "修改开料状态")
|
||||
@PreAuthorize("@ss.hasPermission('placeorder:optimize:updateCuttingStatus')")
|
||||
public CommonResult<Boolean> updateCuttingStatus(@RequestBody CuttingStatusRespVO respVO) {
|
||||
return success(optimizePlanService.updateCuttingStatus(respVO));
|
||||
optimizePlanService.updateCuttingStatus(respVO);
|
||||
return success(Boolean.TRUE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
-19
@@ -12,9 +12,6 @@ import java.util.List;
|
||||
public class SavePlanPlateResultReqVO {
|
||||
|
||||
|
||||
// @Schema(description = "优化后的生产单数据", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
// private List<OrderDO> orderList;
|
||||
|
||||
|
||||
|
||||
@Schema(description = "优化后的大板列表数据", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@@ -28,20 +25,4 @@ public class SavePlanPlateResultReqVO {
|
||||
|
||||
|
||||
|
||||
// @Schema(description = "优化后的小板列表数据", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
// private List<PlateDetialRespVO> plateList;
|
||||
//
|
||||
//
|
||||
//
|
||||
// @Schema(description = "优化后新增的小板ID")
|
||||
// private List<Long> addPlateIds;
|
||||
//
|
||||
//
|
||||
//
|
||||
// @Schema(description = "优化后删除的小板ID")
|
||||
// private List<Long> deletePlateIds;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
+2
-3
@@ -8,7 +8,6 @@ import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Beal
|
||||
@@ -232,8 +231,8 @@ public class PlateRespVO extends PageParam {
|
||||
|
||||
|
||||
|
||||
@Schema(description = "小板详情列表")
|
||||
private List<PlateDetailVO> plateDetailList;
|
||||
// @Schema(description = "小板详情列表")
|
||||
// private List<PlateDetailVO> plateDetailList;
|
||||
|
||||
|
||||
}
|
||||
+1
-3
@@ -75,7 +75,7 @@ public interface GoodsMapper extends BaseMapperX<GoodsDO> {
|
||||
}
|
||||
|
||||
// 删板材,批量
|
||||
void updateDeletedById(@Param("orderId") Long orderId,@Param("ids") List<Long> ids, @Param("deleted") Integer deleted, @Param("organId") Long organId);
|
||||
void updateDeletedById(@Param("orderId") Long orderId,@Param("ids") List<Long> ids , @Param("organId") Long organId);
|
||||
|
||||
void deletedById(@Param("ids") List<Long> ids, @Param("organId") Long organId);
|
||||
|
||||
@@ -104,8 +104,6 @@ public interface GoodsMapper extends BaseMapperX<GoodsDO> {
|
||||
}
|
||||
|
||||
|
||||
// List<GoodsDO> seleTestSQL(@Param("sql") String sql);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -122,8 +122,8 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
|
||||
// 查询单个生产单
|
||||
default OrderDO selectOrderOne(Long id, Long organId) {
|
||||
return selectOne(new LambdaQueryWrapper<OrderDO>()
|
||||
.eq(OrderDO::getId, id)
|
||||
.eq(OrderDO::getOrganId, organId));
|
||||
.eq(OrderDO::getOrganId, organId)
|
||||
.eq(OrderDO::getId, id));
|
||||
}
|
||||
|
||||
// 删除状态为条件,查询生产单
|
||||
|
||||
+65
-2
@@ -13,7 +13,6 @@ import org.apache.ibatis.annotations.Param;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 生产单柜体 Mapper
|
||||
@@ -54,6 +53,25 @@ public interface OrderBodyMapper extends BaseMapperX<OrderBodyDO> {
|
||||
.eq(OrderBodyDO::getOrderId, orderId));
|
||||
}
|
||||
|
||||
default int updateDeletedBody(Collection<Long> ids , Long organId, Long orderId) {
|
||||
return update(new LambdaUpdateWrapper<OrderBodyDO>()
|
||||
.set(OrderBodyDO::getDeleted, true)
|
||||
.eq(OrderBodyDO::getOrganId, organId)
|
||||
.eq(OrderBodyDO::getOrderId, orderId)
|
||||
.in(OrderBodyDO::getId, ids));
|
||||
}
|
||||
|
||||
|
||||
default int updateNoDeletedBody(Collection<Long> ids , Long organId, Long orderId) {
|
||||
return update(new LambdaUpdateWrapper<OrderBodyDO>()
|
||||
.set(OrderBodyDO::getDeleted, false)
|
||||
.eq(OrderBodyDO::getOrganId, organId)
|
||||
.eq(OrderBodyDO::getOrderId, orderId)
|
||||
.in(OrderBodyDO::getId, ids));
|
||||
}
|
||||
|
||||
|
||||
|
||||
default int deletedByOrderId(Long orderId, Long organId) {
|
||||
return delete(new LambdaUpdateWrapper<OrderBodyDO>()
|
||||
.eq(OrderBodyDO::getOrderId, orderId)
|
||||
@@ -80,6 +98,24 @@ public interface OrderBodyMapper extends BaseMapperX<OrderBodyDO> {
|
||||
.eq(OrderBodyDO::getOrganId, organId)));
|
||||
}
|
||||
|
||||
|
||||
default int selectNoDeletedBodyCount(Long orderId, Long organId ) {
|
||||
return Math.toIntExact(selectCount(new LambdaUpdateWrapper<OrderBodyDO>()
|
||||
.eq(OrderBodyDO::getOrganId, organId)
|
||||
.eq(OrderBodyDO::getOrderId, orderId)
|
||||
.eq(OrderBodyDO::getDeleted, false)));
|
||||
}
|
||||
|
||||
|
||||
default int selectDeletedBodyCount(Long orderId, Long organId ) {
|
||||
return Math.toIntExact(selectCount(new LambdaUpdateWrapper<OrderBodyDO>()
|
||||
.eq(OrderBodyDO::getOrganId, organId)
|
||||
.eq(OrderBodyDO::getOrderId, orderId)
|
||||
.eq(OrderBodyDO::getDeleted, true)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 按照房间名称查询
|
||||
default List<OrderBodyDO> selectByRoomName(Long orderId, String roomName,
|
||||
Long organId, Integer deleted) {
|
||||
@@ -110,9 +146,36 @@ public interface OrderBodyMapper extends BaseMapperX<OrderBodyDO> {
|
||||
.eq(OrderBodyDO::getDeleted, deleted)
|
||||
.select(OrderBodyDO::getId)).stream()
|
||||
.map(OrderBodyDO::getId)
|
||||
.collect(Collectors.toList());
|
||||
.toList();
|
||||
}
|
||||
|
||||
|
||||
default List<Long> selectNoDeletedBodyId(Long orderId, Set<Long> roomIds, Long organId) {
|
||||
return selectList(new LambdaQueryWrapper<OrderBodyDO>()
|
||||
.eq(OrderBodyDO::getOrganId, organId)
|
||||
.eq(OrderBodyDO::getOrderId, orderId)
|
||||
.in(OrderBodyDO::getRoomId, roomIds)
|
||||
.eq(OrderBodyDO::getDeleted, false)
|
||||
.select(OrderBodyDO::getId)).stream()
|
||||
.map(OrderBodyDO::getId)
|
||||
.toList();
|
||||
}
|
||||
|
||||
|
||||
default List<Long> selectDeletedBodyId(Long orderId, Set<Long> roomIds, Long organId) {
|
||||
return selectList(new LambdaQueryWrapper<OrderBodyDO>()
|
||||
.eq(OrderBodyDO::getOrganId, organId)
|
||||
.eq(OrderBodyDO::getOrderId, orderId)
|
||||
.in(OrderBodyDO::getRoomId, roomIds)
|
||||
.eq(OrderBodyDO::getDeleted, true)
|
||||
.select(OrderBodyDO::getId)).stream()
|
||||
.map(OrderBodyDO::getId)
|
||||
.toList();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// 根据生产单进行删除
|
||||
default int deleteByOrderId(Long orderId, Long organId) {
|
||||
return delete(new LambdaQueryWrapperX<OrderBodyDO>()
|
||||
|
||||
+20
@@ -48,6 +48,26 @@ public interface OrderGroupMapper extends BaseMapperX<OrderGroupDO> {
|
||||
return 0;
|
||||
}
|
||||
|
||||
default int updateDeletedGroup(Collection<Long> bodyIds , Long organId, Long orderId) {
|
||||
return update(new LambdaUpdateWrapper<OrderGroupDO>()
|
||||
.set(OrderGroupDO::getDeleted, true)
|
||||
.eq(OrderGroupDO::getOrganId, organId)
|
||||
.eq(OrderGroupDO::getOrderId, orderId)
|
||||
.in(OrderGroupDO::getBodyId, bodyIds));
|
||||
|
||||
}
|
||||
|
||||
|
||||
default int updateNoDeletedGroup(Collection<Long> bodyIds , Long organId, Long orderId) {
|
||||
return update(new LambdaUpdateWrapper<OrderGroupDO>()
|
||||
.set(OrderGroupDO::getDeleted, false)
|
||||
.eq(OrderGroupDO::getOrganId, organId)
|
||||
.eq(OrderGroupDO::getOrderId, orderId)
|
||||
.in(OrderGroupDO::getBodyId, bodyIds));
|
||||
|
||||
}
|
||||
|
||||
|
||||
default int deletedById(Long id, Long organId) {
|
||||
return delete(new LambdaUpdateWrapper<OrderGroupDO>()
|
||||
.eq(OrderGroupDO::getBodyId, id)
|
||||
|
||||
+7
-1
@@ -64,7 +64,13 @@ public interface OrderPartsMapper extends BaseMapperX<OrderPartsDO> {
|
||||
return update(wrapper);
|
||||
}
|
||||
|
||||
void updateDeletedById(@Param("partsIds") List<Long> partsIds, @Param("deleted") Integer deleted, @Param("organId") Long organId);
|
||||
void updateDeletedById(@Param("partsIds") List<Long> partsIds, @Param("deleted") Integer deleted, @Param("organId") Long organId,@Param("orderId") Long orderId);
|
||||
|
||||
void updateDeletedParts(@Param("partsIds") List<Long> partsIds, @Param("orderId") Long orderId, @Param("organId") Long organId);
|
||||
|
||||
void updateNoDeletedParts(@Param("partsIds") List<Long> partsIds, @Param("orderId") Long orderId, @Param("organId") Long organId);
|
||||
|
||||
|
||||
void deletedById(@Param("partsIds") List<Long> partsIds, @Param("organId") Long organId);
|
||||
|
||||
List<PrintOrderPartsRespVO> selectPartList( @Param("orderIds") List<Long> orderIds,@Param("organId") Long organId);
|
||||
|
||||
+10
-1
@@ -104,6 +104,11 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
|
||||
|
||||
void updateDeletedById(@Param("plateIds") List<Long> plateIds, @Param("deleted") Integer deleted, @Param("organId") Long organId, @Param("orderId") Long orderId);
|
||||
|
||||
|
||||
void updateDeletedPlate(@Param("plateIds") List<Long> plateIds, @Param("organId") Long organId, @Param("orderId") Long orderId);
|
||||
|
||||
void updateNoDeletedPlate(@Param("plateIds") List<Long> plateIds, @Param("organId") Long organId, @Param("orderId") Long orderId);
|
||||
|
||||
int countPlateByOrderId(@Param("orderId") Long orderId, @Param("organId") Long organId, @Param("deleted") Integer deleted);
|
||||
|
||||
|
||||
@@ -149,7 +154,11 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
|
||||
List<PlateDO> selectPlateTypeByRoomId(@Param("orderId") Long orderId, @Param("bodyIds") Collection<Long> bodyIds,
|
||||
@Param("organId") Long organId, @Param("deleted") Integer deleted);
|
||||
|
||||
// 根据生产单id删除
|
||||
List<PlateDO> selectNoDeletedPlate(@Param("orderId") Long orderId, @Param("bodyIds") Collection<Long> bodyIds,@Param("organId") Long organId);
|
||||
|
||||
List<PlateDO> selectDeletedPlate(@Param("orderId") Long orderId, @Param("bodyIds") Collection<Long> bodyIds,@Param("organId") Long organId);
|
||||
|
||||
// 根据生产单id删除
|
||||
default int deleteByOrderId(Long orderId, Long organId) {
|
||||
return delete(new LambdaQueryWrapperX<PlateDO>()
|
||||
.eq(PlateDO::getOrganId, organId)
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ public interface OptimizePlanService {
|
||||
|
||||
Boolean commit(Long planId, List<Long> goodsNo);
|
||||
|
||||
Boolean updateCuttingStatus(CuttingStatusRespVO respVO);
|
||||
void updateCuttingStatus(CuttingStatusRespVO respVO);
|
||||
|
||||
Boolean endCutting(Long planId);
|
||||
|
||||
|
||||
+79
-206
@@ -1,8 +1,6 @@
|
||||
package com.cf.imes.module.executor.service.optimizeplan;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.lang.Snowflake;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import co.elastic.clients.elasticsearch.ElasticsearchClient;
|
||||
import co.elastic.clients.elasticsearch._types.FieldValue;
|
||||
@@ -43,7 +41,6 @@ import com.cf.imes.module.system.api.dataSource.DataSourceApi;
|
||||
import com.cf.imes.module.system.api.machine.MachineApi;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -52,12 +49,11 @@ import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.*;
|
||||
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static com.cf.imes.framework.common.util.json.JsonUtils.parseObject;
|
||||
import static com.cf.imes.framework.common.util.json.JsonUtils.parseTree;
|
||||
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
|
||||
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_NOT_EXISTS;
|
||||
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLAN_NOT_EXISTS;
|
||||
@@ -91,7 +87,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
@Resource
|
||||
private ElasticsearchClient elasticsearchClient;
|
||||
|
||||
private Snowflake snowflake = IdUtil.getSnowflake();
|
||||
|
||||
@Resource
|
||||
private MachineApi machineApi;
|
||||
@@ -111,6 +106,8 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
private static final String FIELD_ORDER_ID = "orderId";
|
||||
private static final String FIELD_PLAN_ID = "planId";
|
||||
|
||||
private static final String ES_SELECT_DATA_ERROR = "优化生产ES文档查询异常: ";
|
||||
|
||||
@Override
|
||||
public List<PlateOptimize> getPlateListByPlanId(Long planId) {
|
||||
return planMapper.selectPlateListByPlanId(planId,getUserOrganId());
|
||||
@@ -146,7 +143,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
|
||||
|
||||
|
||||
// todo 目前只解决了非混单的情况,混单情况待解决
|
||||
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 10);
|
||||
|
||||
@@ -154,10 +150,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0);
|
||||
|
||||
if(!optimizeBoardModelDO.getIsOptimized()){
|
||||
|
||||
throw exception(ORDER_PLAN_NO_OPTIMIZE_ERROR);
|
||||
Boolean isOptimized = optimizeBoardModelDO.getIsOptimized();
|
||||
|
||||
if(Boolean.FALSE.equals(isOptimized)){
|
||||
throw exception(ORDER_PLAN_NO_OPTIMIZE_UPDATE_ERROR);
|
||||
}
|
||||
|
||||
|
||||
@@ -166,30 +162,30 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
// 创建一个列表存储 BlockPlaceInfo 对象,将优化的小板信息拿出,获取到小板编号,查询生产单,修改生产单的状态
|
||||
List<BlockPlaceInfo> outputList = new ArrayList<>();
|
||||
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
String blockPlaceInfo = optimizeBoardModelDO.getBlockPlaceInfo();
|
||||
|
||||
try {
|
||||
// 解析 JSON 字符串
|
||||
JsonNode jsonArray = mapper.readTree(optimizeBoardModelDO.getBlockPlaceInfo());
|
||||
AssertUtils.notEmpty(blockPlaceInfo, ORDER_PLAN_OPTIMIZE_ERROR);
|
||||
|
||||
// 遍历 JSON 数组并提取所需字段
|
||||
if (jsonArray.isArray()) {
|
||||
for (JsonNode jsonNode : jsonArray) {
|
||||
Long bi = jsonNode.get("bi").asLong();
|
||||
String bo = jsonNode.get("bo").asText();
|
||||
outputList.add(new BlockPlaceInfo(bi,bo));
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
JsonNode jsonArray = parseTree(blockPlaceInfo);
|
||||
|
||||
boolean isArray = jsonArray.isArray();
|
||||
|
||||
if (Boolean.FALSE.equals(isArray)) {
|
||||
throw exception(ORDER_PLAN_OPTIMIZE_ERROR);
|
||||
}
|
||||
|
||||
for (JsonNode jsonNode : jsonArray) {
|
||||
Long bi = jsonNode.get("bi").asLong();
|
||||
String bo = jsonNode.get("bo").asText();
|
||||
outputList.add(new BlockPlaceInfo(bi,bo));
|
||||
}
|
||||
|
||||
|
||||
for (Long goods : goodsNo) {
|
||||
plateNo.addAll(outputList.stream().filter(f -> f.getBi().equals(goods)).map(BlockPlaceInfo::getBo).distinct().toList());
|
||||
}
|
||||
|
||||
|
||||
|
||||
List<PlateDO> plateDOS = plateMapper.selectPlateByPlateNo(plateNo.stream().distinct().toList(), getUserOrganId());
|
||||
|
||||
|
||||
@@ -200,22 +196,22 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
orderMapper.updateOrderListStatus(orderIds,OrderStatusEnum.IN_PRODUCTION.getStatus(),getUserOrganId());
|
||||
|
||||
|
||||
CutedBoardInfo cutedBoardInfo = optimizeBoardModelDO.getCutedBoardInfo() == null ? new CutedBoardInfo() : optimizeBoardModelDO.getCutedBoardInfo();
|
||||
CutedBoardInfo cutedBoardInfo = Optional.ofNullable(optimizeBoardModelDO.getCutedBoardInfo()).orElse(new CutedBoardInfo());
|
||||
|
||||
|
||||
// 获取原排单的开料大板数 + 新增的开料大板数
|
||||
|
||||
|
||||
// 获取原排单的已开料的大板编号
|
||||
List<Long> cutedBoardList = cutedBoardInfo.getCutedBoardList() == null ? new ArrayList<>() : cutedBoardInfo.getCutedBoardList();
|
||||
List<Long> cutedBoardList = Optional.ofNullable(cutedBoardInfo.getCutedBoardList()).orElseGet(ArrayList::new);
|
||||
|
||||
goodsNo.addAll(cutedBoardList);
|
||||
|
||||
// 将新开料的大板编号添加到已开料的大板编号中
|
||||
cutedBoardList.addAll(Stream.concat(
|
||||
cutedBoardList.stream().filter(str -> !goodsNo.contains(str)),
|
||||
goodsNo.stream().filter(str -> !cutedBoardList.contains(str)))
|
||||
.toList());
|
||||
|
||||
// 将开料的大板编号和已经开料的大板编号进行去重,相同去除,不同新增
|
||||
goodsNo.forEach(item -> {
|
||||
if (!cutedBoardList.contains(item)) {
|
||||
cutedBoardList.add(item);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
long cutedBoardNumber = cutedBoardList.size();
|
||||
|
||||
@@ -251,18 +247,17 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
planMapper.updateById(planDO);
|
||||
|
||||
|
||||
List<Long> deleteOrderIds = goodsMapper.selectNoPlanOrdersListByOrderIds(orderIds, getUserOrganId()).stream().map(GoodsDO::getOrderId).distinct().toList();
|
||||
|
||||
orderIds.removeAll(deleteOrderIds);
|
||||
|
||||
if(!orderIds.isEmpty()) {
|
||||
if(ObjectUtil.isNotEmpty(orderIds)) {
|
||||
|
||||
List<Long> orderIdList = goodsMapper.selectOrderPlanList(orderIds, getUserOrganId());
|
||||
|
||||
List<OrderDO> orderDOS = orderMapper.selectOrderPackList(orderIdList, getUserOrganId());
|
||||
|
||||
if (!orderDOS.isEmpty()) {
|
||||
if (ObjectUtil.isNotEmpty(orderDOS)) {
|
||||
List<OrderDO> orderDOList = orderDOS.stream().map(m -> m.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus())).toList();
|
||||
orderMapper.updateBatch(orderDOList);
|
||||
}
|
||||
@@ -278,13 +273,13 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean updateCuttingStatus(CuttingStatusRespVO respVO) {
|
||||
public void updateCuttingStatus(CuttingStatusRespVO respVO) {
|
||||
|
||||
Long planId = respVO.getPlanId();
|
||||
List<Long> goodsNo = respVO.getGoodsNo();
|
||||
|
||||
if(goodsNo.isEmpty()){
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
|
||||
PlanDO planDO = planMapper.selectById(planId);
|
||||
@@ -298,14 +293,16 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0);
|
||||
|
||||
if(!optimizeBoardModelDO.getIsOptimized()){
|
||||
Boolean isOptimized = optimizeBoardModelDO.getIsOptimized();
|
||||
|
||||
if(Boolean.FALSE.equals(isOptimized)){
|
||||
|
||||
throw exception(ORDER_PLAN_NO_OPTIMIZE_UPDATE_ERROR);
|
||||
|
||||
}
|
||||
|
||||
|
||||
CutedBoardInfo cutedBoardInfo = optimizeBoardModelDO.getCutedBoardInfo() == null ? new CutedBoardInfo() : optimizeBoardModelDO.getCutedBoardInfo();
|
||||
CutedBoardInfo cutedBoardInfo = Optional.ofNullable(optimizeBoardModelDO.getCutedBoardInfo()).orElse(new CutedBoardInfo());
|
||||
|
||||
|
||||
if(cutedBoardInfo.getCutedBoardNumber() != null) {
|
||||
@@ -316,8 +313,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
// 移除取消开料的数据
|
||||
cutedBoardList.removeAll(goodsNo);
|
||||
|
||||
// 减去取消开料的大板数量
|
||||
cutedBoardNumber -= (goodsNo.isEmpty() ? 0 : goodsNo.size());
|
||||
cutedBoardNumber -= goodsNo.size();
|
||||
|
||||
|
||||
// 将需要更新更新的数据更新到原数据中
|
||||
@@ -354,14 +352,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
.toList());
|
||||
}
|
||||
|
||||
return Boolean.TRUE;
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
// if(planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus()) && cutedBoardInfo.getCutedBoardNumber() > 0 && cutedBoardInfo.getCutedBoardNumber() < optimizeBoardModelDO.getBoardCount() ){
|
||||
//
|
||||
// planMapper.updatePlanStatus(planId,PlanStatusEnum.OPENING.getStatus(),getUserOrganId());
|
||||
// }
|
||||
|
||||
planMapper.updatePlanStatus(planId,PlanStatusEnum.OPENING.getStatus(),getUserOrganId());
|
||||
|
||||
@@ -389,57 +383,12 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
// todo 待确认,是否要达到这样的需求 : 生产单的状态也应该更改,如果大板变为未开料,生产单对应的状态应该变为已排单(这时取消开料对应的大板对应的生产单应该在其他排单中不存在,可修改)
|
||||
|
||||
|
||||
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean endCutting(Long planId) {
|
||||
// 目前结束开料已去掉,所以这些代码先注释,后面如果加再修改逻辑
|
||||
//
|
||||
// PlanDO planDO = planMapper.selectById(planId);
|
||||
// if (Objects.isNull(planDO)) {
|
||||
// throw exception(PLAN_NOT_EXISTS);
|
||||
// }
|
||||
// planMapper.updateById(PlanDO.builder()
|
||||
// .id(planId)
|
||||
// .status(PlanStatusEnum.OPENED.getStatus())
|
||||
// .produceTime(LocalDateTime.now())
|
||||
// .build());
|
||||
//
|
||||
// LoginUser loginUser = getLoginUser();
|
||||
// List<ProcessDTO> userProcess = processApi.getUserProcess(loginUser.getId());
|
||||
//
|
||||
// if(!userProcess.isEmpty()) {
|
||||
//
|
||||
// List<Long> processStepIds = new ArrayList<>();
|
||||
//
|
||||
// List<Long> orderIds = JSON.parseArray(planDO.getOrderNos()).toJavaList(Long.class);
|
||||
//
|
||||
// List<ProcessStepDO> processStepDOS = processStepMapper.selectOrderList(orderIds, getUserOrganId());
|
||||
//
|
||||
//
|
||||
// for (ProcessDTO process : userProcess) {
|
||||
// processStepIds.addAll(processStepDOS.stream().filter(f -> Objects.equals(f.getProcessinfoId(), process.getId()))
|
||||
// .map(ProcessStepDO::getId).toList());
|
||||
// }
|
||||
//
|
||||
//
|
||||
// if(!processStepIds.isEmpty()) {
|
||||
//
|
||||
// List<ProcessStepSalaryIds> processStepSalaryIds = calculateSalary(processStepIds);
|
||||
//
|
||||
// // 修改生产明细表和步骤表的工序状态
|
||||
// processStepMapper.updateStatus(processStepSalaryIds, loginUser.getNickname());
|
||||
//
|
||||
// processStepItemMapper.updateStatus(processStepIds);
|
||||
//
|
||||
// }
|
||||
//
|
||||
// }
|
||||
|
||||
|
||||
return Boolean.TRUE;
|
||||
|
||||
@@ -455,9 +404,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
|
||||
// 计算当前工序的工资金额
|
||||
List<ProcessStepSalaryIds> salary = processStepMapper.calculateSalary(processStepAreaIds,getUserOrganId());
|
||||
|
||||
return salary;
|
||||
return processStepMapper.calculateSalary(processStepAreaIds,getUserOrganId());
|
||||
|
||||
}
|
||||
|
||||
@@ -504,9 +451,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
@Override
|
||||
public OrderSource getOrderSourceByOrderId(Long orderId) {
|
||||
OrderDO orderDO = orderMapper.selectById(orderId);
|
||||
// if (Objects.isNull(orderDO)) {
|
||||
// throw exception(ORDER_NOT_EXISTS);
|
||||
// }
|
||||
|
||||
AssertUtils.notEmpty(orderDO,ORDER_NOT_EXISTS);
|
||||
|
||||
@@ -519,16 +463,16 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
AssertUtils.notEmpty(plateDOS,ORDER_PLATE_ERROR);
|
||||
|
||||
for (PlateDetialRespVO plateDetailsRespVO : plateDOS) {
|
||||
String name = "";
|
||||
StringBuilder name = new StringBuilder();
|
||||
if(!plateDetailsRespVO.getProcessGroupLists().isEmpty()) {
|
||||
for (ProcessGroupList groupNameList : plateDetailsRespVO.getProcessGroupLists()) {
|
||||
// 去除最后的逗号
|
||||
name += groupNameList.getGroupName() + ",";
|
||||
name.append(groupNameList.getGroupName()).append(",");
|
||||
|
||||
}
|
||||
name = name.substring(0, name.length() - 1);
|
||||
name = new StringBuilder(name.substring(0, name.length() - 1));
|
||||
}
|
||||
plateDetailsRespVO.setProcessGroupName(name);
|
||||
plateDetailsRespVO.setProcessGroupName(name.toString());
|
||||
}
|
||||
|
||||
|
||||
@@ -586,9 +530,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
@Override
|
||||
public OrderSource getOrderSourceByPlanId(Long planId) {
|
||||
PlanDO planDO = planMapper.selectById(planId);
|
||||
// if (Objects.isNull(planDO)) {
|
||||
// throw exception(PLAN_NOT_EXISTS);
|
||||
// }
|
||||
|
||||
AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
|
||||
|
||||
@@ -607,16 +548,16 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
AssertUtils.notEmpty(plateDetialRespVOS,ORDER_PLAN_PLATE_ERROR);
|
||||
|
||||
for (PlateDetialRespVO plateDetailsRespVO : plateDetialRespVOS) {
|
||||
String name = "";
|
||||
StringBuilder name = new StringBuilder();
|
||||
if(!plateDetailsRespVO.getProcessGroupLists().isEmpty()) {
|
||||
for (ProcessGroupList groupNameList : plateDetailsRespVO.getProcessGroupLists()) {
|
||||
// 去除最后的逗号
|
||||
name += groupNameList.getGroupName() + ",";
|
||||
name.append(groupNameList.getGroupName()).append(",");
|
||||
|
||||
}
|
||||
name = name.substring(0, name.length() - 1);
|
||||
name = new StringBuilder(name.substring(0, name.length() - 1));
|
||||
}
|
||||
plateDetailsRespVO.setProcessGroupName(name);
|
||||
plateDetailsRespVO.setProcessGroupName(name.toString());
|
||||
|
||||
|
||||
}
|
||||
@@ -704,17 +645,17 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
|
||||
for (PlateDetialRespVO plateDetailsRespVO : plateDetialRespVOS) {
|
||||
String name = "";
|
||||
StringBuilder name = new StringBuilder();
|
||||
if(!plateDetailsRespVO.getProcessGroupLists().isEmpty()) {
|
||||
for (ProcessGroupList groupNameList : plateDetailsRespVO.getProcessGroupLists()) {
|
||||
// 去除最后的逗号
|
||||
name += groupNameList.getGroupName() + ",";
|
||||
name.append(groupNameList.getGroupName()).append(",");
|
||||
|
||||
}
|
||||
name = name.substring(0, name.length() - 1);
|
||||
name = new StringBuilder(name.substring(0, name.length() - 1));
|
||||
}
|
||||
|
||||
plateDetailsRespVO.setProcessGroupName(name);
|
||||
plateDetailsRespVO.setProcessGroupName(name.toString());
|
||||
}
|
||||
|
||||
|
||||
@@ -743,13 +684,21 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveOptimizationResults(SavePlanPlateResultReqVO req) {
|
||||
|
||||
AssertUtils.notEmpty(req.getOptimizeBoardModelDOS(),ORDER_PLAN_OPTIMIZE_ERROR);
|
||||
|
||||
// 先根据排单查找是否有优化数据,如果有,删除
|
||||
List<Long> planIds = req.getOptimizeBoardModelDOS().stream().map(OptimizeBoardModelDO::getPlanId).toList();
|
||||
List<Long> planIds = req.getOptimizeBoardModelDOS().stream().map(OptimizeBoardModelDO::getPlanId).distinct().toList();
|
||||
|
||||
// todo 目前只解决非混单的情况下,
|
||||
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanIds(planIds, ORDER_REMAIN_PLATE_MODEL, planIds.size());
|
||||
List<GoodsDO> goodsDOS = goodsMapper.selectPlanGoodsListByPlanIdList(null,planIds, getUserOrganId());
|
||||
|
||||
AssertUtils.notEmpty(goodsDOS,CREATE_PLAN_DATA_ERROR);
|
||||
|
||||
List<Long> ids = goodsDOS.stream().map(GoodsDO::getId).distinct().toList();
|
||||
|
||||
List<Long> orderIds = goodsDOS.stream().map(GoodsDO::getOrderId).distinct().toList();
|
||||
|
||||
List<String> goodsIds = goodsDOS.stream().map(GoodsDO::getGoodsId).distinct().toList();
|
||||
|
||||
// todo 目前只解决非混单的情况下 (目前已解决混单的情况,数据正确性待校验)
|
||||
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanIds(planIds, ORDER_REMAIN_PLATE_MODEL, goodsIds.size());
|
||||
|
||||
if(!optimizeBoardModelDOS.isEmpty()){
|
||||
deleteByPlanId(planIds,ORDER_REMAIN_PLATE_MODEL);
|
||||
@@ -759,86 +708,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
// 保存优化后的大板数据
|
||||
batchSaveBoardModel(req.getOptimizeBoardModelDOS());
|
||||
|
||||
List<GoodsDO> goodsDOS = goodsMapper.selectPlanGoodsListByPlanIdList(null,planIds, getUserOrganId());
|
||||
|
||||
List<Long> ids = goodsDOS.stream().map(GoodsDO::getId).distinct().toList();
|
||||
|
||||
List<Long> orderIds = goodsDOS.stream().map(GoodsDO::getOrderId).distinct().toList();
|
||||
|
||||
plateMapper.updatePlateOptimized(orderIds,ids,getUserOrganId());
|
||||
|
||||
|
||||
// // 保存余料板的数据
|
||||
// if (CollectionUtil.isNotEmpty(req.getOptimizeRemainPlates())) {
|
||||
//
|
||||
// List<RemainPlateDO> remainPlateDoS = BeanUtils.toBean(req.getOptimizeRemainPlates(), RemainPlateDO.class)
|
||||
// .stream()
|
||||
// .map(m -> m.setUseType(1))
|
||||
// .map(m -> m.setOutLineJson("")).toList();
|
||||
//
|
||||
//
|
||||
// List<RemainPlateDO> insertPlateDoS = remainPlateDoS.stream().filter(f -> f.getId() == null).toList();
|
||||
//
|
||||
// List<RemainPlateDO> updatePlateDoS = remainPlateDoS.stream().filter(f -> f.getId() != null).toList();
|
||||
//
|
||||
// Boolean aBoolean = insertPlateDoS.isEmpty() ? null : remainPlateMapper.insertBatch(insertPlateDoS);
|
||||
//
|
||||
// Boolean bBoolean = updatePlateDoS.isEmpty() ? null : remainPlateMapper.updateBatch(updatePlateDoS);
|
||||
//
|
||||
//
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
// 有新增小板,往数据库新增小板
|
||||
// todo 目前新增小板在界面就已经走接口了,这个逻辑应该用不到了
|
||||
|
||||
// if (CollectionUtil.isNotEmpty(req.getAddPlateIds())) {
|
||||
//
|
||||
// List<PlateDetialRespVO> addPlates = req.getPlateList().stream()
|
||||
// .filter(m -> req.getAddPlateIds().contains(m.getPlateId()))
|
||||
// .map(m -> m.setPlateId(null))
|
||||
// .collect(Collectors.toList());
|
||||
//
|
||||
// // 批量新增小板信息
|
||||
// List<PlateDO> plateDOS = BeanUtils.toBean(addPlates, PlateDO.class);
|
||||
//
|
||||
// plateMapper.insertBatch(plateDOS);
|
||||
//
|
||||
// // 批量新增生产单明细表信息
|
||||
// ArrayList<OrderItemDO> orderItemDOS = new ArrayList<>();
|
||||
//
|
||||
// for (PlateDetialRespVO plateDetialRespVO : req.getPlateList()) {
|
||||
// orderItemDOS.add(OrderItemDO.builder()
|
||||
//// .id(plateDetialRespVO.getItemId())
|
||||
// .bodyId(plateDetialRespVO.getBodyId())
|
||||
// .roomId(plateDetialRespVO.getRoomId())
|
||||
//// .groupId(Long.valueOf(plateDetialRespVO.getProcessGroupId()))
|
||||
// .orderId(plateDetialRespVO.getOrderId())
|
||||
// .type(1)
|
||||
// .plateId(plateDetialRespVO.getPlateId())
|
||||
// .build());
|
||||
// }
|
||||
//
|
||||
//
|
||||
// orderItemMapper.insertBatch(orderItemDOS);
|
||||
//
|
||||
// }
|
||||
//
|
||||
// // 有删除的小板ID,删除小板
|
||||
// if (CollectionUtil.isNotEmpty(req.getDeletePlateIds())) {
|
||||
//
|
||||
// // 删除生产单板件表的小板
|
||||
// plateMapper.deleteBatchIds(req.getDeletePlateIds());
|
||||
//
|
||||
// // 删除生产单明细表中对应的小板数据
|
||||
// orderItemMapper.deleteByPlateId(req.getDeletePlateIds());
|
||||
//
|
||||
//
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -847,7 +721,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
List<PlateDO> plateDOS = plateMapper.selectPlateNum(orderId, getUserOrganId());
|
||||
|
||||
if(plateDOS.isEmpty()){
|
||||
return null;
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
return buildRespByOrderId(orderId, plateDOS.size());
|
||||
@@ -865,7 +739,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
SearchResponse<OrderModelDO> search = elasticsearchClient.search(builder.build(), OrderModelDO.class);
|
||||
List<Hit<OrderModelDO>> hits = search.hits().hits();
|
||||
if (CollUtil.isNotEmpty(hits)) {
|
||||
return hits.stream().map(Hit::source).collect(Collectors.toList());
|
||||
return hits.stream().map(Hit::source).toList();
|
||||
}
|
||||
return new ArrayList<>();
|
||||
} catch (Exception e) {
|
||||
@@ -883,7 +757,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
SearchResponse<OrderModelDO> search = elasticsearchClient.search(builder.build(), OrderModelDO.class);
|
||||
List<Hit<OrderModelDO>> hits = search.hits().hits();
|
||||
if (CollUtil.isNotEmpty(hits)) {
|
||||
return hits.stream().map(Hit::source).collect(Collectors.toList());
|
||||
return hits.stream().map(Hit::source).toList();
|
||||
}
|
||||
return new ArrayList<>();
|
||||
} catch (Exception e) {
|
||||
@@ -898,7 +772,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
*
|
||||
* @param optimizeBoardModelDOS
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void batchSaveBoardModel(List<OptimizeBoardModelDO> optimizeBoardModelDOS) {
|
||||
try {
|
||||
BulkResponse bulkResponse = esDocumentService.bulkCreate(ORDER_REMAIN_PLATE_MODEL, optimizeBoardModelDOS);
|
||||
@@ -925,11 +798,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
SearchResponse<OptimizeBoardModelDO> search = elasticsearchClient.search(builder.build(), OptimizeBoardModelDO.class);
|
||||
List<Hit<OptimizeBoardModelDO>> hits = search.hits().hits();
|
||||
if (CollUtil.isNotEmpty(hits)) {
|
||||
return hits.stream().map(Hit::source).collect(Collectors.toList());
|
||||
return hits.stream().map(Hit::source).toList();
|
||||
}
|
||||
return new ArrayList<>();
|
||||
} catch (Exception e) {
|
||||
log.error("优化生产ES文档查询异常: "+e.getMessage());
|
||||
log.error(ES_SELECT_DATA_ERROR+e.getMessage());
|
||||
throw new ServiceException(DATA_DATA_ERROR);
|
||||
}
|
||||
}
|
||||
@@ -944,11 +817,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
SearchResponse<OptimizeBoardModelDO> search = elasticsearchClient.search(builder.build(), OptimizeBoardModelDO.class);
|
||||
List<Hit<OptimizeBoardModelDO>> hits = search.hits().hits();
|
||||
if (CollUtil.isNotEmpty(hits)) {
|
||||
return hits.stream().map(Hit::source).collect(Collectors.toList());
|
||||
return hits.stream().map(Hit::source).toList();
|
||||
}
|
||||
return new ArrayList<>();
|
||||
} catch (Exception e) {
|
||||
log.error("优化生产ES文档查询异常: "+e.getMessage());
|
||||
log.error(ES_SELECT_DATA_ERROR+e.getMessage());
|
||||
throw new ServiceException(DATA_DATA_ERROR);
|
||||
}
|
||||
}
|
||||
@@ -965,11 +838,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
SearchResponse<OptimizeBoardModelDO> search = elasticsearchClient.search(builder.build(), OptimizeBoardModelDO.class);
|
||||
List<Hit<OptimizeBoardModelDO>> hits = search.hits().hits();
|
||||
if (CollUtil.isNotEmpty(hits)) {
|
||||
return hits.stream().map(Hit::source).collect(Collectors.toList());
|
||||
return hits.stream().map(Hit::source).toList();
|
||||
}
|
||||
return new ArrayList<>();
|
||||
} catch (Exception e) {
|
||||
log.error("优化生产ES文档查询异常: "+e.getMessage());
|
||||
log.error(ES_SELECT_DATA_ERROR+e.getMessage());
|
||||
throw new ServiceException(DATA_DATA_ERROR);
|
||||
}
|
||||
}
|
||||
@@ -985,11 +858,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
SearchResponse<OptimizeBoardModelDO> search = elasticsearchClient.search(builder.build(), OptimizeBoardModelDO.class);
|
||||
List<Hit<OptimizeBoardModelDO>> hits = search.hits().hits();
|
||||
if (CollUtil.isNotEmpty(hits)) {
|
||||
return hits.stream().map(Hit::source).collect(Collectors.toList());
|
||||
return hits.stream().map(Hit::source).toList();
|
||||
}
|
||||
return new ArrayList<>();
|
||||
} catch (Exception e) {
|
||||
log.error("优化生产ES文档查询异常: "+e.getMessage());
|
||||
log.error(ES_SELECT_DATA_ERROR+e.getMessage());
|
||||
throw new ServiceException(DATA_DATA_ERROR);
|
||||
}
|
||||
}
|
||||
@@ -1005,7 +878,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
SearchResponse<OrderPartsRemark> search = elasticsearchClient.search(builder.build(), OrderPartsRemark.class);
|
||||
List<Hit<OrderPartsRemark>> hits = search.hits().hits();
|
||||
if (CollUtil.isNotEmpty(hits)) {
|
||||
return hits.stream().map(Hit::source).collect(Collectors.toList());
|
||||
return hits.stream().map(Hit::source).toList();
|
||||
}
|
||||
return new ArrayList<>();
|
||||
} catch (Exception e) {
|
||||
|
||||
+219
-163
@@ -56,6 +56,7 @@ import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataA
|
||||
import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiTypeRealize;
|
||||
import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.ExcelTypeRealize;
|
||||
import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.XmlTypeRealize;
|
||||
import org.springframework.aop.framework.AopContext;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
@@ -261,202 +262,97 @@ public class OrderServiceImpl implements OrderService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateDeleteBody(Long orderId, Set<Long> roomIds, Long bodyId, Integer status) { // 要删除传1,还原传0
|
||||
|
||||
// 判断生产单的状态和生产单柜体对应的板擦是否已开料
|
||||
List<Long> planIds = validateOrderStatus(orderId, roomIds, bodyId, getUserOrganId());
|
||||
|
||||
List<Long> bodyIds = new ArrayList<>();
|
||||
Integer index = status == 1 ? 0 : 1;
|
||||
|
||||
if (roomIds != null && roomIds.size() != 0) {
|
||||
bodyIds = orderBodyMapper.selectBodyIdByRoomId(orderId, roomIds, getUserOrganId(), index);
|
||||
} else if (bodyId != null && bodyId != 0) {
|
||||
validateOrderBodyExists(orderId, bodyId, getUserOrganId(), index);
|
||||
bodyIds.add(bodyId);
|
||||
}
|
||||
|
||||
if (bodyIds.size() != 0){
|
||||
|
||||
List<PlateDO> plateDOList = plateMapper.selectPlateTypeByRoomId(orderId, bodyIds, getUserOrganId(), index);
|
||||
List<Long> bodyIds = validateOrderBodyExists(orderId, bodyId, getUserOrganId(), roomIds, OrderDeletedEnum.NOT_DELETED.getStatus());
|
||||
|
||||
|
||||
List<Long> plateIds = plateDOList.stream().map(PlateDO::getId).toList();
|
||||
if (!bodyIds.isEmpty()){
|
||||
|
||||
List<Long> goodsIds = plateDOList.stream().map(PlateDO::getGoodsId).distinct().toList();
|
||||
// List<Long> groupIds = orderGroupMapper.selectListByBodyId(bodyIds, orderId, getUserOrganId(), index);
|
||||
orderBodyMapper.updateDeletedBody(bodyIds, getUserOrganId(), orderId);// 柜体
|
||||
|
||||
orderGroupMapper.updateDeletedGroup(bodyIds, getUserOrganId(), orderId);// 加工组
|
||||
|
||||
List<PlateDO> plateDOList = plateMapper.selectNoDeletedPlate(orderId, bodyIds, getUserOrganId());
|
||||
|
||||
orderBodyMapper.updateDeletedById(bodyIds, status, getUserOrganId(), orderId);// 柜体
|
||||
orderGroupMapper.updateDeletedById(bodyIds, status, getUserOrganId(), orderId);// 加工组
|
||||
|
||||
if (!plateDOList.isEmpty()) {
|
||||
plateMapper.updateDeletedById(plateIds, status, getUserOrganId(), orderId);// 删小板
|
||||
|
||||
// 删除包裹,只需删除,无需还原
|
||||
List<Long> packIds = orderItemMapper.selectPackId(orderId,bodyIds, getUserOrganId()).stream().map(OrderItemDO::getPackageId).distinct().toList();
|
||||
// 删除小板,大板,包裹,排单信息
|
||||
OrderServiceImpl o = (OrderServiceImpl) AopContext.currentProxy();
|
||||
o.updateDeletePlate(plateDOList, orderId, bodyIds, planIds);
|
||||
|
||||
orderPackageMapper.updatePackList(orderId, packIds, getUserOrganId());
|
||||
|
||||
orderItemMapper.deletePackList(orderId, packIds, getUserOrganId());
|
||||
|
||||
orderPrepackagedMapper.deletePacked(orderId, getUserOrganId());
|
||||
|
||||
List<OrderPackageDO> orderPackageDOS = orderPackageMapper.selectPackStatusList(orderId, getUserOrganId());
|
||||
|
||||
if (orderPackageDOS.isEmpty()) {
|
||||
|
||||
OrderDO orderDO = orderMapper.selectById(orderId);
|
||||
|
||||
orderDO.setPackaged(OrderPackageStatusEnum.UNPACKED.getStatus());
|
||||
|
||||
orderMapper.updateById(orderDO);
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 删除大板
|
||||
List<PlateDO> goodsList = plateMapper.selectPlateDeletedStatus(orderId, goodsIds, getUserOrganId());
|
||||
|
||||
List<Long> goodsIdList = goodsList.stream().map(PlateDO::getGoodsId).distinct().toList();
|
||||
|
||||
List<Long> goodsIdDeleted = Stream.concat(
|
||||
goodsIds.stream().filter(str -> !goodsIdList.contains(str)),
|
||||
goodsIdList.stream().filter(str -> !goodsIds.contains(str)))
|
||||
.toList();
|
||||
|
||||
if (goodsIdDeleted.size() > 0) {
|
||||
|
||||
goodsMapper.updateDeletedById(orderId,goodsIdDeleted, status, getUserOrganId());
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (!planIds.isEmpty()) {
|
||||
// 判断删除的柜体对应的板材是否和排单板材一样
|
||||
List<GoodsDO> goodsDOS = goodsMapper.selectPlanGoodsListByPlanIdList(null,planIds, getUserOrganId());
|
||||
|
||||
// 一样,同时删除排单的信息
|
||||
if (goodsDOS.isEmpty()) {
|
||||
planService.deletePlan(planIds);
|
||||
} else {
|
||||
// 只要有排单,不管删除的柜体的板材数和排单数一样,都要删除排单对应的优化数据(不用这种写法进行删除时,有时会报错,原因目前还没找到)
|
||||
planService.deleteByPlanId(planIds, ORDER_REMAIN_PLATE_MODEL);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// 删除配件信息
|
||||
List<Long> partsList = orderPartsMapper.selectPartsIdListByBodyId(bodyIds, getUserOrganId(), orderId); // 配件
|
||||
if (partsList != null && partsList.size() != 0){
|
||||
orderPartsMapper.updateDeletedById(partsList, status, getUserOrganId());
|
||||
|
||||
if (!partsList.isEmpty()){
|
||||
orderPartsMapper.updateDeletedParts(partsList, getUserOrganId(),orderId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int bodyCount = orderBodyMapper.selectNoDeletedBodyCount(orderId, getUserOrganId());
|
||||
|
||||
// 生产单柜体数量判断
|
||||
if (orderBodyMapper.selectCountByOrderId(orderId, getUserOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus()) == 0 ) {
|
||||
if ( bodyCount == 0 ) {
|
||||
orderMapper.updateOrderStatus(orderId, OrderStatusEnum.EMPTY.getStatus(), getUserOrganId());
|
||||
}else {
|
||||
orderMapper.updateOrderStatus(orderId, OrderStatusEnum.NEW_ORDER.getStatus(), getUserOrganId());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateRestoreBody(Long orderId, Set<Long> roomIds, Long bodyId, Integer status) { // 要删除传1,还原传0
|
||||
|
||||
// 校验存在
|
||||
OrderDO orderDO = orderMapper.selectOrderOne(orderId, getUserOrganId());
|
||||
if (orderDO == null)
|
||||
throw exception(ORDER_NOT_EXISTS);
|
||||
|
||||
List<Long> bodyIds = new ArrayList<>();
|
||||
Integer index = status == 1 ? 0 : 1;
|
||||
AssertUtils.notEmpty(orderDO,ORDER_NOT_EXISTS);
|
||||
|
||||
if (roomIds != null && roomIds.size() != 0) {
|
||||
bodyIds = orderBodyMapper.selectBodyIdByRoomId(orderId, roomIds, getUserOrganId(), index);
|
||||
} else if (bodyId != null && bodyId != 0) {
|
||||
validateOrderBodyExists(orderId, bodyId, getUserOrganId(), index);
|
||||
bodyIds.add(bodyId);
|
||||
}
|
||||
// List<Long> bodyIds = new ArrayList<>();
|
||||
//
|
||||
// Integer index = status == 1 ? 0 : 1;
|
||||
//
|
||||
// if (roomIds != null && !roomIds.isEmpty()) {
|
||||
// bodyIds = orderBodyMapper.selectBodyIdByRoomId(orderId, roomIds, getUserOrganId(), index);
|
||||
// } else if (bodyId != null && bodyId != 0) {
|
||||
// validateOrderBodyExists(orderId, bodyId, getUserOrganId(), roomIds,index);
|
||||
// bodyIds.add(bodyId);
|
||||
// }
|
||||
|
||||
|
||||
if (bodyIds.size() != 0){
|
||||
List<Long> bodyIds = validateOrderBodyExists(orderId, bodyId, getUserOrganId(), roomIds, OrderDeletedEnum.DELETED.getStatus());
|
||||
|
||||
List<PlateDO> plateDOList = plateMapper.selectPlateTypeByRoomId(orderId, bodyIds, getUserOrganId(), index);
|
||||
List<Long> plateIds = plateDOList.stream().map(PlateDO::getId).toList();
|
||||
|
||||
List<Long> goodsIds = plateDOList.stream().map(PlateDO::getGoodsId).distinct().toList();
|
||||
if (!bodyIds.isEmpty()){
|
||||
|
||||
orderBodyMapper.updateDeletedById(bodyIds, status, getUserOrganId(), orderId);// 柜体
|
||||
orderGroupMapper.updateDeletedById(bodyIds, status, getUserOrganId(), orderId);// 加工组
|
||||
orderBodyMapper.updateNoDeletedBody(bodyIds, getUserOrganId(), orderId);// 柜体
|
||||
orderGroupMapper.updateNoDeletedGroup(bodyIds, getUserOrganId(), orderId);// 加工组
|
||||
|
||||
List<PlateDO> plateDOList = plateMapper.selectDeletedPlate(orderId, bodyIds, getUserOrganId());
|
||||
|
||||
// 小板还原
|
||||
if (!plateDOList.isEmpty()) {
|
||||
plateMapper.updateDeletedById(plateIds, status, getUserOrganId(), orderId);
|
||||
|
||||
// 还原小板,小板对应的大板信息
|
||||
OrderServiceImpl o = (OrderServiceImpl) AopContext.currentProxy();
|
||||
o.updateRestorePlate(orderId,plateDOList);
|
||||
|
||||
// 还原大板
|
||||
List<GoodsDO> goodsDOS = goodsMapper.selectGoodsListByStatus(orderId, goodsIds, getUserOrganId());
|
||||
if (!goodsDOS.isEmpty()) {
|
||||
goodsMapper.updateBatch(goodsDOS.stream().map(m -> m.setDeleted(false)).toList());
|
||||
}
|
||||
|
||||
|
||||
// 当大板对应的小板已经排单时,新建相同类型的大板,并将其他未排单的小板对应的大板ID修改为新的大板ID
|
||||
List<GoodsDO> goodsDOList = goodsMapper.selectNoPlanGoodsList(orderId, goodsIds, getUserOrganId());
|
||||
|
||||
List<GoodsDO> goodsList = BeanUtils.toBean(goodsDOList, GoodsDO.class);
|
||||
|
||||
if (!goodsDOList.isEmpty()) {
|
||||
|
||||
// 新增的大板信息
|
||||
List<GoodsDO> list = goodsDOList.stream()
|
||||
.peek(m -> {
|
||||
m.setId(null);
|
||||
m.setPlanId(0L);
|
||||
m.setCreateTime(LocalDateTime.now());
|
||||
m.setUpdateTime(LocalDateTime.now());
|
||||
})
|
||||
.toList();
|
||||
|
||||
goodsMapper.insertBatch(list);
|
||||
|
||||
// 构建新的数据集,保存新的大板ID和旧的大板ID,大板的实际ID关联这两个信息
|
||||
List<OrderGoodsIds> orderGoodsIds = BeanUtils.toBean(list, OrderGoodsIds.class);
|
||||
|
||||
List<OrderGoodsIds> orderGoodsIdsList = new ArrayList<>();
|
||||
|
||||
for (GoodsDO goodsDO : goodsList) {
|
||||
orderGoodsIdsList.addAll(orderGoodsIds.stream()
|
||||
.filter(f -> f.getGoodsId().equals(goodsDO.getGoodsId()))
|
||||
// .filter(a -> a.getOldId() == null)
|
||||
.map(m -> m.setOldId(goodsDO.getId())).toList());
|
||||
|
||||
}
|
||||
|
||||
// 需要修改的小板为未排单的部分,无论其是否删除,都需要修改,但只需修改大板ID即可,其他信息无需修改
|
||||
List<PlateDO> plateDOS = plateMapper.selectNoPlanPlate(orderId, goodsIds, getUserOrganId());
|
||||
|
||||
List<PlateDO> plateList = new ArrayList<>();
|
||||
|
||||
for (OrderGoodsIds ids : orderGoodsIdsList) {
|
||||
|
||||
plateList.addAll(plateDOS.stream()
|
||||
.filter(f -> f.getGoodsId().equals(ids.getOldId()))
|
||||
.peek(m -> {
|
||||
m.setGoodsId(ids.getId());
|
||||
})
|
||||
.toList());
|
||||
}
|
||||
|
||||
plateMapper.updateBatch(plateList);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
List<Long> partsList = orderPartsMapper.selectPartsIdListByBodyId(bodyIds, getUserOrganId(), orderId); // 配件
|
||||
if (partsList != null && partsList.size() != 0){
|
||||
orderPartsMapper.updateDeletedById(partsList, status, getUserOrganId());
|
||||
if (partsList != null && !partsList.isEmpty()){
|
||||
orderPartsMapper.updateNoDeletedParts(partsList, getUserOrganId(),orderId);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -467,10 +363,10 @@ public class OrderServiceImpl implements OrderService {
|
||||
return;
|
||||
}
|
||||
|
||||
int bodyCount = orderBodyMapper.selectDeletedBodyCount(orderId, getUserOrganId());
|
||||
|
||||
// 生产单柜体数量判断
|
||||
if (orderBodyMapper.selectCountByOrderId(orderId, getUserOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus()) == 0) {
|
||||
orderMapper.updateOrderStatus(orderId, OrderStatusEnum.EMPTY.getStatus(), getUserOrganId());
|
||||
}else {
|
||||
if ( bodyCount == 0 ) {
|
||||
orderMapper.updateOrderStatus(orderId, OrderStatusEnum.NEW_ORDER.getStatus(), getUserOrganId());
|
||||
}
|
||||
|
||||
@@ -776,14 +672,29 @@ public class OrderServiceImpl implements OrderService {
|
||||
}
|
||||
|
||||
// 验证柜体是否存在
|
||||
private void validateOrderBodyExists(Long orderId, Long bodyId, Long organId, Integer deleted) {
|
||||
if (orderBodyMapper.selectCount(new LambdaQueryWrapperX<OrderBodyDO>()
|
||||
.eq(OrderBodyDO::getOrganId, organId)
|
||||
.eqIfPresent(OrderBodyDO::getOrderId, orderId)
|
||||
.eqIfPresent(OrderBodyDO::getId, bodyId)
|
||||
.eqIfPresent(OrderBodyDO::getDeleted, deleted)) == 0) {
|
||||
throw exception(ORDER_BODY_NOT_EXISTS);
|
||||
private List<Long> validateOrderBodyExists(Long orderId, Long bodyId, Long organId, Set<Long> roomIds, Integer deleted) {
|
||||
|
||||
List<Long> bodyIds = new ArrayList<>();
|
||||
|
||||
if (roomIds != null && !roomIds.isEmpty()) {
|
||||
bodyIds.addAll(orderBodyMapper.selectBodyIdByRoomId(orderId, roomIds, getUserOrganId(),deleted));
|
||||
}
|
||||
|
||||
if (bodyId != null && bodyId != 0) {
|
||||
Long bodyCount = orderBodyMapper.selectCount(new LambdaQueryWrapperX<OrderBodyDO>()
|
||||
.eq(OrderBodyDO::getOrganId, organId)
|
||||
.eqIfPresent(OrderBodyDO::getDeleted, deleted)
|
||||
.eqIfPresent(OrderBodyDO::getOrderId, orderId)
|
||||
.eqIfPresent(OrderBodyDO::getId, bodyId));
|
||||
|
||||
if (bodyCount == 0) {
|
||||
throw exception(ORDER_BODY_NOT_EXISTS);
|
||||
}
|
||||
|
||||
bodyIds.add(bodyId);
|
||||
}
|
||||
|
||||
return bodyIds;
|
||||
}
|
||||
|
||||
private Map<String, List<?>> getPlateGoods(List<GoodsDO> goodsLists) {
|
||||
@@ -941,11 +852,156 @@ public class OrderServiceImpl implements OrderService {
|
||||
|
||||
AssertUtils.empty(planDOS, ORDER_PLAN_ERROR);
|
||||
|
||||
// planService.deleteByPlanId(planIds, ORDER_REMAIN_PLATE_MODEL);
|
||||
|
||||
}
|
||||
|
||||
return planIds;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// 删除小板,大板,包裹,排单信息
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateDeletePlate(List<PlateDO> plateDOList, Long orderId ,List<Long> bodyIds,List<Long> planIds) {
|
||||
|
||||
|
||||
List<Long> plateIds = plateDOList.stream().map(PlateDO::getId).toList();
|
||||
|
||||
List<Long> goodsIds = plateDOList.stream().map(PlateDO::getGoodsId).distinct().toList();
|
||||
|
||||
plateMapper.updateDeletedPlate(plateIds, getUserOrganId(), orderId);// 删小板
|
||||
|
||||
// 删除包裹,只需删除,无需还原
|
||||
List<Long> packIds = orderItemMapper.selectPackId(orderId,bodyIds, getUserOrganId()).stream().map(OrderItemDO::getPackageId).distinct().toList();
|
||||
|
||||
orderPackageMapper.updatePackList(orderId, packIds, getUserOrganId());
|
||||
|
||||
orderItemMapper.deletePackList(orderId, packIds, getUserOrganId());
|
||||
|
||||
orderPrepackagedMapper.deletePacked(orderId, getUserOrganId());
|
||||
|
||||
List<OrderPackageDO> orderPackageDOS = orderPackageMapper.selectPackStatusList(orderId, getUserOrganId());
|
||||
|
||||
if (orderPackageDOS.isEmpty()) {
|
||||
|
||||
OrderDO orderDO = orderMapper.selectById(orderId);
|
||||
|
||||
orderDO.setPackaged(OrderPackageStatusEnum.UNPACKED.getStatus());
|
||||
|
||||
orderMapper.updateById(orderDO);
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 删除大板
|
||||
List<PlateDO> goodsList = plateMapper.selectPlateDeletedStatus(orderId, goodsIds, getUserOrganId());
|
||||
|
||||
List<Long> goodsIdList = goodsList.stream().map(PlateDO::getGoodsId).distinct().toList();
|
||||
|
||||
List<Long> goodsIdDeleted = Stream.concat(
|
||||
goodsIds.stream().filter(str -> !goodsIdList.contains(str)),
|
||||
goodsIdList.stream().filter(str -> !goodsIds.contains(str)))
|
||||
.toList();
|
||||
|
||||
if (!goodsIdDeleted.isEmpty()) {
|
||||
|
||||
goodsMapper.updateDeletedById(orderId,goodsIdDeleted, getUserOrganId());
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (!planIds.isEmpty()) {
|
||||
// 判断删除的柜体对应的板材是否和排单板材一样
|
||||
List<GoodsDO> goodsDOS = goodsMapper.selectPlanGoodsListByPlanIdList(null,planIds, getUserOrganId());
|
||||
|
||||
// 一样,同时删除排单的信息
|
||||
if (goodsDOS.isEmpty()) {
|
||||
planService.deletePlan(planIds);
|
||||
} else {
|
||||
// 只要有排单,不管删除的柜体的板材数和排单数一样,都要删除排单对应的优化数据(不用这种写法进行删除时,有时会报错,原因目前还没找到)
|
||||
planService.deleteByPlanId(planIds, ORDER_REMAIN_PLATE_MODEL);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// 还原小板,小板对应的大板信息
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateRestorePlate(Long orderId, List<PlateDO> plateDOList){
|
||||
|
||||
List<Long> plateIds = plateDOList.stream().map(PlateDO::getId).toList();
|
||||
|
||||
List<Long> goodsIds = plateDOList.stream().map(PlateDO::getGoodsId).distinct().toList();
|
||||
|
||||
|
||||
plateMapper.updateNoDeletedPlate(plateIds, getUserOrganId(), orderId);
|
||||
|
||||
|
||||
// 还原大板
|
||||
List<GoodsDO> goodsDOS = goodsMapper.selectGoodsListByStatus(orderId, goodsIds, getUserOrganId());
|
||||
if (!goodsDOS.isEmpty()) {
|
||||
goodsMapper.updateBatch(goodsDOS.stream().map(m -> m.setDeleted(false)).toList());
|
||||
}
|
||||
|
||||
|
||||
// 当大板对应的小板已经排单时,新建相同类型的大板,并将其他未排单的小板对应的大板ID修改为新的大板ID
|
||||
List<GoodsDO> goodsDOList = goodsMapper.selectNoPlanGoodsList(orderId, goodsIds, getUserOrganId());
|
||||
|
||||
List<GoodsDO> goodsList = BeanUtils.toBean(goodsDOList, GoodsDO.class);
|
||||
|
||||
if (!goodsDOList.isEmpty()) {
|
||||
|
||||
// 新增的大板信息
|
||||
List<GoodsDO> list = goodsDOList.stream()
|
||||
.peek(m -> {
|
||||
m.setId(null);
|
||||
m.setPlanId(0L);
|
||||
m.setCreateTime(LocalDateTime.now());
|
||||
m.setUpdateTime(LocalDateTime.now());
|
||||
})
|
||||
.toList();
|
||||
|
||||
goodsMapper.insertBatch(list);
|
||||
|
||||
// 构建新的数据集,保存新的大板ID和旧的大板ID,大板的实际ID关联这两个信息
|
||||
List<OrderGoodsIds> orderGoodsIds = BeanUtils.toBean(list, OrderGoodsIds.class);
|
||||
|
||||
List<OrderGoodsIds> orderGoodsIdsList = new ArrayList<>();
|
||||
|
||||
for (GoodsDO goodsDO : goodsList) {
|
||||
orderGoodsIdsList.addAll(orderGoodsIds.stream()
|
||||
.filter(f -> f.getGoodsId().equals(goodsDO.getGoodsId()))
|
||||
.map(m -> m.setOldId(goodsDO.getId())).toList());
|
||||
|
||||
}
|
||||
|
||||
// 需要修改的小板为未排单的部分,无论其是否删除,都需要修改,但只需修改大板ID即可,其他信息无需修改
|
||||
List<PlateDO> plateDOS = plateMapper.selectNoPlanPlate(orderId, goodsIds, getUserOrganId());
|
||||
|
||||
List<PlateDO> plateList = new ArrayList<>();
|
||||
|
||||
for (OrderGoodsIds ids : orderGoodsIdsList) {
|
||||
|
||||
plateList.addAll(plateDOS.stream()
|
||||
.filter(f -> f.getGoodsId().equals(ids.getOldId()))
|
||||
.peek(m -> {
|
||||
m.setGoodsId(ids.getId());
|
||||
})
|
||||
.toList());
|
||||
}
|
||||
|
||||
plateMapper.updateBatch(plateList);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
+83
-147
@@ -200,7 +200,6 @@ public class PlanServiceImpl implements PlanService {
|
||||
.map(m -> m.setStatus(OrderStatusEnum.SORTED.getStatus()))
|
||||
.toList();
|
||||
|
||||
// orderDOList.forEach(m -> m.setStatus(OrderStatusEnum.SORTED.getStatus()));
|
||||
|
||||
if(!orderDOS.isEmpty()) {
|
||||
orderMapper.updateBatch(orderDOS);
|
||||
@@ -227,13 +226,13 @@ public class PlanServiceImpl implements PlanService {
|
||||
PlanDO plan = BeanUtils.toBean(updateReqVO, PlanDO.class);
|
||||
|
||||
// 校验新增的板材是否和排单为统一类型的
|
||||
if(!(updateReqVO.getItemList() == null)){
|
||||
if(updateReqVO.getItemList() != null){
|
||||
|
||||
// todo 目前之解决非混单的情况,混单的情况待解决
|
||||
// TODO 目前之解决非混单的情况,混单的情况待解决
|
||||
String goodsId = updateReqVO.getItemList().stream().map(PlanSaveReqVO.Item::getGoodsId).distinct().toList().get(0);
|
||||
|
||||
|
||||
// todo 目前只解决非混单的情况
|
||||
// TODO 目前只解决非混单的情况
|
||||
String goodsIds = goodsMapper.selectPlanGoods(plan.getId(), getUserOrganId()).stream().map(GoodsDO::getGoodsId).toList().get(0);
|
||||
|
||||
if(!goodsId.equals(goodsIds)){
|
||||
@@ -417,32 +416,6 @@ public class PlanServiceImpl implements PlanService {
|
||||
.toList();
|
||||
|
||||
|
||||
// List<Long> orderIdList = new ArrayList<>();
|
||||
//
|
||||
// List<Long> diff = new ArrayList<>();
|
||||
//
|
||||
// // 根据生产单ID查询ES的优化数据
|
||||
// List<OptimizeBoardModelDO> optimizeBoardModelDOS = optimizePlanService.buildBoardByOrderIds(orderIds, ORDER_REMAIN_PLATE_MODEL, 100);
|
||||
//
|
||||
// if(optimizeBoardModelDOS.isEmpty()){
|
||||
//
|
||||
// List<OrderDO> orderList = orderMapper.selectBatchIds(orderIds);
|
||||
//
|
||||
// List<OrderDO> orderDOList = orderList.stream().map(m -> m.setStatus(OrderStatusEnum.NEW_ORDER.getStatus())).toList();
|
||||
//
|
||||
// orderMapper.updateBatch(orderDOList);
|
||||
//
|
||||
// }else {
|
||||
// optimizeBoardModelDOS.forEach(f -> orderIdList.addAll(f.getOrderId()));
|
||||
//
|
||||
// // 已经删除的排单的生产单号和新查找的生生产单号对比,找出不同的部分
|
||||
//// diff = orderIds.stream().filter(f -> !orderIdList.contains(f)).toList();
|
||||
// diff = Stream.concat(
|
||||
// orderIds.stream().filter(str -> !orderIdList.contains(str)),
|
||||
// orderIdList.stream().filter(str -> !orderIds.contains(str)))
|
||||
// .toList();
|
||||
// }
|
||||
//
|
||||
if(!diff.isEmpty()){
|
||||
|
||||
List<OrderDO> orderList = orderMapper.selectBatchIds(diff);
|
||||
@@ -510,15 +483,12 @@ public class PlanServiceImpl implements PlanService {
|
||||
|
||||
Set<Long> machineIds = planDOPageResult.getList().stream().map(PlanDO::getMachineId).collect(Collectors.toSet());
|
||||
|
||||
List<Long> planIds = planDOPageResult.getList().stream().map(PlanDO::getId).collect(Collectors.toList());
|
||||
List<Long> planIds = planDOPageResult.getList().stream().map(PlanDO::getId).toList();
|
||||
|
||||
|
||||
List<CuttingRespDTO> machines = machineApi.list(machineIds).getCheckedData();
|
||||
|
||||
|
||||
// List<PlateInfoVO> plateInfoVOS = planItemMapper.selectGoodsList(planIds,getUserOrganId());
|
||||
|
||||
|
||||
// 查询排单对应的大板板材信息
|
||||
List<PlateInfoVO> plateInfoVOS = goodsMapper.selectOrderGoodsPlateList(planIds, getUserOrganId());
|
||||
|
||||
@@ -534,26 +504,6 @@ public class PlanServiceImpl implements PlanService {
|
||||
}).toList();
|
||||
|
||||
|
||||
// List<OrderIds> orderIdsList = new ArrayList<>();
|
||||
//
|
||||
// plateInfoVOS.forEach(f->
|
||||
// orderIdsList.addAll(f.getOrderIdList()));
|
||||
//
|
||||
//
|
||||
// List<PlateInfoVO> plateInfoVOList = plateMapper.selectPlateArea(orderIdsList, getUserOrganId());
|
||||
//
|
||||
//
|
||||
//
|
||||
// // todo 目前这种情况只解决没有混单的情况,混单情况待解决 (目前解决,数据正确性待测试)
|
||||
// for (PlateInfoVO plateInfoVO : plateInfoVOS) {
|
||||
// plateInfoVO.setArea(plateInfoVOList.stream()
|
||||
// .filter(s->s.getGoodsId().equals(plateInfoVO.getGoodsId()))
|
||||
// .map(PlateInfoVO::getArea)
|
||||
// .reduce(BigDecimal.ZERO,BigDecimal::add));
|
||||
//
|
||||
//// plateInfoVO.setOptimizeGoodsCount(plateInfoVOList.stream().filter(s->s.getGoodsId().equals(plateInfoVO.getGoodsId())).mapToLong(PlateInfoVO::getOptimizeGoodsCount).sum());
|
||||
// }
|
||||
|
||||
|
||||
// 根据排单ID查询ES中的优化数据 todo 目前只解决无混单的情况,混单情况待解决
|
||||
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanIds(planIds, ORDER_REMAIN_PLATE_MODEL, infoVOList.size());
|
||||
@@ -566,52 +516,31 @@ public class PlanServiceImpl implements PlanService {
|
||||
PageResult<PlanRespVO> planRespVOPageResult = BeanUtils.toBean(planDOPageResult, PlanRespVO.class);
|
||||
|
||||
|
||||
|
||||
planRespVOPageResult.getList().forEach(e -> {
|
||||
// 机台信息
|
||||
e.setMachineName(machines.stream()
|
||||
.filter(f -> Objects.equals(f.getId(), e.getMachineId()))
|
||||
.map(CuttingRespDTO::getName)
|
||||
.findAny()
|
||||
.orElse(null));
|
||||
e.setMachineName(getMachineName(e.getMachineId(), machines));
|
||||
// 板材信息列表
|
||||
e.setPlateInfoList(infoVOList.stream()
|
||||
.filter(f -> Objects.equals(f.getPlanId(), e.getId()))
|
||||
.collect(Collectors.toList()));
|
||||
e.setPlateInfoList(getPlateInfoList(e.getId(), infoVOList));
|
||||
// todo 小板总数量目前只解决没有混单的情况时的小板数量,后续待加入混单情况 (目前解决,数据正确性待测试)
|
||||
e.setPlateNum(infoVOList.stream()
|
||||
.filter(f -> Objects.equals(f.getPlanId(), e.getId()))
|
||||
.mapToLong(PlateInfoVO::getCount)
|
||||
.sum());
|
||||
e.setPlateNum(getPlateNum(e.getId(), infoVOList));
|
||||
// todo 大板优化数量目前只解决没有混单的情况时的小板数量,后续待加入混单情况 (目前解决,数据正确性待测试)
|
||||
e.setOptimizeGoodsCount(optimizeBoardModelDOS.stream()
|
||||
.filter(f -> Objects.equals(f.getPlanId(), e.getId()))
|
||||
// todo 目前兼容修改,新的需求不需要这个校验
|
||||
.mapToLong(m -> m.getBoardCount() == null ? 0 : m.getBoardCount())
|
||||
.sum());
|
||||
e.setOptimizeGoodsCount(getOptimizeGoodsCount(e.getId(), optimizeBoardModelDOS));
|
||||
// 大板开料数
|
||||
e.setCutGoodsCount(optimizeBoardModelDOS.stream()
|
||||
.filter(f->Objects.equals(f.getPlanId(), e.getId()))
|
||||
.mapToLong(m-> m.getCutedBoardInfo() == null ? 0 : m.getCutedBoardInfo().getCutedBoardNumber())
|
||||
.sum());
|
||||
e.setCutGoodsCount(getCutGoodsCount(e.getId(), optimizeBoardModelDOS));
|
||||
// 小板优化数量
|
||||
e.setOptimizePlateCount(optimizeBoardModelDOS.stream()
|
||||
.filter(f->Objects.equals(f.getPlanId(), e.getId()))
|
||||
.mapToLong(m-> m.getPlaceBlockNumber() == null ? 0 : m.getPlaceBlockNumber())
|
||||
.sum());
|
||||
e.setOptimizePlateCount(getOptimizePlateCount(e.getId(), optimizeBoardModelDOS));
|
||||
// 未优化小板数量
|
||||
e.setUnOptimizePlateCount(e.getPlateNum() - optimizeBoardModelDOS.stream()
|
||||
.filter(f->Objects.equals(f.getPlanId(), e.getId()))
|
||||
.mapToLong(m-> m.getPlaceBlockNumber() == null ? 0 : m.getPlaceBlockNumber())
|
||||
.sum());
|
||||
e.setUnOptimizePlateCount(e.getPlateNum() - e.getOptimizePlateCount());
|
||||
// 生产单信息
|
||||
e.setOrderList(planOrderRespVOS.stream()
|
||||
.filter( f-> Objects.equals(f.getPlanId(), e.getId()))
|
||||
.collect(Collectors.toList()));
|
||||
e.setOrderList(getOrderList(e.getId(), planOrderRespVOS));
|
||||
});
|
||||
|
||||
|
||||
return planRespVOPageResult;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public PageResult<OrderRespVOCopy> getOrderPage(OrderPageReqVOCopy pageReqVO) {
|
||||
PageDTO<OrderRespVOCopy> page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
||||
@@ -633,10 +562,7 @@ public class PlanServiceImpl implements PlanService {
|
||||
.eq("o.organ_id",getUserOrganId())
|
||||
.eq("o.deleted",false)
|
||||
.in("o.status",statusList)
|
||||
// .eq("og.organ_id",getUserOrganId())
|
||||
// .eq("og.plan_id",0)
|
||||
// .eq("og.deleted",false)
|
||||
// .isNull("opi.item_id")
|
||||
|
||||
// todo 修改排单数据筛选,目前只解决了非混单的情况,混单情况待解决
|
||||
.inIfPresent(FIELD_OG_ID,goodsIds)
|
||||
.inIfPresent("o.id",pageReqVO.getOrderIds())
|
||||
@@ -668,7 +594,6 @@ public class PlanServiceImpl implements PlanService {
|
||||
queryWrapperX.likeIfPresent(FIELD_OP_FILTER_TYPE, insertSeparator(filterTypes));
|
||||
|
||||
|
||||
// todo 目前修改一半,速度无法再进行特别的优化,需等后面修改表结构再进行优化
|
||||
IPage<OrderRespVOCopy> orderRespVOCopies = orderMapper.selectOrderPage(page,queryWrapperX);
|
||||
|
||||
if (CollUtil.isEmpty(orderRespVOCopies.getRecords())) {
|
||||
@@ -741,8 +666,6 @@ public class PlanServiceImpl implements PlanService {
|
||||
|
||||
queryWrapperX.likeIfPresent("a.filter_type", insertSeparator(filterTypes));
|
||||
|
||||
// List<NotPlanOrderPlateRespVO> platePages = plateMapper.selectGoodsPage(pageReqVO.getOrderIds(),getUserOrganId()/*, orderRespVOCopy.getGoodsId()*/);
|
||||
|
||||
List<NotPlanOrderPlateRespVO> notPlanOrderPlateRespVOS = plateMapper.selectGoodsPage(queryWrapperX);
|
||||
|
||||
// todo 目前数据筛选只考虑了非混单的情况,混单情况待解决
|
||||
@@ -754,30 +677,6 @@ public class PlanServiceImpl implements PlanService {
|
||||
|
||||
|
||||
|
||||
// List<OrderRespVOCopy> filteredRecords = records.stream()
|
||||
// .filter(record -> {
|
||||
// List<PlatePage> filteredPages = platePages.stream()
|
||||
// .filter(f -> Objects.equals(f.getOrderId(), record.getOrderId()))
|
||||
// .collect(Collectors.toList());
|
||||
// if (filteredPages.isEmpty()) {
|
||||
// return false; // 移除该记录
|
||||
// } else {
|
||||
// record.setPlatePages(filteredPages);
|
||||
// return true; // 保留该记录
|
||||
// }
|
||||
// })
|
||||
// .collect(Collectors.toList());
|
||||
//
|
||||
// // 处理后的 filteredRecords 将不包含过滤后的数据为空的 record
|
||||
// orderRespVOCopies.setRecords(filteredRecords);
|
||||
//
|
||||
//// orderRespVOCopies.setTotal(orderRespVOCopies.getRecords().size());
|
||||
//
|
||||
//
|
||||
// return new PageResult<>(orderRespVOCopies.getRecords(), orderRespVOCopies.getTotal());
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -798,19 +697,6 @@ public class PlanServiceImpl implements PlanService {
|
||||
.groupBy(GoodsDO::getGoodsId, GoodsDO::getHeight, GoodsDO::getWidth, GoodsDO::getColor, GoodsDO::getGoodsName, GoodsDO::getThickness,GoodsDO::getSpec,GoodsDO::getMaterial,GoodsDO::getTexture));
|
||||
|
||||
|
||||
|
||||
// // 生产单对应的大板ID
|
||||
// List<Long> goodIds = reqVO.getOrderIdList().stream().map(OrderIds::getId).toList();
|
||||
//
|
||||
// // 查询板材库的大板信息
|
||||
// List<NotPlanGoodsRespVO> notPlanGoodsRespVOS = goodsMapper.selectGoodsPlateList(plateGoodIds, getUserOrganId());
|
||||
|
||||
// 查询小板数量
|
||||
// List<PlateDO> plateDOS = plateMapper.selectGoodsPlateNum(goodIds, getUserOrganId());
|
||||
|
||||
|
||||
// List<NotPlanGoodsRespVO> notPlanGoodsRespVOS = BeanUtils.toBean(goodsDOS, NotPlanGoodsRespVO.class);
|
||||
|
||||
for (NotPlanGoodsRespVO notPlanGoodsRespVO : notPlanGoodsRespVOS) {
|
||||
notPlanGoodsRespVO.setOrderIdList(reqVO.getOrderIdList()
|
||||
.stream()
|
||||
@@ -837,11 +723,6 @@ public class PlanServiceImpl implements PlanService {
|
||||
statusList.add(OrderStatusEnum.IN_PRODUCTION.getStatus());
|
||||
statusList.add(OrderStatusEnum.SORTED.getStatus());
|
||||
|
||||
// List<Long> orderIds = orderMapper.selectOrderIdsList(pageReqVO, statusList, getUserOrganId())
|
||||
// .stream().map(OrderDO::getId).distinct().toList();
|
||||
//
|
||||
// List<Long> goodsIds = plateMapper.selectPlateIds(pageReqVO, getUserOrganId())
|
||||
// .stream().map(PlateDO::getGoodsId).distinct().toList();
|
||||
|
||||
|
||||
QueryWrapperX<OrderDO> queryWrapperX = new QueryWrapperX<>();
|
||||
@@ -849,9 +730,7 @@ public class PlanServiceImpl implements PlanService {
|
||||
.eq("o.organ_id",getUserOrganId())
|
||||
.eq("o.deleted",false)
|
||||
.in("o.status",statusList)
|
||||
// .eq("og.organ_id",getUserOrganId())
|
||||
// .eq("og.plan_id",0)
|
||||
// .eq("og.deleted",false)
|
||||
|
||||
.inIfPresent("og.order_id", pageReqVO.getOrderIds())
|
||||
.inIfPresent(FIELD_OG_ID, pageReqVO.getIds())
|
||||
// todo 修改排单数据筛选,目前只解决了非混单的情况,混单情况待解决
|
||||
@@ -901,11 +780,11 @@ public class PlanServiceImpl implements PlanService {
|
||||
List<OrderGoodsResp> goodsResp = orderMapper.selectGoodsListByGoodsId(queryWrapperX);
|
||||
|
||||
|
||||
for (OrderGoodsResp record : records) {
|
||||
for (OrderGoodsResp vosRecords : records) {
|
||||
|
||||
List<OrderIds> orderIdsList = new ArrayList<>();
|
||||
|
||||
List<List<OrderIds>> list = goodsResp.stream().filter(f -> f.getGoodsId().equals(record.getGoodsId())).map(OrderGoodsResp::getOrderIds).toList();
|
||||
List<List<OrderIds>> list = goodsResp.stream().filter(f -> f.getGoodsId().equals(vosRecords.getGoodsId())).map(OrderGoodsResp::getOrderIds).toList();
|
||||
|
||||
if(!list.isEmpty()){
|
||||
|
||||
@@ -913,7 +792,7 @@ public class PlanServiceImpl implements PlanService {
|
||||
|
||||
}
|
||||
|
||||
record.setOrderIds(orderIdsList);
|
||||
vosRecords.setOrderIds(orderIdsList);
|
||||
}
|
||||
|
||||
|
||||
@@ -986,8 +865,6 @@ public class PlanServiceImpl implements PlanService {
|
||||
|
||||
PageDTO<PlateResList> page = new PageDTO<>(vo.getPageNo(), vo.getPageSize());
|
||||
|
||||
// IPage<PlateResList> pageResult = plateMapper.selectPlateByPlanId(page, queryWrapperX);
|
||||
|
||||
IPage<PlateResList> pageResult = goodsMapper.selectPlanGoodsListByPlanId(page, queryWrapperX);
|
||||
|
||||
if (CollUtil.isEmpty(pageResult.getRecords())) {
|
||||
@@ -1069,7 +946,7 @@ public class PlanServiceImpl implements PlanService {
|
||||
List<PlateResList> plateResLists = goodsMapper.selectPlateListByPlanId(planIds, getUserOrganId());
|
||||
|
||||
if(plateResLists.isEmpty()){
|
||||
return null;
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
Set<Long> bodyIds = plateResLists.stream().map(PlateResList::getBodyId).collect(Collectors.toSet());
|
||||
@@ -1131,7 +1008,7 @@ public class PlanServiceImpl implements PlanService {
|
||||
SearchResponse<OptimizeBoardModelDO> search = elasticsearchClient.search(builder.build(), OptimizeBoardModelDO.class);
|
||||
List<Hit<OptimizeBoardModelDO>> hits = search.hits().hits();
|
||||
if (CollUtil.isNotEmpty(hits)) {
|
||||
return hits.stream().map(Hit::source).collect(Collectors.toList());
|
||||
return hits.stream().map(Hit::source).toList();
|
||||
}
|
||||
return new ArrayList<>();
|
||||
} catch (Exception e) {
|
||||
@@ -1169,9 +1046,9 @@ public class PlanServiceImpl implements PlanService {
|
||||
|
||||
List<PlanDO> planDOS = planMapper.selectBatchIds(ids);
|
||||
|
||||
for (PlanDO planDO : planDOS) {
|
||||
AssertUtils.notEmpty(planDOS,PLAN_NOT_EXISTS);
|
||||
|
||||
AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
|
||||
for (PlanDO planDO : planDOS) {
|
||||
|
||||
if ( planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus()) ) {
|
||||
throw exception(PLAN_NOT_ALLOW_DELETE,planDO.getId());
|
||||
@@ -1182,4 +1059,63 @@ public class PlanServiceImpl implements PlanService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// 机台信息
|
||||
private String getMachineName(Long machineId, List<CuttingRespDTO> machines) {
|
||||
return machines.stream()
|
||||
.filter(f -> Objects.equals(f.getId(), machineId))
|
||||
.map(CuttingRespDTO::getName)
|
||||
.findAny()
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
// 板材信息列表
|
||||
private List<PlateInfoVO> getPlateInfoList(Long planId, List<PlateInfoVO> infoVOList) {
|
||||
return infoVOList.stream()
|
||||
.filter(f -> Objects.equals(f.getPlanId(), planId))
|
||||
.toList();
|
||||
}
|
||||
|
||||
// 小板总数量
|
||||
private long getPlateNum(Long planId, List<PlateInfoVO> infoVOList) {
|
||||
return infoVOList.stream()
|
||||
.filter(f -> Objects.equals(f.getPlanId(), planId))
|
||||
.mapToLong(PlateInfoVO::getCount)
|
||||
.sum();
|
||||
}
|
||||
|
||||
// 大板优化数量
|
||||
private long getOptimizeGoodsCount(Long planId, List<OptimizeBoardModelDO> optimizeBoardModelDos) {
|
||||
return optimizeBoardModelDos.stream()
|
||||
.filter(f -> Objects.equals(f.getPlanId(), planId))
|
||||
.mapToLong(OptimizeBoardModelDO::getBoardCount)
|
||||
.sum();
|
||||
}
|
||||
|
||||
// 大板开料数
|
||||
private long getCutGoodsCount(Long planId, List<OptimizeBoardModelDO> optimizeBoardModelDos) {
|
||||
return optimizeBoardModelDos.stream()
|
||||
.filter(f -> Objects.equals(f.getPlanId(), planId))
|
||||
.mapToLong(m -> m.getCutedBoardInfo() == null ? 0 : m.getCutedBoardInfo().getCutedBoardNumber())
|
||||
.sum();
|
||||
}
|
||||
|
||||
// 小板优化数量
|
||||
private long getOptimizePlateCount(Long planId, List<OptimizeBoardModelDO> optimizeBoardModelDos) {
|
||||
return optimizeBoardModelDos.stream()
|
||||
.filter(f -> Objects.equals(f.getPlanId(), planId))
|
||||
.mapToLong(m -> m.getPlaceBlockNumber() == null ? 0 : m.getPlaceBlockNumber())
|
||||
.sum();
|
||||
}
|
||||
|
||||
// 生产单信息
|
||||
private List<PlanOrderRespVO> getOrderList(Long planId, List<PlanOrderRespVO> planOrderRespVos) {
|
||||
return planOrderRespVos.stream()
|
||||
.filter(f -> Objects.equals(f.getPlanId(), planId))
|
||||
.toList();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
-8
@@ -337,14 +337,6 @@ public class PlateServiceImpl implements PlateService {
|
||||
public List<String> createNewPlate(OptimizationSavePlateReqVO reqVO) {
|
||||
|
||||
|
||||
// AssertUtils.notEmpty(reqVO.getRoomId(),ORDER_ROOM_ERROR);
|
||||
// AssertUtils.notEmpty(reqVO.getBodyId(),ORDER_BODY_ERROR);
|
||||
// AssertUtils.notEmpty(reqVO.getOrderId(),ORDER_ERROR);
|
||||
|
||||
// if(reqVO.getMultiple() < 1 ){
|
||||
// throw exception(PLATE_MULTIPLE_ERROR);
|
||||
// }
|
||||
|
||||
GoodsDO goodsDO = goodsMapper.selectGoodsId(reqVO.getOrderId(), reqVO.getGoodsId(), getUserOrganId());
|
||||
|
||||
AssertUtils.notEmpty(goodsDO,ORDER_PLAN_ERROR);
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@
|
||||
|
||||
<update id="updateDeletedById">
|
||||
UPDATE order_goods
|
||||
SET deleted = #{deleted},plan_id = 0
|
||||
SET deleted = true,plan_id = 0
|
||||
WHERE organ_id = #{organId}
|
||||
and order_id = #{orderId}
|
||||
and id IN
|
||||
|
||||
+32
@@ -77,7 +77,39 @@
|
||||
</foreach>
|
||||
AND
|
||||
organ_id = #{organId}
|
||||
and order_id = #{orderId}
|
||||
</update>
|
||||
|
||||
|
||||
<update id="updateDeletedParts">
|
||||
UPDATE order_parts
|
||||
SET deleted = true
|
||||
WHERE
|
||||
organ_id = #{organId}
|
||||
and order_id = #{orderId}
|
||||
and id IN
|
||||
<foreach collection="partsIds" item="partsId" open="(" separator="," close=")">
|
||||
#{partsId}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
|
||||
<update id="updateNoDeletedParts">
|
||||
UPDATE order_parts
|
||||
SET deleted = false
|
||||
WHERE
|
||||
organ_id = #{organId}
|
||||
and order_id = #{orderId}
|
||||
and id IN
|
||||
<foreach collection="partsIds" item="partsId" open="(" separator="," close=")">
|
||||
#{partsId}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<delete id="deletedById">
|
||||
DELETE FROM order_parts
|
||||
WHERE id IN
|
||||
|
||||
+61
-3
@@ -291,6 +291,31 @@
|
||||
</update>
|
||||
|
||||
|
||||
<update id="updateDeletedPlate">
|
||||
UPDATE order_plate
|
||||
SET deleted = true,is_optimized = false
|
||||
WHERE organ_id = #{organId}
|
||||
and order_id = #{orderId}
|
||||
and id IN
|
||||
<foreach item="plateId" collection="plateIds" open="(" separator="," close=")">
|
||||
#{plateId}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
|
||||
<update id="updateNoDeletedPlate">
|
||||
UPDATE order_plate
|
||||
SET deleted = false,is_optimized = false
|
||||
WHERE organ_id = #{organId}
|
||||
and order_id = #{orderId}
|
||||
and id IN
|
||||
<foreach item="plateId" collection="plateIds" open="(" separator="," close=")">
|
||||
#{plateId}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
|
||||
|
||||
<delete id="deletedById">
|
||||
DELETE FROM order_plate
|
||||
WHERE id IN
|
||||
@@ -426,17 +451,50 @@
|
||||
|
||||
SELECT distinct p.*
|
||||
FROM order_plate p
|
||||
LEFT JOIN order_item i ON p.id = i.plate_id
|
||||
LEFT JOIN order_item i ON p.organ_id = i.organ_id and p.order_id = i.order_id and p.id = i.plate_id
|
||||
WHERE i.organ_id = #{organId} AND i.order_id = #{orderId} AND p.deleted = #{deleted}
|
||||
<if test="bodyIds != null and bodyIds.size() > 0">
|
||||
AND i.body_id IN
|
||||
<foreach item="roomIdItem" collection="bodyIds" open="(" separator="," close=")">
|
||||
#{roomIdItem}
|
||||
</foreach>
|
||||
</if>
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectNoDeletedPlate"
|
||||
resultType="com.cf.imes.module.executor.dal.dataobject.plate.PlateDO" parameterType="java.lang.Long">
|
||||
|
||||
SELECT distinct p.*
|
||||
FROM order_plate p
|
||||
LEFT JOIN order_item i ON p.organ_id = i.organ_id and p.order_id = i.order_id and p.id = i.plate_id
|
||||
WHERE i.organ_id = #{organId}
|
||||
AND i.order_id = #{orderId}
|
||||
AND i.body_id IN
|
||||
<foreach item="roomIdItem" collection="bodyIds" open="(" separator="," close=")">
|
||||
#{roomIdItem}
|
||||
</foreach>
|
||||
AND p.deleted = false
|
||||
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectDeletedPlate"
|
||||
resultType="com.cf.imes.module.executor.dal.dataobject.plate.PlateDO" parameterType="java.lang.Long">
|
||||
|
||||
SELECT distinct p.*
|
||||
FROM order_plate p
|
||||
LEFT JOIN order_item i ON p.organ_id = i.organ_id and p.order_id = i.order_id and p.id = i.plate_id
|
||||
WHERE i.organ_id = #{organId}
|
||||
AND i.order_id = #{orderId}
|
||||
AND i.body_id IN
|
||||
<foreach item="roomIdItem" collection="bodyIds" open="(" separator="," close=")">
|
||||
#{roomIdItem}
|
||||
</foreach>
|
||||
AND p.deleted = true
|
||||
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
|
||||
<select id="selectPlanPlateListDataSource" resultType="java.util.Map">
|
||||
|
||||
|
||||
+2
@@ -3,12 +3,14 @@ package com.cf.imes.module.manage;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
import org.springframework.context.annotation.EnableAspectJAutoProxy;
|
||||
import org.springframework.scheduling.annotation.EnableAsync;
|
||||
|
||||
/**
|
||||
* @author there
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@EnableAspectJAutoProxy(exposeProxy = true) // add config
|
||||
@EnableFeignClients
|
||||
@EnableAsync
|
||||
public class ManageServerApplication {
|
||||
|
||||
+1
@@ -315,6 +315,7 @@ public class ErrorCodeConstants {
|
||||
public static final ErrorCode ORDER_PACK_ERROR = new ErrorCode(1_002_041_018, "当前生产单信息有误,请重新选择包裹");
|
||||
public static final ErrorCode ORDER_PACK_DATA_ERROR = new ErrorCode(1_002_041_019, "当前包裹信息有误,请重新选择包裹");
|
||||
public static final ErrorCode PLAN_BODY_DATA_ERROR = new ErrorCode(1_002_041_019, "当前排单的生产单对应的柜体数据异常,请查看柜体数据或联系客服");
|
||||
public static final ErrorCode CREATE_PLAN_DATA_ERROR = new ErrorCode(1_002_041_020, "排单优化数据异常,请重新进行优化或者删除排单然后重新创建排单");
|
||||
|
||||
|
||||
|
||||
|
||||
+20
-17
@@ -93,6 +93,10 @@ public class MachineServiceImpl implements MachineService {
|
||||
@Resource
|
||||
private OrganMapper organMapper;
|
||||
|
||||
private static final String FIELD_ADVANCED_CONFIGS_REF = "advancedConfigsRef";
|
||||
private static final String FIELD_AUTO_LABEL_MODEL = "autoLabelModel";
|
||||
private static final String FIELD_CUTTING_MODULE_REF = "cuttingModuleRef";
|
||||
private static final String FIELD_DRILL_MODEL = "drillModel";
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@@ -180,18 +184,18 @@ public class MachineServiceImpl implements MachineService {
|
||||
|
||||
JsonNode cuttingSetting = JsonUtils.parseTree(unzipMachineSetting);
|
||||
|
||||
JsonNode advancedConfigsRef = cuttingSetting.get("advancedConfigsRef");
|
||||
JsonNode advancedConfigsRef = cuttingSetting.get(FIELD_ADVANCED_CONFIGS_REF);
|
||||
|
||||
|
||||
boolean isAutoLabelEnabled = advancedConfigsRef.get("isAutoLabelEnabled") != null && advancedConfigsRef.get("isAutoLabelEnabled").asBoolean();
|
||||
|
||||
|
||||
if (isAutoLabelEnabled && advancedConfigsRef.has("autoLabelModel")) {
|
||||
Integer autoLabelModelId = advancedConfigsRef.get("autoLabelModel").asInt();
|
||||
if (isAutoLabelEnabled && advancedConfigsRef.has(FIELD_AUTO_LABEL_MODEL)) {
|
||||
Integer autoLabelModelId = advancedConfigsRef.get(FIELD_AUTO_LABEL_MODEL).asInt();
|
||||
|
||||
MachineDO newMachine;
|
||||
|
||||
if (isMachine) {
|
||||
if (Boolean.TRUE.equals(isMachine)) {
|
||||
|
||||
MachineDO machine = machineMapper.selectById(autoLabelModelId);
|
||||
if (machine != null) {
|
||||
@@ -212,8 +216,8 @@ public class MachineServiceImpl implements MachineService {
|
||||
Map map = mapper.readValue(unzipMachineSetting, Map.class);
|
||||
|
||||
// 修改值
|
||||
Map<String, Object> advancedConfigs = (Map<String, Object>) map.get("advancedConfigsRef");
|
||||
advancedConfigs.put("autoLabelModel", newMachine.getId());
|
||||
Map<String, Object> advancedConfigs = (Map<String, Object>) map.get(FIELD_ADVANCED_CONFIGS_REF);
|
||||
advancedConfigs.put(FIELD_AUTO_LABEL_MODEL, newMachine.getId());
|
||||
|
||||
// 将 Map 转换为 JSON 字符串
|
||||
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map);
|
||||
@@ -241,8 +245,8 @@ public class MachineServiceImpl implements MachineService {
|
||||
Map map = mapper.readValue(unzipMachineSetting, Map.class);
|
||||
|
||||
// 修改值
|
||||
Map<String, Object> advancedConfigs = (Map<String, Object>) map.get("advancedConfigsRef");
|
||||
advancedConfigs.put("autoLabelModel", newMachine.getId());
|
||||
Map<String, Object> advancedConfigs = (Map<String, Object>) map.get(FIELD_ADVANCED_CONFIGS_REF);
|
||||
advancedConfigs.put(FIELD_AUTO_LABEL_MODEL, newMachine.getId());
|
||||
|
||||
// 将 Map 转换为 JSON 字符串
|
||||
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map);
|
||||
@@ -261,17 +265,17 @@ public class MachineServiceImpl implements MachineService {
|
||||
|
||||
JsonNode drillSetting = JsonUtils.parseTree(unzipMachineSetting);
|
||||
|
||||
JsonNode cuttingModuleRef = drillSetting.get("cuttingModuleRef");
|
||||
JsonNode cuttingModuleRef = drillSetting.get(FIELD_CUTTING_MODULE_REF);
|
||||
|
||||
|
||||
boolean isDrillEnabled = cuttingModuleRef.get("isDrillEnabled") != null && cuttingModuleRef.get("isDrillEnabled").asBoolean();
|
||||
|
||||
if (isDrillEnabled && cuttingModuleRef.has("drillModel")) {
|
||||
Integer drillModelId = cuttingModuleRef.get("drillModel").asInt();
|
||||
if (isDrillEnabled && cuttingModuleRef.has(FIELD_DRILL_MODEL)) {
|
||||
Integer drillModelId = cuttingModuleRef.get(FIELD_DRILL_MODEL).asInt();
|
||||
|
||||
MachineDO newMachine;
|
||||
|
||||
if (isMachine) {
|
||||
if (Boolean.TRUE.equals(isMachine)) {
|
||||
|
||||
MachineDO machine = machineMapper.selectById(drillModelId);
|
||||
if (machine != null) {
|
||||
@@ -292,8 +296,8 @@ public class MachineServiceImpl implements MachineService {
|
||||
Map map = mapper.readValue(unzipMachineSetting, Map.class);
|
||||
|
||||
// 修改值
|
||||
Map<String, Object> advancedConfigs = (Map<String, Object>) map.get("cuttingModuleRef");
|
||||
advancedConfigs.put("drillModel", newMachine.getId());
|
||||
Map<String, Object> advancedConfigs = (Map<String, Object>) map.get(FIELD_CUTTING_MODULE_REF);
|
||||
advancedConfigs.put(FIELD_DRILL_MODEL, newMachine.getId());
|
||||
|
||||
// 将 Map 转换为 JSON 字符串并打印输出
|
||||
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map);
|
||||
@@ -322,8 +326,8 @@ public class MachineServiceImpl implements MachineService {
|
||||
Map map = mapper.readValue(unzipMachineSetting, Map.class);
|
||||
|
||||
// 修改值
|
||||
Map<String, Object> advancedConfigs = (Map<String, Object>) map.get("cuttingModuleRef");
|
||||
advancedConfigs.put("drillModel", newMachine.getId());
|
||||
Map<String, Object> advancedConfigs = (Map<String, Object>) map.get(FIELD_CUTTING_MODULE_REF);
|
||||
advancedConfigs.put(FIELD_DRILL_MODEL, newMachine.getId());
|
||||
|
||||
// 将 Map 转换为 JSON 字符串并打印输出
|
||||
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map);
|
||||
@@ -341,7 +345,6 @@ public class MachineServiceImpl implements MachineService {
|
||||
validateExists(updateReqVO.getId(), updateReqVO.getName(), updateReqVO.getMachineType(), updateReqVO.getId());
|
||||
// 更新
|
||||
MachineDO updateObj = MachineConvert.convert(updateReqVO);
|
||||
//MachineDO updateObj = BeanUtils.toBean(updateReqVO, MachineDO.class);
|
||||
|
||||
|
||||
// 判断传入的机台配置是否存在,如果存在,压缩数据后更新
|
||||
|
||||
+8
-6
@@ -68,6 +68,8 @@ public class MachineTemplateServiceImpl implements MachineTemplateService {
|
||||
@Resource
|
||||
private OrganMapper organMapper;
|
||||
|
||||
private static final String FIELD_AUTO_LABEL_MODEL = "autoLabelModel";
|
||||
private static final String FIELD_DRILL_MODEL = "drillModel";
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@@ -514,9 +516,9 @@ public class MachineTemplateServiceImpl implements MachineTemplateService {
|
||||
|
||||
boolean isAutoLabelEnabled = advancedConfigsRef.get("isAutoLabelEnabled") != null && advancedConfigsRef.get("isAutoLabelEnabled").asBoolean();
|
||||
|
||||
if (isAutoLabelEnabled && advancedConfigsRef.get("autoLabelBrand") != null && advancedConfigsRef.get("autoLabelModel") != null) {
|
||||
if (isAutoLabelEnabled && advancedConfigsRef.get("autoLabelBrand") != null && advancedConfigsRef.get(FIELD_AUTO_LABEL_MODEL) != null) {
|
||||
|
||||
Integer autoLabelModelId = advancedConfigsRef.get("autoLabelModel").asInt();
|
||||
Integer autoLabelModelId = advancedConfigsRef.get(FIELD_AUTO_LABEL_MODEL).asInt();
|
||||
|
||||
try {
|
||||
|
||||
@@ -539,7 +541,7 @@ public class MachineTemplateServiceImpl implements MachineTemplateService {
|
||||
|
||||
// 修改值
|
||||
Map<String, Object> advancedConfigs = (Map<String, Object>) map.get("advancedConfigsRef");
|
||||
advancedConfigs.put("autoLabelModel", labelingMachineDO.getId());
|
||||
advancedConfigs.put(FIELD_AUTO_LABEL_MODEL, labelingMachineDO.getId());
|
||||
|
||||
// 将 Map 转换为 JSON 字符串
|
||||
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map);
|
||||
@@ -565,9 +567,9 @@ public class MachineTemplateServiceImpl implements MachineTemplateService {
|
||||
|
||||
boolean isDrillEnabled = cuttingModuleRef.get("isDrillEnabled") != null && cuttingModuleRef.get("isDrillEnabled").asBoolean();
|
||||
|
||||
if (isDrillEnabled && cuttingModuleRef.get("drillBrand") != null && cuttingModuleRef.get("drillModel") != null) {
|
||||
if (isDrillEnabled && cuttingModuleRef.get("drillBrand") != null && cuttingModuleRef.get(FIELD_DRILL_MODEL) != null) {
|
||||
|
||||
Integer drillModelId = cuttingModuleRef.get("drillModel").asInt();
|
||||
Integer drillModelId = cuttingModuleRef.get(FIELD_DRILL_MODEL).asInt();
|
||||
|
||||
try {
|
||||
|
||||
@@ -590,7 +592,7 @@ public class MachineTemplateServiceImpl implements MachineTemplateService {
|
||||
|
||||
// 修改值
|
||||
Map<String, Object> advancedConfigs = (Map<String, Object>) map.get("cuttingModuleRef");
|
||||
advancedConfigs.put("drillModel", drillMachineDO.getId());
|
||||
advancedConfigs.put(FIELD_DRILL_MODEL, drillMachineDO.getId());
|
||||
|
||||
// 将 Map 转换为 JSON 字符串
|
||||
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map);
|
||||
|
||||
Reference in New Issue
Block a user