diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/oldmes/PrWorkOrder.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/oldmes/PrWorkOrder.java new file mode 100644 index 000000000..fde1f2d4c --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/oldmes/PrWorkOrder.java @@ -0,0 +1,220 @@ +package org.springblade.desk.order.pojo.vo.oldmes; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; +import java.math.BigDecimal; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * @Description 车间订单 + * @Author lyj + * @Date 2022-09-05 + */ +@Data +public class PrWorkOrder { + + /** + * 未下达 + */ + public static Short RUN_STATUS_NORMAL = 1; + /** + * 已下达 + */ + public static Short RUN_STATUS_ISSUED = 2; + /** + * 加工中 + */ + public static Short RUN_STATUS_RECEIVE = 3; + /** + * 检验中 + */ + public static Short RUN_STATUS_CHECK = 4; + /** + * 工艺变更 + */ + public static Short RUN_STATUS_CRAFT_CHANGE = 5; + /** + * 审理中 + */ + public static Short RUN_STATUS_HEAR = 13; + /** + * 已完工 + */ + public static Short RUN_STATUS_COMPLETED = 15; + /** + * 已交接 + */ + public static Short RUN_STATUS_HANDOVER = 17; + /** + * 返工 + */ + public static Short RUN_STATUS_REWORK = 19; + /** + * 报废 + */ + public static Short RUN_STATUS_SCRAP = 20; + /** + * 已关闭 + */ + public static Short RUN_STATUS_VOIDED = 21; + /** + * 正常 + */ + public static Short PRIORITY_NORMAL = 1; + /** + * 项目要求日期急件 + */ + public static Short PRIORITY_PRO_IMP = 2; + /** + * 合同急件 + */ + public static Short PRIORITY_PACT_IMP = 3; + /** + * 会议绩效急件 + */ + public static Short PRIORITY_PERF_IMP = 4; + /** + * 调度标注急件 + */ + public static Short PRIORITY_SCH_IMP = 5; + /** + * 1:正常 + */ + public static Short APPROVAL_STATUS_NORMAL = 1; + /** + * 2:审批中 + */ + public static Short APPROVAL_STATUS_UNDER = 2; + /** + * 3:不通过 + */ + public static Short APPROVAL_STATUS_FAIL = 3; + /** + * 4:通过 + */ + public static Short APPROVAL_STATUS_VIA = 4; + /** + * 整单外协 + */ + public static Short OEM_TYPE_WHOLE = 1; + /** + * 工序外协 + */ + public static Short OEM_TYPE_SINGLE = 2; + /** + * 未领取 + */ + public static Short PICKING_STATUS_NOT = 0; + /** + * 已领取 + */ + public static Short PICKING_STATUS_OK = 1; + + public static Map runStatusMap = new HashMap<>(11); + public static Map priorityMap = new HashMap(5); + public static Map approvalStatusMap = new HashMap(4); + public static Map pickingStatusMap = new HashMap(2); + + static { + runStatusMap.put(RUN_STATUS_NORMAL, "未下达"); + runStatusMap.put(RUN_STATUS_ISSUED, "已下达"); + runStatusMap.put(RUN_STATUS_RECEIVE, "加工中"); + runStatusMap.put(RUN_STATUS_CHECK, "检验中"); + runStatusMap.put(RUN_STATUS_CRAFT_CHANGE, "工艺变更"); + runStatusMap.put(RUN_STATUS_HEAR, "审理中"); + runStatusMap.put(RUN_STATUS_COMPLETED, "已完工"); + runStatusMap.put(RUN_STATUS_HANDOVER, "已交接"); + runStatusMap.put(RUN_STATUS_REWORK, "已返工"); + runStatusMap.put(RUN_STATUS_SCRAP, "已报废"); + runStatusMap.put(RUN_STATUS_VOIDED, "已关闭"); + + priorityMap.put(PRIORITY_NORMAL, "正常"); + priorityMap.put(PRIORITY_PRO_IMP, "项目要求日期急件"); + priorityMap.put(PRIORITY_PACT_IMP, "合同急件"); + priorityMap.put(PRIORITY_PERF_IMP, "绩效零件"); + priorityMap.put(PRIORITY_SCH_IMP, "调度标注急件"); + + approvalStatusMap.put(APPROVAL_STATUS_NORMAL, "正常"); + approvalStatusMap.put(APPROVAL_STATUS_UNDER, "审批中"); + approvalStatusMap.put(APPROVAL_STATUS_FAIL, "审批不通过"); + approvalStatusMap.put(APPROVAL_STATUS_VIA, "审批通过"); + + pickingStatusMap.put(PICKING_STATUS_NOT, "未领取"); + pickingStatusMap.put(PICKING_STATUS_OK, "已领取"); + } + + private Long woId; + private Long yoId; + private String cardNo; + private String batchNo; + private String woCode; + private Double makeQty; + private Date planEndDate; + private Long wpId; + private Long tsId; + private Long ocId; + private Double inventoryQty; + private Short runStatus; + private Short pickingStatus; + private Boolean oem; + private Boolean oemOut; + private Short priority; + private Long worId; + private Short approvalStatus; + private Date createTime; + private Double scrapQty; + private Integer lossQty; + private Integer testQty; + private Short oemType; + private Long planner; + private Long dispatcher; + private Date sendDownTime; + private String reworkCode; + private String qcReworkCode; + private String reworkMemo; + private Integer reworkNo; + private Boolean printFlag; + private Long printMan; + private Date printTime; + private String printCode; + private Date putStoreTime; + private Long closeMan; + private Date closeTime; + private Date handoverTime; + private Double plateSingleQuota; + private Date demandDate; + private Boolean pushFlag; + private String plateGoodsCode; + private Long pgrId; + private Boolean quotaExceptional; + private String mesCardNo; + private Date receptionTime; + private Date outTime; + private Boolean collaborate; + private Date lastInstoreTime; + private Integer meetCycle; + private String memo; + private Short schedStatus; + private Short readStatus; + private Short oldRunStatus; + private Boolean reInStore; + private String tools; + private String recDept; + private String smBatch; +// private List subList; + private Integer producycle; + private String makeUnit; + private String moCode; + private String moLocal; + private String ybCode; + private String ybLocal; + private Boolean hrTypeBool; + private String jcName; + private String subRunStatus; + private String rsCode; + + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/oldmes/PrWorkPlan.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/oldmes/PrWorkPlan.java new file mode 100644 index 000000000..e7f1732c5 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/oldmes/PrWorkPlan.java @@ -0,0 +1,66 @@ +package org.springblade.desk.order.pojo.vo.oldmes; + +import lombok.Data; + +import java.util.Date; + +/** + * @author: liweidong + * @create: 2026-05-12 + */ +@Data +public class PrWorkPlan { + private Long pid; + private Long rpId; + private Long wpId; + private Long woId; + private Long ppsId; + private String orders; + private String makeMemo; + private Double hourQuota; + private Date startTime; + private Date endTime; + private Date factStartTime; + private Date factEndTime; + private Long makeTeam; + private Long subsidiaryTeam; + private Boolean oem; + private Long ocId; + private Boolean cruxProcess; + private Long frontWpId; + private Long nextWpId; + private Short status; + private Integer testQty; + private Integer lossQty; + private Double qualifiedQty; + private Double scrapQty; + private Double unqualifiedQty; + private Double workQty; + private Short bindStatus; + private Long receiveMan; + private Double hours; + private Double wpMoney; + private Long caId; + private Short printType; + private Short subType; + private String papers; + private String referenceFile; + private Date createTime; + private String wxno; + private Double flagQty; + private String flagColourOne; + private String flagColourTwo; + private String flagInk; + private String flagMatter; + private Double beltQty; + private String beltColourOne; + private String beltColourTwo; + private String beltInk; + private String beltMatter; + private String gjCode; + private String fbCode; + private String deviceCode; + private String createMan; + private String rtnCode; + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java index 1a176d36d..98e6c7529 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java @@ -6,6 +6,8 @@ import org.apache.ibatis.annotations.Param; import org.springblade.desk.order.pojo.dto.YieldOrderDto; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.enums.YieldOrderEnum; +import org.springblade.desk.order.pojo.vo.oldmes.PrWorkOrder; +import org.springblade.desk.order.pojo.vo.oldmes.PrWorkPlan; import java.util.List; @@ -44,4 +46,29 @@ public interface YieldOrderMapper extends BaseMapper { Long getWcId(Long orderId); YieldOrder getMaxByCodePattern(String codePattern); + + /** + * 查询老mes车间订单 + * @param cardNo + * @return + */ + PrWorkOrder selectOldMesPrWorkOrder(String cardNo); + + /** + * 查询老mes车间计划 + * + * @param woId + * @param makeTeam + * @return + */ + List selectOldMesPrWorkPlan( @Param("woId") Long woId,@Param("makeTeam") Long makeTeam ); + + /** + * 更新旧mes + * @param woId + * @param plateSingleQuota + * @return + */ + boolean updateOldMesPrWorkOrder(@Param("woId") Long woId, @Param("plateSingleQuota") double plateSingleQuota); + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml index 5db19ddcd..03599e0c3 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml @@ -16,7 +16,6 @@ yo.PLAN_DEPTCODE,yo.GLASS_BISCUIT_STATUS,yo.QUOTA1,yo.QUOTA2,yo.PLATE_THICKNESS1,yo.PLATE_THICKNESS2 - + + + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java index 4bf0b0d30..504dbc56f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java @@ -35,6 +35,8 @@ import org.springblade.desk.order.pojo.entity.PlateGoodsRecordDetail; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.enums.PlateGoodsEnum; import org.springblade.desk.order.pojo.enums.YieldOrderEnum; +import org.springblade.desk.order.pojo.vo.oldmes.PrWorkOrder; +import org.springblade.desk.order.pojo.vo.oldmes.PrWorkPlan; import org.springblade.desk.order.service.IPlateGoodsRecordDetailService; import org.springblade.desk.order.service.IPlateGoodsRecordService; import org.springblade.scheduling.pojo.entity.CraftAbilityEntity; @@ -44,6 +46,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -386,6 +389,43 @@ public class PlateGoodsRecordServiceImpl extends BaseServiceImpl workPlanList = yieldOrderMapper.selectOldMesPrWorkPlan(prWorkOrder.getWoId(), makeTeam); + if (CollectionUtils.isEmpty(workPlanList)) { + log.info("旧mes未查询到车间作业计划,woId:{}", prWorkOrder.getWoId()); + return true; + } + + // 校验除数不为0 + if (ypQty == 0d) { + log.error("ypQty为空或为0,无法计算镀层单件定额,cardNo:{}", yieldOrder.getCardNo()); + return false; + } + + // 计算镀层单件定额(保留6位小数) + BigDecimal goodsDemand = yieldOrder.getGoodsDemand(); + BigDecimal plateSingleQuotaDecimal = goodsDemand.divide(BigDecimal.valueOf(ypQty), 6, RoundingMode.HALF_UP); + double plateSingleQuota = plateSingleQuotaDecimal.doubleValue(); + + // 更新旧mes + boolean updateCount = yieldOrderMapper.updateOldMesPrWorkOrder(prWorkOrder.getWoId(), plateSingleQuota); + if (!updateCount) { + log.error("更新旧mes镀层单件定额失败,woId:{},plateSingleQuota:{}", prWorkOrder.getWoId(), plateSingleQuota); + return false; + } + + log.info("更新旧mes镀层单件定额成功,woId:{},plateSingleQuota:{}", prWorkOrder.getWoId(), plateSingleQuota); + + }else{ return true; }