Merge branch 'liweidong'

liweidong
liweidong-hj 5 days ago
commit ac7ecde2f0
  1. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/constant/BizTypeConstant.java
  2. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsMoldChangeController.java
  3. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsMoldChangeService.java
  4. 107
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsMoldChangeServiceImpl.java

@ -18,4 +18,6 @@ public interface BizTypeConstant {
String CRAFT_TASK_REDEPLOY = "工艺任务转派";
String SET_SUITE_FLOW = "齐套流转";
String INVENTORY_WRITE_OFF = "库存报废";
}

@ -43,6 +43,8 @@ import org.springblade.desk.dashboard.service.IDsMoldChangeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 磨具变更 控制器
*
@ -77,8 +79,8 @@ public class DsMoldChangeController extends BladeController {
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入moldChange")
public R save(@Valid @RequestBody DsMoldChangeVO moldChange) {
return R.status(moldChangeService.saveMoldChange(moldChange));
public R save(@Valid @RequestBody List<DsMoldChangeEntity> moldChangeList) {
return R.status(moldChangeService.saveMoldChange(moldChangeList));
}
}

@ -30,6 +30,8 @@ import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.dashboard.pojo.entity.DsMoldChangeEntity;
import org.springblade.desk.dashboard.pojo.vo.DsMoldChangeVO;
import java.util.List;
/**
* 模具变更
* @author BladeX
@ -49,5 +51,5 @@ public interface IDsMoldChangeService extends BaseService<DsMoldChangeEntity> {
* @param moldChange
* @return
*/
boolean saveMoldChange(DsMoldChangeVO moldChange);
boolean saveMoldChange(List<DsMoldChangeEntity> moldChangeList);
}

@ -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);
}
}
}

Loading…
Cancel
Save