Merge branch 'main' of ssh://192.168.1.205:9922/cf_devdept2/cf_imes_server

This commit is contained in:
lym
2024-09-24 17:54:16 +08:00
77 changed files with 2693 additions and 569 deletions
@@ -1,81 +0,0 @@
package com.cf.imes.module.executor.api.goods.dto;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class GoodsDTO {
/**
* 主键
*/
private Long id;
// 组织 ID
private Long organId;
/**
* 生产单号
*/
private Long orderId;
/**
* 设计端商品ID
*/
private String rawGoodsId;
/**
* 商品 ID
*/
private String goodsId;
/**
* 商品名称
*/
private String goodsName;
/**
* 材质:颗粒板、欧松板、多层板、生态板、禾香板、密度板、实木、铝蜂窝板、铝塑板
*/
private String material;
/**
* 纹路 0 正纹 1 可翻转 2 反纹
*/
private Boolean texture;
/**
* 颜色
*/
private String color;
/**
* 宽度
*/
private BigDecimal width;
/**
* 高度
*/
private BigDecimal height;
/**
* 厚度
*/
private BigDecimal thickness;
/**
* 价格
*/
private BigDecimal price;
/**
* 品牌
*/
private String brand;
/**
* 规格
*/
private String spec;
/**
* 备注
*/
private String remark;
/**
* 是否删除
*/
private Boolean deleted;
}
@@ -10,6 +10,8 @@ import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@FeignClient(name = ApiConstants.NAME) // TODO 晨丰:fallbackFactory =
@Tag(name = "RPC 服务 - 多组织")
public interface OrderPlanApi {
@@ -22,4 +24,102 @@ public interface OrderPlanApi {
@Parameter(name = "machineId", description = "机台ID", required = true, example = "1024")
CommonResult<Boolean> getOrderPlan(@RequestParam("machineId") Long id);
/*
* 机台数据源数据查询
*
* */
@GetMapping(PREFIX +"/apiDataGetPlan")
@Operation(summary = "获取当前排单对应的生产单信息")
@Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
String apiDataGetPlan(@RequestParam("planId") Long planId,@RequestParam("filed") String filed);
@GetMapping(PREFIX +"/apiGetGoods")
@Operation(summary = "查询当前排单对应的大板信息")
@Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
String getGoods(@RequestParam("planId") Long planId,@RequestParam("filed") String filed);
@GetMapping(PREFIX +"/apiGetOrders")
@Operation(summary = "查询当前排单对应的业务员和拆单员信息")
// @Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
List<String> apiGetOrders(@RequestParam("planId") Long planId ,@RequestParam("isSale") Boolean isSale);
@GetMapping(PREFIX +"/apiGetPlan")
@Operation(summary = "查询当前排单的信息")
@Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
String getPlan(@RequestParam("planId") Long planId,@RequestParam("filed") String filed);
@GetMapping(PREFIX +"/apiGetESPlan")
@Operation(summary = "查询ES中的排单优化生产信息")
@Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
String apiGetEsPlan(@RequestParam("planId") Long planId,@RequestParam("fields") List<String> fields);
@GetMapping(PREFIX +"/apiGetPlanRemainPlate")
@Operation(summary = "查询排单中的余料板信息")
@Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
String apiGetPlanRemainPlate(@RequestParam("planId") Long planId,@RequestParam("field") String field);
@GetMapping(PREFIX +"/apiGetPlanPlate")
@Operation(summary = "查询排单中的板材信息")
@Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
String apiGetPlanPlate(@RequestParam("planId") Long planId,@RequestParam("field") String field);
@GetMapping(PREFIX +"/apiGetESPlate")
@Operation(summary = "查询ES中的板材信息")
@Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
String apiGetEsPlate(@RequestParam("planId") Long planId,@RequestParam("fields") List<String> fields);
@GetMapping(PREFIX +"/apiGetPlanBodyOrRoom")
@Operation(summary = "查询排单中的板材房间信息")
@Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
String apiGetPlanBodyOrRoom(@RequestParam("planId") Long planId,@RequestParam("field") String field);
@GetMapping(PREFIX +"/apiGetPlanGroup")
@Operation(summary = "查询排单中的板材加工组信息")
@Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
String apiGetPlanGroup(@RequestParam("planId") Long planId,@RequestParam("field") String field);
@GetMapping(PREFIX +"/apiGetPlanParts")
@Operation(summary = "查询排单中的配件信息")
@Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
String apiGetPlanParts(@RequestParam("planId") Long planId,@RequestParam("field") String field);
@GetMapping(PREFIX +"/apiGetESParts")
@Operation(summary = "查询ES中的配件备注信息")
@Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
String apiGetEsParts(@RequestParam("planId") Long planId,@RequestParam("fields") List<String> fields);
}
@@ -173,6 +173,91 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<configuration>
<layout>ZIP</layout>
<includes>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-common</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-module-infra-api</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-module-prod-executor-api</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-module-report-api</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-module-system-api</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-banner</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-biz-data-permission</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-biz-dict</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-biz-error-code</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-biz-operatelog</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-biz-organ</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-elasticsearch</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-excel</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-file</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-monitor</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-mybatis</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-redis</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-rpc</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-security</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-web</artifactId>
</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
@@ -1,20 +1,57 @@
package com.cf.imes.module.executor.api.plan;
import cn.hutool.core.collection.CollectionUtil;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.FieldValue;
import co.elastic.clients.elasticsearch.core.SearchRequest;
import co.elastic.clients.elasticsearch.core.SearchResponse;
import co.elastic.clients.elasticsearch.core.search.Hit;
import com.alibaba.fastjson.JSON;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.util.json.JsonUtils;
import com.cf.imes.module.executor.api.plan.vo.OrderGroupRespVO;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRemark;
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
import com.cf.imes.module.executor.dal.dataobject.goods.OptimizeBoardModelDO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import com.cf.imes.module.executor.dal.dataobject.remainplaten.RemainPlateDO;
import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper;
import com.cf.imes.module.executor.dal.mysql.order.OrderMapper;
import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper;
import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper;
import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper;
import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper;
import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.executor.dal.mysql.remainplaten.RemainPlateMapper;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR;
import static com.cf.imes.framework.common.util.json.JsonUtils.toJsonString;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
@RestController // 提供 RESTful API 接口,给 Feign 调用
@Validated
@Slf4j
public class OrderPlanApiImpl implements OrderPlanApi{
@@ -22,6 +59,52 @@ public class OrderPlanApiImpl implements OrderPlanApi{
private PlanMapper planMapper;
@Resource
private GoodsMapper goodsMapper;
@Resource
private OrderMapper orderMapper;
@Resource
private RemainPlateMapper remainPlateMapper;
@Resource
private PlateMapper plateMapper;
@Resource
private OrderItemMapper orderItemMapper;
@Resource
private OrderBodyMapper orderBodyMapper;
@Resource
private OrderGroupMapper orderGroupMapper;
@Resource
private OrderPartsMapper orderPartsMapper;
@Resource
private ElasticsearchClient elasticsearchClient;
public static final String SEPARATE = "select";
public static final String ORDER_REMAIN_PLATE_MODEL = "imes_order_optimize_plate_model";
public static final String ORDER_PLATE_MODEL = "imes_order_plate_model";
public static final String ORDER_PARTS_REMARK_MODEL = "imes_order_parts_remark_model";
@Override
public CommonResult<Boolean> getOrderPlan(Long machineId) {
@@ -36,4 +119,487 @@ public class OrderPlanApiImpl implements OrderPlanApi{
}
/*
* 机台数据源数据查询
*
* */
@Override
public String apiDataGetPlan(Long planId,String filed) {
PlanDO planDOS = planMapper.selectById(planId);
List<Long> orderIds = JSON.parseArray(planDOS.getOrderNos()).toJavaList(Long.class);
return toJsonString(orderMapper.selectOrderDataSource(conversion(filed),orderIds,getUserOrganId()));
}
@Override
public String getGoods(Long planId,String filed) {
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 10);
List<String> goodsIds = optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getGoodsId).toList();
JsonNode jsonNode = JsonUtils.parseTree(JsonUtils.toJsonString(optimizeBoardModelDOS));
filed = filed.replace("place_block_number","");
String filed2 = "place_block_number".equals(filed) ? ",{placeBlockNumber:"+jsonNode.get("placeBlockNumber").asLong()+"}]" : "";
// String sql = " select from order_goods where organ_id = #{organId} and deleted = false";
//
// sql = sql.replace("#{organId}", getUserOrganId() + "");
List<GoodsDO> goodsDO = goodsMapper.selectPlanGoodsDataSource(conversion(filed),planId,getUserOrganId());
return "".equals(filed2) ? toJsonString(goodsDO) : toJsonString(goodsDO).replace("]", "") + filed2;
}
@Override
public List<String> apiGetOrders(Long planId,Boolean isSale) {
PlanDO planDOS = planMapper.selectById(planId);
List<Long> orderIds = JSON.parseArray(planDOS.getOrderNos()).toJavaList(Long.class);
return isSale ? orderMapper.selectBatchIds(orderIds).stream().map(OrderDO::getSalesman).distinct().toList()
: orderMapper.selectBatchIds(orderIds).stream().map(OrderDO::getCreator).distinct().toList();
}
@Override
public String getPlan(Long planId,String filed) {
// String sql = " select from order_plan where id =#{planId} and organ_id = #{organId} and deleted = false";
//
// sql = sql.replace("#{organId}", getUserOrganId() + "").replace("#{planId}", planId + "");
//
// String toInsert = filed.replaceAll("\\[|\\]", "");
// List<PlanDO> planDOS = planMapper.seleTestSQL(conversion(sql, filed));
List<PlanDO> planDOS = planMapper.selectPlanDataSource(conversion(filed),planId,getUserOrganId());
return toJsonString(planDOS);
}
@Override
public String apiGetEsPlan(Long planId, List<String> fields) {
List<String> esData = new ArrayList<>();
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 99);
for (OptimizeBoardModelDO optimizeBoardModelDO : optimizeBoardModelDOS) {
List<String> filedData = new ArrayList<>() ;
JsonNode jsonNode = JsonUtils.parseTree(JsonUtils.toJsonString(optimizeBoardModelDO));
for (String field : fields) {
filedData.add(field+":"+ (jsonNode.get(field) == null ?"" : jsonNode.get(field).asText()));
}
esData.add(filedData.toString());
}
return esData.toString();
}
@Override
public String apiGetPlanRemainPlate(Long planId, String field) {
// String sql = " select from order_remain_plate where organ_id = #{organId} and plan_id = #{planId} and deleted = false";
//
// sql = sql.replace("#{organId}", getUserOrganId() + "").replace("#{planId}", planId + "");
List<RemainPlateDO> remainPlateDOS = remainPlateMapper.selectPlanRemainDataSource(conversion(field),planId,getUserOrganId());
return toJsonString(remainPlateDOS);
}
@Override
public String apiGetPlanPlate(Long planId, String field) {
// List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 99);
//
//
// List<String> goodsIds = optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getGoodsId).toList();
//
//
// List<Long> orderIds = BeanUtils.toBean(optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getOrderId).toList(), Long.class);
//
//
// List<Long> goodsIdList = goodsMapper.selectListByGoodsIdList(goodsIds,orderIds, getUserOrganId())
// .stream().map(GoodsDO::getId).toList();
List<GoodsDO> goodsDOS = goodsMapper.selectPlanGoods(planId, getUserOrganId());
List<Long> goodsIds = goodsDOS.stream().map(GoodsDO::getId).distinct().toList();
List<Long> orderIds = goodsDOS.stream().map(GoodsDO::getOrderId).distinct().toList();
field = field
.replace("sculpt_num", "sum(front_model_count+back_model_count) as sculptNum" + "")
.replace("hole_num", "sum(unregular_point_count+front_hole_count+back_hole_count+side_hole_count) as holeNum" + "");
String field2 = "sculpt_num".equals(field) || "hole_num".equals(field) ? "group by " + conversion(field)
.replace("sum(front_model_count+back_model_count) as sculptNum", "")
.replace("sum(unregular_point_count+front_hole_count+back_hole_count+side_hole_count) as holeNum", "") : "";
field2 = field2.replaceFirst(",\\s*$", "");
List<PlateRespVO> plateDOS = plateMapper.selectPlanPlateListDataSource(conversion(field),field2,goodsIds,orderIds,getUserOrganId());
return toJsonString(plateDOS);
}
@Override
public String apiGetEsPlate(Long planId, List<String> fields) {
List<String> esData = new ArrayList<>();
// todo 目前只考虑非混单的情况,混单的情况待解决
List<Long> plateIds = getPlateIds(planId);
List<OrderModelDO> orderModelDOS = buildBoardByPlateIds(plateIds, ORDER_PLATE_MODEL, plateIds.size());
for (OrderModelDO orderModelDO : orderModelDOS) {
List<String> filedData = new ArrayList<>() ;
JsonNode jsonNode = JsonUtils.parseTree(JsonUtils.toJsonString(orderModelDO));
for (String field : fields) {
BigDecimal splitLength = BigDecimal.valueOf(jsonNode.get("splitLength").asDouble());
BigDecimal splitWidth = BigDecimal.valueOf(jsonNode.get("splitWidth").asDouble());
filedData.add( "splitArea".equals(field)? "splitArea:"+ splitLength.multiply(splitWidth) : field+":"+jsonNode.get(field).asText() );
// filedData.add(field+":"+jsonNode.get(field).asText());
}
esData.add(filedData.toString());
}
return esData.toString();
}
@Override
public String apiGetPlanBodyOrRoom(Long planId, String field) {
// List<Long> plateIds = getPlateIds(planId);
//
//
// List<OrderItemDO> orderItemDOS = orderItemMapper.selectPlateIdList(plateIds, getUserOrganId());
//
// List<Long> bodyIds = orderItemDOS.stream().map(OrderItemDO::getBodyId).distinct().toList();
List<Long> bodyIds = goodsMapper.selectPlanBodyIds(planId, getUserOrganId());
List<OrderBodyDO> orderBodyDOS = orderBodyMapper.selectPlanBodyRoomDataSource(conversion(field), bodyIds, getUserOrganId());
return toJsonString(orderBodyDOS);
}
@Override
public String apiGetPlanGroup(Long planId, String field) {
// List<Long> plateIds = getPlateIds(planId);
//
//// List<Long> plateIds = Arrays.asList(1825367895442456579L, 1825367895308238851L, 1824334800400416772L);
//
// List<OrderItemDO> orderItemDOS = orderItemMapper.selectPlateIdList(plateIds, getUserOrganId());
//
// List<Long> groupIds = orderItemDOS.stream().map(OrderItemDO::getGroupId).distinct().toList();
List<Long> groupIds = goodsMapper.selectPlanGroupListDataSource(planId, getUserOrganId());
if(groupIds.isEmpty()){
return null;
}
field = field.replace("group_num", "count(id) as groupNum" + "");
String field2 = ("group by " + conversion(field).replace("count(id) as groupNum", "")).replaceFirst(",\\s*$", "");
List<OrderGroupRespVO> orderGroupDOS = orderGroupMapper.selectPlanGroupDataSource(conversion(field),field2, groupIds, getUserOrganId());
return toJsonString(orderGroupDOS);
}
@Override
public String apiGetPlanParts(Long planId, String field) {
// List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 10);
//
//
// String orderNos = optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getOrderId).toList().toString();
//
//
// List<Long> orderIds = JSON.parseArray(orderNos).toJavaList(Long.class);
List<Long> orderIds = goodsMapper.selectPlanGoods(planId, getUserOrganId()).stream().map(GoodsDO::getOrderId).distinct().toList();
List<Long> partIds = orderPartsMapper.selectPartIds(orderIds, getUserOrganId()).stream().map(OrderPartsDO::getId).toList();
String filed2 = "parts_num" .equals(field) ?
",{partsNum:"+orderItemMapper.selectPartsList(partIds,orderIds, getUserOrganId()).stream().mapToDouble(OrderItemDO::getNum).sum()+"}]" : "";
List<OrderPartsDO> orderPartsDOS = orderPartsMapper.selectPlanPartsDataSource(conversion(field), partIds, getUserOrganId());
return "".equals(filed2) ? toJsonString(orderPartsDOS) : toJsonString(orderPartsDOS).replace("]", "") + filed2;
}
@Override
public String apiGetEsParts(Long planId, List<String> fields) {
// List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 10);
//
//
// String orderNos = optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getOrderId).toList().toString();
//
//
// List<Long> orderIds = JSON.parseArray(orderNos).toJavaList(Long.class);
List<Long> orderIds = goodsMapper.selectPlanGoods(planId, getUserOrganId()).stream().map(GoodsDO::getOrderId).distinct().toList();
List<String> esData = new ArrayList<>();
List<OrderPartsRemark> orderPartsRemarks = buildOrderPartsByOrderId(orderIds, ORDER_PARTS_REMARK_MODEL, 999);
for (OrderPartsRemark orderPartsRemark : orderPartsRemarks) {
List<String> filedData = new ArrayList<>();
JsonNode jsonNode = JsonUtils.parseTree(JsonUtils.toJsonString(orderPartsRemark));
for (String field : fields) {
filedData.add(field+":" + (jsonNode.get(field) == null ? "" : jsonNode.get(field).asText()));
}
esData.add(filedData.toString());
}
return esData.toString();
}
// 字符串处理
private String conversion(String filed) {
// 去除字段中的 【 】
return filed.replaceAll("\\[|\\]", "");
// 使用正则表达式在单词后插入字符串
// return sql.replaceAll(SEPARATE + "(\\b)", SEPARATE + " " + toInsert);
}
// 根据排单ID获取对应的板材ID
private List<Long> getPlateIds(Long planId) {
// List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 10);
//
// List<String> goodsIds = optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getGoodsId).toList();
//
//
// List<Long> orderIds = BeanUtils.toBean(optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getOrderId).toList(), Long.class);
//
// List<Long> ids = goodsMapper.selectListByGoodsIdList(goodsIds, orderIds, getUserOrganId()).stream().map(GoodsDO::getId).toList();
//
// plateMapper.selectGoodsPlateList(ids, getUserOrganId()).stream().map(PlateDO::getId).toList();
return goodsMapper.selectPlanPlateList(planId, getUserOrganId());
}
private List<OrderPartsRemark> buildOrderPartsByOrderId(List<Long> orderIds, String index, Integer size) {
List<FieldValue> fieldValues = orderIds.stream().map(FieldValue::of).toList();
SearchRequest.Builder builder = new SearchRequest.Builder();
builder.index(index);
builder.size(size);
builder.query(q -> q.terms(b -> b.field("orderId").terms(e -> e.value(fieldValues))));
try {
SearchResponse<OrderPartsRemark> search = elasticsearchClient.search(builder.build(), OrderPartsRemark.class);
List<Hit<OrderPartsRemark>> hits = search.hits().hits();
if (CollectionUtil.isNotEmpty(hits)) {
return hits.stream().map(Hit::source).collect(Collectors.toList());
}
return new ArrayList<>();
} catch (IOException e) {
log.error(e.getMessage());
throw new ServiceException(INTERNAL_SERVER_ERROR);
}
}
private List<OptimizeBoardModelDO> buildBoardByPlanId(Long planId, String index, Integer size) {
SearchRequest.Builder builder = new SearchRequest.Builder();
builder.index(index);
builder.size(size);
builder.query(q -> q.term(b -> b.field("planId").value(planId)));
try {
SearchResponse<OptimizeBoardModelDO> search = elasticsearchClient.search(builder.build(), OptimizeBoardModelDO.class);
List<Hit<OptimizeBoardModelDO>> hits = search.hits().hits();
if (CollectionUtil.isNotEmpty(hits)) {
return hits.stream().map(Hit::source).collect(Collectors.toList());
}
return new ArrayList<>();
} catch (IOException e) {
log.error(e.getMessage());
throw new ServiceException(INTERNAL_SERVER_ERROR);
}
}
private List<OrderModelDO> buildBoardByPlateIds(Collection<Long> plateIds, String index, Integer size) {
List<FieldValue> fieldValues = plateIds.stream().map(FieldValue::of).toList();
SearchRequest.Builder builder = new SearchRequest.Builder();
builder.index(index);
builder.size(size);
builder.query(q -> q.terms(b -> b.field("plateId").terms(e -> e.value(fieldValues))));
try {
SearchResponse<OrderModelDO> search = elasticsearchClient.search(builder.build(), OrderModelDO.class);
List<Hit<OrderModelDO>> hits = search.hits().hits();
if (CollectionUtil.isNotEmpty(hits)) {
return hits.stream().map(Hit::source).collect(Collectors.toList());
}
return new ArrayList<>();
} catch (IOException e) {
log.error(e.getMessage());
throw new ServiceException(INTERNAL_SERVER_ERROR);
}
}
public static String toCamelCase(String fieldName) {
if (fieldName == null || fieldName.isEmpty()) {
return fieldName;
}
StringBuilder camelCase = new StringBuilder();
boolean nextIsUpperCase = false;
for (char c : fieldName.toCharArray()) {
if (c == '_' || c == '-') {
nextIsUpperCase = true;
} else {
if (nextIsUpperCase) {
camelCase.append(Character.toUpperCase(c));
nextIsUpperCase = false;
} else {
camelCase.append(c);
}
}
}
return camelCase.toString();
}
}
@@ -2,14 +2,20 @@ package com.cf.imes.module.executor.controller.admin.order;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
import com.cf.imes.module.executor.controller.admin.order.vo.order.*;
import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRespVO;
import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderRoomBodyRespVO;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.cf.imes.module.executor.enums.OrderDeletedEnum;
import com.cf.imes.module.executor.enums.OrderStatusEnum;
import com.cf.imes.module.executor.service.order.OrderService;
import com.cf.imes.module.executor.util.ExcelWriterUtil;
import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataAchieve;
import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiTypeRealize;
@@ -18,33 +24,29 @@ import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderPl
import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.VO.OrderXmlVO;
import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.XMLUtil;
import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.XmlBuilder;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.*;
import javax.servlet.http.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.File;
import java.util.*;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.framework.common.pojo.CommonResult.success;
import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.*;
import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.IMPORT;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*;
@@ -461,7 +463,7 @@ public class OrderController {
@Operation(summary = "删除柜体")
@PreAuthorize("@ss.hasPermission('production:manager-list:deleteCabinet')")
public CommonResult<Boolean> deleteBody(@Valid @RequestBody OrderModuleParameterRespVO orderModuleParameterRespVO) {
orderService.updateBodyDeletedByOrderId(orderModuleParameterRespVO.getOrderId(), orderModuleParameterRespVO.getRoomIds(),
orderService.updateDeleteBody(orderModuleParameterRespVO.getOrderId(), orderModuleParameterRespVO.getRoomIds(),
orderModuleParameterRespVO.getBodyId(), OrderDeletedEnum.DELETED.getStatus());
return success(true);
}
@@ -470,7 +472,7 @@ public class OrderController {
@Operation(summary = "还原柜体")
@PreAuthorize("@ss.hasPermission('production:manager-list:restoreCabinet')")
public CommonResult<Boolean> restoreBody(@Valid @RequestBody OrderModuleParameterRespVO orderModuleParameterRespVO) {
orderService.updateBodyDeletedByOrderId(orderModuleParameterRespVO.getOrderId(), orderModuleParameterRespVO.getRoomIds(),
orderService.updateRestoreBody(orderModuleParameterRespVO.getOrderId(), orderModuleParameterRespVO.getRoomIds(),
orderModuleParameterRespVO.getBodyId(), OrderDeletedEnum.NOT_DELETED.getStatus());
return success(true);
}
@@ -0,0 +1,28 @@
package com.cf.imes.module.executor.controller.admin.order.vo.order;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
/**
* @author Administrator
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
public class OrderGoodsIds {
@Schema(description = "大板的实际ID")
private String goodsId;
@Schema(description = "大板的旧分类ID")
private Long oldId;
@Schema(description = "大板的新分类ID")
private Long id;
}
@@ -110,6 +110,8 @@ public class PlanController {
return success(planService.getOrderPage(pageReqVO));
}
// 目前因为这个接口没有使用,所以这个接口里代码没有进行更改
@GetMapping("getNotPlanOrderPlateList")
@Operation(summary = "获取未排单的板材分页列表")
@PreAuthorize("@ss.hasPermission('placeorder:query')")
@@ -135,9 +137,9 @@ public class PlanController {
}
@GetMapping("getNotPlanGoodsListPageByOrderId")
@Operation(summary = "根据生产单id获取未排单的商品分页列表")
@PreAuthorize("@ss.hasPermission('executor:plan:query')")
// @GetMapping("getNotPlanGoodsListPageByOrderId")
// @Operation(summary = "根据生产单id获取未排单的商品分页列表")
// @PreAuthorize("@ss.hasPermission('executor:plan:query')")
public CommonResult<PageResult<PlanGoodsVO>> getNotPlanGoodsListPageByOrderId(@Valid NotPlanGoodsListPageVO pageVO) {
return success(planService.getNotPlanGoodsListPageByOrderId(pageVO));
}
@@ -0,0 +1,51 @@
package com.cf.imes.module.executor.dal.dataobject.pack;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
@TableName("order_package")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderPackageDO extends BaseDO {
// 包裹ID
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
// 生产单号
private Long orderId;
// 包裹编号
private String packageNo;
// 包裹类型,-1未定义,0板材,1配件,2其他配件
private Integer type;
// 包裹名
private String name;
// 包裹状态,0未封包,1已封包,2已入库,3已出库
private Integer status;
// 备注
private String remark;
}
@@ -0,0 +1,33 @@
package com.cf.imes.module.executor.dal.dataobject.pack;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
@TableName("order_prepackaged")
@Data
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderPrepackagedDO {
@TableId
// 生产单号-主键
private Long orderId;
// 预打包优化信息
private String result;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
}
@@ -86,6 +86,7 @@ public interface GoodsMapper extends BaseMapperX<GoodsDO> {
return selectList(new LambdaQueryWrapperX<GoodsDO>()
.eq(GoodsDO::getOrganId, organId)
.eq(GoodsDO::getDeleted, false)
.eq(GoodsDO::getPlanId ,0)
.eq(GoodsDO::getGoodsId, goodsId));
}
@@ -117,7 +118,7 @@ public interface GoodsMapper extends BaseMapperX<GoodsDO> {
}
List<GoodsDO> seleTestSQL(@Param("filed") String filed,@Param("goodsIds") List<String> goodsIds ,@Param("organId") Long organId);
List<GoodsDO> selectPlanGoodsDataSource(@Param("filed") String filed,@Param("planId") Long planId ,@Param("organId") Long organId);
default GoodsDO selectGoodsId(Long orderId, String goodsId, Long organId) {
@@ -199,4 +200,25 @@ public interface GoodsMapper extends BaseMapperX<GoodsDO> {
List<Long> selectPlanOrderList(@Param("orderId") Long orderId,@Param("roomIds") Set<Long> roomIds, @Param("bodyId") Long bodyId,@Param("organId") Long organId);
List<Long> selectPlanPlateList(@Param("planId") Long planId,@Param("organId") Long organId);
List<Long> selectPlanBodyIds(@Param("planId") Long planId,@Param("organId") Long organId);
List<Long> selectPlanGroupListDataSource(@Param("planId") Long planId,@Param("organId") Long organId);
default List<GoodsDO> selectGoodsListByStatus(Long orderId, List<Long> goodsIds, Long organId) {
return selectList(new LambdaQueryWrapperX<GoodsDO>()
.eq(GoodsDO::getOrganId, organId)
.eq(GoodsDO::getDeleted, true)
.eqIfPresent(GoodsDO::getOrderId,orderId)
.inIfPresent(GoodsDO::getId,goodsIds));
}
List<GoodsDO> selectNoPlanGoodsList(@Param("orderId") Long orderId,@Param("goodsIds") List<Long> goodsIds,@Param("organId") Long organId);
}
@@ -227,7 +227,7 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
List<OrderDO> selectTestSQL(@Param("filed") String filed,@Param("orderIds") List<Long> orderIds,@Param("organId") Long organId);
List<OrderDO> selectOrderDataSource(@Param("filed") String filed,@Param("orderIds") List<Long> orderIds,@Param("organId") Long organId);
@@ -127,7 +127,7 @@ public interface OrderBodyMapper extends BaseMapperX<OrderBodyDO> {
}
List<OrderBodyDO> selectTestSQL(@Param("filed") String filed,@Param("bodyIds") List<Long> bodyIds,@Param("organId") Long organId);
List<OrderBodyDO> selectPlanBodyRoomDataSource(@Param("filed") String filed,@Param("bodyIds") List<Long> bodyIds,@Param("organId") Long organId);
@@ -108,6 +108,6 @@ public interface OrderGroupMapper extends BaseMapperX<OrderGroupDO> {
}
List<OrderGroupRespVO> selectTestSQL(@Param("filed") String filed, @Param("field2") String field2 ,@Param("groupIds") List<Long> groupIds, @Param("organId") Long organId);
List<OrderGroupRespVO> selectPlanGroupDataSource(@Param("filed") String filed, @Param("field2") String field2 ,@Param("groupIds") List<Long> groupIds, @Param("organId") Long organId);
}
@@ -5,7 +5,6 @@ import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPlatesDetailRespVO;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPackReqVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy;
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailReqVO;
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailRespVO;
@@ -59,8 +58,6 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
void deleteByPlateId(@Param("deletePlateIds") List<Long> deletePlateIds);
List<PrintOrderPackReqVO> selectPackList(@Param("ids") List<Long> ids, @Param("organId") Long organId);
default int deleteByBodyId(Long bodyId, Long organId) {
return delete(new LambdaQueryWrapperX<OrderItemDO>()
@@ -94,9 +91,10 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
default List<OrderItemDO> selectPartsList(List<Long> partIds, Long organId) {
default List<OrderItemDO> selectPartsList(List<Long> partIds,List<Long> orderIds, Long organId) {
return selectList(new LambdaQueryWrapperX<OrderItemDO>()
.eq(OrderItemDO::getOrganId,organId)
.inIfPresent(OrderItemDO::getOrderId,orderIds)
.inIfPresent(OrderItemDO::getPartsId, partIds)
.select(OrderItemDO::getNum));
@@ -105,6 +103,14 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
IPage<OrderRespVOCopy> selectTestNum(@Param("page") IPage page,@Param("organId") Long organId);
List<PrintOrderPackReqVO> selectOrderPlateList(@Param("orderId") Long orderId,@Param("organId") Long organId);
default List<OrderItemDO> selectPackId(List<Long> bodyIds, Long organId) {
return selectList(new LambdaQueryWrapperX<OrderItemDO>()
.eq(OrderItemDO::getOrganId,organId)
.inIfPresent(OrderItemDO::getBodyId,bodyIds)
.select(OrderItemDO::getPackageId));
}
void deletePackList(@Param("orderId") Long orderId,@Param("packIds") List<Long> packIds,@Param("organId") Long organId);
}
@@ -6,7 +6,6 @@ import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsPageReqVO;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.PartGoodsRespVO;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPartsRespVO;
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
@@ -87,7 +86,7 @@ public interface OrderPartsMapper extends BaseMapperX<OrderPartsDO> {
}
List<OrderPartsDO> selectTestSql(@Param("filed") String filed,@Param("partIds") List<Long> partIds,@Param("organId") Long organId);
List<OrderPartsDO> selectPlanPartsDataSource(@Param("filed") String filed,@Param("partIds") List<Long> partIds,@Param("organId") Long organId);
@@ -0,0 +1,27 @@
package com.cf.imes.module.executor.dal.mysql.pack;
import com.cf.imes.framework.common.enums.OrderPackageStatusEnum;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.executor.dal.dataobject.pack.OrderPackageDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface OrderPackageMapper extends BaseMapperX<OrderPackageDO> {
void updatePackList(@Param("orderId") Long orderId, @Param("packIds") List<Long> packIds, @Param("organId") Long organId);
default List<OrderPackageDO> selectPackStatusList(Long orderId,Long organId) {
return selectList(new LambdaQueryWrapperX<OrderPackageDO>()
.eq(OrderPackageDO::getOrganId,organId)
.eq(OrderPackageDO::getDeleted,false)
.eq(OrderPackageDO::getStatus, OrderPackageStatusEnum.PACKAGED.getStatus())
.eqIfPresent(OrderPackageDO::getOrderId, orderId));
}
}
@@ -0,0 +1,17 @@
package com.cf.imes.module.executor.dal.mysql.pack;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.executor.dal.dataobject.pack.OrderPrepackagedDO;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface OrderPrepackagedMapper extends BaseMapperX<OrderPrepackagedDO> {
default int deletePacked(Long orderId, Long organId) {
return delete(new LambdaQueryWrapperX<OrderPrepackagedDO>()
.eq(OrderPrepackagedDO::getOrganId, organId)
.eqIfPresent(OrderPrepackagedDO::getOrderId, orderId));
}
}
@@ -103,7 +103,7 @@ public interface PlanMapper extends BaseMapperX<PlanDO> {
List<OrderPlanStatisticsAreaRespVO> selectPlanAreaGroupByCreateTime(@Param("req") OrderStatisticsReqVO reqVO);
List<PlanDO> seleTestSQL(@Param("filed") String filed,@Param("planId") Long planId,@Param("organId") Long organId);
List<PlanDO> selectPlanDataSource(@Param("filed") String filed,@Param("planId") Long planId,@Param("organId") Long organId);
@@ -10,6 +10,7 @@ import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.executor.controller.admin.plan.bo.GoodsNum;
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPackReqVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.*;
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateGoodsIdVO;
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateGoodsRespVO;
@@ -143,13 +144,24 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
default List<PlateDO> selectPlateNum(Long orderId, Long organId) {
return selectList(new LambdaQueryWrapperX<PlateDO>()
.eq(PlateDO::getOrganId,organId)
.eq(PlateDO::getDeleted,false)
.eqIfPresent(PlateDO::getOrderId, orderId));
}
// 房间id查小板的开料状态
List<Long> selectPlateTypeByRoomId(@Param("orderId") Long orderId, @Param("bodyIds") Collection<Long> bodyIds,
default List<PlateDO> selectPlateDeletedStatus(Long orderId,List<Long> goodsIds, Long organId) {
return selectList(new LambdaQueryWrapperX<PlateDO>()
.eq(PlateDO::getOrganId,organId)
.eq(PlateDO::getDeleted,false)
.in(PlateDO::getGoodsId,goodsIds)
.eqIfPresent(PlateDO::getOrderId, orderId));
}
// 房间id查小板的开料状态
List<PlateDO> selectPlateTypeByRoomId(@Param("orderId") Long orderId, @Param("bodyIds") Collection<Long> bodyIds,
@Param("organId") Long organId, @Param("deleted") Integer deleted);
// 根据生产单id删除
@@ -180,6 +192,7 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
default List<PlateDO> selectPlateByPlateNo(List<Long> plateNo, Long organId) {
return selectList(new LambdaQueryWrapperX<PlateDO>()
.eq(PlateDO::getOrganId,organId)
.eq(PlateDO::getDeleted,false)
.inIfPresent(PlateDO::getPlateNo, plateNo)
.select(PlateDO::getOrderId));
@@ -197,7 +210,7 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
}
List<PlateRespVO> selectTestSQL(@Param("filed") String filed, @Param("field2") String field2,@Param("goodsIdList") List<Long> goodsIdList,@Param("organId") Long organId);
List<PlateRespVO> selectPlanPlateListDataSource(@Param("filed") String filed, @Param("field2") String field2,@Param("goodsIdList") List<Long> goodsIdList,@Param("orderIds") List<Long> orderIds,@Param("organId") Long organId);
@@ -233,6 +246,24 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
void updateNoPlateOptimized(@Param("orderIdList") List<Long> orderIdList,@Param("ids") List<Long> ids,@Param("organId") Long organId);
List<PrintOrderPackReqVO> selectPlanPackList(@Param("ids") List<Long> ids,@Param("organId") Long organId);
List<PrintOrderPackReqVO> selectOrderPackList(@Param("orderId") Long orderId,@Param("organId") Long organId);
void updatePlateOptimizedStatus(@Param("plateDOList")List<Long> plateDOList,@Param("organId") Long organId,@Param("orderId") Long orderId);
default List<PlateDO> selectNoPlanPlate(Long orderId, List<Long> goodsIds, Long organId) {
return selectList(new LambdaQueryWrapperX<PlateDO>()
.eq(PlateDO::getOrganId,organId)
.eqIfPresent(PlateDO::getOrderId,orderId)
.inIfPresent(PlateDO::getGoodsId,goodsIds)
.eq(PlateDO::getIsOptimized,false));
}
// List<PlateDO> selectTestSQL(@Param("sql") String sql);
@@ -41,9 +41,10 @@ public interface RemainPlateMapper extends BaseMapperX<RemainPlateDO> {
}
default List<RemainPlateDO> selectByPlanId(Long planId, Long userOrganId) {
default List<RemainPlateDO> selectByPlanId(Long planId, Long organId) {
return selectList( new LambdaQueryWrapperX<RemainPlateDO>()
.eq(RemainPlateDO::getOrganId, userOrganId)
.eq(RemainPlateDO::getOrganId, organId)
.eq(RemainPlateDO::getDeleted,false)
.eq(RemainPlateDO::getPlanId, planId));
@@ -59,7 +60,7 @@ public interface RemainPlateMapper extends BaseMapperX<RemainPlateDO> {
.eq(RemainPlateDO::getOrganId, organId));
}
List<RemainPlateDO> selectTestSQL(@Param("filed") String filed,@Param("planId") Long planId,@Param("organId") Long organId);
List<RemainPlateDO> selectPlanRemainDataSource(@Param("filed") String filed,@Param("planId") Long planId,@Param("organId") Long organId);
@@ -12,6 +12,7 @@ import com.alibaba.fastjson.JSON;
import com.cf.imes.framework.common.enums.OrderStatusEnum;
import com.cf.imes.framework.common.enums.PlanStatusEnum;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.util.Assert.AssertUtils;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.es.core.service.ESDocumentService;
import com.cf.imes.framework.security.core.LoginUser;
@@ -66,6 +67,7 @@ import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.ge
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;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.*;
/**
* @author there
@@ -160,14 +162,15 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
public Boolean commit(Long planId, List<Long> goodsNo) {
PlanDO planDO = planMapper.selectById(planId);
if (Objects.isNull(planDO)) {
throw exception(PLAN_NOT_EXISTS);
}
AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
// todo 目前只解决了非混单的情况,混单情况待解决
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 10);
AssertUtils.notEmpty(optimizeBoardModelDOS,ORDER_PLAN_OPTIMIZE_ERROR);
OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0);
List<Long> plateNo = new ArrayList<>();
@@ -190,7 +193,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
}
}
} catch (JsonProcessingException e) {
e.printStackTrace();
throw exception(ORDER_PLAN_OPTIMIZE_ERROR);
}
for (Long goods : goodsNo) {
@@ -275,22 +278,14 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
Long planId = respVO.getPlanId();
List<Long> goodsNo = respVO.getGoodsNo();
// LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
// assert loginUser != null;
//
// if(!loginUser.getIsSupAdmin()){
//
// throw exception(INSUFFICIENT_PERMISSIONS);
//
// }
PlanDO planDO = planMapper.selectById(planId);
if (planDO == null) {
throw exception(PLAN_NOT_EXISTS);
}
AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
// todo 目前只解决了非混单的情况,混单情况待解决
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 99);
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 10);
AssertUtils.notEmpty(optimizeBoardModelDOS,ORDER_PLAN_OPTIMIZE_ERROR);
OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0);
@@ -459,10 +454,11 @@ 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);
}
OrderSource orderSource = new OrderSource();
// if (Objects.isNull(orderDO)) {
// throw exception(ORDER_NOT_EXISTS);
// }
AssertUtils.notEmpty(orderDO,ORDER_NOT_EXISTS);
List<GoodsReqVO> goodsDOS = goodsMapper.selectGoodsList(orderId,getUserOrganId());
@@ -470,6 +466,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<PlateDetialRespVO> plateDOS = plateMapper.selectPlateDetialList(orderId,getUserOrganId());
AssertUtils.notEmpty(plateDOS,ORDER_PLATE_ERROR);
for (PlateDetialRespVO plateDetailsRespVO : plateDOS) {
String name = "";
@@ -489,11 +486,14 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
Integer orderModelSize = plateDOS.size();
List<OrderModelDO> orderModelDOS = buildRespByOrderId(orderId, ORDER_PLATE_MODEL, orderModelSize);
List<OrderModelDO> orderModelDOS = buildRespByOrderId(orderId, orderModelSize);
AssertUtils.notEmpty(orderModelDOS,ORDER_PLATE_MODEL_DATE_ERROR);
// 大板数据的尺寸长度
Integer boardSize = goodsDOS.stream().map(GoodsReqVO::getId).toList().size();
Integer boardSize = goodsDOS.size();
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByOrderId(orderId, ORDER_REMAIN_PLATE_MODEL, boardSize);
@@ -504,8 +504,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
// 查询生产单对应的包裹信息
List<PrintOrderPackReqVO> printOrderPackReqVOS = orderItemMapper.selectOrderPlateList(orderId, getUserOrganId());
List<PrintOrderPackReqVO> printOrderPackReqVOS = plateMapper.selectOrderPackList(orderId,getUserOrganId());
// 统计每个订单的包装数量
printOrderPackReqVOS
@@ -515,14 +514,24 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
.forEach(f->f.setPackNum(printOrderPackReqVOS.stream().filter(e -> e.getOrderId().equals(orderId)).map(PrintOrderPackReqVO::getPackId).toList().size()));
orderSource.setOrderList(Collections.singletonList(orderDO));
orderSource.setPlateList(plateDOS);
orderSource.setGoodsList(goodsDOS);
orderSource.setPlateModels(orderModelDOS);
orderSource.setOptimizeBoardModelDOS(optimizeBoardModelDOS);
orderSource.setOrderPartsRespVOS(printOrderPartsRespVOS);
orderSource.setOrderPackReqVOS(printOrderPackReqVOS);
return orderSource;
// orderSource.setOrderList(Collections.singletonList(orderDO));
// orderSource.setPlateList(plateDOS);
// orderSource.setGoodsList(goodsDOS);
// orderSource.setPlateModels(orderModelDOS);
// orderSource.setOptimizeBoardModelDOS(optimizeBoardModelDOS);
// orderSource.setOrderPartsRespVOS(printOrderPartsRespVOS);
// orderSource.setOrderPackReqVOS(printOrderPackReqVOS);
return OrderSource.builder()
.orderList(Collections.singletonList(orderDO))
.goodsList(goodsDOS)
.plateList(plateDOS)
.plateModels(orderModelDOS)
.optimizeBoardModelDOS(optimizeBoardModelDOS)
.orderPartsRespVOS(printOrderPartsRespVOS)
.orderPackReqVOS(printOrderPackReqVOS)
.build();
}
@@ -530,15 +539,17 @@ 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);
}
// if (Objects.isNull(planDO)) {
// throw exception(PLAN_NOT_EXISTS);
// }
AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
// 查询排单对应的大板信息
List<GoodsReqVO> goodsDOS = goodsMapper.selectGoodsListByOrderIds(planId,getUserOrganId());
List<Long> orderIds = goodsDOS.stream().map(GoodsReqVO::getOrderId).toList();
List<Long> orderIds = goodsDOS.stream().map(GoodsReqVO::getOrderId).distinct().toList();
List<Long> ids = goodsDOS.stream().map(GoodsReqVO::getId).toList();
@@ -546,26 +557,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<PlateDetialRespVO> plateDetialRespVOS = plateMapper.selectPlateListByGoodsIds(ids, getUserOrganId());
// List<Long> bodyIds = plateDetialRespVOS.stream().map(PlateDetialRespVO::getBodyId).distinct().toList();
//
//
// List<OrderBodyDO> orderBodyDOS = orderBodyMapper.selectOrderBodyList(bodyIds,orderIds, getUserOrganId());
//
//
//// List<PlateDetialRespVO> detialRespVOS = new ArrayList<>();
//
//
// for (OrderBodyDO orderBodyDO : orderBodyDOS) {
//
// plateDetialRespVOS.stream().filter(f -> f.getBodyId().equals(orderBodyDO.getId())).forEach(m -> {
// m.setBodyName(orderBodyDO.getName());
// m.setRoomName(orderBodyDO.getRoomName());
// });
//
// }
AssertUtils.notEmpty(plateDetialRespVOS,ORDER_PLAN_PLATE_ERROR);
for (PlateDetialRespVO plateDetailsRespVO : plateDetialRespVOS) {
String name = "";
@@ -579,23 +571,15 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
}
plateDetailsRespVO.setProcessGroupName(name);
// plateDetailsRespVO.setGoodsId(goodsDOS
// .stream()
// .filter(f->f.getId().equals(plateDetailsRespVO.getId()))
// .map(GoodsReqVO::getGoodsId)
// .findAny().orElse(null));
// plateDetailsRespVO.setGoodsName(goodsDOS
// .stream()
// .filter(f->f.getId().equals(plateDetailsRespVO.getId()))
// .map(GoodsReqVO::getGoodsName)
// .findAny().orElse(null));
}
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
AssertUtils.notEmpty(orderDOS,ORDER_PLAN_ERROR);
// 造型数据的尺寸长度
Integer orderModelSize = plateDetialRespVOS.size();
@@ -605,14 +589,18 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<OrderModelDO> orderModelDOS = buildRespByPlateIds(plateIds, orderModelSize);
AssertUtils.notEmpty(orderModelDOS,ORDER_PLAN_PLATE_MODEL_DATE_ERROR);
// 大板数据的尺寸长度
Integer boardSize = goodsDOS.stream().map(GoodsReqVO::getId).toList().size();
Integer boardSize = goodsDOS.size();
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, boardSize);
List<RemainPlateDO> remainPlateDOS = remainPlateMapper.selectByPlanId(planId,getUserOrganId());
List<OptimizeRemainPlate> optimizeRemainPlates = BeanUtils.toBean(remainPlateDOS, OptimizeRemainPlate.class);
@@ -620,19 +608,20 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<PrintOrderPartsRespVO> printOrderPartsRespVOS = orderPartsMapper.selectPartList(orderIds, getUserOrganId());
// 查询生产单对应的包裹信息
List<PrintOrderPackReqVO> printOrderPackReqVOS = orderItemMapper.selectPackList(ids, getUserOrganId());
List<PrintOrderPackReqVO> printOrderPackReqVOS = plateMapper.selectPlanPackList(ids,getUserOrganId());
for (Long orderId : orderIds) {
if(!printOrderPackReqVOS.isEmpty()) {
for (Long orderId : orderIds) {
// 统计每个订单的包装数量
printOrderPackReqVOS
.stream()
.filter(f->f.getOrderId().equals(orderId))
.forEach(f->f.setPackNum(printOrderPackReqVOS.stream().filter(e -> e.getOrderId().equals(orderId)).map(PrintOrderPackReqVO::getPackId).toList().size()));
// 统计每个订单的包装数量
printOrderPackReqVOS
.stream()
.filter(f -> f.getOrderId().equals(orderId))
.forEach(f -> f.setPackNum(printOrderPackReqVOS.stream().filter(e -> e.getOrderId().equals(orderId)).map(PrintOrderPackReqVO::getPackId).toList().size()));
}
}
return OrderSource.builder()
.orderList(orderDOS)
.plan(planDO)
@@ -652,6 +641,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<GoodsReqVO> goodsReqVOS = goodsMapper.selectGoodsAndRemainPlate(ids, getUserOrganId());
AssertUtils.notEmpty(goodsReqVOS,ORDER_GOODS_DATA_ERROR);
List<Long> orderIds = goodsReqVOS.stream().map(GoodsReqVO::getOrderId).distinct().toList();
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
@@ -660,22 +652,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<PlateDetialRespVO> plateDetialRespVOS = plateMapper.selectPlateListByGoodsIds(ids, getUserOrganId());
// List<Long> bodyIds = plateDetialRespVOS.stream().map(PlateDetialRespVO::getBodyId).distinct().toList();
//
//
// List<OrderBodyDO> orderBodyDOS = orderBodyMapper.selectOrderBodyList(bodyIds,orderIds, getUserOrganId());
//
//
// for (OrderBodyDO orderBodyDO : orderBodyDOS) {
//
// plateDetialRespVOS.stream().filter(f -> f.getBodyId().equals(orderBodyDO.getId())).forEach(m -> {
// m.setBodyName(orderBodyDO.getName());
// m.setRoomName(orderBodyDO.getRoomName());
// });
//
// }
for (PlateDetialRespVO plateDetailsRespVO : plateDetialRespVOS) {
String name = "";
if(!plateDetailsRespVO.getProcessGroupLists().isEmpty()) {
@@ -688,13 +664,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
}
plateDetailsRespVO.setProcessGroupName(name);
// // todo 这样写混单时同样适用,后面加混单后这里不用修改
// plateDetailsRespVO.setGoodsId(goodsReqVOS
// .stream()
// .filter(f->f.getId().equals(plateDetailsRespVO.getId()))
// .map(GoodsReqVO::getGoodsId)
// .findAny().orElse(null));
}
@@ -729,16 +698,23 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
// todo 目前只解决非混单的情况下,
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanIds(planIds, ORDER_REMAIN_PLATE_MODEL, planIds.size());
if(!optimizeBoardModelDOS.isEmpty()){
deleteByPlanId(planIds,ORDER_REMAIN_PLATE_MODEL);
}
// 保存优化后的大板数据
batchSaveBoardModel(req.getOptimizeBoardModelDOS());
List<GoodsDO> goodsDOS = goodsMapper.selectPlanGoodsListByPlanIdList(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())) {
@@ -818,8 +794,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<PlateDO> plateDOS = plateMapper.selectPlateNum(orderId, getUserOrganId());
if(plateDOS.isEmpty()){
return null;
}
return buildRespByOrderId(orderId, ORDER_PLATE_MODEL,plateDOS.size());
return buildRespByOrderId(orderId, plateDOS.size());
}
@@ -843,9 +822,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
}
}
private List<OrderModelDO> buildRespByOrderId(Long orderId, String index,Integer size) {
private List<OrderModelDO> buildRespByOrderId(Long orderId, Integer size) {
SearchRequest.Builder builder = new SearchRequest.Builder();
builder.index(index);
builder.index(OptimizePlanService.ORDER_PLATE_MODEL);
builder.size(size);
builder.query(q -> q.term(b -> b.field("orderId").value(orderId)));
try {
@@ -874,12 +853,12 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
boolean errors = bulkResponse.errors();
if (errors) {
log.error(bulkResponse.items().toString());
throw new ServiceException(500, "未知异常");
throw new ServiceException(INTERNAL_SERVER_ERROR);
}
} catch (Exception e) {
e.printStackTrace();
log.error(e.getMessage());
throw new RuntimeException(e);
throw new ServiceException(INTERNAL_SERVER_ERROR);
}
}
@@ -1,20 +1,19 @@
package com.cf.imes.module.executor.service.order;
import javax.servlet.http.HttpServletResponse;
import javax.validation.*;
import com.alibaba.fastjson.JSONObject;
import com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.module.executor.controller.admin.order.vo.order.*;
import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRespVO;
import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderRoomBodyRespVO;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderPlateImportExcelVO;
import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.VO.OrderXmlVO;
import org.springframework.boot.system.ApplicationHome;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.File;
import java.util.List;
import java.util.Map;
@@ -91,7 +90,9 @@ public interface OrderService {
* @param roomId: 房间id
* @param bodyId: 柜体id
*/
void updateBodyDeletedByOrderId(Long orderId , Set<Long> roomId, Long bodyId, Integer status);
void updateDeleteBody(Long orderId , Set<Long> roomId, Long bodyId, Integer status);
void updateRestoreBody(Long orderId , Set<Long> roomId, Long bodyId, Integer status);
/**
* @param listMap:生产单号
@@ -30,6 +30,7 @@ import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
import com.cf.imes.module.executor.dal.dataobject.pack.OrderPackageDO;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO;
@@ -40,6 +41,8 @@ import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper;
import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper;
import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper;
import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper;
import com.cf.imes.module.executor.dal.mysql.pack.OrderPackageMapper;
import com.cf.imes.module.executor.dal.mysql.pack.OrderPrepackagedMapper;
import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateGoodMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
@@ -64,12 +67,14 @@ import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
@@ -114,6 +119,12 @@ public class OrderServiceImpl implements OrderService {
@Resource
private OrderItemMapper orderItemMapper;
@Resource
private OrderPackageMapper orderPackageMapper;
@Resource
private OrderPrepackagedMapper orderPrepackagedMapper;
@Resource
private OrderInputProcessor orderInputProcessor;
@@ -246,7 +257,7 @@ public class OrderServiceImpl implements OrderService {
@Override
@Transactional(rollbackFor = Exception.class)
public void updateBodyDeletedByOrderId(Long orderId, Set<Long> roomIds, Long bodyId, Integer status) { // 要删除传1,还原传0
public void updateDeleteBody(Long orderId, Set<Long> roomIds, Long bodyId, Integer status) { // 要删除传1,还原传0
// 判断生产单的状态和生产单柜体对应的板擦是否已开料
List<Long> planIds = validateOrderStatus(orderId, roomIds, bodyId, getUserOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus());
@@ -261,43 +272,52 @@ public class OrderServiceImpl implements OrderService {
}
if (bodyIds.size() != 0){
List<Long> plateDOList = plateMapper.selectPlateTypeByRoomId(orderId, bodyIds, getUserOrganId(), index);
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();
// List<Long> groupIds = orderGroupMapper.selectListByBodyId(bodyIds, orderId, getUserOrganId(), index);
orderBodyMapper.updateDeletedById(bodyIds, status, getUserOrganId(), orderId);// 柜体
orderGroupMapper.updateDeletedById(bodyIds, status, getUserOrganId(), orderId);// 加工组
if (plateDOList != null && plateDOList.size() != 0) {
plateMapper.updateDeletedById(plateDOList, status, getUserOrganId(), orderId);// 删小板
if (!plateDOList.isEmpty()) {
plateMapper.updateDeletedById(plateIds, status, getUserOrganId(), orderId);// 删小板
}
// 删除包裹,只需删除,无需还原
List<Long> packIds = orderItemMapper.selectPackId(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> goodsIdList = plateMapper.selectPlateNum(orderId, getUserOrganId());
Map<Long, List<PlateDO>> goodsIdMap = goodsIdList.stream()
.collect(Collectors.groupingBy(PlateDO::getGoodsId));
List<PlateDO> goodsList = plateMapper.selectPlateDeletedStatus(orderId, goodsIds, getUserOrganId());
List<Long> goodsIdDeleted = new ArrayList<>();
List<Long> goodsIdList = goodsList.stream().map(PlateDO::getGoodsId).distinct().toList();
goodsIdMap.forEach((goodsId, plates) -> {
if (plates.isEmpty()) {
goodsIdDeleted.add(goodsId);
return;
}
boolean allDeleted = true;
for (PlateDO plateDO : plates) {
if (status == 1) {
if (!plateDO.getDeleted()) {
allDeleted = false;
break;
}
} else {
if (plateDO.getDeleted()) {
break;
}
}
}
if (allDeleted) {
goodsIdDeleted.add(goodsId);
}
});
List<Long> goodsIdDeleted = Stream.concat(
goodsIds.stream().filter(str -> !goodsIdList.contains(str)),
goodsIdList.stream().filter(str -> !goodsIds.contains(str)))
.toList();
if (goodsIdDeleted.size() > 0) {
@@ -305,18 +325,20 @@ public class OrderServiceImpl implements OrderService {
}
if(planIds != null) {
if(!planIds.isEmpty()) {
// 判断删除的柜体对应的板材是否和排单板材一样
List<GoodsDO> goodsDOS = goodsMapper.selectPlanGoodsListByPlanIdList(planIds, getUserOrganId());
// 一样,同时删除排单的信息
if(goodsDOS.isEmpty()){
if(goodsDOS.isEmpty() && status.equals(1)){
planService.deletePlan(planIds);
}else {
// 只要有排单,不管删除的柜体的板材数和排单数一样,都要删除排单对应的优化数据(不用这种写法进行删除时,有时会报错,原因目前还没找到)
planService.deleteByPlanId(planIds, ORDER_REMAIN_PLATE_MODEL);
}
// 只要有排单,不管删除的柜体的板材数和排单数一样,都要删除排单对应的优化数据(不用这种写法进行删除时,有时会报错,原因目前还没找到)
planService.deleteByPlanId(planIds, ORDER_REMAIN_PLATE_MODEL);
}
List<Long> partsList = orderPartsMapper.selectPartsIdListByBodyId(bodyIds, getUserOrganId(), orderId); // 配件
@@ -335,6 +357,123 @@ public class OrderServiceImpl implements OrderService {
}
@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;
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> plateIds = plateDOList.stream().map(PlateDO::getId).toList();
List<Long> goodsIds = plateDOList.stream().map(PlateDO::getGoodsId).distinct().toList();
orderBodyMapper.updateDeletedById(bodyIds, status, getUserOrganId(), orderId);// 柜体
orderGroupMapper.updateDeletedById(bodyIds, status, getUserOrganId(), orderId);// 加工组
// 小板还原
if (!plateDOList.isEmpty()) {
plateMapper.updateDeletedById(plateIds, status, 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()))
// .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 (orderBodyMapper.selectCountByOrderId(orderId, getUserOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus()) == 0) {
orderMapper.updateOrderStatus(orderId, OrderStatusEnum.EMPTY.getStatus(), getUserOrganId());
}else {
orderMapper.updateOrderStatus(orderId, OrderStatusEnum.NEW_ORDER.getStatus(), getUserOrganId());
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public Long importApiData(Map<String, List<?>> listMap) {
@@ -863,7 +1002,7 @@ public class OrderServiceImpl implements OrderService {
// 判断小板是否已开料,已开料不允许删除
List<Long> planIds = goodsMapper.selectPlanOrderList(orderId, roomIds, bodyId, organId);
if(!planIds.isEmpty()) {
if(!planIds.isEmpty() && status.equals(1)) {
List<PlanDO> planDOS = planMapper.selectPlanStatus(planIds, organId);
@@ -871,11 +1010,9 @@ public class OrderServiceImpl implements OrderService {
// planService.deleteByPlanId(planIds, ORDER_REMAIN_PLATE_MODEL);
return planIds;
}
return null;
return planIds;
}
}
@@ -16,6 +16,7 @@ import com.cf.imes.framework.common.enums.PlanFilterTypeEnum;
import com.cf.imes.framework.common.enums.PlanStatusEnum;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.Assert.AssertUtils;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX;
@@ -57,6 +58,7 @@ import java.io.IOException;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.ES_ERROR_DELETE;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR;
@@ -64,7 +66,7 @@ import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.e
import static com.cf.imes.framework.common.util.string.SearchUtil.insertSeparator;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.*;
/**
* 生产单开料排单 Service 实现类
@@ -124,6 +126,8 @@ public class PlanServiceImpl implements PlanService {
// todo 目前只考虑了非混单的情况,混单的情况待考虑
List<PlanSaveReqVO.Item> itemList = createReqVO.getItemList();
AssertUtils.notEmpty(itemList,INSERT_PLATE_DATE_ERROR);
ArrayList<PlanDO> planDOS = new ArrayList<>();
List<GoodsDO> goodsDOS = new ArrayList<>();
@@ -187,7 +191,7 @@ public class PlanServiceImpl implements PlanService {
public void updatePlan(PlanSaveReqVO updateReqVO) {
// 校验排单是否存在,是否开料
validatePlanExists(updateReqVO.getId(),updateReqVO.getMachineId());
validatePlanExists(updateReqVO.getId());
// 更新
PlanDO plan = BeanUtils.toBean(updateReqVO, PlanDO.class);
@@ -374,7 +378,11 @@ public class PlanServiceImpl implements PlanService {
optimizeBoardModelDOS.forEach(f -> orderIdList.addAll(f.getOrderId()));
// 已经删除的排单的生产单号和新查找的生生产单号对比,找出不同的部分
diff = orderIds.stream().filter(f -> !orderIdList.contains(f)).toList();
// 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()){
@@ -391,42 +399,14 @@ public class PlanServiceImpl implements PlanService {
private void validatePlanExists(Long id, Long machineId) {
PlanDO planDO = planMapper.selectById(id);
if ( planDO== null) {
throw exception(PLAN_NOT_EXISTS);
}
if(planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){
throw exception(LIST_CHANGES_ARE_PROHIBITED);
}
}
private void validatePlan(List<Long> ids) {
List<PlanDO> planDOS = planMapper.selectBatchIds(ids);
for (PlanDO planDO : planDOS) {
if ( planDO== null) {
throw exception(PLAN_NOT_EXISTS);
}
if ( planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus()) ) {
throw exception(PLAN_NOT_ALLOW_DELETE,planDO.getId());
}
}
}
@Override
public PlanRespVO getPlan(Long id) {
PlanDO planDO = planMapper.selectById(id);
if ( planDO== null) {
throw exception(PLAN_NOT_EXISTS);
}
AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
return BeanUtils.toBean(planDO, PlanRespVO.class);
@@ -445,6 +425,7 @@ public class PlanServiceImpl implements PlanService {
PlanDO planDO = planMapper.selectById(pageReqVO.getId());
AssertUtils.notEmpty(planDO,ORDER_PLAN_DATE_ERROR);
List<PlanDO> plan = pageReqVO.getIsUp() ?
planMapper.selectPlanIds(planDO.getCreateTime().toString(),planDO.getSort(), getUserOrganId(), planDO.getId()) :
@@ -519,8 +500,6 @@ public class PlanServiceImpl implements PlanService {
// 根据排单ID查询ES中的优化数据 todo 目前只解决无混单的情况,混单情况待解决
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanIds(planIds, ORDER_REMAIN_PLATE_MODEL, infoVOList.size());
// for (OptimizeBoardModelDO optimizeBoardModelDO : optimizeBoardModelDOS) {
// }
// 获取排单对应的生产单的信息
List<PlanOrderRespVO> planOrderRespVOS = planItemMapper.selectOrderList(planIds, getUserOrganId());
@@ -549,7 +528,7 @@ public class PlanServiceImpl implements PlanService {
e.setOptimizeGoodsCount(optimizeBoardModelDOS.stream()
.filter(f -> Objects.equals(f.getPlanId(), e.getId()))
// todo 目前兼容修改,新的需求不需要这个校验
.mapToLong(m -> m.getBoardCount() == null ?0 : m.getBoardCount())
.mapToLong(m -> m.getBoardCount() == null ? 0 : m.getBoardCount())
.sum());
// 大板开料数
e.setCutGoodsCount(optimizeBoardModelDOS.stream()
@@ -652,7 +631,7 @@ public class PlanServiceImpl implements PlanService {
.in("order_id",orderIds)
.eq("is_optimized",false)
.inIfPresent("goods_id",goodsIds)
.inIfPresent("goods_id",pageReqVO.getIds())
.inIfPresent("id",pageReqVO.getIds())
.eqIfPresent("is_special_shaped", pageReqVO.getRectangle() != null ? false: null)
.eqIfPresent("is_special_shaped", pageReqVO.getSpecialShaped())
.eqIfPresent("is_sculpt", pageReqVO.getSculpt())
@@ -817,13 +796,10 @@ public class PlanServiceImpl implements PlanService {
// .eq("og.organ_id",getUserOrganId())
// .eq("og.plan_id",0)
// .eq("og.deleted",false)
.inIfPresent("og.order_id", pageReqVO.getOrderIds())
.inIfPresent("og.id", pageReqVO.getIds())
// todo 修改排单数据筛选,目前只解决了非混单的情况,混单情况待解决
.eqIfPresent("og.goods_id",pageReqVO.getGoodsId())
.likeIfPresent("o.id", pageReqVO.getOrderId() != null ? pageReqVO.getOrderId().toString() : null)
.likeIfPresent("o.customer", pageReqVO.getConsignee())
.likeIfPresent("o.custom_order_no", pageReqVO.getDefaultId())
@@ -935,7 +911,7 @@ public class PlanServiceImpl implements PlanService {
return null;
}
for (Long planId : vo.getPlanIds()) {
validatePlanExists(planId,null);
validatePlan(planId);
}
QueryWrapperX<GoodsDO> queryWrapperX = new QueryWrapperX<>();
@@ -967,6 +943,10 @@ public class PlanServiceImpl implements PlanService {
IPage<PlateResList> pageResult = goodsMapper.selectPlanGoodsListByPlanId(page, queryWrapperX);
if (CollectionUtil.isEmpty(pageResult.getRecords())) {
return new PageResult<>();
}
Set<Long> bodyIds = pageResult.getRecords().stream().map(PlateResList::getBodyId).collect(Collectors.toSet());
if (CollectionUtil.isNotEmpty(bodyIds)) {
@@ -981,6 +961,9 @@ public class PlanServiceImpl implements PlanService {
@Override
public PageResult<OrderRespVO> getOrderByPlanId(PlanOrderPageReqVO pageReqVO) {
validatePlan(pageReqVO.getPlanId());
MPJLambdaWrapperX<OrderDO> lambdaWrapperX = new MPJLambdaWrapperX<>();
lambdaWrapperX.leftJoin(GoodsDO.class, GoodsDO::getOrderId, OrderDO::getId)
.eq(GoodsDO::getOrganId,getUserOrganId())
@@ -988,8 +971,12 @@ public class PlanServiceImpl implements PlanService {
.eq(GoodsDO::getPlanId, pageReqVO.getPlanId())
.distinct();
PageResult<OrderDO> pageResult = orderMapper.selectJoinPage(pageReqVO, OrderDO.class, lambdaWrapperX);
if (CollectionUtil.isEmpty(pageResult.getList())) {
return new PageResult<>();
}
return BeanUtils.toBean(pageResult, OrderRespVO.class);
}
@@ -1028,18 +1015,30 @@ public class PlanServiceImpl implements PlanService {
@Override
public List<PlateResList> getPlateList(List<Long> planIds) {
for (Long planId : planIds) {
validatePlan(planId);
}
List<PlateResList> plateResLists = goodsMapper.selectPlateListByPlanId(planIds, getUserOrganId());
Set<Long> bodyIds = plateResLists.stream().map(PlateResList::getBodyId).collect(Collectors.toSet());
if (CollectionUtil.isNotEmpty(bodyIds)) {
List<OrderBodyDO> orderBodyDOS = orderBodyMapper.selectBatchIds(bodyIds);
for (PlateResList resList :plateResLists) {
resList.setBodyName(orderBodyDOS.stream().filter(e -> Objects.equals(e.getId(), resList.getBodyId())).map(OrderBodyDO::getName).findAny().orElse(null));
resList.setRoomName(orderBodyDOS.stream().filter(e -> Objects.equals(e.getRoomId(), resList.getRoomId())).map(OrderBodyDO::getRoomName).findAny().orElse(null));
}
if(plateResLists.isEmpty()){
return null;
}
Set<Long> bodyIds = plateResLists.stream().map(PlateResList::getBodyId).collect(Collectors.toSet());
List<OrderBodyDO> orderBodyDOS = orderBodyMapper.selectBatchIds(bodyIds);
if(orderBodyDOS.isEmpty()){
return plateResLists;
}
for (PlateResList resList :plateResLists) {
resList.setBodyName(orderBodyDOS.stream().filter(e -> Objects.equals(e.getId(), resList.getBodyId())).map(OrderBodyDO::getName).findAny().orElse(null));
resList.setRoomName(orderBodyDOS.stream().filter(e -> Objects.equals(e.getRoomId(), resList.getRoomId())).map(OrderBodyDO::getRoomName).findAny().orElse(null));
}
return plateResLists;
}
@@ -1113,4 +1112,46 @@ public class PlanServiceImpl implements PlanService {
}
}
private void validatePlan(Long id) {
PlanDO planDO = planMapper.selectById(id);
AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
}
private void validatePlanExists(Long id) {
PlanDO planDO = planMapper.selectById(id);
// if ( planDO== null) {
// throw exception(PLAN_NOT_EXISTS);
// }
AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
if(planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){
throw exception(LIST_CHANGES_ARE_PROHIBITED);
}
}
private void validatePlan(List<Long> ids) {
List<PlanDO> planDOS = planMapper.selectBatchIds(ids);
for (PlanDO planDO : planDOS) {
AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
if ( planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus()) ) {
throw exception(PLAN_NOT_ALLOW_DELETE,planDO.getId());
}
}
}
}
@@ -17,8 +17,8 @@
og.*,
orp.id as remainId
from order_goods og
left join order_remain_plate orp on og.id = orp.goods_id and og.organ_id = orp.organ_id
where og.order_id = #{orderId} and og.organ_id = #{organId} and og.deleted = false
left join order_remain_plate orp on og.organ_id = orp.organ_id and og.id = orp.goods_id
where og.organ_id = #{organId} and og.deleted = false and og.order_id = #{orderId}
</select>
@@ -31,8 +31,8 @@
og.*,
orp.id as remainId
from order_goods og
left join order_remain_plate orp on og.id = orp.goods_id and og.organ_id = orp.organ_id
where og.organ_id =#{organId} and og.deleted = false and og.plan_id = #{planId}
left join order_remain_plate orp on og.organ_id = orp.organ_id and og.id = orp.goods_id
where og.organ_id = #{organId} and og.deleted = false and og.plan_id = #{planId}
</select>
@@ -59,16 +59,12 @@
<select id="seleTestSQL" resultType="java.util.Map">
<select id="selectPlanGoodsDataSource" resultType="java.util.Map">
select ${filed} from order_goods where organ_id = #{organId}
and deleted = false
and goods_id in
<foreach item="goodsIds" collection="goodsIds" open="(" separator="," close=")">
#{goodsIds}
</foreach>
and plan_id = #{planId}
</select>
@@ -177,12 +173,12 @@
left join order_plate op on og.organ_id = op.organ_id and og.order_id = op.order_id and og.id = op.goods_id and og.deleted = op.deleted
where og.organ_id = #{organId}
and og.deleted = false
and og.plan_id in
<foreach collection="planIds" item="ids" open="(" close=")" separator=",">
#{ids}
</foreach>
-- and op.is_optimized = true
@@ -396,7 +392,7 @@
<where> og.organ_id = #{organId}
and og.deleted = false
and og.order_id = #{orderId}
and og.plan_id != 0
<if test="bodyId !=null">
and oi.body_id = #{bodyId}
</if>
@@ -412,4 +408,72 @@
</select>
<select id="selectPlanPlateList" resultType="java.lang.Long">
select distinct
op.id
from order_goods og
left join order_plate op on og.organ_id = op.organ_id and og.order_id = op.order_id and og.id = op.goods_id and og.deleted = op.deleted
where og.organ_id = #{organId} and og.deleted = false and og.plan_id = #{planId}
</select>
<select id="selectPlanBodyIds" resultType="java.lang.Long">
select distinct
oi.body_id
from order_goods og
left join order_plate op on og.organ_id = op.organ_id and og.order_id = op.order_id and og.id = op.goods_id
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.plate_id
where og.organ_id = #{organId} and og.deleted = false and og.plan_id = #{planId}
</select>
<select id="selectPlanGroupListDataSource" resultType="java.lang.Long">
select distinct
oi.group_id
from order_goods og
left join order_plate op on og.organ_id = op.organ_id and og.order_id = op.order_id and og.id = op.goods_id
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.plate_id and oi.group_id !=0
where og.organ_id = #{organId} and og.deleted = false and og.plan_id = #{planId}
</select>
<select id="selectNoPlanGoodsList" resultType="com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO">
select *
from order_goods
where organ_id = #{organId}
and deleted = false
and order_id = #{orderId}
and id in
<foreach item="goodsIds" collection="goodsIds" open="(" separator="," close=")">
#{goodsIds}
</foreach>
and plan_id !=0
</select>
</mapper>
@@ -194,7 +194,7 @@
</select>
<select id="selectTestSQL" resultType="java.util.Map">
<select id="selectOrderDataSource" resultType="java.util.Map">
select ${filed} from orders
@@ -58,7 +58,7 @@
</select>
<select id="selectTestSQL" resultType="java.util.Map">
<select id="selectPlanBodyRoomDataSource" resultType="java.util.Map">
select distinct ${filed} from order_body
@@ -13,17 +13,18 @@
</select>
<select id="selectTestSQL" resultType="java.util.Map">
<select id="selectPlanGroupDataSource" resultType="java.util.Map">
select ${filed} from order_group
where id in
<foreach item="groupIds" collection="groupIds" open="(" separator="," close=")">
#{groupIds}
</foreach>
and organ_id = #{organId}
where
organ_id = #{organId}
and deleted = false
${field2}
and id in
<foreach item="groupIds" collection="groupIds" open="(" separator="," close=")">
#{groupIds}
</foreach>
${field2}
</select>
</mapper>
@@ -169,45 +169,21 @@
</delete>
<update id="deletePackList" parameterType="java.lang.Long">
<resultMap id="PackListMap" type="com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPackReqVO">
UPDATE order_item
<result property="orderId" column="orderId"/>
<result property="packId" column="packId"/>
<result property="packNo" column="packNo"/>
<result property="packNum" column="packNum"/>
SET package_id = 0
<collection property="plateId" ofType="java.lang.Long" column="plateId"/>
</resultMap>
<select id="selectPackList"
parameterType="java.lang.Long"
resultMap="PackListMap">
select distinct op.id as plateId,
op.order_id as orderId,
o.id as packId,
o.package_no as packNo
from order_plate op
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.plate_id
left join order_package o on oi.organ_id = o.organ_id and oi.order_id = o.order_id and oi.package_id = o.id
where op.organ_id = #{organId}
and op.deleted = false
and op.goods_id in
<foreach item="ids" collection="ids" open="(" separator="," close=")">
#{ids}
WHERE organ_id = #{organId}
and order_id = #{orderId}
and package_id in
<foreach item="packIds" collection="packIds" open="(" separator="," close=")">
#{packIds}
</foreach>
and oi.parts_id = 0
and oi.package_id !=0
</select>
</update>
<select id="selectTestNum"
@@ -224,25 +200,4 @@
</select>
<select id="selectOrderPlateList" parameterType="java.lang.Long" resultMap="PackListMap">
select distinct op.id as plateId,
op.order_id as orderId,
o.id as packId,
o.package_no as packNo
from order_plate op
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.plate_id
left join order_package o on oi.organ_id = o.organ_id and oi.order_id = o.order_id and oi.package_id = o.id
where op.organ_id = #{organId}
and op.deleted = false
and op.order_id = #{orderId}
and oi.parts_id = 0
and oi.package_id !=0
</select>
</mapper>
@@ -132,7 +132,7 @@
<select id="selectTestSql" resultType="com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO">
<select id="selectPlanPartsDataSource" resultType="java.util.Map">
select distinct ${filed} from order_parts where
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.cf.imes.module.executor.dal.mysql.pack.OrderPackageMapper">
<update id="updatePackList" parameterType="java.lang.Long">
UPDATE order_package
SET deleted = true
WHERE organ_id = #{organId}
and order_id = #{orderId}
and id in
<foreach item="packIds" collection="packIds" open="(" separator="," close=")">
#{packIds}
</foreach>
</update>
</mapper>
@@ -168,10 +168,10 @@
group by date;
</select>
<select id="seleTestSQL" resultType="java.util.Map">
<select id="selectPlanDataSource" resultType="java.util.Map">
select ${filed} from order_plan where id = #{planId} and organ_id = #{organId} and deleted = false
select ${filed} from order_plan where organ_id = #{organId} and deleted = false and id = #{planId}
</select>
@@ -665,18 +665,20 @@
</select>
<select id="selectPlateTypeByRoomId" resultType="java.lang.Long">
SELECT p.id
FROM order_plate p
<select id="selectPlateTypeByRoomId"
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.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>
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="selectPlateListByGoodIds"
@@ -777,12 +779,16 @@
<!-- </select>-->
<select id="selectTestSQL" resultType="java.util.Map">
<select id="selectPlanPlateListDataSource" resultType="java.util.Map">
select ${filed} from order_plate
where organ_id = #{organId}
and deleted = false
and order_id in
<foreach collection="orderIds" item="orderIds" open="(" close=")" separator=",">
#{orderIds}
</foreach>
and goods_id in
<foreach collection="goodsIdList" item="goodsIdList" open="(" close=")" separator=",">
#{goodsIdList}
@@ -857,11 +863,9 @@
where op.organ_id = #{organId} and op.deleted = false and op.goods_id in
<foreach collection="goodsIdList" item="goodsIdList" open="(" close=")" separator=",">
#{goodsIdList}
</foreach>
-- and op.is_optimized = true
</select>
@@ -892,6 +896,7 @@
</select>
<update id="updatePlateOptimized" parameterType="java.lang.Long">
update order_plate
@@ -937,4 +942,79 @@
</update>
<resultMap id="PackListMap" type="com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPackReqVO">
<result property="orderId" column="orderId"/>
<result property="packId" column="packId"/>
<result property="packNo" column="packNo"/>
<result property="packNum" column="packNum"/>
<collection property="plateId" ofType="java.lang.Long" column="plateId"/>
</resultMap>
<select id="selectPlanPackList"
parameterType="java.lang.Long"
resultMap="PackListMap">
select distinct op.id as plateId,
op.order_id as orderId,
o.id as packId,
o.package_no as packNo
from order_plate op
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.plate_id
left join order_package o on oi.organ_id = o.organ_id and oi.order_id = o.order_id and oi.package_id = o.id
where op.organ_id = #{organId}
and op.deleted = false
and op.goods_id in
<foreach item="ids" collection="ids" open="(" separator="," close=")">
#{ids}
</foreach>
and oi.parts_id = 0
and oi.package_id !=0
</select>
<select id="selectOrderPackList" parameterType="java.lang.Long" resultMap="PackListMap">
select distinct op.id as plateId,
op.order_id as orderId,
o.id as packId,
o.package_no as packNo
from order_plate op
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.plate_id
left join order_package o on oi.organ_id = o.organ_id and oi.order_id = o.order_id and oi.package_id = o.id
where op.organ_id = #{organId}
and op.deleted = false
and op.order_id = #{orderId}
and oi.parts_id = 0
and oi.package_id !=0
</select>
<update id="updatePlateOptimizedStatus">
update order_plate
set is_optimized = true
where organ_id = #{organId}
and deleted = false
and order_id = #{orderId}
and id in
<foreach item="plateDOList" collection="plateDOList" open="(" separator="," close=")">
#{plateDOList}
</foreach>
</update>
</mapper>
@@ -3,10 +3,10 @@
<mapper namespace="com.cf.imes.module.executor.dal.mysql.remainplaten.RemainPlateMapper">
<select id="selectTestSQL" resultType="java.util.Map">
<select id="selectPlanRemainDataSource" resultType="java.util.Map">
select ${filed} from order_remain_plate where organ_id = #{organId} and plan_id = #{planId} and deleted = false
select ${filed} from order_remain_plate where organ_id = #{organId} and deleted = false and plan_id = #{planId}
</select>