订单模块修改

develop-QA
liuqingkun 3 months ago
parent ab2c3d0c0c
commit aef29b5a2b
  1. 8
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/AssayContent.java
  2. 68
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/AssayContentDetail.java
  3. 43
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/MoldPlan.java
  4. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsApply.java
  5. 13
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsRecord.java
  6. 10
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/request/PlateGoodsApplySave.java
  7. 61
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/MoldPlanDetailVo.java
  8. 5
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/MoldPlanVo.java
  9. 10
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/PlateGoodsApplyVo.java
  10. 1
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/PlateGoodsRecordDetailVo.java
  11. 4
      blade-service/blade-desk/pom.xml
  12. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/AssayContentController.java
  13. 32
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/PlateGoodsApplyController.java
  14. 21
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/PlateGoodsRecordController.java
  15. 42
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java
  16. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldPlanController.java
  17. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/AssayContentDetailMapper.xml
  18. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/AssayContentMapper.java
  19. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/AssayContentMapper.xml
  20. 16
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/MoldPlanMapper.xml
  21. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsRecordMapper.java
  22. 19
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsRecordMapper.xml
  23. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java
  24. 45
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml
  25. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IPlateGoodsApplyService.java
  26. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IPlateGoodsRecordService.java
  27. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java
  28. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/AssayContentServiceImpl.java
  29. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldPlanServiceImpl.java
  30. 105
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsApplyServiceImpl.java
  31. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java
  32. 68
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java
  33. 46
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/task/OrderApsJob.java
  34. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/wrapper/AssayContentWrapper.java
  35. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/wrapper/MoldPlanWrapper.java
  36. 19
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/wrapper/PlateGoodsApplyWrapper.java
  37. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/wrapper/YieldOrderWrapper.java
  38. 39
      doc/sql/mes/increase-260120.sql

@ -2,8 +2,10 @@ package org.springblade.desk.order.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springblade.core.mp.base.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
@ -34,6 +36,12 @@ public class AssayContent extends BaseEntity {
/**
* 化验时间
*/
@DateTimeFormat(
pattern = "yyyy-MM-dd"
)
@JsonFormat(
pattern = "yyyy-MM-dd"
)
@TableField(value = "ASSAY_TIME")
private Date assayTime;

@ -16,39 +16,51 @@ import java.math.BigDecimal;
@TableName(value = "MES_ASSAY_CONTENT_DETAIL")
@Data
public class AssayContentDetail extends BaseEntity {
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/**
* 化验记录
*/
@TableField(value = "AC_ID")
private Long acId;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/**
* 化验记录
*/
@TableField(value = "AC_ID")
private Long acId;
/**
* 槽号
*/
@TableField(value = "SLOT")
private String slot;
/**
* 槽号
*/
@TableField(value = "SLOT")
private String slot;
/**
* 化验值
*/
@TableField(value = "TEST_VAL")
private BigDecimal testVal;
/**
* 槽名称
*/
@TableField(value = "SLOT_NAME")
private String slotName;
/**
* 申报添加金钾
*/
@TableField(value = "SAVE_GOLD_VAL")
private BigDecimal saveGoldVal;
/**
* 化验值
*/
@TableField(value = "TEST_VAL")
private BigDecimal testVal;
/**
* 申报添加银钾
*/
@TableField(value = "SAVE_SILVER_VAL")
private BigDecimal saveSilverVal;
/**
* 添加量值
*/
@TableField(value = "ADD_VAL")
private BigDecimal addVal;
/**
/**
* 申报添加金钾
*/
@TableField(value = "SAVE_GOLD_VAL")
private BigDecimal saveGoldVal;
/**
* 申报添加银钾
*/
@TableField(value = "SAVE_SILVER_VAL")
private BigDecimal saveSilverVal;
/**
* 申报添加银板
*/
@TableField(value = "SAVE_BOARD_VAL")

@ -2,8 +2,10 @@ package org.springblade.desk.order.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springblade.core.mp.base.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@ -37,12 +39,6 @@ public class MoldPlan extends BaseEntity {
@TableField(value = "QUANTITY")
private Long quantity;
/**
* erpId
*/
@TableField(value = "ERP_ID")
private Long erpId;
/**
* 生产计划id
*/
@ -50,7 +46,13 @@ public class MoldPlan extends BaseEntity {
private Long ypId;
/**
*
* erpId
*/
@TableField(value = "ERP_ID")
private Long erpId;
/**
* erpCode
*/
@TableField(value = "ERP_WO_CODE")
private String erpWoCode;
@ -72,14 +74,22 @@ public class MoldPlan extends BaseEntity {
*/
@TableField(value = "PLAN_TYPE_CODE")
private String planTypeCode;
/**
* 计划类型名称;14001:Z:制造(工装不为空且工装名称为压饼模),14002:D:夹具(工装不为空且工装名称为石墨模)
*/
@TableField(value = "PLAN_TYPE_NAME")
private String planTypeName;
/**
* 需求日期
*/
@DateTimeFormat(
pattern = "yyyy-MM-dd"
)
@JsonFormat(
pattern = "yyyy-MM-dd"
)
@TableField(value = "NEED_DATE")
private Date needDate;
@ -124,9 +134,28 @@ public class MoldPlan extends BaseEntity {
*/
@TableField(value = "URGENT_TYPE")
private String urgentType;
/**
* 计划来源;15001:自动生成15002人工添加
*/
@TableField(value = "SOURCE")
private Integer source;
/**
* 库存量
*/
@TableField(value = "STOCK_NUM")
private Integer stockNum;
/**
* 占用量
*/
@TableField(value = "OCCUPY_NUM")
private Integer occupyNum;
/**
* 关联生产订单, 多个订单以','分割
*/
@TableField(value = "LINK_ORDER_IDS")
private String linkOrderIds;
}

@ -87,7 +87,7 @@ public class PlateGoodsApply extends BaseEntity {
private Long pgrId;
/**
*
* 作业中心ID
*/
@TableField(value = "WC_ID")
private Long wcId;
@ -99,7 +99,7 @@ public class PlateGoodsApply extends BaseEntity {
private String involveCode;
/**
* 涉及单号及数量
* 涉及订单要添加的数量
*/
@TableField(value = "CODE_NUM")
private String codeNum;

@ -129,4 +129,17 @@ public class PlateGoodsRecord extends BaseEntity {
@TableField(value = "SILVER_POTASSIUM_RESIDUE")
private BigDecimal silverPotassiumResidue;
/**
* 本次添加涉及单号
*/
@TableField(value = "INVOLVING_RECORD_CODE")
private String involvingRecordCode;
/**
* 本次剩余单号余量
*/
@TableField(value = "NOT_ADD_VAL")
private BigDecimal notAddVal;
}

@ -1,8 +1,7 @@
package org.springblade.desk.order.pojo.request;
import lombok.Data;
import org.springblade.desk.order.pojo.entity.PlateGoodsApply;
import org.springblade.desk.order.pojo.entity.PlateGoodsApplyDetail;
import org.springblade.desk.order.pojo.entity.AssayContentDetail;
import java.util.List;
@ -13,15 +12,10 @@ import java.util.List;
*/
@Data
public class PlateGoodsApplySave {
/**
* 化验含量
*/
private PlateGoodsApply assayContent;
/**
* 化验含量明细
*/
private List<PlateGoodsApplyDetail> detailList;
private List<AssayContentDetail> assayContentDetailList;
/**

@ -0,0 +1,61 @@
package org.springblade.desk.order.pojo.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import org.springblade.desk.order.pojo.entity.MoldPlan;
import java.io.Serial;
import java.util.List;
/**
* 烧结模具计划-视图类
*
* @author lqk
*/
@Data
public class MoldPlanDetailVo extends MoldPlan {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
* 创建人
*/
String createUserName;
/**
* 状态名称
*/
String statusName;
/**
* 状态名称
*/
String mafStatusName;
/**
* 类型名称
*/
String mafTypeName;
/**
* 库存信息
*/
List<Object> stockList;
/**
* 工装信息
*/
List<Object> toolList;
/**
* 关联订单
*/
List<Object> orderList;
}

@ -23,6 +23,11 @@ public class MoldPlanVo extends MoldPlan {
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
* 创建人
*/
String createUserName;
/**
* 状态名称
*/

@ -23,8 +23,18 @@ public class PlateGoodsApplyVo extends PlateGoodsApply {
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
* 作业中心名称
*/
String wcName;
/**
* 状态名称
*/
String statusName;
/**
* 创建人名称
*/
String createUserName;
}

@ -27,4 +27,5 @@ public class PlateGoodsRecordDetailVo extends PlateGoodsRecordDetail {
* 状态名称
*/
String statusName;
}

@ -106,6 +106,10 @@
<groupId>org.springblade</groupId>
<artifactId>blade-system-api</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-scheduling-api</artifactId>
</dependency>
</dependencies>
<build>

@ -45,7 +45,7 @@ public class AssayContentController extends BladeController {
@GetMapping("/page")
@Parameters({
@Parameter(name = "wcId", description = "作业中心", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "status", description = "状态, 10000:未使用, 10001:已使用, 10002:已过期", in = ParameterIn.QUERY, schema = @Schema(type = "int"))
@Parameter(name = "status", description = "状态(10000:未使用;10001:已使用;10002:已过期)", in = ParameterIn.QUERY, schema = @Schema(type = "string"))
})
@Operation(summary = "分页", description = "")
public R<IPage<AssayContentVo>> page(@Parameter(hidden = true) AssayContent entity, Query query) {

@ -14,11 +14,10 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.order.pojo.entity.AssayContentDetail;
import org.springblade.desk.order.pojo.entity.PlateGoodsApply;
import org.springblade.desk.order.pojo.entity.PlateGoodsApplyDetail;
import org.springblade.desk.order.pojo.request.PlateGoodsApplySave;
import org.springblade.desk.order.pojo.vo.PlateGoodsApplyVo;
import org.springblade.desk.order.service.IPlateGoodsApplyDetailService;
import org.springblade.desk.order.service.IPlateGoodsApplyService;
import org.springblade.desk.order.wrapper.PlateGoodsApplyWrapper;
import org.springframework.web.bind.annotation.*;
@ -37,7 +36,6 @@ import java.util.List;
public class PlateGoodsApplyController extends BladeController {
private final IPlateGoodsApplyService plateGoodsApplyService;
private final IPlateGoodsApplyDetailService plateGoodsApplyDetailService;
/**
* 分页
@ -70,34 +68,12 @@ public class PlateGoodsApplyController extends BladeController {
@PostMapping("/save")
@Operation(summary = "新增", description = "")
public R save(@Valid @RequestBody PlateGoodsApplySave saveData) {
PlateGoodsApply entity = saveData.getAssayContent();
List<PlateGoodsApplyDetail> detailList = saveData.getDetailList();
List<Long> recordIdList = saveData.getRecordIdList();
plateGoodsApplyService.save(entity, detailList, recordIdList);
List<AssayContentDetail> assayContentDetailList = saveData.getAssayContentDetailList();
List<Long> recordIdList = saveData.getRecordIdList();
plateGoodsApplyService.save(assayContentDetailList, recordIdList);
return R.status(true);
}
/**
* 修改
*/
@PostMapping("/update")
@Operation(summary = "修改", description = "")
public R update(@Valid @RequestBody PlateGoodsApplySave saveData) {
PlateGoodsApply entity = saveData.getAssayContent();
List<PlateGoodsApplyDetail> detailList = saveData.getDetailList();
plateGoodsApplyService.update(entity, detailList);
return R.status(true);
}
/**
* 删除
*/
@PostMapping("/remove")
@Operation(summary = "逻辑删除", description = "传入ids")
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(plateGoodsApplyService.deleteLogic(Func.toLongList(ids)));
}
/**
* 批量审核
*/

@ -14,7 +14,6 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.order.pojo.entity.AssayContentDetail;
import org.springblade.desk.order.pojo.entity.PlateGoodsRecord;
import org.springblade.desk.order.pojo.entity.PlateGoodsRecordDetail;
import org.springblade.desk.order.pojo.entity.YieldOrder;
@ -56,6 +55,17 @@ public class PlateGoodsRecordController extends BladeController {
return R.data(PlateGoodsRecordWrapper.build().pageVO(page));
}
/**
* 列表 - 查询已审批通过但未添加完成的申请列表
*/
@GetMapping("/listNoFinished")
@Operation(summary = "查询已审批通过但未添加完成的申请列表", description = "")
public R<List<PlateGoodsRecordVo>> listNoFinished(@Parameter(description = "作业中心ID", required = true) Long wcId,
@Parameter(description = "查询几天内的数据,传0或空为查询全部", required = true) Integer dayRange) {
List<PlateGoodsRecord> listData = goodsRecordService.listNoFinished(wcId, dayRange);
return R.data(PlateGoodsRecordWrapper.build().listVO(listData));
}
/**
* 详情
*/
@ -129,13 +139,4 @@ public class PlateGoodsRecordController extends BladeController {
Boolean result = goodsRecordService.changeStatus(Func.toLongList(ids), PlateGoodsEnum.STATUS_CLOSE.getCode());
return R.status(result);
}
/**
* 列表 - 查询已审批通过但未添加完成的申请列表
*/
@GetMapping("/listNoFinished")
@Operation(summary = "查询已审批通过但未添加完成的申请列表", description = "")
public R<AssayContentDetail> listNoFinished(@Parameter(hidden = true) AssayContentDetail authClient, Query query) {
return R.data(null);
}
}

@ -24,6 +24,7 @@ import org.springblade.desk.order.pojo.vo.YieldOrderVo;
import org.springblade.desk.order.service.IYieldOrderCraftService;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.order.wrapper.YieldOrderWrapper;
import org.springblade.scheduling.feign.IWorkOrderClient;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
@ -43,19 +44,21 @@ public class YieldOrderController extends BladeController {
private final IYieldOrderService yieldOrderService;
private final IYieldOrderCraftService yieldOrderCraftService;
private final IWorkOrderClient workOrderClient;
/**
* 分页查询列表-电镀
*/
@GetMapping("/pageElectroplate")
@Parameters({
@Parameter(name = "ypCode", description = "计划单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "yoCode", description = "生产单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "partCode", description = "零件号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "batchNo", description = "批次号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "cardNo", description = "流程卡号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "roamNo", description = "流转编号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "reworkCode", description = "返工单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "status", description = "状态", in = ParameterIn.QUERY, schema = @Schema(type = "int"))
@Parameter(name = "ypCode", description = "计划单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "yoCode", description = "生产单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "partCode", description = "零件号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "batchNo", description = "批次号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "cardNo", description = "流程卡号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "roamNo", description = "流转编号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "reworkCode", description = "返工单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "status", description = "状态", in = ParameterIn.QUERY, schema = @Schema(type = "int"))
})
@Operation(summary = "分页查询列表-电镀", description = "")
public R<IPage<YieldOrderVo>> pageElectroplate(@Parameter(hidden = true) YieldOrder entity, Query query) {
@ -106,15 +109,15 @@ public class YieldOrderController extends BladeController {
}
/**
* 分页查询列表 - 物料申请
* 分页查询列表 - 物料需求申报
*/
@GetMapping("/pageMaterialApply")
@Parameters({
@Parameter(name = "wcId", description = "作业中心", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "wcId", description = "作业中心ID", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "materialType", description = "物料类型,1:金钾,2:银钾", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "overHalfMon", description = "使用半月以上的数据,0:否,1:是", in = ParameterIn.QUERY, schema = @Schema(type = "string"))
@Parameter(name = "overHalfMon", description = "使用半月以上的数据,0:否,1:是, 以生产订单的下达时间算", in = ParameterIn.QUERY, schema = @Schema(type = "string"))
})
@Operation(summary = "分页-物料申请", description = "")
@Operation(summary = "分页-物料需求申报", description = "")
public R<IPage<YieldOrderVo>> pageMaterialApply(Long wcId, Integer materialType, Integer overHalfMon, Query query) {
IPage<YieldOrder> page = Condition.getPage(query);
page.setRecords(new ArrayList<>());
@ -154,6 +157,16 @@ public class YieldOrderController extends BladeController {
return R.status(result);
}
/**
* 数据校验
*/
@PostMapping("/dataVerify")
@Operation(summary = "数据校验", description = "")
public R dataVerify(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
String msg = yieldOrderService.dataVerify(Func.toLongList(ids));
return R.success(msg);
}
/**
* 批量确认
*/
@ -170,6 +183,8 @@ public class YieldOrderController extends BladeController {
@PostMapping("/closeBatch")
@Operation(summary = "批量关闭", description = "传入ids")
public R closeBatch(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
// TODO 关闭前先验证订单状态
Boolean result = yieldOrderService.changeStatus(Func.toLongList(ids), YieldOrderEnum.STATUS_CLOSED.getCode());
return R.status(result);
}
@ -192,6 +207,9 @@ public class YieldOrderController extends BladeController {
public R updatePreferenceBatch(@Parameter(description = "生产订单ID集合", required = true) @RequestParam String ids,
@Parameter(description = "修改后的优先级", required = true) @RequestParam Integer priority) {
Boolean result = yieldOrderService.updatePreferenceBatch(Func.toLongList(ids), priority);
// 修改完成后,调用排产方法,触发排产
workOrderClient.scheduling();
return R.status(result);
}

@ -151,6 +151,8 @@ public class YieldPlanController extends BladeController {
@PostMapping("/closeBatch")
@Operation(summary = "批量关闭", description = "传入ids")
public R closeBatch(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
// TODO 关闭前先验证订单状态
Boolean result = yieldPlanService.changeStatus(Func.toLongList(ids), YieldPlanEnum.STATUS_CLOSED.getCode());
return R.status(result);
}

@ -5,7 +5,7 @@
<mapper namespace = "org.springblade.desk.order.mapper.AssayContentDetailMapper">
<select id = "selectPage" resultType = "org.springblade.desk.order.pojo.entity.AssayContentDetail">
SELECT ID, TENANT_ID, CREATE_USER, CREATE_DEPT, CREATE_TIME, UPDATE_USER, UPDATE_TIME, STATUS, IS_DELETED,
AC_ID, SLOT, TEST_VAL, SAVE_GOLD_VAL, SAVE_SILVER_VAL, SAVE_BOARD_VAL, ACTUAL_VAL
AC_ID, SLOT, SLOT_NAME, TEST_VAL, SAVE_GOLD_VAL, SAVE_SILVER_VAL, SAVE_BOARD_VAL, ACTUAL_VAL
FROM MES_ASSAY_CONTENT_DETAIL
</select>

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.order.pojo.entity.AssayContent;
import java.util.Date;
import java.util.List;
/**
@ -23,4 +24,14 @@ public interface AssayContentMapper extends BaseMapper<AssayContent> {
*/
List<AssayContent> selectPage(IPage page, AssayContent entity);
/**
* 根据作业中心和化验时间将时间之前的未使用的化验状态设置为已过期
*
* @param wcId
* @param assayTime
* @param status
* @return
*/
Boolean updateStatusOutData(Long wcId, Date assayTime, Integer status);
}

@ -15,4 +15,9 @@
AND status = #{entity.status}
</if>
</select>
<update id = "updateStatusOutData">
UPDATE MES_ASSAY_CONTENT SET STATUS = #{status}
WHERE WC_ID = #{wcId} AND ASSAY_TIME &lt; #{assayTime}
</update>
</mapper>

@ -4,10 +4,11 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.desk.order.mapper.MoldPlanMapper">
<select id = "selectPage" resultType = "org.springblade.desk.order.pojo.entity.MoldPlan">
SELECT ID, TENANT_ID, CREATE_USER, CREATE_DEPT, CREATE_TIME, UPDATE_USER, UPDATE_TIME, STATUS, IS_DELETED,
MO_CODE, MO_NAME, QUANTITY, ERP_ID, YP_ID, ERP_WO_CODE, MAF_STATUS, PLAN_TYPE_CODE, NEED_DATE, KEEPER, RELEASER, QUA_LEVEL,
PLAN_TYPE_NAME, PART_CODE, PART_NAME, MEMO, MAF_TYPE, URGENT_TYPE
FROM MES_MOLD_PLAN
SELECT ID, TENANT_ID, CREATE_USER, CREATE_DEPT, CREATE_TIME, UPDATE_USER, UPDATE_TIME, STATUS, IS_DELETED,
MO_CODE, MO_NAME, QUANTITY, ERP_ID, YP_ID, ERP_WO_CODE, MAF_STATUS, NEED_DATE, KEEPER, RELEASER, QUA_LEVEL,
PART_CODE, PART_NAME, MEMO, MAF_TYPE, URGENT_TYPE, PLAN_TYPE_CODE, "SOURCE", PLAN_TYPE_NAME, STOCK_NUM,
OCCUPY_NUM, LINK_ORDER_IDS
FROM MES_MOLD_PLAN
WHERE IS_DELETED = 0
<if test = "entity.source != null and entity.source != ''">
AND SOURCE = #{entity.source}
@ -22,9 +23,10 @@
<select id = "pageNearlyMonth" resultType = "org.springblade.desk.order.pojo.entity.MoldPlan">
SELECT ID, TENANT_ID, CREATE_USER, CREATE_DEPT, CREATE_TIME, UPDATE_USER, UPDATE_TIME, STATUS, IS_DELETED,
MO_CODE, MO_NAME, QUANTITY, ERP_ID, YP_ID, ERP_WO_CODE, MAF_STATUS, PLAN_TYPE_CODE, NEED_DATE, KEEPER, RELEASER, QUA_LEVEL,
PLAN_TYPE_NAME, PART_CODE, PART_NAME, MEMO, MAF_TYPE, URGENT_TYPE
FROM MES_MOLD_PLAN
MO_CODE, MO_NAME, QUANTITY, ERP_ID, YP_ID, ERP_WO_CODE, MAF_STATUS, NEED_DATE, KEEPER, RELEASER, QUA_LEVEL,
PART_CODE, PART_NAME, MEMO, MAF_TYPE, URGENT_TYPE, PLAN_TYPE_CODE, "SOURCE", PLAN_TYPE_NAME, STOCK_NUM,
OCCUPY_NUM, LINK_ORDER_IDS
FROM MES_MOLD_PLAN
WHERE IS_DELETED = 0 and create_time >= ADD_MONTHS(SYSDATE, -1)
<if test = "entity.moCode != null and entity.moCode != ''">
AND MO_CODE LIKE CONCAT('%', CONCAT(#{entity.moCode}, '%'))

@ -22,4 +22,14 @@ public interface PlateGoodsRecordMapper extends BaseMapper<PlateGoodsRecord> {
* @return
*/
List<PlateGoodsRecord> selectPage(IPage page, PlateGoodsRecord entity);
/**
* 查询已审批通过但未添加完成的申请列表
*
* @param wcId
* @param dayRange 查询几天内的数据传0或空为查询全部
* @param approvalStatus
* @return
*/
List<PlateGoodsRecord> listNoFinished(Long wcId, Integer dayRange, Integer approvalStatus);
}

@ -19,11 +19,22 @@
<if test = "entity.status != null and entity.status != ''">
AND status = #{entity.status}
</if>
<if test = "entity.status != null and entity.status != ''">
AND status = #{entity.status}
</if>
<if test = "entity.status != null and entity.approvalStatus != ''">
<if test = "entity.approvalStatus != null and entity.approvalStatus != ''">
AND approval_status = #{entity.approvalStatus}
</if>
</select>
<select id = "listNoFinished" resultType = "org.springblade.desk.order.pojo.entity.PlateGoodsRecord">
SELECT ID, TENANT_ID, CREATE_USER, CREATE_DEPT, CREATE_TIME, UPDATE_USER, UPDATE_TIME, STATUS, IS_DELETED,
WC_ID, PLATE_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
FROM MES_PLATE_GOODS_RECORD
WHERE IS_DELETED = 0
AND WC_ID = #{wcId}
AND approval_status = #{approvalStatus}
<if test = "dayRange != null and dayRange != 0">
AND CREATE_TIME >= SYSDATE - #{dayRange}
</if>
</select>
</mapper>

@ -24,4 +24,18 @@ public interface YieldOrderMapper extends BaseMapper<YieldOrder> {
* @return
*/
List<YieldOrder> selectPage(IPage page, YieldOrder entity, List<YieldOrderEnum> yieldTypeList);
/**
* 自定义分页 - 用于需求申报
*
* @param page
* @param wcId 作业中心
* @param materialType 物料类型1金钾2银钾
* @param overHalfMon 使用半月以上的数据01
* @param yieldTypeList 订单类型
* @param yieldStatusList 订单状态
* @return
*/
List<YieldOrder> pageMaterialApply(IPage page, Long wcId, Integer materialType, Integer overHalfMon,
List<YieldOrderEnum> yieldTypeList, List<YieldOrderEnum> yieldStatusList);
}

@ -15,7 +15,7 @@
ERROR_INFO, RECEIVE_USER, RECEIVE_TIME
FROM MES_YIELD_ORDER
WHERE IS_DELETED = 0
<if test = "yieldTypeList != null and yieldTypeList.size() > 0">
<if test = "yieldTypeList != null and yieldTypeList.size() > 0">
AND YIELD_TYPE IN
<foreach collection = "yieldTypeList" item = "yieldType" open = "(" separator = "," close = ")">
#{yieldType.code}
@ -53,4 +53,47 @@
</if>
</select>
<select id = "pageMaterialApply" resultType = "org.springblade.desk.order.pojo.entity.YieldOrder">
SELECT yo.ID, yo.TENANT_ID, yo.CREATE_USER, yo.CREATE_DEPT, yo.CREATE_TIME, yo.UPDATE_USER, yo.UPDATE_TIME, yo.STATUS, yo.IS_DELETED,
YO_CODE, YP_CODE, PART_CODE, PRODUCT_TYPE, PART_NAME, PLATE, PRODUCT_IDENT, USE_DEPT, YP_AREA, DEMAND_DATE,
PLAN_USER, RELEASE_DATE, MEMO, CARD_NO, BATCH_NO, SITE_WORK, YP_QTY, ROAM_NO, PRIMARY_CRAFT, ROAM_NO_NEXT, PDM_URL,
CUSTODIAN, REWORK_CODE, REWORK_NO, ENTRUST_DEPT, REWORK_MEMO, BUSINESS_TYPE, ASSIGN_MAN, ASSIGN_TIME, RECSEQ_NO,
MANUAL_INCREASE, YIELD_TYPE, FATHER_YO_ID, NEW_LEV_FLAG, PRODUCE_BOOL, USE_DEPT_CODE, YP_PRODUCT_LINE, YP_MEMO,
SJ_MOLD_PREPARATION, SJ_KIT_PREPARATION, PK_USERNAME, PK_DATE, KIT_PREPARATION_MAN, KIT_PREPARATION_TIME, PRIORITY_APS,
PRIORITY_ERP, VALIDATION_RESULT, VALIDATION_MOMO, VALIDATION_TIME, VALIDATION_USER, RECEIVE_STATUS, WORK_CENTER_ID,
ERROR_INFO, RECEIVE_USER, RECEIVE_TIME
FROM MES_YIELD_ORDER yo
LEFT JOIN MES_PLATE_GOODS_RECORD_DETAIL grd ON yo.id = grd.YO_ID
WHERE yo.IS_DELETED = 0 AND grd.ID IS NULL
<if test = "wcId != null and wcId != ''">
AND WORK_CENTER_ID = #{wcId}
</if>
<!--
todo 按照工艺,查询金钾相关的订单
<if test = "materialType != null and materialType == 1 ">
AND YP_CODE LIKE CONCAT('%', CONCAT(#{entity.ypCode}, '%'))
</if>
todo 银钾
<if test = "materialType != null and materialType == 2 ">
AND YP_CODE LIKE CONCAT('%', CONCAT(#{entity.ypCode}, '%'))
</if>
-->
<if test = "overHalfMon != null and overHalfMon == 0 ">
AND RECEIVE_TIME >= SYSDATE - INTERVAL '15' DAY
</if>
<if test = "yieldTypeList != null and yieldTypeList.size() > 0">
AND YIELD_TYPE IN
<foreach collection = "yieldTypeList" item = "yieldType" open = "(" separator = "," close = ")">
#{yieldType.code}
</foreach>
</if>
<if test = "yieldStatusList != null and yieldStatusList.size() > 0">
AND STATUS IN
<foreach collection = "yieldStatusList" item = "yieldStatus" open = "(" separator = "," close = ")">
#{yieldStatus.code}
</foreach>
</if>
</select>
</mapper>

@ -2,8 +2,8 @@ package org.springblade.desk.order.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.order.pojo.entity.AssayContentDetail;
import org.springblade.desk.order.pojo.entity.PlateGoodsApply;
import org.springblade.desk.order.pojo.entity.PlateGoodsApplyDetail;
import java.util.List;
@ -25,21 +25,11 @@ public interface IPlateGoodsApplyService extends BaseService<PlateGoodsApply> {
/**
* 保存
*
* @param entity
* @param detailList
* @param recordIdList
* @return
*/
boolean save(PlateGoodsApply entity, List<PlateGoodsApplyDetail> detailList, List<Long> recordIdList);
/**
* 修改
*
* @param entity
* @param detailList
* @return
*/
boolean update(PlateGoodsApply entity, List<PlateGoodsApplyDetail> detailList);
boolean save(List<AssayContentDetail> detailList, List<Long> recordIdList);
/**
* 批量审核

@ -23,6 +23,15 @@ public interface IPlateGoodsRecordService extends BaseService<PlateGoodsRecord>
*/
IPage<PlateGoodsRecord> selectPage(IPage<PlateGoodsRecord> page, PlateGoodsRecord entity);
/**
* 查询已审批通过但未添加完成的申请列表
*
* @param wcId
* @param dayRange 查询几天内的数据传0或空为查询全部
* @return
*/
List<PlateGoodsRecord> listNoFinished(Long wcId, Integer dayRange);
/**
* 保存
*

@ -54,6 +54,14 @@ public interface IYieldOrderService extends BaseService<YieldOrder> {
*/
IPage<YieldOrder> pageMaterialApply(IPage<YieldOrder> page, Long wcId, Integer materialType, Integer overHalfMon);
/**
* 数据校验
*
* @param ids
* @return 校验结果
*/
String dataVerify(@NotEmpty List<Long> ids);
/**
* 批量确认
*

@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springblade.common.constant.CommonConstant;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.desk.order.mapper.AssayContentMapper;
import org.springblade.desk.order.pojo.entity.AssayContent;
import org.springblade.desk.order.pojo.entity.AssayContentDetail;
@ -36,11 +38,18 @@ public class AssayContentServiceImpl extends BaseServiceImpl<AssayContentMapper,
@Override
public boolean save(AssayContent entity, List<AssayContentDetail> detailList) {
entity.setStatus(AssayContentEnum.STATUS_UNUSED.getCode());
BladeUser loginUser = AuthUtil.getUser();
entity.setAssayMan(loginUser.getUserId());
if (this.save(entity)) {
for (AssayContentDetail detail : detailList) {
detail.setAcId(entity.getId());
}
detailService.saveBatch(detailList);
// 添加完成后, 将该作业中心之前的化验状态设置为已过期
baseMapper.updateStatusOutData(entity.getWcId(), entity.getAssayTime(), AssayContentEnum.STATUS_OUTDATE.getCode());
return true;
}
return false;
@ -60,6 +69,7 @@ public class AssayContentServiceImpl extends BaseServiceImpl<AssayContentMapper,
// 1. 查询作业中心下,最新的未被使用的化验明细
LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(AssayContent.class)
.eq(AssayContent::getIsDeleted, CommonConstant.DELETE_FALSE)
.eq(AssayContent::getStatus, AssayContentEnum.STATUS_UNUSED.getCode())
.eq(AssayContent::getWcId, workCenterId)
.orderByDesc(AssayContent::getCreateTime);
List<AssayContent> contentList = baseMapper.selectList(wrapper);

@ -48,7 +48,8 @@ public class MoldPlanServiceImpl extends BaseServiceImpl<MoldPlanMapper, MoldPla
@Override
public IPage<MoldPlan> pageNearlyMonth(IPage<MoldPlan> page, MoldPlan entity) {
return null;
List<MoldPlan> dataList = baseMapper.pageNearlyMonth(page, entity);
return page.setRecords(dataList);
}
@Override

@ -6,15 +6,22 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.desk.order.pojo.entity.PlateGoodsApply;
import org.springblade.desk.order.pojo.entity.PlateGoodsApplyDetail;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.order.mapper.PlateGoodsApplyMapper;
import org.springblade.desk.order.service.IPlateGoodsApplyDetailService;
import org.springblade.desk.order.pojo.entity.AssayContentDetail;
import org.springblade.desk.order.pojo.entity.PlateGoodsApply;
import org.springblade.desk.order.pojo.entity.PlateGoodsRecord;
import org.springblade.desk.order.pojo.enums.AssayContentEnum;
import org.springblade.desk.order.pojo.enums.PlateGoodsEnum;
import org.springblade.desk.order.service.IAssayContentDetailService;
import org.springblade.desk.order.service.IAssayContentService;
import org.springblade.desk.order.service.IPlateGoodsApplyService;
import org.springblade.desk.order.service.IPlateGoodsRecordService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* 服务实现类
@ -25,7 +32,9 @@ import java.util.List;
@Service
public class PlateGoodsApplyServiceImpl extends BaseServiceImpl<PlateGoodsApplyMapper, PlateGoodsApply> implements IPlateGoodsApplyService {
private final IPlateGoodsApplyDetailService detailService;
private final IAssayContentService assayContentService;
private final IAssayContentDetailService assayContentDetailService;
private final IPlateGoodsRecordService goodsRecordService;
@Override
public IPage<PlateGoodsApply> selectPage(IPage<PlateGoodsApply> page, PlateGoodsApply entity) {
@ -34,30 +43,78 @@ public class PlateGoodsApplyServiceImpl extends BaseServiceImpl<PlateGoodsApplyM
}
@Override
public boolean save(PlateGoodsApply entity, List<PlateGoodsApplyDetail> detailList, List<Long> recordIdList) {
if (this.save(entity)) {
// 1. 更新化验记录相关数据
public boolean save(List<AssayContentDetail> assayContentDetailList, List<Long> recordIdList) {
// 1. 更新化验记录相关数据
if (Func.isEmpty(assayContentDetailList)) {
return false;
}
// 1.1 获取化验记录ID,更新化验记录状态为已使用
Long assayContentId = assayContentDetailList.get(0).getAcId();
assayContentService.changeStatus(Arrays.asList(assayContentId), AssayContentEnum.STATUS_USED.getCode());
// 1.2 报错化验记录明细
assayContentDetailService.saveBatch(assayContentDetailList);
// 2. 计算本次总添加量
BigDecimal addVal = assayContentDetailList.stream()
.map(detail -> detail.getAddVal() == null ? BigDecimal.ZERO : detail.getAddVal())
.reduce(BigDecimal.ZERO, BigDecimal::add);
// 3. 更新需求单的相关数据
// 3.1 根据id查询需求单
List<PlateGoodsRecord> recordList = goodsRecordService.listByIds(recordIdList);
// 3.2 将需求单按照创建时间正序排列,
recordList = recordList.stream()
.sorted(Comparator.comparing(PlateGoodsRecord::getCreateTime, Comparator.nullsLast(Date::compareTo)))
.collect(Collectors.toList());
// 2. 更新需求单的相关数据
for (PlateGoodsApplyDetail detail : detailList) {
detail.setPgadId(entity.getId());
// 计算本次申请总添加量
BigDecimal applyTotalVal = recordList.stream()
.map(detail -> detail.getSurplus() == null ? BigDecimal.ZERO : detail.getSurplus())
.reduce(BigDecimal.ZERO, BigDecimal::add);
// 本次剩余单号余量, 最小为0
BigDecimal notAddVal = applyTotalVal.subtract(addVal);
notAddVal = notAddVal.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : notAddVal;
// 缓存要添加的订单列表
List<PlateGoodsRecord> addRecordList = new ArrayList<>();
// 3.3. 按照创建先后顺序补充需求单的物料需求数量
for (PlateGoodsRecord plateGoodsRecord : recordList) {
// 获取需求单剩余添加量
BigDecimal surplus = plateGoodsRecord.getSurplus();
if (addVal.compareTo(surplus) >= 0) {
// 若本次添加量,满足该订单后,还有剩余, 记录此订单,更新剩余添加量后,继续循环
plateGoodsRecord.setSurplus(BigDecimal.ZERO);
plateGoodsRecord.setStatus(PlateGoodsEnum.STATUS_DONE.getCode());
addRecordList.add(plateGoodsRecord);
addVal = addVal.subtract(surplus);
if (BigDecimal.ZERO.equals(addVal)) {
break;
}
} else {
// 若不能完全满足一个需求单,只能行需求单的剩余添加量信息
plateGoodsRecord.setSurplus(surplus.subtract(addVal));
addRecordList.add(plateGoodsRecord);
break;
}
detailService.saveBatch(detailList);
return true;
}
return false;
}
@Override
public boolean update(PlateGoodsApply entity, List<PlateGoodsApplyDetail> detailList) {
if (this.save(entity)) {
//TODO 先根据需求ID将原明细删除
// 4. 记录添加的需求单信息; 关联单号, 本次剩余单号余量
String addAbortRecordNo = addRecordList.stream()
.map(PlateGoodsRecord::getDemandCode)
.filter(code -> code != null && !code.trim().isEmpty())
.collect(Collectors.joining(","));
// 保存新的明细
detailService.saveBatch(detailList);
return true;
for (PlateGoodsRecord plateGoodsRecord : addRecordList) {
plateGoodsRecord.setInvolvingRecordCode(addAbortRecordNo);
plateGoodsRecord.setNotAddVal(notAddVal);
}
return false;
goodsRecordService.saveBatch(addRecordList);
return true;
}
@Override

@ -40,11 +40,19 @@ public class PlateGoodsRecordServiceImpl extends BaseServiceImpl<PlateGoodsRecor
return page.setRecords(dataList);
}
@Override
public List<PlateGoodsRecord> listNoFinished(Long wcId, Integer dayRange) {
List<PlateGoodsRecord> dataList = baseMapper.listNoFinished(wcId, dayRange, PlateGoodsEnum.STATUS_PASS.getCode());
return dataList;
}
@Override
public boolean save(PlateGoodsRecord entity, List<PlateGoodsRecordDetail> detailList) {
// todo 需求单号需要优化
entity.setDemandCode(DateUtils.dateTimeNow());
entity.setSurplus(entity.getDeclaredQuota());
entity.setStatus(PlateGoodsEnum.STATUS_WAITING.getCode());
entity.setApprovalStatus(PlateGoodsEnum.STATUS_WAITING.getCode());
if (this.save(entity)) {
for (PlateGoodsRecordDetail detail : detailList) {
detail.setPgrdId(entity.getId());

@ -92,14 +92,75 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
@Override
public IPage<YieldOrder> pageMaterialApply(IPage<YieldOrder> page, Long wcId, Integer materialType, Integer overHalfMon) {
// 只有电镀的需要镀层物料,故只查询电镀的订单
List<YieldOrderEnum> yieldTypeList = new ArrayList<>();
yieldTypeList.add(YieldOrderEnum.YIELD_TYPE_1);
// 只有未开始加工的订单需要申请,已加工及之后状态的不需要申请
List<YieldOrderEnum> yieldStatusList = new ArrayList<>();
yieldStatusList.add(YieldOrderEnum.STATUS_NORMAL);
yieldStatusList.add(YieldOrderEnum.STATUS_EXCEPTION);
yieldStatusList.add(YieldOrderEnum.STATUS_NO_ISSUED);
yieldStatusList.add(YieldOrderEnum.STATUS_APS);
yieldStatusList.add(YieldOrderEnum.STATUS_PROCESS_WAITING);
YieldOrder entity = new YieldOrder();
entity.setWorkCenterId(wcId);
// TODO 1. 金钾银钾如何区分,使用工艺编制中的物料编号,其中只有金钾、银钾的选项
// TODO 2. 允许使用半月以上的数据是以生产订单的什么时间算,需查看原来的逻辑
List<YieldOrder> dataList = baseMapper.selectPage(page, entity, null);
List<YieldOrder> dataList = baseMapper.pageMaterialApply(page, wcId, materialType, overHalfMon, yieldTypeList, yieldStatusList);
return page.setRecords(dataList);
}
@Override
public String dataVerify(List<Long> ids) {
// 先根据ID查询订单列表
LambdaQueryWrapper<YieldOrder> queryWrapper = Wrappers.lambdaQuery(YieldOrder.class)
.eq(YieldOrder::getIsDeleted, CommonConstant.DELETE_FALSE)
.in(YieldOrder::getId, ids);
List<YieldOrder> yieldOrderList = baseMapper.selectList(queryWrapper);
// 遍历订单列表,根据异常钻状态,判断调用的校验方法
// for (YieldOrder yieldOrder : yieldOrderList) {
// if (YieldOrderEnum.VALIDATION_NO.getCode() == yieldOrder.getValidationResult()
// || YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCode() == yieldOrder.getValidationResult()) {
// // 进行数据校验,验证不通过,不进行后续验证,直接返回;
// if (!this.verifyYieldOrderData(yieldOrder)) {
// continue;
// }
// // 进行工艺校验,验证不通过,不进行后续验证,直接返回;
// if (!this.verifyYieldOrderCraft(yieldOrder)) {
// continue;
// }
// // 进行资源校验,验证不通过,不进行后续验证,直接返回;
// if (!this.verifyYieldOrderResource(yieldOrder)) {
// continue;
// }
// // 最后进行超期校验
// this.verifyYieldOrderDelivery(yieldOrder);
// } else if (YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCode() == yieldOrder.getValidationResult()) {
// // 进行工艺校验,验证不通过,不进行后续验证,直接返回;
// if (!this.verifyYieldOrderCraft(yieldOrder)) {
// continue;
// }
// // 进行资源校验,验证不通过,不进行后续验证,直接返回;
// if (!this.verifyYieldOrderResource(yieldOrder)) {
// continue;
// }
// // 最后进行超期校验
// this.verifyYieldOrderDelivery(yieldOrder);
// } else if (YieldOrderEnum.VALIDATION_RESULT_LESS_RESOURCE.getCode() == yieldOrder.getValidationResult()) {
// // 进行资源校验,验证不通过,不进行后续验证,直接返回;
// if (!this.verifyYieldOrderResource(yieldOrder)) {
// continue;
// }
// // 最后进行超期校验
// this.verifyYieldOrderDelivery(yieldOrder);
// }
// }
return "校验成功";
}
@Override
public boolean confirmBatch(List<Long> ids) {
List<YieldOrder> yieldOrderList = new ArrayList<>();
@ -141,6 +202,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
public Boolean verifyYieldOrderData(YieldOrder yieldOrder) {
// 1. 验证是否已有该流程卡号的数据, 若已有
LambdaQueryWrapper<YieldOrder> wrapper = Wrappers.lambdaQuery(YieldOrder.class)
.eq(YieldOrder::getIsDeleted, CommonConstant.DELETE_FALSE)
.eq(YieldOrder::getYoCode, yieldOrder.getYoCode())
.ne(YieldOrder::getId, yieldOrder.getId());
YieldOrder yieldOrderCheck = baseMapper.selectOne(wrapper);
@ -487,6 +549,8 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
yieldOrder.setReceiveUser(yieldJson.getLong("failureMan"));
yieldOrder.setReceiveTime(yieldJson.getDate("failureTime"));
yieldOrder.setStatus(YieldOrderEnum.STATUS_APS.getCode());
yieldOrder.setPriorityErp(yieldJson.getInteger("priority") + 14000);
yieldOrder.setPriorityAps(YieldOrderEnum.PRIORITY_APS_NORMAL.getCode());
// 若任务下达时间为空, 取从erp同步的时间
if (ObjectUtil.isEmpty(yieldOrder.getReleaseDate())) {
yieldOrder.setReleaseDate(yieldJson.getDate("syncTime"));

@ -1,46 +0,0 @@
package org.springblade.desk.order.task;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 排产定时任务
*
* @author Chill
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class OrderApsJob {
private final IYieldOrderService yieldOrderService;
@Value("${business.oldMes.jobEnable}")
private String jobEnable;
/**
* 同步生产订单定时任务
* TODO 以后需要交由PowerJob服务统一管理
*/
@Scheduled(cron = "0 0/3 * * * ?")
public void syncOrderFromOldMes() {
log.info("开始同步生产订单...");
if ("false".equals(jobEnable)) {
log.info("同步生产订单已关闭...");
return;
}
// 同步生产订单
List<String> cardNoList = yieldOrderService.syncYieldOrderFromOldMes();
// 推送同步结果,避免重复同步
yieldOrderService.syncYieldOrderResultToOldMes(cardNoList);
log.info("同步生产订单已完成...");
}
}

@ -6,6 +6,7 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.cache.WorkCenterCache;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.order.pojo.entity.AssayContent;
import org.springblade.desk.order.pojo.enums.AssayContentEnum;
import org.springblade.desk.order.pojo.vo.AssayContentVo;
import org.springblade.system.cache.UserCache;
import org.springblade.system.pojo.entity.User;
@ -34,8 +35,10 @@ public class AssayContentWrapper extends BaseEntityWrapper<AssayContent, AssayCo
WorkCenter workCenter = WorkCenterCache.getById(entity.getWcId());
if (Func.isNotEmpty(workCenter)) {
vo.setAssayManName(workCenter.getWcName());
vo.setWcName(workCenter.getWcName());
}
vo.setStatusName(AssayContentEnum.getName(entity.getStatus()));
return vo;
}
}

@ -2,9 +2,12 @@ package org.springblade.desk.order.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.order.pojo.entity.MoldPlan;
import org.springblade.desk.order.pojo.enums.MoldPlanEnum;
import org.springblade.desk.order.pojo.vo.MoldPlanVo;
import org.springblade.system.cache.UserCache;
import org.springblade.system.pojo.entity.User;
import java.util.Objects;
@ -22,6 +25,12 @@ public class MoldPlanWrapper extends BaseEntityWrapper<MoldPlan, MoldPlanVo> {
@Override
public MoldPlanVo entityVO(MoldPlan entity) {
MoldPlanVo vo = Objects.requireNonNull(BeanUtil.copyProperties(entity, MoldPlanVo.class));
User user = UserCache.getUser(entity.getCreateUser());
if (Func.isNotEmpty(user)) {
vo.setCreateUserName(user.getAccount());
}
vo.setStatusName(MoldPlanEnum.getName(entity.getStatus()));
vo.setMafStatusName(MoldPlanEnum.getName(entity.getMafStatus()));
vo.setMafTypeName(MoldPlanEnum.getName(entity.getMafType()));

@ -2,8 +2,14 @@ package org.springblade.desk.order.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.cache.WorkCenterCache;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.order.pojo.entity.PlateGoodsApply;
import org.springblade.desk.order.pojo.enums.PlateGoodsEnum;
import org.springblade.desk.order.pojo.vo.PlateGoodsApplyVo;
import org.springblade.system.cache.UserCache;
import org.springblade.system.pojo.entity.User;
import java.util.Objects;
@ -21,7 +27,18 @@ public class PlateGoodsApplyWrapper extends BaseEntityWrapper<PlateGoodsApply, P
@Override
public PlateGoodsApplyVo entityVO(PlateGoodsApply entity) {
PlateGoodsApplyVo vo = Objects.requireNonNull(BeanUtil.copyProperties(entity, PlateGoodsApplyVo.class));
// vo.setStatusName(PlateGoodsApplyEnum.getName(entity.getStatus()));
WorkCenter workCenter = WorkCenterCache.getById(entity.getWcId());
if (Func.isNotEmpty(workCenter)) {
vo.setWcName(workCenter.getWcName());
}
User createUser = UserCache.getUser(entity.getCreateUser());
if (Func.isNotEmpty(createUser)) {
vo.setCreateUserName(createUser.getAccount());
}
vo.setStatusName(PlateGoodsEnum.getName(entity.getStatus()));
return vo;
}
}

@ -23,6 +23,10 @@ public class YieldOrderWrapper extends BaseEntityWrapper<YieldOrder, YieldOrderV
public YieldOrderVo entityVO(YieldOrder entity) {
YieldOrderVo vo = Objects.requireNonNull(BeanUtil.copyProperties(entity, YieldOrderVo.class));
vo.setStatusName(YieldOrderEnum.getName(entity.getStatus()));
vo.setPriorityApsName(YieldOrderEnum.getName(entity.getPriorityAps()));
vo.setPriorityErpName(YieldOrderEnum.getName(entity.getPriorityErp()));
vo.setYieldTypeName(YieldOrderEnum.getName(entity.getYieldType()));
return vo;
}
}

@ -0,0 +1,39 @@
-- 化验明细添加槽号对应名称字段
ALTER TABLE MES_ASSAY_CONTENT_DETAIL ADD SLOT_NAME VARCHAR2(100) NULL;
COMMENT ON COLUMN MES_ASSAY_CONTENT_DETAIL.SLOT_NAME IS '槽名称';
-- 摸具申报添加字段
ALTER TABLE MES_MOLD_PLAN ADD STOCK_NUM NUMBER(8,0) NULL;
COMMENT ON COLUMN MES_MOLD_PLAN.STOCK_NUM IS '库存量';
ALTER TABLE MES_MOLD_PLAN ADD OCCUPY_NUM NUMBER(8,0) NULL;
COMMENT ON COLUMN MES_MOLD_PLAN.OCCUPY_NUM IS '占用量';
ALTER TABLE MES_MOLD_PLAN ADD LINK_ORDER_IDS VARCHAR2(255) NULL;
COMMENT ON COLUMN MES_MOLD_PLAN.LINK_ORDER_IDS IS 'LINK_ORDER_IDS';
-- 字段长度修改
ALTER TABLE MES_ASSAY_CONTENT MODIFY wc_id NUMBER(20,0);
ALTER TABLE MES_ASSAY_CONTENT MODIFY assay_man NUMBER(20,0);
ALTER TABLE MES_ASSAY_CONTENT MODIFY APPLY_ID NUMBER(20,0);
ALTER TABLE MES_ASSAY_CONTENT MODIFY APPLY_STATUS NUMBER(8,0) DEFAULT 0 ;
ALTER TABLE MES_ASSAY_CONTENT MODIFY IS_USED NUMBER(8,0);
ALTER TABLE MES_ASSAY_CONTENT_DETAIL MODIFY AC_ID NUMBER(20,0);
ALTER TABLE MES_MOLD_PLAN MODIFY ERP_ID NUMBER(20,0);
ALTER TABLE MES_MOLD_PLAN MODIFY YP_ID NUMBER(20,0);
ALTER TABLE MES_MOLD_PLAN MODIFY KEEPER NUMBER(20,0);
ALTER TABLE MES_MOLD_PLAN MODIFY RELEASER NUMBER(20,0);
ALTER TABLE MES_PLATE_GOODS_APPLY MODIFY BO_ID NUMBER(20,0);
ALTER TABLE MES_PLATE_GOODS_APPLY MODIFY BR_ID NUMBER(20,0);
ALTER TABLE MES_PLATE_GOODS_APPLY MODIFY AC_ID NUMBER(20,0);
ALTER TABLE MES_PLATE_GOODS_APPLY MODIFY PGR_ID NUMBER(20,0);
ALTER TABLE MES_PLATE_GOODS_APPLY MODIFY WC_ID NUMBER(20,0);
ALTER TABLE MES_PLATE_GOODS_RECORD MODIFY WC_ID NUMBER(20,0);
ALTER TABLE MES_PLATE_GOODS_RECORD MODIFY APPROVAL_STATUS NUMBER(20,0);
ALTER TABLE MES_PLATE_GOODS_RECORD MODIFY GOODS_BO_ID NUMBER(20,0);
ALTER TABLE MES_PLATE_GOODS_RECORD MODIFY COEFFICIENT_BO_ID NUMBER(20,0);
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 NOT_ADD_VAL NUMBER(20,10) NULL;
COMMENT ON COLUMN MES_PLATE_GOODS_RECORD.NOT_ADD_VAL IS '本次剩余单号余量';
Loading…
Cancel
Save