|
|
|
|
@ -32,6 +32,8 @@ import lombok.extern.slf4j.Slf4j; |
|
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl; |
|
|
|
|
import org.springblade.core.tool.api.R; |
|
|
|
|
import org.springblade.core.tool.utils.Func; |
|
|
|
|
import org.springblade.desk.common.constant.BizTypeConstant; |
|
|
|
|
import org.springblade.desk.common.service.IMesNotifyMessageService; |
|
|
|
|
import org.springblade.desk.dashboard.mapper.DsMoldChangeMapper; |
|
|
|
|
import org.springblade.desk.dashboard.pojo.entity.DsMoldChangeEntity; |
|
|
|
|
import org.springblade.desk.dashboard.pojo.enums.DsMoldChangeEnum; |
|
|
|
|
@ -40,6 +42,8 @@ import org.springblade.desk.dashboard.service.IDsMoldChangeService; |
|
|
|
|
import org.springblade.system.feign.IUserClient; |
|
|
|
|
import org.springblade.system.pojo.entity.User; |
|
|
|
|
import org.springblade.system.pojo.entity.UserInfo; |
|
|
|
|
import org.springblade.wms.feign.WmsTaskClient; |
|
|
|
|
import org.springblade.wms.pojo.entity.StUserRight; |
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
|
@ -60,6 +64,12 @@ public class DsMoldChangeServiceImpl extends BaseServiceImpl<DsMoldChangeMapper, |
|
|
|
|
@Autowired |
|
|
|
|
IUserClient userClient; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private WmsTaskClient wmsTaskClient; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
IMesNotifyMessageService mesNotifyMessageService; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public IPage<DsMoldChangeVO> selectDsMoldChangePage(IPage<DsMoldChangeVO> page, DsMoldChangeVO moldChange) { |
|
|
|
|
List<DsMoldChangeVO> moldChangeList = baseMapper.selectDsMoldChangePage(page, moldChange); |
|
|
|
|
@ -101,27 +111,35 @@ public class DsMoldChangeServiceImpl extends BaseServiceImpl<DsMoldChangeMapper, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean saveMoldChange(DsMoldChangeVO moldChange) { |
|
|
|
|
this.save(moldChange); |
|
|
|
|
|
|
|
|
|
String processMode = moldChange.getProcessMode(); |
|
|
|
|
|
|
|
|
|
if (StringUtil.isNotBlank(processMode)) { |
|
|
|
|
String[] modeArray = processMode.split(","); |
|
|
|
|
Set<Integer> modeSet = Arrays.stream(modeArray) |
|
|
|
|
.map(String::trim) |
|
|
|
|
.filter(StringUtil::isNotBlank) |
|
|
|
|
.map(Integer::parseInt) |
|
|
|
|
.collect(Collectors.toSet()); |
|
|
|
|
|
|
|
|
|
// 根据不同的处理方式执行相应逻辑
|
|
|
|
|
if (modeSet.contains(DsMoldChangeEnum.MOLD_REPAIR.getCode()) && modeSet.contains(DsMoldChangeEnum.INVENTORY_WRITE_OFF.getCode())) { |
|
|
|
|
this.handleMoldRepair(moldChange); |
|
|
|
|
this.handleInventoryWriteOff(moldChange); |
|
|
|
|
} else if (modeSet.contains(DsMoldChangeEnum.MOLD_REPAIR.getCode())) { |
|
|
|
|
this.handleMoldRepair(moldChange); |
|
|
|
|
} else if (modeSet.contains(DsMoldChangeEnum.INVENTORY_WRITE_OFF.getCode())) { |
|
|
|
|
this.handleInventoryWriteOff(moldChange); |
|
|
|
|
public boolean saveMoldChange(List<DsMoldChangeEntity> moldChangeList) { |
|
|
|
|
// 批量保存
|
|
|
|
|
this.saveBatch(moldChangeList); |
|
|
|
|
|
|
|
|
|
// 遍历每个实体,根据各自的 processMode 执行相应逻辑
|
|
|
|
|
for (DsMoldChangeEntity moldChange : moldChangeList) { |
|
|
|
|
String processMode = moldChange.getProcessMode(); |
|
|
|
|
|
|
|
|
|
if (StringUtil.isNotBlank(processMode)) { |
|
|
|
|
String[] modeArray = processMode.split(","); |
|
|
|
|
Set<Integer> modeSet = Arrays.stream(modeArray) |
|
|
|
|
.map(String::trim) |
|
|
|
|
.filter(StringUtil::isNotBlank) |
|
|
|
|
.map(Integer::parseInt) |
|
|
|
|
.collect(Collectors.toSet()); |
|
|
|
|
|
|
|
|
|
// 根据不同的处理方式执行相应逻辑
|
|
|
|
|
if (modeSet.contains(DsMoldChangeEnum.MOLD_REPAIR.getCode()) |
|
|
|
|
&& modeSet.contains(DsMoldChangeEnum.INVENTORY_WRITE_OFF.getCode())) { |
|
|
|
|
// 同时包含模具补制和库存报废
|
|
|
|
|
this.handleMoldRepair(moldChange); |
|
|
|
|
this.handleInventoryWriteOff(moldChange); |
|
|
|
|
} else if (modeSet.contains(DsMoldChangeEnum.MOLD_REPAIR.getCode())) { |
|
|
|
|
// 仅模具补制
|
|
|
|
|
this.handleMoldRepair(moldChange); |
|
|
|
|
} else if (modeSet.contains(DsMoldChangeEnum.INVENTORY_WRITE_OFF.getCode())) { |
|
|
|
|
// 仅库存报废
|
|
|
|
|
this.handleInventoryWriteOff(moldChange); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -131,7 +149,7 @@ public class DsMoldChangeServiceImpl extends BaseServiceImpl<DsMoldChangeMapper, |
|
|
|
|
/** |
|
|
|
|
* 处理模具补制逻辑 |
|
|
|
|
*/ |
|
|
|
|
private void handleMoldRepair(DsMoldChangeVO moldChange) { |
|
|
|
|
private void handleMoldRepair(DsMoldChangeEntity moldChange) { |
|
|
|
|
// TODO: 实现模具补制的业务逻辑
|
|
|
|
|
// 例如:创建模具补制工单、更新模具状态等
|
|
|
|
|
} |
|
|
|
|
@ -139,8 +157,47 @@ public class DsMoldChangeServiceImpl extends BaseServiceImpl<DsMoldChangeMapper, |
|
|
|
|
/** |
|
|
|
|
* 处理库存报废逻辑 |
|
|
|
|
*/ |
|
|
|
|
private void handleInventoryWriteOff(DsMoldChangeVO moldChange) { |
|
|
|
|
// TODO: 实现库存报废的业务逻辑
|
|
|
|
|
// 例如:创建报废单、扣减库存、更新物料状态等
|
|
|
|
|
private void handleInventoryWriteOff(DsMoldChangeEntity moldChange) { |
|
|
|
|
if (moldChange == null || StringUtil.isBlank(moldChange.getPartCode())) { |
|
|
|
|
log.warn("库存报废处理失败:磨具变更信息或物料号为空"); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
R<StUserRight> storekeepersByGoodsCode = wmsTaskClient.getStorekeepersByGoodsCode(moldChange.getPartCode()); |
|
|
|
|
|
|
|
|
|
// 判断返回结果是否成功
|
|
|
|
|
if (storekeepersByGoodsCode == null || !storekeepersByGoodsCode.isSuccess()) { |
|
|
|
|
log.warn("获取仓管员失败,物料号:{},返回结果:{}", |
|
|
|
|
moldChange.getPartCode(), |
|
|
|
|
storekeepersByGoodsCode != null ? storekeepersByGoodsCode.getMsg() : "null"); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
StUserRight data = storekeepersByGoodsCode.getData(); |
|
|
|
|
if (data == null) { |
|
|
|
|
log.warn("获取仓管员数据为空,物料号:{}", moldChange.getPartCode()); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Long userId = data.getUserId(); |
|
|
|
|
if (userId == null) { |
|
|
|
|
log.warn("仓管员用户ID为空,物料号:{}", moldChange.getPartCode()); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 发送通知
|
|
|
|
|
mesNotifyMessageService.saveMsg( |
|
|
|
|
BizTypeConstant.INVENTORY_WRITE_OFF, |
|
|
|
|
"库存报废", |
|
|
|
|
"库存报废,请处理:" + moldChange.getPartCode(), |
|
|
|
|
userId |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
log.info("库存报废通知发送成功,物料号:{},仓管员ID:{}", moldChange.getPartCode(), userId); |
|
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("库存报废处理异常,物料号:" + moldChange.getPartCode(), e); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|