liweidong-hj 3 months ago
commit 339418f6b1
  1. 5
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynGlassCakeProcessor.java
  2. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IApsOrderClient.java
  3. 1
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsRecord.java
  4. 10
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/enums/MoldApplyEnum.java
  5. 5
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/dto/table/Prtbasdef.java
  6. 5
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/dto/table/Prtmsg.java
  7. 11
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/StGoodStatisVO.java
  8. 22
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/MoldApplyController.java
  9. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/ApsOrderClient.java
  10. 21
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsRecordMapper.xml
  11. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IMoldApplyService.java
  12. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java
  13. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldPlanService.java
  14. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/AssayContentServiceImpl.java
  15. 15
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldApplyServiceImpl.java
  16. 60
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsApplyServiceImpl.java
  17. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java
  18. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java
  19. 69
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java
  20. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.java
  21. 17
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml
  22. 14
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpPrtmsgMapper.java
  23. 5
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpPrtmsgMapper.xml
  24. 12
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpPrtmsgService.java
  25. 40
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbWoServiceImpl.java
  26. 20
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpPrtmsgServiceImpl.java
  27. 16
      blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.java
  28. 35
      blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.xml
  29. 13
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStRealtimeStockService.java
  30. 15
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StRealtimeStockServiceImpl.java

@ -2,6 +2,7 @@ package org.springblade.job.processor.erp;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.order.feign.IApsOrderClient;
import org.springblade.erpdata.feign.IErpMesRbWoClient;
import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext;
@ -13,14 +14,14 @@ import java.util.concurrent.CompletableFuture;
@Slf4j
public class SynGlassCakeProcessor implements BasicProcessor {
private final IErpMesRbWoClient mesRbWoClient;
private final IApsOrderClient orderClient;
@Override
public ProcessResult process(TaskContext taskContext) throws Exception {
log.info("同步玻璃饼订单定时任务开始");
CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synGlassCake());
CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> orderClient.synGlassCake());
log.info("同步玻璃饼订单定时任务结束");
return new ProcessResult(true);
}

@ -29,6 +29,8 @@ public interface IApsOrderClient {
String GET_PART_LIST = API_PREFIX + "/getPartList";
String UPDATE_BY_ID = API_PREFIX + "/updateById";
String CLOSE_PLAN_LIST = API_PREFIX + "/getClosePlanList";
String MAX_CARD_NO = API_PREFIX + "/getMaxCardNo";
String SYN_GLASS_CAKE = API_PREFIX + "/synGlassCake";
@PostMapping(SYNC_PLAN_FROM_SAVE)
void saveList(List<YieldPlan> yieldOrderList);
@ -42,4 +44,8 @@ public interface IApsOrderClient {
void updateById(YieldPlan yieldPlan);
@GetMapping(CLOSE_PLAN_LIST)
List<YieldPlan> getClosePlanList();
@GetMapping(MAX_CARD_NO)
String getMaxCardNo();
@GetMapping(SYN_GLASS_CAKE)
void synGlassCake();
}

@ -72,6 +72,7 @@ public class PlateGoodsRecord extends BaseEntity {
* 审批状态
* 11001:正常, 11002:审批中, 11003:不通过, 11004:通过
*/
@Deprecated
@TableField(value = "APPROVAL_STATUS")
private Integer approvalStatus;

@ -21,10 +21,12 @@ public enum MoldApplyEnum {
/**
* 状态枚举
*/
STATUS_WAITING("待出库", 10000),
STATUS_OUT_STORE("已出库", 10001),
STATUS_DONE("完成", 10002),
STATUS_CLOSE("关闭", 10003),
STATUS_CREATE("新建", 10000),
STATUS_SEND("已下发", 10001),
STATUS_WAITING("待出库", 10002),
STATUS_OUT_STORE("已出库", 10003),
STATUS_DONE("完成", 10004),
STATUS_CLOSE("关闭", 10005),
/**
* 状态枚举; 11001新建11002:已下发11003已完成

@ -1,6 +1,8 @@
package org.springblade.erpdata.pojo.dto.table;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springblade.core.mp.base.BaseEntity;
/**
* 对应ERP中表 t_prtbasdef
@ -9,7 +11,8 @@ import lombok.Data;
* @date 2026-01-16 17:32
*/
@Data
public class Prtbasdef {
@TableName("t_prtbasdef")
public class Prtbasdef extends BaseEntity {
private String prtno; //物料号

@ -1,6 +1,8 @@
package org.springblade.erpdata.pojo.dto.table;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springblade.core.mp.base.BaseEntity;
/**
* 对应ERP中表 t_prtmsg
@ -9,7 +11,8 @@ import lombok.Data;
* @date 2026-01-16 17:32
*/
@Data
public class Prtmsg {
@TableName("t_prtmsg")
public class Prtmsg extends BaseEntity {
private String prtarea; //面积

@ -0,0 +1,11 @@
package org.springblade.wms.pojo.vo;
import lombok.Data;
@Data
public class StGoodStatisVO {
private Double totalQuantity;
private Double zyQuantity;
}

@ -48,20 +48,6 @@ public class MoldApplyController extends BladeController {
return R.data(MoldApplyWrapper.build().pageVO(page));
}
/**
* 分页-近一月的申报记录
*/
@Parameters({
@Parameter(name = "partCode", description = "零件号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "toolCode", description = "工装号", in = ParameterIn.QUERY, schema = @Schema(type = "string"))
})
@GetMapping("/pageNearlyMonth")
@Operation(summary = "分页-近一月的模具计划", description = "")
public R<IPage<MoldApplyVo>> pageNearlyMonth(@Parameter(hidden = true) MoldApply entity, Query query) {
IPage<MoldApply> page = moldApplyService.pageNearlyMonth(Condition.getPage(query), entity);
return R.data(MoldApplyWrapper.build().pageVO(page));
}
/**
* 详情
*/
@ -77,8 +63,8 @@ public class MoldApplyController extends BladeController {
*/
@PostMapping("/saveByDemand")
@Operation(summary = "新增-根据需求新增", description = "")
public R save(@Valid @RequestBody MoldApply moldApply) {
moldApplyService.save(moldApply);
public R saveByDemand(@Valid @RequestBody MoldApply moldApply) {
moldApplyService.saveByDemand(moldApply);
return R.status(true);
}
@ -87,8 +73,8 @@ public class MoldApplyController extends BladeController {
*/
@PostMapping("/saveBatch")
@Operation(summary = "新增-批量", description = "")
public R save(@Valid @RequestBody List<MoldApply> applylist) {
moldApplyService.save(applylist);
public R saveBatch(@Valid @RequestBody List<MoldApply> applylist) {
moldApplyService.saveBatchByPage(applylist);
return R.status(true);
}
}

@ -30,6 +30,8 @@ public class ApsOrderClient implements IApsOrderClient {
private final IYieldPlanService yieldPlanService;
private final IYieldOrderService yieldOrderService;
private final IDsCraftService dsCraftService;
private final IDsPartService dsPartService;
@ -71,4 +73,14 @@ public class ApsOrderClient implements IApsOrderClient {
.orderByAsc(YieldPlan::getCheckCloseTime)
.last("limit 1000"));
}
@Override
public String getMaxCardNo() {
return yieldOrderService.getMaxCardNo();
}
@Override
public void synGlassCake() {
yieldPlanService.synGlassCake();
}
}

@ -3,11 +3,17 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.desk.order.mapper.PlateGoodsRecordMapper">
<!-- 定义基础公共字段 -->
<sql id = "baseCommonFields">
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, DEMAND_CODE, INVOLVING_RECORD_CODE,
NOT_ADD_VAL, DETAIL_ORDER_NUM
</sql>
<select id = "selectPage" 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
SELECT <include refid = "baseCommonFields" />
FROM MES_PLATE_GOODS_RECORD
WHERE IS_DELETED = 0
<if test = "entity.demandCode != null and entity.demandCode != ''">
@ -22,13 +28,11 @@
<if test = "entity.approvalStatus != null and entity.approvalStatus != ''">
AND approval_status = #{entity.approvalStatus}
</if>
order by CREATE_TIME desc
</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
SELECT <include refid = "baseCommonFields" />
FROM MES_PLATE_GOODS_RECORD
WHERE IS_DELETED = 0
AND WC_ID = #{wcId}
@ -36,6 +40,7 @@
<if test = "dayRange != null and dayRange != 0">
AND CREATE_TIME >= SYSDATE - #{dayRange}
</if>
order by CREATE_TIME desc
</select>
<select id = "getMaxByCodePattern" resultType = "string">

@ -31,11 +31,19 @@ public interface IMoldApplyService extends BaseService<MoldApply> {
*/
IPage<MoldApply> pageNearlyMonth(IPage<MoldApply> page, MoldApply entity);
/**
* 保存
*
* @param moldApply
* @return
*/
boolean saveByDemand(MoldApply moldApply);
/**
* 保存
*
* @param applyList
* @return
*/
boolean save(List<MoldApply> applyList);
boolean saveBatchByPage(List<MoldApply> applyList);
}

@ -193,4 +193,7 @@ public interface IYieldOrderService extends BaseService<YieldOrder> {
* @return
*/
boolean moldComplete(Long yoId);
String getMaxCardNo();
}

@ -64,4 +64,8 @@ public interface IYieldPlanService extends BaseService<YieldPlan> {
* @return
*/
Boolean checkCode(String yieldPlanId, String yieldPlanCode);
/**
* 同步玻璃饼订单
*/
void synGlassCake();
}

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springblade.common.constant.CommonConstant;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
@ -37,6 +38,7 @@ public class AssayContentServiceImpl extends BaseServiceImpl<AssayContentMapper,
@Override
public boolean save(AssayContent entity, List<AssayContentDetail> detailList) {
entity.setStatus(AssayContentEnum.STATUS_UNUSED.getCode());
entity.setIsUsed(CommonConstant.DELETE_FALSE);
BladeUser loginUser = AuthUtil.getUser();
entity.setAssayMan(loginUser.getUserId());

@ -5,6 +5,7 @@ import lombok.RequiredArgsConstructor;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.order.mapper.MoldApplyMapper;
import org.springblade.desk.order.pojo.entity.MoldApply;
import org.springblade.desk.order.pojo.enums.MoldApplyEnum;
import org.springblade.desk.order.service.IMoldApplyService;
import org.springframework.stereotype.Service;
@ -32,7 +33,17 @@ public class MoldApplyServiceImpl extends BaseServiceImpl<MoldApplyMapper, MoldA
}
@Override
public boolean save(List<MoldApply> applyList) {
return false;
public boolean saveByDemand(MoldApply moldApply) {
moldApply.setStatus(MoldApplyEnum.STATUS_CREATE.getCode());
return save(moldApply);
}
@Override
public boolean saveBatchByPage(List<MoldApply> applyList) {
for (MoldApply moldApply : applyList) {
moldApply.setStatus(MoldApplyEnum.STATUS_CREATE.getCode());
}
return saveBatch(applyList);
}
}

@ -18,6 +18,7 @@ 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 org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*;
@ -42,6 +43,25 @@ public class PlateGoodsApplyServiceImpl extends BaseServiceImpl<PlateGoodsApplyM
return page.setRecords(dataList);
}
@Override
public boolean confirmBatch(List<Long> ids, Integer approvalStatus, String approvalMemo) {
List<PlateGoodsApply> dataList = new ArrayList<>();
BladeUser user = AuthUtil.getUser();
ids.forEach(id -> {
PlateGoodsApply item = new PlateGoodsApply();
item.setId(id);
item.setApprovalMan(user.getUserId());
item.setApprovalTime(DateUtil.now());
item.setApprovalStatus(approvalStatus);
item.setApprovalMemo(approvalMemo);
dataList.add(item);
});
return this.updateBatchById(dataList);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean save(List<AssayContentDetail> assayContentDetailList, List<Long> recordIdList) {
// 1. 更新化验记录相关数据
@ -53,12 +73,12 @@ public class PlateGoodsApplyServiceImpl extends BaseServiceImpl<PlateGoodsApplyM
assayContentService.changeStatus(Arrays.asList(assayContentId), AssayContentEnum.STATUS_USED.getCode());
// 1.2 报错化验记录明细
assayContentDetailService.saveBatch(assayContentDetailList);
assayContentDetailService.updateBatchById(assayContentDetailList);
// 2. 计算本次总添加量
BigDecimal addVal = assayContentDetailList.stream()
.map(detail -> detail.getAddVal() == null ? BigDecimal.ZERO : detail.getAddVal())
.reduce(BigDecimal.ZERO, BigDecimal::add);
.map(detail -> detail.getAddVal() == null ? BigDecimal.ZERO : detail.getAddVal())
.reduce(BigDecimal.ZERO, BigDecimal::add);
// 3. 更新需求单的相关数据
// 3.1 根据id查询需求单
@ -66,13 +86,13 @@ public class PlateGoodsApplyServiceImpl extends BaseServiceImpl<PlateGoodsApplyM
// 3.2 将需求单按照创建时间正序排列,
recordList = recordList.stream()
.sorted(Comparator.comparing(PlateGoodsRecord::getCreateTime, Comparator.nullsLast(Date::compareTo)))
.collect(Collectors.toList());
.sorted(Comparator.comparing(PlateGoodsRecord::getCreateTime, Comparator.nullsLast(Date::compareTo)))
.collect(Collectors.toList());
// 计算本次申请总添加量
BigDecimal applyTotalVal = recordList.stream()
.map(detail -> detail.getSurplus() == null ? BigDecimal.ZERO : detail.getSurplus())
.reduce(BigDecimal.ZERO, BigDecimal::add);
.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;
@ -105,33 +125,15 @@ public class PlateGoodsApplyServiceImpl extends BaseServiceImpl<PlateGoodsApplyM
// 4. 记录添加的需求单信息; 关联单号, 本次剩余单号余量
String addAbortRecordNo = addRecordList.stream()
.map(PlateGoodsRecord::getDemandCode)
.filter(code -> code != null && !code.trim().isEmpty())
.collect(Collectors.joining(","));
.map(PlateGoodsRecord::getDemandCode)
.filter(code -> code != null && !code.trim().isEmpty())
.collect(Collectors.joining(","));
for (PlateGoodsRecord plateGoodsRecord : addRecordList) {
plateGoodsRecord.setInvolvingRecordCode(addAbortRecordNo);
plateGoodsRecord.setSurplus(notAddVal);
}
goodsRecordService.saveBatch(addRecordList);
goodsRecordService.updateBatchById(addRecordList);
return true;
}
@Override
public boolean confirmBatch(List<Long> ids, Integer approvalStatus, String approvalMemo) {
List<PlateGoodsApply> dataList = new ArrayList<>();
BladeUser user = AuthUtil.getUser();
ids.forEach(id -> {
PlateGoodsApply item = new PlateGoodsApply();
item.setId(id);
item.setApprovalMan(user.getUserId());
item.setApprovalTime(DateUtil.now());
item.setApprovalStatus(approvalStatus);
item.setApprovalMemo(approvalMemo);
dataList.add(item);
});
return this.updateBatchById(dataList);
}
}

@ -49,7 +49,7 @@ public class PlateGoodsRecordServiceImpl extends BaseServiceImpl<PlateGoodsRecor
@Override
public boolean save(PlateGoodsRecord entity, List<PlateGoodsRecordDetail> detailList) {
entity.setDemandCode(generateCode());
entity.setSurplus(entity.getDeclaredQuota());
entity.setSurplus(entity.getGoodsDemand());
entity.setStatus(PlateGoodsEnum.STATUS_WAITING.getCode());
entity.setApprovalStatus(PlateGoodsEnum.STATUS_WAITING.getCode());
entity.setDetailOrderNum(detailList.size());
@ -85,6 +85,7 @@ public class PlateGoodsRecordServiceImpl extends BaseServiceImpl<PlateGoodsRecor
plateGoodsRecord.setApprovalMan(user.getUserId());
plateGoodsRecord.setApprovalTime(DateUtil.now());
plateGoodsRecord.setApprovalStatus(approvalStatus);
plateGoodsRecord.setStatus(approvalStatus);
plateGoodsRecord.setApprovalMemo(approvalMemo);
plateGoodsRecordList.add(plateGoodsRecord);
});

@ -690,6 +690,11 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
return this.updateById(yieldOrder);
}
@Override
public String getMaxCardNo() {
return workOrderMapper.getMaxCardNo();
}
/**
* 验证零件子件信息
*

@ -2,20 +2,25 @@ package org.springblade.desk.order.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.desk.order.pojo.entity.YieldPlan;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.order.mapper.YieldPlanMapper;
import org.springblade.desk.order.pojo.entity.YieldPlan;
import org.springblade.desk.order.pojo.enums.YieldPlanEnum;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.order.service.IYieldPlanService;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@ -29,6 +34,10 @@ public class YieldPlanServiceImpl extends BaseServiceImpl<YieldPlanMapper, Yield
private final IYieldOrderService yieldOrderService;
private final IDsPartService dsPartService;
//private final IStRealtimeStockService stRealtimeStockService;
@Override
public IPage<YieldPlan> selectPageElectroplate(IPage<YieldPlan> page, YieldPlan entity) {
List<YieldPlanEnum> planTypeList = new ArrayList<>();
@ -105,4 +114,62 @@ public class YieldPlanServiceImpl extends BaseServiceImpl<YieldPlanMapper, Yield
YieldPlan yieldPlan = baseMapper.selectOne(queryWrapper);
return ObjectUtil.isNotEmpty(yieldPlan);
}
/**
* 同步玻璃饼
*/
@Override
public void synGlassCake() {
List<YieldPlan> yieldPlanList=baseMapper.selectList(new QueryWrapper<YieldPlan>().lambda()
.eq(YieldPlan::getIsDeleted, 0).eq(YieldPlan::getPlanType, 12002)
.eq(YieldPlan::getGenerateGlassCake, 0));;
List<String> partCodeList=yieldPlanList.stream().map(x->x.getPartCode()).toList();
//b1. 查询该计划的零件是否是玻璃相关的零件列表(sub_cursor)
List<DsPartEntity> dsPartList=dsPartService.list(new QueryWrapper<DsPartEntity>().lambda()
.in(DsPartEntity::getPartCode, partCodeList)
.like(DsPartEntity::getPartName, "玻璃"));// 获取零件信息
List<String> partList=dsPartList.stream().map(x->x.getPartCode()).toList();
yieldPlanList.forEach(yieldPlan -> {
if(!partList.contains(yieldPlan.getPartCode())){
yieldPlan.setGenerateGlassCake(1);
yieldPlan.setId(yieldPlan.getId());
baseMapper.updateById(yieldPlan);
}
//b3.1 生成流程卡号、批次号
//查询RB相关的流程卡号
String cardNo=yieldOrderService.getMaxCardNo();;
Long num;
if(StringUtils.isEmpty(cardNo)){
num=1L;
}else {
num=Long.valueOf(cardNo.replace("RB"+new SimpleDateFormat("yyMMdd").format(new Date()), ""))+1;
}
cardNo="RB"+new SimpleDateFormat("yyMMdd").format(new Date())+String.format("%05d", num);
String bathNo="Y"+new SimpleDateFormat("yyMMdd").format(new Date())+String.format("%05d", num);
//调用公共保存方法 todo
// dsPartList.forEach(dsPart -> {
// List<StRealtimeStock> stockList=stRealtimeStockService.getGoodsByPartCode(dsPart.getPartCode());
// StGoodStatisVO statisVO=stRealtimeStockService.getGoodsByCode(dsPart.getPartCode());
// Double subPorqty=dsPart.getQuota()*yieldPlan.getDeliveryQty() ;
// if(statisVO.getTotalQuantity()-statisVO.getZyQuantity()>=subPorqty){
// stockList.forEach(stock -> {
// if(stock.getQuantity()-stock.getOccupyQuantity()>=subPorqty){
// StRealtimeStock rs=new StRealtimeStock();
// rs.setId(stock.getId());
// rs.setOccupyQuantity(rs.getOccupyQuantity()+subPorqty);
// stRealtimeStockService.updateById(rs);
// }else {
// StRealtimeStock rs=new StRealtimeStock();
// rs.setId(stock.getId());
// rs.setOccupyQuantity(rs.getQuantity());
// stRealtimeStockService.updateById(rs);
// }
// });
// }
// });
//更新状态标记为已读`update MES_YIELD_PLAN set GENERATE_GLASS_CAKE = 1 where id = ?`
yieldPlan.setGenerateGlassCake(1);
yieldPlan.setId(yieldPlan.getId());
baseMapper.updateById(yieldPlan);
});
}
}

@ -34,4 +34,6 @@ public interface WorkOrderMapper extends BaseMapper<WorkOrder> {
WorkOrder getMaxByBatchNo(String codePattern, String ypCode);
WorkOrder getMaxByMesCardNo(String codePattern);
String getMaxCardNo();
}

@ -108,4 +108,21 @@
ORDER BY mwo.CREATE_TIME DESC
</select>
<select id="getMaxCardNo" resultType="java.lang.String">
SELECT
MAX(card_no)
FROM
(
SELECT
*
FROM
MES_YIELD_ORDER
WHERE
card_no LIKE 'RB'||to_char(SYSDATE,'yymmdd')||'%'
ORDER BY
card_no DESC )
WHERE
ROWNUM = 1
</select>
</mapper>

@ -0,0 +1,14 @@
package org.springblade.erpdata.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.erpdata.pojo.dto.table.Prtmsg;
/**
* Mapper 接口
*
* @author lqk
*/
public interface ErpPrtmsgMapper extends BaseMapper<Prtmsg> {
}

@ -0,0 +1,5 @@
<?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.ErpPrtmsgMapper">
</mapper>

@ -0,0 +1,12 @@
package org.springblade.erpdata.service;
import org.springblade.core.mp.base.BaseService;
import org.springblade.erpdata.pojo.dto.table.Prtmsg;
/**
* ERP数据查询service
*
* @author lqk
*/
public interface IErpPrtmsgService extends BaseService<Prtmsg> {
}

@ -3,6 +3,7 @@ package org.springblade.erpdata.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springblade.desk.dashboard.pojo.entity.DsCraftEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.order.feign.IApsOrderClient;
@ -17,9 +18,11 @@ import org.springblade.erpdata.service.IErpRrbwoerptomesService;
import org.springblade.erpdata.service.IErpWoService;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.SimpleFormatter;
/**
* @author lqk
@ -116,18 +119,31 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
@Override
public void synGlassCake() {
List<YieldPlan> yieldPlanList=apsOrderClient.getPlanList();
List<String> partCodeList=yieldPlanList.stream().map(x->x.getPartCode()).toList();
//b1. 查询该计划的零件是否是玻璃相关的零件列表(sub_cursor)
List<DsPartEntity> dsPartList=apsOrderClient.getPartList(partCodeList);// 获取零件信息
List<String> partList=dsPartList.stream().map(x->x.getPartCode()).toList();
yieldPlanList.forEach(yieldPlan -> {
if(!partList.contains(yieldPlan.getPartCode())){
yieldPlan.setGenerateGlassCake(1);
yieldPlan.setId(yieldPlan.getId());
apsOrderClient.updateById(yieldPlan);
}
});
// List<YieldPlan> yieldPlanList=apsOrderClient.getPlanList();
// List<String> partCodeList=yieldPlanList.stream().map(x->x.getPartCode()).toList();
// //b1. 查询该计划的零件是否是玻璃相关的零件列表(sub_cursor)
// List<DsPartEntity> dsPartList=apsOrderClient.getPartList(partCodeList);// 获取零件信息
// List<String> partList=dsPartList.stream().map(x->x.getPartCode()).toList();
// yieldPlanList.forEach(yieldPlan -> {
// if(!partList.contains(yieldPlan.getPartCode())){
// yieldPlan.setGenerateGlassCake(1);
// yieldPlan.setId(yieldPlan.getId());
// apsOrderClient.updateById(yieldPlan);
// }
// //b3.1 生成流程卡号、批次号
// //查询RB相关的流程卡号
// String cardNo=apsOrderClient.getMaxCardNo();
// Long num;
// if(StringUtils.isEmpty(cardNo)){
// num=1L;
// }else {
// num=Long.valueOf(cardNo.replace("RB"+new SimpleDateFormat("yyMMdd").format(new Date()), ""))+1;
// }
// cardNo="RB"+new SimpleDateFormat("yyMMdd").format(new Date())+String.format("%05d", num);
// String bathNo="Y"+new SimpleDateFormat("yyMMdd").format(new Date())+String.format("%05d", num);
// //调用公共保存方法 todo
//
// });
}
/**

@ -0,0 +1,20 @@
package org.springblade.erpdata.service.impl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.erpdata.mapper.ErpPrtmsgMapper;
import org.springblade.erpdata.pojo.dto.table.Prtmsg;
import org.springblade.erpdata.service.IErpPrtmsgService;
import org.springframework.stereotype.Service;
/**
* @author lqk
* @date 2025-11-26 9:39
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class ErpPrtmsgServiceImpl extends BaseServiceImpl<ErpPrtmsgMapper, Prtmsg> implements IErpPrtmsgService {
}

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.wms.excel.StRealtimeStockExcel;
import org.springblade.wms.pojo.entity.StRealtimeStock;
import org.springblade.wms.pojo.vo.StGoodStatisVO;
import org.springblade.wms.pojo.vo.StRealtimeStockVO;
import java.util.List;
@ -68,6 +69,19 @@ public interface StRealtimeStockMapper extends BaseMapper<StRealtimeStock> {
void updateRealTimeLock(String woCode, String string, double doubleValue);
List<StRealtimeStockVO> selectToolsStockPage(IPage<StRealtimeStockVO> page, StRealtimeStockVO stRealtimeStock);
/**
* 根据物料编码查询库存信息
*
* @param partCode
* @return
*/
List<StRealtimeStock> getGoodsByPartCode(String partCode);
/**
* 根据物料编码查询库存信息
*
* @param partCode
* @return
*/
StGoodStatisVO getGoodsByCode(String partCode);
}

@ -348,5 +348,40 @@
AND h.type = 5
</where>
</select>
<select id="getGoodsByPartCode" resultMap="stRealtimeStockResultMap">
SELECT
a.ID,
a.quantity,
a.OCCUPY_QUANTITY
FROM
st_realtime_stock a,
st_goods b
<where>
a.is_deleted = 0
and a.goods_id = b.id
AND a.quantity - a.OCCUPY_QUANTITY > 0
<if test="partCode != null">
AND b.GOODS_CODE = #{partCode}
</if>
</where>
ORDER BY a.id ASC
</select>
<select id="getGoodsByCode" resultType="org.springblade.wms.pojo.vo.StGoodStatisVO">
SELECT
sum(a.QUANTITY) AS totalQuantity,
sum(a.OCCUPY_QUANTITY) AS zyQuantity
FROM
st_realtime_stock a,
st_goods b
<where>
a.is_deleted = 0
and a.goods_id = b.id
AND a.quantity - a.OCCUPY_QUANTITY > 0
<if test="partCode != null">
AND b.GOODS_CODE = #{partCode}
</if>
</where>
ORDER BY a.id ASC
</select>
</mapper>

@ -11,6 +11,7 @@ import org.springblade.wms.pojo.entity.StStorageLocation;
import org.springblade.wms.pojo.entity.StStoreBill;
import org.springblade.wms.pojo.vo.PrintParentWoLabel;
import org.springblade.wms.pojo.vo.PrintStoresList;
import org.springblade.wms.pojo.vo.StGoodStatisVO;
import org.springblade.wms.pojo.vo.StRealtimeStockVO;
import java.util.List;
@ -78,5 +79,17 @@ public interface IStRealtimeStockService extends BaseService<StRealtimeStock> {
IPage<StRealtimeStockVO> selectStockGoodsPage(IPage<StRealtimeStockVO> page, StRealtimeStockVO stRealtimeStock);
IPage<StRealtimeStockVO> selectToolsStockPage(IPage<StRealtimeStockVO> page, StRealtimeStockVO stRealtimeStock);
/**
* 根据物料编码查询库存信息
* @param partCode
* @return
*/
List<StRealtimeStock> getGoodsByPartCode(String partCode);
/**
* 根据物料编码统计信息
* @param partCode
* @return
*/
StGoodStatisVO getGoodsByCode(String partCode);
}

@ -18,10 +18,7 @@ import org.springblade.wms.mapper.StGoodsMapper;
import org.springblade.wms.mapper.StRealtimeStockMapper;
import org.springblade.wms.mapper.StStorageLocationMapper;
import org.springblade.wms.pojo.entity.*;
import org.springblade.wms.pojo.vo.PrintParentWoLabel;
import org.springblade.wms.pojo.vo.PrintStoresList;
import org.springblade.wms.pojo.vo.PrintWoLabel;
import org.springblade.wms.pojo.vo.StRealtimeStockVO;
import org.springblade.wms.pojo.vo.*;
import org.springblade.wms.service.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -75,6 +72,16 @@ public class StRealtimeStockServiceImpl extends BaseServiceImpl<StRealtimeStockM
return page.setRecords(baseMapper.selectToolsStockPage(page, stRealtimeStock));
}
@Override
public List<StRealtimeStock> getGoodsByPartCode(String partCode) {
return baseMapper.getGoodsByPartCode(partCode);
}
@Override
public StGoodStatisVO getGoodsByCode(String partCode) {
return baseMapper.getGoodsByCode(partCode);
}
@Override
public List<PrintParentWoLabel> printPrintWoLabel(List<Long> rlsIdList, Short quantity) {
if (rlsIdList == null || rlsIdList.size() == 0) {

Loading…
Cancel
Save