Merge remote-tracking branch 'origin/master'

# Conflicts:
#	blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java
#	blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java
liweidong
绫Umbrella 4 weeks ago
commit 466b209d5d
  1. 32
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IMoldApplyClient.java
  2. 32
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IOrderClient.java
  3. 10
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsApply.java
  4. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsRecord.java
  5. 29
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrderCraft.java
  6. 5
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldPlan.java
  7. 52
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpYieldOrderClient.java
  8. 18
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpYieldOrderClientFallback.java
  9. 53
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/MoldApplyClient.java
  10. 53
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/OrderClient.java
  11. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyMapper.java
  12. 13
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyMapper.xml
  13. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsRecordMapper.xml
  14. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderCraftMapper.xml
  15. 25
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IMoldApplyService.java
  16. 33
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java
  17. 16
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldPlanService.java
  18. 35
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldApplyServiceImpl.java
  19. 25
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsApplyServiceImpl.java
  20. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java
  21. 82
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java
  22. 50
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java
  23. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java
  24. 25
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java
  25. 31
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpYieldOrderClientImpl.java
  26. 21
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.java
  27. 30
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.xml
  28. 29
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpYieldOrderService.java
  29. 58
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpYieldOrderServiceImpl.java
  30. 122
      doc/sql/mes/increase-20690312.sql
  31. 10
      doc/sql/mes/increase-260120.sql

@ -0,0 +1,32 @@
package org.springblade.desk.order.feign;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.desk.order.pojo.entity.MoldApply;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
/**
* 模具计划接口声明
*
* @author lqk
*/
@FeignClient(
value = AppConstant.APPLICATION_DESK_NAME
)
public interface IMoldApplyClient {
String API_PREFIX = "/feign/moldApply/";
String SAVE_BY_DEMAND = API_PREFIX + "/saveByDemand";
/**
* 生成模具计划
*
* @param moldApply
* @return
*/
@GetMapping(SAVE_BY_DEMAND)
Boolean saveByDemand(MoldApply moldApply);
}

@ -0,0 +1,32 @@
package org.springblade.desk.order.feign;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.desk.order.pojo.entity.YieldPlan;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
/**
* 模具计划接口声明
*
* @author lqk
*/
@FeignClient(
value = AppConstant.APPLICATION_DESK_NAME
)
public interface IOrderClient {
String API_PREFIX = "/feign/order/";
String SAVE_GLASS_CAKE = API_PREFIX + "/saveGlassCake";
/**
* 生成玻璃饼烧结计划并下达
*
* @param yieldPlan
* @return
*/
@GetMapping(SAVE_GLASS_CAKE)
Boolean saveGlassCake(YieldPlan yieldPlan);
}

@ -2,6 +2,8 @@ package org.springblade.desk.order.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springblade.core.mp.base.BaseEntity;
@ -21,6 +23,11 @@ public class PlateGoodsApply extends BaseEntity {
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/**
* 申报单号
*/
@TableField(value = "APPLY_CODE")
private String applyCode;
/**
* 作业中心
@ -74,6 +81,7 @@ public class PlateGoodsApply extends BaseEntity {
/**
* 本次申报添加量 = 班组预添加量
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
@Schema(description = "本次申报添加量")
@TableField(value = "GOODS_ADD_TOTAL")
private BigDecimal goodsAddTotal;
@ -81,6 +89,7 @@ public class PlateGoodsApply extends BaseEntity {
/**
* 本次申报物料需求单总物料需求剩余量 = 可使用定额
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
@Schema(description = "本次申报总物料需求剩余量")
@TableField(value = "GOODS_DEMAND_TOTAL")
private BigDecimal goodsDemandTotal;
@ -88,6 +97,7 @@ public class PlateGoodsApply extends BaseEntity {
/**
* 本次申报物料需求单已申报定额总量(已添加总量 = 累计结余
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
@Schema(description = "已申报定额总量")
@TableField(value = "DECLARED_QUOTA_TOTAL")
private BigDecimal declaredQuotaTotal;

@ -129,10 +129,4 @@ public class PlateGoodsRecord extends BaseEntity {
*/
@TableField(value = "SURPLUS")
private BigDecimal surplus;
/**
* 本次关联订单数量
*/
@TableField(value = "DETAIL_ORDER_NUM")
private Integer detailOrderNum;
}

@ -32,15 +32,33 @@ public class YieldOrderCraft extends BaseEntity {
private String craftNo;
/**
* 工序排序序号
* 工序IdDS_PROCESS
*/
@TableField(value = "PID")
private Long pid;
/**
* 工序排序序号 - 工序冗余字段
*/
@TableField(value = "PROCESS_NO")
private String processNo;
/**
* 工序编码 - 工序冗余字段
*/
@TableField(value = "PROCESS_CODE")
private String processCode;
/**
* 工序名称 - 工序冗余字段
*/
@TableField(value = "PROCESS_NAME")
private String processName;
/**
* 工序设置ID bs_procedure_set
*/
@TableField(value = "PPS_ID")
@TableField(value = "BS_PROCESS_SET")
private Long ppsId;
/**
@ -55,11 +73,6 @@ public class YieldOrderCraft extends BaseEntity {
@TableField(value = "HOUR_QUOTA")
private Double hourQuota;
/**
* 工序Id
*/
@TableField(value = "PID")
private Long pid;
/**
* 计划开始
@ -92,7 +105,7 @@ public class YieldOrderCraft extends BaseEntity {
private Long ocId;
/**
* 工艺能力 craft_ability
* 工艺能力 BS_CRAFT_ABILITY
*/
@TableField(value = "CA_ID")
private Long caId;

@ -7,7 +7,6 @@ import lombok.Data;
import org.springblade.core.mp.base.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
@ -110,13 +109,13 @@ public class YieldPlan extends BaseEntity {
* 已交件数量
*/
@TableField(value = "DELIVERY_QTY")
private Long deliveryQty;
private Double deliveryQty;
/**
* 已分批数量
*/
@TableField(value = "ALREADY_BRANCH_QTY")
private Long alreadyBranchQty;
private Double alreadyBranchQty;
/**
* 一级工艺线路

@ -0,0 +1,52 @@
package org.springblade.erpdata.feign;
import org.springblade.common.constant.LauncherConstant;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Date;
/**
* 外协相关erp操作Feign接口类
*
* @author qyl
* @since 2026-02-27
*/
@FeignClient(
value = LauncherConstant.APPLICATION_ERP_DATA_NAME,
fallback = IErpDataOemClientFallback.class
)
public interface IErpYieldOrderClient {
String API_PREFIX = "/feign/erp/yieldOrder";
String SAVE_GLASS_CAKE = API_PREFIX + "/saveGlassCake";
/**
* 生成玻璃饼订单
*
* @param yoCode
* @param cardNo
* @param batchNo
* @param prodIdent
* @param demandDate
* @param planUser
* @param ypCode
* @param poQty
* @param partCode
* @param quota
*/
@GetMapping(SAVE_GLASS_CAKE)
void saveGlassCake(@RequestParam("yoCode") String yoCode,
@RequestParam("cardNo") String cardNo,
@RequestParam("batchNo") String batchNo,
@RequestParam("prodIdent") String prodIdent,
@RequestParam("demandDate") Date demandDate,
@RequestParam("planUser") String planUser,
@RequestParam("ypCode") String ypCode,
@RequestParam("poQty") Long poQty,
@RequestParam("partCode") String partCode,
@RequestParam("quota") Double quota);
}

@ -0,0 +1,18 @@
package org.springblade.erpdata.feign;
import java.util.Date;
/**
* Feign接口类
*
* @author liuqingkun
*/
public class IErpYieldOrderClientFallback implements IErpYieldOrderClient {
@Override
public void saveGlassCake(String yoCode, String cardNo, String batchNo, String prodIdent, Date demandDate, String planUser, String ypCode, Long poQty, String partCode, Double quota) {
}
}

@ -0,0 +1,53 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.desk.order.feign;
import io.swagger.v3.oas.annotations.Hidden;
import lombok.RequiredArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.desk.order.pojo.entity.MoldApply;
import org.springblade.desk.order.service.IMoldApplyService;
import org.springframework.web.bind.annotation.RestController;
/**
* Feign 排产相关定时任务接口
*
* @author Chill
*/
@NonDS
@Hidden()
@RestController
@RequiredArgsConstructor
public class MoldApplyClient implements IMoldApplyClient {
private final IMoldApplyService moldApplyService;
@Override
public Boolean saveByDemand(MoldApply moldApply) {
return moldApplyService.saveByDemand(moldApply);
}
}

@ -0,0 +1,53 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.desk.order.feign;
import io.swagger.v3.oas.annotations.Hidden;
import lombok.RequiredArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.desk.order.pojo.entity.YieldPlan;
import org.springblade.desk.order.service.IYieldPlanService;
import org.springframework.web.bind.annotation.RestController;
/**
* Feign 排产相关定时任务接口
*
* @author Chill
*/
@NonDS
@Hidden()
@RestController
@RequiredArgsConstructor
public class OrderClient implements IOrderClient {
private final IYieldPlanService yieldPlanService;
@Override
public Boolean saveGlassCake(YieldPlan yieldPlan) {
yieldPlanService.saveGlassCake(yieldPlan);
return null;
}
}

@ -22,4 +22,12 @@ public interface PlateGoodsApplyMapper extends BaseMapper<PlateGoodsApply> {
* @return
*/
List<PlateGoodsApply> selectPage(IPage page, PlateGoodsApply entity);
/**
* 查询当前库中的最大编码
*
* @param codePattern
* @return
*/
String getMaxByCodePattern(String codePattern);
}

@ -5,7 +5,7 @@
<mapper namespace="org.springblade.desk.order.mapper.PlateGoodsApplyMapper">
<sql id = "baseCommonFields">
ID, TENANT_ID, CREATE_USER, CREATE_TIME, CREATE_DEPT, UPDATE_USER, UPDATE_TIME, STATUS, IS_DELETED,
APPROVAL_MAN, APPROVAL_TIME, APPROVAL_STATUS, APPROVAL_MEMO, WC_ID, GOODS_CODE, GOODS_DEMAND, GOODS_NAME,
APPLY_CODE,APPROVAL_MAN, APPROVAL_TIME, APPROVAL_STATUS, APPROVAL_MEMO, WC_ID, GOODS_CODE, GOODS_DEMAND, GOODS_NAME,
GOODS_ADD_TOTAL, GOODS_DEMAND_TOTAL, DECLARED_QUOTA_TOTAL
</sql>
@ -23,4 +23,15 @@
AND status = #{entity.status}
</if>
</select>
<select id = "getMaxByCodePattern" resultType = "string">
SELECT *
FROM(
SELECT APPLY_CODE
FROM MES_PLATE_GOODS_APPLY
WHERE IS_DELETED = 0 AND APPLY_CODE LIKE CONCAT(#{codePattern}, '%')
ORDER BY APPLY_CODE DESC
)
WHERE ROWNUM = 1
</select>
</mapper>

@ -9,7 +9,7 @@
WC_ID, GOODS_CODE, GOODS_DEMAND, SILVER_POTASSIUM, COEFFICIENT, APPROVAL_MAN, APPROVAL_TIME,
APPROVAL_STATUS, APPROVAL_MEMO, DECLARED_QUOTA, DECLARED_SILVER, DECLARED_STATUS, GOODS_BO_ID,
COEFFICIENT_BO_ID, PGR_CODE, SURPLUS, SILVER_POTASSIUM_RESIDUE, DEMAND_CODE, INVOLVING_RECORD_CODE,
NOT_ADD_VAL, DETAIL_ORDER_NUM
NOT_ADD_VAL
</sql>
<select id = "selectPage" resultType = "org.springblade.desk.order.pojo.entity.PlateGoodsRecord">

@ -5,8 +5,8 @@
<mapper namespace="org.springblade.desk.order.mapper.YieldOrderCraftMapper">
<select id = "selectPage" resultType = "org.springblade.desk.order.pojo.entity.YieldOrderCraft">
SELECT ID, TENANT_ID, CREATE_USER, CREATE_DEPT, CREATE_TIME, UPDATE_USER, UPDATE_TIME, STATUS, IS_DELETED,
YO_ID, CRAFT_NO, PROCESS_NO, PPS_ID, MAKE_MEMO, HOUR_QUOTA, PID, START_TIME, END_TIME, MAKE_TEAM, OC_ID,
CA_ID, RP_ID, WORK_CENTER_ID
YO_ID, CRAFT_NO, PROCESS_NO, PPS_ID, MAKE_MEMO, HOUR_QUOTA, PID, START_TIME, END_TIME, MAKE_TEAM,
OC_ID, CA_ID, RP_ID, WORK_CENTER_ID, IS_OUTSOURCE, PROCESS_CODE, PROCESS_NAME
FROM MES_YIELD_ORDER_CRAFT
WHERE IS_DELETED = 0
</select>

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.order.pojo.entity.MoldApply;
import java.util.Date;
import java.util.List;
/**
@ -46,4 +47,28 @@ public interface IMoldApplyService extends BaseService<MoldApply> {
* @return
*/
boolean saveBatchByPage(List<MoldApply> applyList);
/**
* 下达模具计划
*
* @param partCode
* @param moCode
* @param planType
* @param quantity
* @param needDate
* @param level
* @param keeper
* @param createMan
* @param memo
* @return
*/
String createMoldPlan(String partCode,
String moCode,
String planType,
Integer quantity,
Date needDate,
String level,
String keeper,
String createMan,
String memo);
}

@ -6,7 +6,9 @@ import jakarta.validation.constraints.NotEmpty;
import org.springblade.common.exception.BusinessException;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.pojo.entity.YieldPlan;
import java.util.List;
@ -55,6 +57,15 @@ public interface IYieldOrderService extends BaseService<YieldOrder> {
*/
IPage<YieldOrder> pageMaterialApply(IPage<YieldOrder> page, Long wcId, Integer materialType, Integer overHalfMon);
/**
* 查询是否存在玻璃饼生产订单
*
* @param partCode
* @param memo
* @return
*/
List<YieldOrder> findByPartCodeAndMemo(String partCode, String memo);
/**
* 数据校验
*
@ -213,9 +224,29 @@ public interface IYieldOrderService extends BaseService<YieldOrder> {
* @param cardNo 旧单号
* @return java.lang.String
*/
String getNewCardNo(String cardNo);
String getNewCardNo(String cardNo);
Long getWcId(Long orderId);
R getCardNo(String cardNo);
/**
* 下达玻璃饼生产订单
*
* @param yieldPlan
* @param dsPart
*/
void saveGlassCake(YieldPlan yieldPlan, DsPartEntity dsPart);
/**
* 下达玻璃饼生产订单 - 调用ERP存储过程
*
* @param yoCode
* @param cardNo
* @param batchNo
* @param po
* @param dsPartSub
*/
void saveGlassCake(String yoCode, String cardNo, String batchNo, YieldPlan po, DsPartEntity dsPartSub);
}

@ -48,6 +48,22 @@ public interface IYieldPlanService extends BaseService<YieldPlan> {
*/
List<JSONObject> getFirstProcess(String partCode);
/**
* 保存生产计划
*
* @param yieldPlan
* @return
*/
Boolean saveYieldPlan(YieldPlan yieldPlan);
/**
* 根据生产计划生成玻璃饼订单
*
* @param yieldPlan
* @return
*/
Boolean saveGlassCake(YieldPlan yieldPlan);
/**
* 根据生产计划ID生成玻璃饼订单
*

@ -11,6 +11,7 @@ import org.springblade.desk.order.pojo.enums.MoldApplyEnum;
import org.springblade.desk.order.service.IMoldApplyService;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
@ -51,4 +52,38 @@ public class MoldApplyServiceImpl extends BaseServiceImpl<MoldApplyMapper, MoldA
return saveBatch(applyList);
}
@Override
public String createMoldPlan(String partCode, String moCode, String planType, Integer quantity, Date needDate, String level, String keeper, String createMan, String memo) {
//TODO 调用ERP存储过程
// ProcedureCall pc = this.getSession().createStoredProcedureCall("dba_mgr.pro_rbtoolreqm@erp_mes_link");
// pc.registerParameter("v_prtno", String.class, ParameterMode.IN).bindValue(partCode);
// pc.registerParameter("v_toolcode", String.class, ParameterMode.IN).bindValue(moCode);
// pc.registerParameter("v_plntype", String.class, ParameterMode.IN).bindValue(plantype);
// pc.registerParameter("v_tlreqqty", Integer.class, ParameterMode.IN).bindValue(quantity);
// pc.registerParameter("v_tlreqdat", Date.class, ParameterMode.IN).bindValue(needDate);
// pc.registerParameter("v_prtmdept", String.class, ParameterMode.IN).bindValue("3600");
// pc.registerParameter("v_prtlotno", String.class, ParameterMode.IN).bindValue(level);
// pc.registerParameter("v_WARCTLR", String.class, ParameterMode.IN).bindValue(keeper);
// pc.registerParameter("v_operator", String.class, ParameterMode.IN).bindValue(createMan);
// pc.registerParameter("v_remark", String.class, ParameterMode.IN).bindValue(StringUtils.isBlank(memo) ? "" : memo);
// pc.registerParameter("v_stat", String.class, ParameterMode.IN).bindValue("0");
// pc.registerParameter("v_toolid1", String.class, ParameterMode.IN).bindValue("");
// //设置输出参数
// pc.registerParameter("v_excnote", String.class, ParameterMode.OUT);
// pc.registerParameter("v_excflag", String.class, ParameterMode.OUT);
// pc.registerParameter("v_toolid", String.class, ParameterMode.OUT);
//
// //获取输出参数的值
// String excnote = pc.getOutputs().getOutputParameterValue("v_excnote").toString();
// String excflag = pc.getOutputs().getOutputParameterValue("v_excflag").toString();
// String wxno = pc.getOutputs().getOutputParameterValue("v_toolid").toString();
// if (excflag.equals("0")) {
// throw new BusinessException("utils.interface.call.failed", new String[]{"模具计划发送erp", excnote});
// }
// return wxno;
return "";
}
}

@ -3,6 +3,7 @@ package org.springblade.desk.order.service.impl;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor;
import org.springblade.common.utils.StringPrefixUtils;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
@ -71,6 +72,7 @@ public class PlateGoodsApplyServiceImpl extends BaseServiceImpl<PlateGoodsApplyM
return false;
}
apply.setApplyCode(generateCode());
// 初始化物料需求申报的部分数据
apply.setCreateTime(DateTime.now());
apply.setCreateUser(AuthUtil.getUserId());
@ -137,11 +139,28 @@ public class PlateGoodsApplyServiceImpl extends BaseServiceImpl<PlateGoodsApplyM
apply.setGoodsDemandTotal(goodsDemandTotal);
apply.setDeclaredQuotaTotal(declaredQuotaTotal);
for (PlateGoodsRecord plateGoodsRecord : addRecordList) {
plateGoodsRecord.setDetailOrderNum(addRecordList.size());
}
goodsRecordService.updateBatchById(addRecordList);
this.save(apply);
return true;
}
private String generateCode() {
// 自增总长度
int len = 3;
// 自增值
int num = 0;
// 编码模式
String codePattern = DateUtil.today();
// 当前模式下最大编码
String code = baseMapper.getMaxByCodePattern(codePattern);
if (code != null) {
num = Integer.parseInt(code.substring(codePattern.length(), codePattern.length() + len));
}
num++;
// 下个编码
return codePattern + StringPrefixUtils.prefix(String.valueOf(num), "0", len);
}
}

@ -83,7 +83,6 @@ public class PlateGoodsRecordServiceImpl extends BaseServiceImpl<PlateGoodsRecor
entity.setSurplus(entity.getGoodsDemand());
entity.setStatus(PlateGoodsEnum.STATUS_WAITING.getCode());
entity.setApprovalStatus(PlateGoodsEnum.STATUS_WAITING.getCode());
entity.setDetailOrderNum(detailList.size());
if (StringUtils.isEmpty(entity.getGoodsName())) {
entity.setGoodsName(PlateGoodsConst.GOODS_NAME_MAP.get(entity.getGoodsCode()));
}

@ -34,11 +34,13 @@ import org.springblade.desk.order.constant.YieldOrderConst;
import org.springblade.desk.order.mapper.YieldOrderMapper;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.pojo.entity.YieldOrderCraft;
import org.springblade.desk.order.pojo.entity.YieldPlan;
import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
import org.springblade.desk.order.service.IYieldOrderCraftService;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.WorkOrderMapper;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.erpdata.feign.IErpYieldOrderClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -63,6 +65,8 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
private final IDsProcessService dsProcessService;
private final WorkOrderMapper workOrderMapper;
private final IErpYieldOrderClient yieldOrderClient;
@Value("${business.oldMes.url}")
private String oldMesUrl;
@Value("${business.oldMes.syncOrderList}")
@ -122,6 +126,16 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
return page.setRecords(dataList);
}
@Override
public List<YieldOrder> findByPartCodeAndMemo(String partCode, String memo) {
LambdaQueryWrapper<YieldOrder> queryWrapper = Wrappers.lambdaQuery(YieldOrder.class)
.eq(YieldOrder::getIsDeleted, CommonConstant.DELETE_FALSE)
.eq(YieldOrder::getPartCode, partCode)
.eq(YieldOrder::getMemo, memo);
List<YieldOrder> yieldOrderList = baseMapper.selectList(queryWrapper);
return yieldOrderList;
}
@Override
public String dataVerify(List<Long> ids) {
// 先根据ID查询订单列表
@ -726,6 +740,20 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
return null;
}
@Override
public void saveGlassCake(YieldPlan yieldPlan, DsPartEntity dsPart) {
String yoCode = this.nextBlbCode(0);
String cardNo = this.nextBlbCode(1);
String batchNo = this.nextBlbCode(2);
this.saveGlassCake(yoCode, cardNo, batchNo, yieldPlan, dsPart);
}
@Override
public void saveGlassCake(String yoCode, String cardNo, String batchNo, YieldPlan po, DsPartEntity dsPartSub) {
yieldOrderClient.saveGlassCake(yoCode, cardNo, batchNo, po.getProductIdent(), po.getDemandDate(), po.getPlanUser().toString(),
po.getYpCode(), po.getYpQty(), dsPartSub.getPartCode(), dsPartSub.getQuota());
}
@Override
public R getCardNo(String cardNo) {
if (cardNo.isEmpty()) {
@ -774,7 +802,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
DsPartEntity dsPart = dsPartService.selectDsPartByPatCodeAndVersion(dsPartSub.getPartCode(),null);
//验证子件是否存在对应零件,不存在则提示异常。
if (dsPart == null) {
String errMsg = MessageFormat.format("子件{0}未编制!", dsPartSub.getPartCode());
String errMsg = MessageFormat.format("子件{}未编制!", dsPartSub.getPartCode());
throw new BusinessException(errMsg);
}
Integer yieldType = YieldOrderEnum.YIELD_TYPE_6.getCode();
@ -791,7 +819,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
//验证子件是否存在二级工艺路线
dsCraftList = dsCraftService.listByPartId(dsPart.getId());
if (dsCraftList == null || dsCraftList.size() == 0) {
String errMsg = MessageFormat.format("子件{0}未编制二级工艺!", dsPartSub.getPartCode());
String errMsg = MessageFormat.format("子件{}未编制二级工艺!", dsPartSub.getPartCode());
throw new BusinessException(errMsg);
}
@ -800,7 +828,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
if (DsPartConst.SIN_TER_TYPE_KT.equals(dsPartSub.getSinTerType()) || DsPartConst.SIN_TER_TYPE_CZ.equals(dsPartSub.getSinTerType())) {
roamNo = dsPartService.findRoamNoByPartCode(dsPartSub.getPartCode());
if (StringUtils.isBlank(roamNo)) {
String errMsg = MessageFormat.format("子件{0}未找到对应B号,请在ERP核查子件一级路线!", dsPartSub.getPartCode());
String errMsg = MessageFormat.format("子件{}未找到对应B号,请在ERP核查子件一级路线!", dsPartSub.getPartCode());
throw new BusinessException(errMsg);
}
}
@ -869,7 +897,8 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
int len = 5;
String codePattern = "R" + DateUtil.today() + StringPrefixUtils.prefix(String.valueOf(new Random().nextInt(10000)), "0", len);
LambdaQueryWrapper<YieldOrder> wrapper = Wrappers.lambdaQuery(YieldOrder.class).eq(YieldOrder::getCardNo, codePattern);
LambdaQueryWrapper<YieldOrder> wrapper = Wrappers.lambdaQuery(YieldOrder.class)
.eq(YieldOrder::getCardNo, codePattern);
YieldOrder yieldOrder = baseMapper.selectOne(wrapper);
if (yieldOrder != null && yieldOrder.getId() != null) {
@ -879,23 +908,54 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
}
}
private int getMaxCodeByPattern(String codePattern, int len){
// 自增值
int num = 0;
LambdaQueryWrapper<YieldOrder> wrapper = Wrappers.lambdaQuery(YieldOrder.class)
.likeRight(YieldOrder::getBatchNo, codePattern)
.orderBy(true, false, YieldOrder::getYoCode);
YieldOrder yieldOrder = baseMapper.selectOne(wrapper);
if (yieldOrder != null) {
num = Integer.parseInt(yieldOrder.getBatchNo().substring(codePattern.length(), codePattern.length() + len));
}
num++;
return num;
}
private String nextBatchNo() {
// 自增总长度
int len = 3;
// 自增值
int num = 0;
// 编码模式
String codePattern = "R" + DateUtil.today();
int num = this.getMaxCodeByPattern(codePattern, len);
LambdaQueryWrapper<YieldOrder> wrapper = Wrappers.lambdaQuery(YieldOrder.class).likeRight(YieldOrder::getBatchNo, codePattern).orderBy(true, false, YieldOrder::getYoCode);
YieldOrder yieldOrder = baseMapper.selectOne(wrapper);
// 下个编码
return codePattern + StringPrefixUtils.prefix(String.valueOf(num), "0", len);
}
if (yieldOrder != null) {
num = Integer.parseInt(yieldOrder.getBatchNo().substring(codePattern.length(), codePattern.length() + len));
/**
* @param codeType 0:订单号1流程卡号2批次号
* @return String
* @Description: 用于给玻璃饼产生对应的订单号 流程卡号批次号
* @Author dxl
* @CreateTime 2023/10/12 16:03
*/
private String nextBlbCode(int codeType) {
// 自增总长度
int len = 5;
if (codeType == 2) {
len = 3;
}
num++;
// 编码模式
String codePattern = "RB" + DateUtil.today();
int num = this.getMaxCodeByPattern(codePattern, len);
// 下个编码
if (codeType == 0) {
codePattern = "WO-B" + DateUtil.today();
}
return codePattern + StringPrefixUtils.prefix(String.valueOf(num), "0", len);
}

@ -11,7 +11,9 @@ import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.api.ResultCode;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.desk.dashboard.constant.DsPartConst;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.order.mapper.YieldPlanMapper;
@ -100,25 +102,43 @@ public class YieldPlanServiceImpl extends BaseServiceImpl<YieldPlanMapper, Yield
return resultList;
}
@Override
public Boolean saveYieldPlan(YieldPlan yieldPlan) {
yieldPlan.setDominantDept("3400");
yieldPlan.setCreateTime(DateUtil.now());
yieldPlan.setStatus(YieldPlanEnum.STATUS_NORMAL.getCode());
yieldPlan.setDeliveryQty(0d);
yieldPlan.setAlreadyBranchQty(0d);
this.save(yieldPlan);
return Boolean.TRUE;
}
@Override
public Boolean saveGlassCake(YieldPlan yieldPlan) {
// 调用生产订单服务类中方法,生成玻璃饼订单并保存
List<DsPartEntity> glassCakePartList = dsPartService.selectDsPartByPatCode(yieldPlan.getPartCode(), DsPartConst.SIN_TER_TYPE_BLB);
if (glassCakePartList != null && glassCakePartList.size() > 0) {
for (DsPartEntity dsPart : glassCakePartList) {
//不包含玻璃字样的代表维护错误,跳过
if (StringUtils.isBlank(dsPart.getPartCode()) || StringUtils.isBlank(dsPart.getPartName()) || !dsPart.getPartName().contains("玻璃")) {
continue;
}
List<YieldOrder> glassCakeOrderList = yieldOrderService.findByPartCodeAndMemo(dsPart.getPartCode(), yieldPlan.getYpCode());
if (glassCakeOrderList == null || glassCakeOrderList.size() == 0) {
yieldOrderService.saveGlassCake(yieldPlan, dsPart);
}
}
}
return true;
}
@Override
public Boolean saveGlassCake(String yieldPlanId) {
// 根据ID查询生产计划信息
YieldPlan yieldPlan = baseMapper.selectById(yieldPlanId);
//TODO 调用生产订单服务类中方法,生成玻璃饼订单并保存
// List<DsPartSub> blbSubList = dsPartSubService.listByPartCode(yieldPlan.getPartCode(), DsPartSub.SIN_TER_TYPE_BLB);
// if (blbSubList != null && blbSubList.size() > 0) {
// List<PjYieldOrder> blbList = null;
// for (DsPartSub dps : blbSubList) {
// //不包含玻璃字样的代表维护错误,跳过
// if (StringUtils.isBlank(dps.getSubCode()) || StringUtils.isBlank(dps.getSubName()) || !dps.getSubName().contains("玻璃")) {
// continue;
// }
// blbList = pjYieldOrderService.findByPartCodeAndMemo(dps.getSubCode(), yieldPlan.getYpCode());
// if (blbList == null || blbList.size() == 0) {
// pjYieldOrderService.saveBlbOrder(po, dps);
// }
// }
// }
this.saveGlassCake(yieldPlan);
return true;
}

@ -43,5 +43,6 @@ public interface WorkPlanMapper extends BaseMapper<WorkPlan> {
List<ProduceMonitorSlotListVO> listSlotInfoGr (Long wpId, Boolean aTrue);
List<ProduceMonitorSlotListVO> listSlotInfo (Long wpId,Boolean aTrue);
List<MacToolUse> listMacToolUse(Long wpId,Boolean aTrue);
}

@ -35,6 +35,7 @@ import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.order.mapper.YieldOrderMapper;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.WorkOrderMapper;
import org.springblade.desk.produce.mapper.WorkPlanMapper;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
@ -104,8 +105,11 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
private IRemindMsgService service;
@Resource
private WorkPlanMapper workPlanMapper;
// @Resource
// private IWorkOrderService workOrderService;
@Resource
private IWorkOrderService workOrderService;
private WorkOrderMapper workOrderMapper;
@Resource
private YieldOrderMapper yieldOrderMapper;
@Resource
@ -404,7 +408,8 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
return null;
}
JSONObject jsonObj = new JSONObject();
WorkOrder wo = workOrderService.getById(woId);
// WorkOrder wo = workOrderService.getById(woId);
WorkOrder wo = workOrderMapper.selectById(woId);
YieldOrder pjYieldOrder = yieldOrderMapper.selectById(wo.getYoId());
QueryWrapper<DsPartEntity> qwpart = new QueryWrapper<>();
qwpart.eq("PART_CODE", pjYieldOrder.getPartCode());
@ -446,7 +451,7 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
// 生产过程(放在获取检验记录下面,这个方法会排除数据)
this.getNewProcess(wpList, jsonObj, planList);
return null;
return jsonObj;
}
public void getNewProcess(List<WorkPlan> wpList, JSONObject jsonObj, List<Boolean> modelFlag) {
@ -498,7 +503,19 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
// 2025-07-23 线上迁移修改 删除了prMacToolUseService.listSlotInfo方法调用
workPlan.setSlotList(slotList);
}
// 设备编号信息(从设备,工装使用记录获取)
// List<MacToolUse> mtuList = workPlanMapper.listMacToolUse(workPlan.getWpId(), Boolean.FALSE);
// if (mtuList.size() > 0) {
// // 设备编号
// String gj = StringUtils.join(mtuList.stream().filter(i -> i.getBsRackSet() != null).map(i -> i.getBsRackSet().getRsCode()).collect(Collectors.toList()), "'、'");
// String fb = StringUtils.join(mtuList.stream().filter(i -> i.getBsFeiBaSet() != null).map(i -> i.getBsFeiBaSet().getFsCode()).collect(Collectors.toList()), "、");
// String eq = StringUtils.join(mtuList.stream().filter(i -> i.getEquipmentCard() != null).map(i -> i.getEquipmentCard().getDeviceCode()).collect(Collectors.toList()), "、");
// workPlan.setGjCode(gj);
// workPlan.setFbCode(fb);
// //zxh 20250107 电子档案工序设备编号不再拼接烘箱,eq中已存在烘箱
//// workPlan.setDeviceCode(box != null && box.getDeviceId() != null ? eq + "、" + box.getDeviceId() : eq);
// workPlan.setDeviceCode(eq);
// }
}

@ -0,0 +1,31 @@
package org.springblade.erpdata.feign;
import io.swagger.v3.oas.annotations.Hidden;
import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.erpdata.service.IErpYieldOrderService;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
/**
* 外协相关erp操作Feign实现类
*
* @author qyl
* @serial 2026年2月27日
*/
@NonDS
@Hidden
@RestController
@AllArgsConstructor
public class ErpYieldOrderClientImpl implements IErpYieldOrderClient {
private final IErpYieldOrderService erpYieldOrderService;
@Override
public void saveGlassCake(String yoCode, String cardNo, String batchNo, String prodIdent, Date demandDate, String planUser, String ypCode, Long poQty, String partCode, Double quota) {
erpYieldOrderService.saveGlassCake(yoCode, cardNo, batchNo, prodIdent, demandDate, planUser, ypCode, poQty, partCode, quota);
}
}

@ -0,0 +1,21 @@
package org.springblade.erpdata.mapper;
import com.baomidou.mybatisplus.core.mapper.Mapper;
import java.util.Map;
/**
* Mapper 接口
*
* @author qyl
*/
public interface ErpYieldOrderMapper extends Mapper {
/**
* 生成玻璃饼订单
*
* @param params
*/
void saveGlassCake(Map<String, Object> params);
}

@ -0,0 +1,30 @@
<?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 = "org.springblade.erpdata.mapper.ErpYieldOrderMapper">
<select id="saveGlassCake" statementType="CALLABLE">
{call p_rb_sync_transfer(
#{v_work_roam, mode=IN, jdbcType=VARCHAR},
#{v_next_roam, mode=IN, jdbcType=VARCHAR},
#{v_yo_code, mode=IN, jdbcType=VARCHAR},
#{v_po_code, mode=IN, jdbcType=VARCHAR},
#{v_part_code, mode=IN, jdbcType=VARCHAR},
#{v_prod_ident, mode=IN, jdbcType=VARCHAR},
#{v_use_dept, mode=IN, jdbcType=VARCHAR},
#{v_demand_date, mode=IN, jdbcType=DATE},
#{v_plan_user, mode=IN, jdbcType=VARCHAR},
#{v_release_date, mode=IN, jdbcType=DATE},
#{v_memo, mode=IN, jdbcType=VARCHAR},
#{v_card_no, mode=IN, jdbcType=VARCHAR},
#{v_batch_no, mode=IN, jdbcType=VARCHAR},
#{v_yo_qty, mode=IN, jdbcType=NUMERIC},
#{v_yield_type, mode=IN, jdbcType=NUMERIC},
#{v_warctlr, mode=IN, jdbcType=VARCHAR},
#{v_entrust_dept, mode=IN, jdbcType=VARCHAR},
#{v_recseqno, mode=IN, jdbcType=VARCHAR},
#{v_manual_increase, mode=IN, jdbcType=NUMERIC},
#{v_lev_flag, mode=IN, jdbcType=VARCHAR},
#{v_use_deptcode, mode=IN, jdbcType=VARCHAR}
)}
</select>
</mapper>

@ -0,0 +1,29 @@
package org.springblade.erpdata.service;
import java.util.Date;
/**
* 外协相关erp操作service
*
* @author qyl
* @serial 2026年2月27日
*/
public interface IErpYieldOrderService {
/**
* 生成玻璃饼订单
*
* @param yoCode
* @param cardNo
* @param batchNo
* @param prodIdent
* @param demandDate
* @param planUser
* @param ypCode
* @param poQty
* @param partCode
* @param quota
*/
void saveGlassCake(String yoCode, String cardNo, String batchNo, String prodIdent, Date demandDate,
String planUser, String ypCode, Long poQty, String partCode, Double quota);
}

@ -0,0 +1,58 @@
package org.springblade.erpdata.service.impl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.erpdata.mapper.ErpYieldOrderMapper;
import org.springblade.erpdata.service.IErpYieldOrderService;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 外协相关erp操作service实现类
*
* @author qtl
* @serial 2026年2月27日
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class ErpYieldOrderServiceImpl implements IErpYieldOrderService {
private final ErpYieldOrderMapper yieldOrderMapper;
@Override
public void saveGlassCake(String yoCode, String cardNo, String batchNo, String prodIdent, Date demandDate,
String planUser, String ypCode, Long poQty, String partCode, Double quota) {
Map<String, Object> paramMap = new HashMap<>();
// 1. 赋值静态入参
paramMap.put("v_work_roam", "");
paramMap.put("v_next_roam", "");
paramMap.put("v_po_code", "");
paramMap.put("v_use_dept", "热表分厂");
paramMap.put("v_release_date", new Date());
paramMap.put("v_yield_type", (short) 3);
paramMap.put("v_warctlr", "");
paramMap.put("v_entrust_dept", "热表分厂");
paramMap.put("v_recseqno", "");
paramMap.put("v_manual_increase", Short.valueOf("1"));
paramMap.put("v_lev_flag", "0");
paramMap.put("v_use_deptcode", "");
// 2. 赋值动态入参
paramMap.put("v_yo_code", yoCode);
paramMap.put("v_part_code", partCode);
paramMap.put("v_prod_ident", prodIdent);
paramMap.put("v_demand_date", demandDate);
paramMap.put("v_plan_user", planUser);
paramMap.put("v_memo", ypCode);
paramMap.put("v_card_no", cardNo);
paramMap.put("v_batch_no", batchNo);
paramMap.put("v_yo_qty", quota * poQty);
yieldOrderMapper.saveGlassCake(paramMap);
}
}

@ -0,0 +1,122 @@
ALTER TABLE mes_yield_order_craft
ADD process_code NVARCHAR2(255) NULL;
COMMENT ON COLUMN mes_yield_order_craft.process_code IS '工序编码- 工序冗余字段';
ALTER TABLE mes_yield_order_craft
ADD process_name NVARCHAR2(255) NULL;
COMMENT ON COLUMN mes_yield_order_craft.process_name IS '工序名称- 工序冗余字段';
COMMENT ON COLUMN mes_yield_order_craft.process_no IS '工序排序序号- 工序冗余字段';
DROP TABLE "MES_PLATE_GOODS_APPLY_DETAIL";
CREATE TABLE "MES_PLATE_GOODS_APPLY_DETAIL"
(
"ID" NUMBER(20, 0) NOT NULL,
"TENANT_ID" NVARCHAR2(12),
"CREATE_USER" NUMBER(20, 0),
"CREATE_TIME" DATE,
"CREATE_DEPT" NUMBER(20, 0),
"UPDATE_USER" NUMBER(20, 0),
"UPDATE_TIME" DATE,
"STATUS" NUMBER(11, 0) NOT NULL,
"IS_DELETED" NUMBER(11, 0),
"PGA_ID" NUMBER(20, 0),
"PGR_ID" NUMBER(20, 0)
) LOGGING NOCOMPRESS PCTFREE 10 INITRANS 1 STORAGE
(
BUFFER_POOL DEFAULT
) PARALLEL 1 NOCACHE DISABLE ROW MOVEMENT
;
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."ID" IS '主键';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."CREATE_USER" IS '创建人';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."CREATE_TIME" IS '创建时间';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."CREATE_DEPT" IS '创建部门';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."UPDATE_USER" IS '更新人';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."UPDATE_TIME" IS '更新时间';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."STATUS" IS '状态';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."IS_DELETED" IS '删除标记';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."PGA_ID" IS '添加量申报ID';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY_DETAIL"."PGR_ID" IS '镀层物料需求ID';
COMMENT ON TABLE "MES_PLATE_GOODS_APPLY_DETAIL" IS '烧结模具计划-申报';
-- ----------------------------
-- Checks structure for table MES_PLATE_GOODS_APPLY_DETAIL
-- ----------------------------
ALTER TABLE "MES_PLATE_GOODS_APPLY_DETAIL"
ADD CONSTRAINT "SYS_C0021890" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
ALTER TABLE "MES_PLATE_GOODS_APPLY_DETAIL"
ADD CONSTRAINT "SYS_C0021891" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
DROP TABLE "MES_PLATE_GOODS_APPLY";
CREATE TABLE "MES_PLATE_GOODS_APPLY"
(
"ID" NUMBER(20, 0) NOT NULL,
"TENANT_ID" NVARCHAR2(12),
"CREATE_USER" NUMBER(20, 0),
"CREATE_TIME" DATE,
"CREATE_DEPT" NUMBER(20, 0),
"UPDATE_USER" NUMBER(20, 0),
"UPDATE_TIME" DATE,
"STATUS" NUMBER(11, 0) NOT NULL,
"IS_DELETED" NUMBER(11, 0) DEFAULT 0,
"APPROVAL_MAN" NUMBER(20, 0),
"APPROVAL_TIME" DATE,
"APPROVAL_STATUS" NUMBER(20, 0),
"APPROVAL_MEMO" NVARCHAR2(255),
"WC_ID" NUMBER(20, 0) NOT NULL,
"GOODS_CODE" NVARCHAR2(255) NOT NULL,
"GOODS_DEMAND" NUMBER(20, 10) DEFAULT 0 NOT NULL,
"GOODS_NAME" VARCHAR2(100 BYTE),
"GOODS_ADD_TOTAL" NUMBER(20, 10),
"GOODS_DEMAND_TOTAL" NUMBER(20, 10),
"DECLARED_QUOTA_TOTAL" NUMBER(20, 10),
"APPLY_CODE" VARCHAR2(100 BYTE)
) LOGGING NOCOMPRESS PCTFREE 10 INITRANS 1 STORAGE
(
INITIAL 65536
NEXT 1048576
MINEXTENTS 1
MAXEXTENTS 2147483645
BUFFER_POOL DEFAULT
) PARALLEL 1 NOCACHE DISABLE ROW MOVEMENT
;
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."ID" IS '主键';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."TENANT_ID" IS '租户ID';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."CREATE_USER" IS '创建人';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."CREATE_TIME" IS '创建时间';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."CREATE_DEPT" IS '创建部门';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."UPDATE_USER" IS '修改人';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."UPDATE_TIME" IS '修改时间';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."STATUS" IS '状态';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."IS_DELETED" IS '是否已删除';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."APPROVAL_MAN" IS '审批人';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."APPROVAL_TIME" IS '审批时间';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."APPROVAL_STATUS" IS '审批状态';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."APPROVAL_MEMO" IS '审批结果';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."WC_ID" IS '作业中心';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."GOODS_CODE" IS '镀层物料';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."GOODS_DEMAND" IS '物料需求定额';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."GOODS_NAME" IS '镀层物料名称';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."GOODS_ADD_TOTAL" IS '本次申报添加量';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."GOODS_DEMAND_TOTAL" IS '本次申报物料需求单总物料需求剩余量';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."DECLARED_QUOTA_TOTAL" IS '本次申报物料需求单已申报定额总量';
COMMENT ON COLUMN "MES_PLATE_GOODS_APPLY"."APPLY_CODE" IS '申报单号';
COMMENT ON TABLE "MES_PLATE_GOODS_APPLY" IS '镀层物料申报添加量';
-- ----------------------------
-- Primary Key structure for table MES_PLATE_GOODS_APPLY
-- ----------------------------
ALTER TABLE "MES_PLATE_GOODS_APPLY"
ADD CONSTRAINT "SYS_C0021902" PRIMARY KEY ("ID");
-- ----------------------------
-- Checks structure for table MES_PLATE_GOODS_APPLY
-- ----------------------------
ALTER TABLE "MES_PLATE_GOODS_APPLY"
ADD CONSTRAINT "SYS_C0021892" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
ALTER TABLE "MES_PLATE_GOODS_APPLY"
ADD CONSTRAINT "SYS_C0021893" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
ALTER TABLE "MES_PLATE_GOODS_APPLY"
ADD CONSTRAINT "SYS_C0021894" CHECK ("WC_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
ALTER TABLE "MES_PLATE_GOODS_APPLY"
ADD CONSTRAINT "SYS_C0021895" CHECK ("GOODS_CODE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
ALTER TABLE "MES_PLATE_GOODS_APPLY"
ADD CONSTRAINT "SYS_C0021896" CHECK ("GOODS_DEMAND" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;

@ -56,13 +56,6 @@ ALTER TABLE mes_plate_goods_record
ALTER TABLE mes_plate_goods_record_detail
MODIFY pgrd_id NUMBER(20, 0);
ALTER TABLE mes_plate_goods_record
ADD involving_record_code VARCHAR2(255) NULL;
COMMENT ON COLUMN mes_plate_goods_record.involving_record_code IS '本次添加涉及单号';
ALTER TABLE mes_plate_goods_record
ADD detail_order_num NUMBER(8, 0) NULL;
COMMENT ON COLUMN mes_plate_goods_record.detail_order_num IS '本次关联订单数量';
ALTER TABLE mes_assay_content_detail
ADD add_val NUMBER(20, 10) NULL;
COMMENT ON COLUMN mes_assay_content_detail.add_val IS '添加量值';
@ -350,9 +343,6 @@ COMMENT ON COLUMN mes_plate_goods_apply.coefficient_bo_id IS '银钾采购id';
COMMENT ON COLUMN mes_plate_goods_apply.surplus IS '剩余量';
COMMENT ON COLUMN mes_plate_goods_apply.silver_potassium_residue IS '上报银钾剩余量';
COMMENT ON COLUMN mes_plate_goods_apply.demand_code IS '需求单号';
COMMENT ON COLUMN mes_plate_goods_apply.involving_record_code IS '本次添加涉及单号';
COMMENT ON COLUMN mes_plate_goods_apply.not_add_val IS '本次剩余单号余量';
COMMENT ON COLUMN mes_plate_goods_apply.detail_order_num IS '本次关联订单数量';
ALTER TABLE MES_PLATE_GOODS_APPLY ADD GOODS_NAME VARCHAR2(100) NULL;
COMMENT ON COLUMN MES_PLATE_GOODS_APPLY.GOODS_NAME IS '镀层物料名称';

Loading…
Cancel
Save