rev:修改异常入库分配规则

This commit is contained in:
zhangzq
2024-11-13 19:13:33 +08:00
parent 1abca23987
commit 80eb98ddcd
2 changed files with 75 additions and 5 deletions

View File

@@ -84,7 +84,7 @@ public class PdaPickController {
//生成拣选明细:传主表信息
Assert.noNullElements(new Object[]{pickTask,pickTask.getId(),pickTask.getPick_vehicle_23(),pickTask.getPick_vehicle_13(),pickTask.getIs_move(),pickTask.getPoint_code(),pickTask.getProduct_area(),pickTask.getStor_code()},"拣选确认异常,请求参数不能为空");
RedissonUtils.lock(() -> {
pickingService.pdaPick(pickTask);
pickingService.pdaPickTask(pickTask);
}, pickTask.getCode()+"手持拣选操作", null);
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}

View File

@@ -34,6 +34,7 @@ import org.nl.wms.stor_manage.io.service.iostor_dtl.dto.StIvtIostorinvdtlVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -296,14 +297,24 @@ public class PickingService {
}
}
/**
* 手持拣选功能
* @param pickTask
*/
public void pdaPickTask(PickTask pickTask) {
PickingService pickingService = SpringContextHolder.getBean(PickingService.class);
FlowContinueEvent continueEvent = pickingService.pdaPick(pickTask);
BussEventMulticaster.Publish(continueEvent);
}
@Transactional
public void pdaPick(PickTask pickTask) {
public FlowContinueEvent pdaPick(PickTask pickTask) {
PmFormData mst = iFormDataService.getById(pickTask.getId());
if (mst==null||mst.getStatus().equals(StatusEnum.FORM_STATUS.code("完成"))||mst.getStatus().equals(StatusEnum.FORM_STATUS.code("取消"))){
throw new BadRequestException("拣选作业不存在或已完成");
}
}//只能有一条明细
List<PmFormData> dtls = iFormDataService.getByParentId(pickTask.getId());
if (CollectionUtils.isEmpty(dtls)||dtls.size()>0){
if (CollectionUtils.isEmpty(dtls)||dtls.size()>1){
throw new BadRequestException("拣选作业明细数据异常");
}
PmFormData dtl = dtls.get(0);
@@ -342,7 +353,66 @@ public class PickingService {
out.put("form_data",outof);
array.add(in);
array.add(out);
//更新主要单据执行中
mst.setStatus(StatusEnum.FORM_STATUS.code("已分配"));
iFormDataService.update(new UpdateWrapper<PmFormData>()
.set("status",StatusEnum.FORM_STATUS.code("已分配"))
.set("update_time",DateUtil.now())
.set("update_name",SecurityUtils.getCurrentNickName())
.eq("id",pickTask.getId())
);
this.savePickTask(array);
this.taskOpen((JSONObject) JSONObject.toJSON(mst));
if (StringUtils.isEmpty(mst.getProc_inst_id())) {
throw new BadRequestException("下发失败当前单据不存在流程实例id");
}
if (!mst.getStatus().equals(StatusEnum.FORM_STATUS.code("已分配"))) {
throw new BadRequestException("下发失败:当前单据未分配或者一下发");
}
JSONObject mstJ = (JSONObject) JSON.toJSON(mst);
ExecutionDto dto = new ExecutionDto();
dto.setForm_id(mst.getId());
dto.setForm_type(mst.getForm_type());
dto.setSource_form_type(mst.getSource_form_type());
dto.setSource_form_id(mst.getSource_form_id());
dto.setT(mstJ);
dto.setItem(packageT(mstJ, "id"));
JSONObject form_data = mstJ.getJSONObject("form_data");
String platform = form_data.getString("point_code");
String sourceVehicle = mstJ.getString("vehicle_code");
List<Map<String,Object>> converys = new ArrayList<>();
for (ExecutionDto executionDto : dto.getItem()) {
for (ExecutionDto executionDto1 : executionDto.getItem()) {
JSONObject dis = executionDto1.getT();
if (!"false".equals(dis.getJSONObject("form_data").getString("is_move"))) {
String vehicle_code = dis.getString("vehicle_code");
BmVehicleInfo vehicleInfo = iBmVehicleInfoService.getOne(new QueryWrapper<BmVehicleInfo>().eq("vehicle_code", vehicle_code));
if (vehicleInfo==null || vehicleInfo.getH()==null ||vehicleInfo.getH().intValue()<1){
throw new BadRequestException(vehicle_code+"载具信息不存在,请确认载具基础表载具及高度信息是否完整");
}
if (vehicle_code.equals(sourceVehicle)) {
converys.add(MapOf.of("c",platform,"v",vehicleInfo.getH()));
} else {
converys.add(MapOf.of("c",Pick_Convery.get(platform),"v",vehicleInfo.getH()));
}
}
}
}
System.out.println("拣选平台输送线分配信息"+converys);
for (Map<String,Object> convery : converys) {
wmsToAcsService.toCommand((String)convery.get("c"), "1",(Integer) convery.get("v"));
}
PickingService pickingService = SpringContextHolder.getBean(this.getClass());
pickingService.disGroup(mst);
iFormDataService.update(new UpdateWrapper<PmFormData>()
.set("status",StatusEnum.FORM_STATUS.code("执行中"))
.eq("id",mst.getId()));
//只有透传才有vehicle_code参数否则只有inst_id
FlowContinueEvent continueEvent = new FlowContinueEvent(mst.getProc_inst_id(), (PermeateFunction<String, String>) (inst_id, vehicle_code) -> iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
.set("proc_inst_id",inst_id)
.eq("is_delete",false)
.eq("vehicle_code",vehicle_code)), null)
.setDto(dto);
return continueEvent;
}
}