添加从旧mes同步生产订单方法

master
liuqingkun 4 days ago
parent db1d9f40f0
commit d15bd7c5bd
  1. 23
      blade-common/src/main/java/org/springblade/common/constant/YieldOrderConst.java
  2. 14
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/entity/YieldOrder.java
  3. 5
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/entity/YieldOrderCraft.java
  4. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/AssayContentController.java
  5. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/MoldPlanController.java
  6. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/PlateGoodsApplyController.java
  7. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/PlateGoodsRecordController.java
  8. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java
  9. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldPlanController.java
  10. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java
  11. 96
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java
  12. 5
      blade-service/blade-desk/src/main/resources/application-dev.yml
  13. 2
      blade-service/blade-erpdata/Dockerfile
  14. 15
      blade-service/blade-scheduling/Dockerfile
  15. 2
      blade-service/blade-wms/Dockerfile
  16. 2
      doc/sql/mes/increase-251210.sql

@ -125,6 +125,29 @@ public interface YieldOrderConst {
Integer PRIORITY_ERP_SCH_IMP = 5;
//endregion
//region 生产订单 排产优先级
/**
* 1 极高紧急度 / 灾难性故障
*/
Integer PRIORITY_APS_CRITICAL = 1;
/**
* 2 高紧急度 / 严重故障
*/
Integer PRIORITY_APS_HIGH = 2;
/**
* 3 中紧急度
*/
Integer PRIORITY_APS_MEDIUM = 3;
/**
* 4 低紧急度
*/
Integer PRIORITY_APS_LOW = 4;
/**
* 5 正常
*/
Integer PRIORITY_APS_NORMAL = 5;
//endregion
//region 生产订单 校验结果,0:未验证,1:数据缺失,2:工艺缺失,3:资源缺失,4:交期冲突, 5:验证完成
/**
* 未验证

@ -211,20 +211,6 @@ public class YieldOrder extends BaseEntity {
@TableField(value = "BUSINESS_TYPE")
private Integer businessType;
/**
* 分派人员
*/
@TableField(value = "ASSIGN_MAN")
private Long assignMan;
/**
* 分派时间
*/
@DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
@JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
@TableField(value = "ASSIGN_TIME")
private Date assignTime;
/**
* 协作工序号
*/

@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springblade.core.mp.base.BaseEntity;
import java.math.BigDecimal;
import java.util.Date;
/**
@ -24,7 +23,7 @@ public class YieldOrderCraft extends BaseEntity {
* 生产订单
*/
@TableField(value = "YO_ID")
private String yoId;
private Long yoId;
/**
* C号 - 工艺编号
@ -54,7 +53,7 @@ public class YieldOrderCraft extends BaseEntity {
* 工时定额
*/
@TableField(value = "HOUR_QUOTA")
private BigDecimal hourQuota;
private Double hourQuota;
/**
* 工序Id

@ -1,17 +1,14 @@
package org.springblade.desk.order.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.annotation.IsAdministrator;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.order.entity.AssayContent;
@ -28,11 +25,8 @@ import java.util.List;
*
* @author lqk
*/
@Hidden
@NonDS
@RestController
@AllArgsConstructor
@IsAdministrator
@RequiredArgsConstructor
@RequestMapping("/order/assayContent")
@Tag(name = "化验含量", description = "接口")
public class AssayContentController extends BladeController {

@ -1,17 +1,14 @@
package org.springblade.desk.order.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.annotation.IsAdministrator;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.order.constant.MoldPlanConst;
@ -31,11 +28,8 @@ import java.util.List;
*
* @author lqk
*/
@Hidden
@NonDS
@RestController
@AllArgsConstructor
@IsAdministrator
@RequiredArgsConstructor
@RequestMapping("/order/moldPlan")
@Tag(name = "烧结模具计划", description = "接口")
public class MoldPlanController extends BladeController {

@ -2,17 +2,14 @@ package org.springblade.desk.order.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.annotation.IsAdministrator;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.order.entity.PlateGoodsApply;
@ -29,11 +26,8 @@ import java.util.List;
*
* @author lqk
*/
@Hidden
@NonDS
@RestController
@AllArgsConstructor
@IsAdministrator
@RequiredArgsConstructor
@RequestMapping("/order/plateGoodsApply")
@Tag(name = "镀层物料添加量申报", description = "接口")
public class PlateGoodsApplyController extends BladeController {

@ -1,17 +1,14 @@
package org.springblade.desk.order.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.annotation.IsAdministrator;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.order.constant.PlateGoodsConst;
@ -30,11 +27,8 @@ import java.util.List;
*
* @author lqk
*/
@Hidden
@NonDS
@RestController
@AllArgsConstructor
@IsAdministrator
@RequiredArgsConstructor
@RequestMapping("/order/plateGoodsRecord")
@Tag(name = "镀层物料需求申报", description = "接口")
public class PlateGoodsRecordController extends BladeController {

@ -1,7 +1,6 @@
package org.springblade.desk.order.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
@ -9,12 +8,10 @@ import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.annotation.IsAdministrator;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.order.entity.YieldOrder;
@ -30,11 +27,8 @@ import java.util.List;
*
* @author lqk
*/
@Hidden
@NonDS
@RestController
@AllArgsConstructor
@IsAdministrator
@RequiredArgsConstructor
@RequestMapping("/order/yieldOrder")
@Tag(name = "生产订单", description = "接口")
public class YieldOrderController extends BladeController {

@ -2,7 +2,6 @@ package org.springblade.desk.order.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
@ -10,15 +9,13 @@ import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springblade.common.constant.YieldPlanConst;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.annotation.IsAdministrator;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.common.constant.YieldPlanConst;
import org.springblade.desk.order.entity.YieldPlan;
import org.springblade.desk.order.service.IYieldPlanService;
import org.springframework.web.bind.annotation.*;
@ -30,11 +27,8 @@ import java.util.List;
*
* @author lqk
*/
@Hidden
@NonDS
@RestController
@AllArgsConstructor
@IsAdministrator
@RequiredArgsConstructor
@RequestMapping("/order/yieldPlan")
@Tag(name = "生产计划", description = "接口")
public class YieldPlanController extends BladeController {

@ -100,4 +100,18 @@ public interface IYieldOrderService extends BaseService<YieldOrder> {
* @return
*/
List<YieldOrder> listByFatherYoId(Long fatherYoId);
/**
* 从旧mes中同步带排产的生产订单
*
* @return
*/
List<String> syncYieldOrderFromOldMes();
/**
* 向旧mes推送同步结果
*
* @param cardNoList 生产订单流程卡号列表
*/
void syncYieldOrderResultToOldMes(List<String> cardNoList);
}

@ -1,25 +1,33 @@
package org.springblade.desk.order.service.impl;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.constant.YieldOrderConst;
import org.springblade.common.exception.BusinessException;
import org.springblade.common.utils.StringPrefixUtils;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.desk.dashboard.constant.DsPartConst;
import org.springblade.desk.dashboard.pojo.entity.DsCraftEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.service.IDsCraftService;
import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.common.constant.YieldOrderConst;
import org.springblade.desk.order.entity.YieldOrder;
import org.springblade.desk.order.entity.YieldOrderCraft;
import org.springblade.desk.order.mapper.YieldOrderMapper;
import org.springblade.desk.order.service.IYieldOrderCraftService;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.text.MessageFormat;
@ -36,10 +44,19 @@ import java.util.Random;
@Service
public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, YieldOrder> implements IYieldOrderService {
private final IYieldOrderCraftService yieldOrderCraftService;
private final IDsPartService dsPartService;
private final IDsCraftService dsCraftService;
@Value("${business.oldMes.url}")
private String oldMesUrl;
@Value("${business.oldMes.syncOrderList}")
private String addrSyncOrderList;
@Value("${business.oldMes.pushSyncResult}")
private String addrPushSyncResult;
@Override
public IPage<YieldOrder> selectPage(IPage<YieldOrder> page, YieldOrder entity) {
List<YieldOrder> dataList = baseMapper.selectPage(page, entity);
@ -220,6 +237,83 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
return subYieldOrderList;
}
@Override
public List<String> syncYieldOrderFromOldMes() {
List<String> cardNoList = new ArrayList<>();
String url = oldMesUrl + addrSyncOrderList;
String syncResult = HttpUtil.post(url, StringPool.EMPTY);
JSONObject jsonObject = JSON.parseObject(syncResult);
if (jsonObject.getInteger("code") == 0) {
JSONArray dataList = jsonObject.getJSONArray("data");
if (ObjectUtil.isEmpty(dataList)) {
return cardNoList;
}
for (Object dataItem : dataList) {
JSONObject jsonItem = JSON.parseObject(JSON.toJSONString(dataItem));
// 构建生产订单信息并保存
JSONObject yieldJson = jsonItem.getJSONObject("order");
YieldOrder yieldOrder = JSON.parseObject(JSON.toJSONString(yieldJson), YieldOrder.class);
yieldOrder.setYpCode(yieldJson.getString("poCode"));
yieldOrder.setYpArea(yieldJson.getDouble("poArea"));
yieldOrder.setYpQty(yieldJson.getLong("poQty"));
yieldOrder.setYpProductLine(yieldJson.getString("poProdLine"));
yieldOrder.setYpMemo(yieldJson.getString("poMemo"));
yieldOrder.setProductIdent(yieldJson.getString("prodIdent"));
yieldOrder.setRoamNoNext(yieldJson.getString("nextRoam"));
yieldOrder.setPriorityErp(yieldJson.getInteger("priority"));
if (YieldOrderConst.PRIORITY_ERP_NORMAL.equals(yieldOrder.getPriorityErp())) {
yieldOrder.setPriorityAps(YieldOrderConst.PRIORITY_APS_NORMAL);
} else {
yieldOrder.setPriorityAps(YieldOrderConst.PRIORITY_APS_LOW);
}
yieldOrder.setNewLevFlag(yieldJson.getString("newlevFlag"));
yieldOrder.setUseDeptCode(yieldJson.getString("useDeptcode"));
yieldOrder.setReceiveStatus(YieldOrderConst.RECEIVE_STATUS_YES);
yieldOrder.setReceiveUser(yieldJson.getLong("failureMan"));
yieldOrder.setReceiveTime(yieldJson.getDate("failureTime"));
yieldOrder.setStatus(YieldOrderConst.STATUS_APS);
this.save(yieldOrder);
// 构建生产订单工艺信息并保存
JSONArray craftArray = jsonItem.getJSONArray("craftList");
System.out.println(craftArray);
List<YieldOrderCraft> craftList = new ArrayList<>();
for (Object craftItem : craftArray) {
JSONObject craftJson = JSON.parseObject(JSON.toJSONString(craftItem));
YieldOrderCraft craft = new YieldOrderCraft();
craft.setYoId(yieldOrder.getId());
craft.setCraftNo(craftJson.getString("craftNo"));
craft.setProcessNo(craftJson.getString("processNo"));
craft.setStartTime(craftJson.getDate("startTime"));
craft.setEndTime(craftJson.getDate("endTime"));
craft.setHourQuota(craftJson.getDouble("hourQuota"));
craft.setMakeMemo(craftJson.getString("makeMemo"));
craft.setPid(craftJson.getLong("pid"));
craft.setRpId(craftJson.getLong("rpId"));
craft.setPpsId(craftJson.getLong("ppsId"));
craft.setMakeTeam(craftJson.getLong("makeTeam"));
craft.setWorkCenter(craftJson.getLong("wcId"));
craft.setOcId(craftJson.getLong("ocId"));
craft.setCaId(craftJson.getLong("caId"));
craftList.add(craft);
}
yieldOrderCraftService.saveBatch(craftList);
cardNoList.add(yieldOrder.getCardNo());
}
}
return cardNoList;
}
@Override
public void syncYieldOrderResultToOldMes(List<String> cardNoList) {
String url = oldMesUrl + addrPushSyncResult;
HttpUtil.post(url, JSON.toJSONString(cardNoList));
}
/**
* 验证零件子件信息
*

@ -9,3 +9,8 @@ spring:
username: ${blade.datasource.dev.username}
password: ${blade.datasource.dev.password}
business:
oldMes:
url: 127.0.0.1:32111
syncOrderList: /zhgd-rb/aiWebapi/syncApsOrderData
pushSyncResult: /zhgd-rb/aiWebapi/syncApsOrderDataResult

@ -6,7 +6,7 @@ RUN mkdir -p /blade/erp
WORKDIR /blade/erp
EXPOSE 8105
EXPOSE 8109
COPY ./target/blade-erp.jar ./app.jar

@ -0,0 +1,15 @@
FROM bladex/alpine-java:openjdk17_cn_slim
LABEL maintainer="bladejava@qq.com"
RUN mkdir -p /blade/scheduling
WORKDIR /blade/scheduling
EXPOSE 8107
COPY ./target/blade-scheduling.jar ./app.jar
ENTRYPOINT ["java", "--add-opens", "java.base/java.lang=ALL-UNNAMED", "--add-opens", "java.base/java.lang.reflect=ALL-UNNAMED", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
CMD ["--spring.profiles.active=test"]

@ -6,7 +6,7 @@ RUN mkdir -p /blade/wms
WORKDIR /blade/wms
EXPOSE 8105
EXPOSE 8110
COPY ./target/blade-wms.jar ./app.jar

@ -0,0 +1,2 @@
ALTER TABLE JONHON_MES.MES_YIELD_ORDER DROP COLUMN ASSIGN_MAN;
ALTER TABLE JONHON_MES.MES_YIELD_ORDER DROP COLUMN ASSIGN_TIME;
Loading…
Cancel
Save