fix:原料入库单据编号

This commit is contained in:
zhengxuming
2025-08-04 14:25:49 +08:00
parent 63e897c6c6
commit dd91ed8792
7 changed files with 148 additions and 7 deletions

View File

@@ -123,9 +123,14 @@ public class PdaIosInController {
@PostMapping("/zwConfirmIn")
@Log("中钨组盘入库确认")
public ResponseEntity<Object> zwConfirmIn(@RequestBody ZwConfirmInDto dto) {
if(StringUtils.isEmpty(dto.getFormDataCode())){
throw new IllegalArgumentException("单据编码不能为空!");
}
if(CollectionUtils.isEmpty(dto.getParamList())){
throw new IllegalArgumentException("请传入参数!");
}
for(ZwConfirmInParamDto paramDto : dto.getParamList()){
if(StringUtils.isBlank(paramDto.getVehicle_code()) || StringUtils.isBlank(paramDto.getSite_code()))
throw new IllegalArgumentException("载具且卸货区点位不能为空!");
@@ -152,4 +157,14 @@ public class PdaIosInController {
assertNotBlankJson(whereJson, "请求参数不能为空", "sect_code", "group_id", "vehicle_code", "material_code", "qty", "stor_id");
return new ResponseEntity<>(pdaIosInService.confirmReturnMaterial(whereJson),HttpStatus.OK);
}
/**
* 空载具出库
*/
@PostMapping("vehicleInConfirm")
@Log("空载具入库")
public ResponseEntity<Object> vehicleInConfirm(@RequestBody JSONObject whereJson) {
assertNotBlankJson(whereJson, "请求参数不能为空", "sect_code", "vehicle_code", "material_code", "stor_id", "site_code");
return new ResponseEntity<>(pdaIosInService.vehicleInConfirm(whereJson), HttpStatus.OK);
}
}

View File

@@ -6,5 +6,6 @@ import java.util.List;
@Data
public class ZwConfirmInDto {
private String formDataCode;
private List<ZwConfirmInParamDto> paramList;
}

View File

@@ -154,4 +154,16 @@ public interface PdaIosInService {
* @return PdaResponse
*/
PdaResponse confirmReturnMaterial(JSONObject whereJson);
/**
* 空载具入库确认
*
* @param whereJson {
* sect_id 库区
* siteCode 起始站点
* }
* @return PdaResponse
*/
PdaResponse vehicleInConfirm(JSONObject whereJson);
}

View File

@@ -44,6 +44,7 @@ import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.tasks.BackInTask;
import org.nl.wms.sch_manage.service.util.tasks.VehicleInTask;
import org.nl.wms.sch_manage.service.util.tasks.VehicleOutTask;
import org.nl.wms.sch_manage.service.util.tasks.zw.InBillTask;
import org.nl.wms.system_manage.service.dict.dao.Dict;
@@ -364,6 +365,92 @@ public class PdaIosInServiceImpl implements PdaIosInService {
return PdaResponse.requestOk();
}
@Override
public PdaResponse vehicleInConfirm(JSONObject whereJson) {
// long qty = 1L;
// LambdaQueryWrapper<MdMeMaterialbase> queryWrapper = new LambdaQueryWrapper<>();
// //空托盘出库
// queryWrapper.eq(MdMeMaterialbase::getMaterial_id, StatusEnum.VEHICLE_TYPE.code("空托盘"));
//
// MdMeMaterialbase materDao = iMdMeMaterialbaseService.getOne(queryWrapper);
// if (materDao == null) {
// throw new BadRequestException("未找到空载具物料信息!");
// }
// whereJson.put("material_id", materDao.getMaterial_id());
// whereJson.put("material_code", materDao.getMaterial_code());
// Sectattr sectattr = iSectattrService.getById(new LambdaQueryWrapper<>(Sectattr.class)
// .eq(Sectattr::getSect_id, whereJson.getString("sect_id"))
// .eq(Sectattr::getIs_used, BaseDataEnum.IS_YES_NOT.code("是"))
// );
// if (ObjectUtil.isEmpty(sectattr)) {
// throw new BadRequestException("该仓位所属的库区已禁用,请先启用该库区!");
// }
// BsrealStorattr storeDao = iSrealStorattrService.getById(sectattr.getStor_id());
// whereJson.put("stor_code", storeDao.getStor_code());
// whereJson.put("sect_code", sectattr.getSect_code());
// StrategyStructParam strategyStructParam = StrategyStructParam.builder()
// .ioType(whereJson.getString(StatusEnum.STRATEGY_TYPE.code("出库")))
// .sect_code(whereJson.getString("sect_code"))
// .stor_code(whereJson.getString("stor_code"))
// .material_code(whereJson.getString("material_id"))
// .material_code(whereJson.getString("material_code"))
// .qty(BigDecimal.valueOf(qty))
// .build();
// List<StrategyStructMaterialVO> structList = iStructattrService.outBoundSectDiv(strategyStructParam);
// if (CollectionUtils.isEmpty(structList)) {
// throw new BadRequestException("无可用库存!");
// }
// structList.forEach(r -> {
// //创建任务
// JSONObject taskForm = new JSONObject();
// taskForm.put("task_type", IOSConstant.VEHICLE_IN_TASK);
// taskForm.put("config_code", IOSConstant.VEHICLE_IN_TASK);
// taskForm.put("TaskCode", CodeUtil.getNewCode("TASK_CODE"));
// taskForm.put("PickingLocation", r.getStruct_code());
// taskForm.put("PlacedLocation", whereJson.getString("siteCode"));
// taskForm.put("vehicle_code", r.getStoragevehicle_code());
// VehicleInTask vehicleInTask = SpringContextHolder.getBean("VehicleInTask");
// applyTaskMap.get(IOSConstant.VEHICLE_IN_TASK).create(whereJson);
// vehicleInTask.create(taskForm);
// });
// //更新组盘记录表
// Set<String> vehicleCodeSet = structList.stream()
// .map(StrategyStructMaterialVO::getStoragevehicle_code)
// .collect(Collectors.toSet());
// mdPbGroupplateMapper.update(
// new GroupPlate(),
// new LambdaUpdateWrapper<GroupPlate>()
// .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))
// .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
// .in(GroupPlate::getStoragevehicle_code, vehicleCodeSet)
// );
// //锁定仓位
// Set<String> structCodeSet = structList.stream()
// .map(StrategyStructMaterialVO::getStruct_code)
// .collect(Collectors.toSet());
// iStructattrService.update(
// new LambdaUpdateWrapper<Structattr>()
// .set(Structattr::getInv_id, null)
// .set(Structattr::getInv_code, null)
// .set(Structattr::getInv_type, null)
// .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("出库锁"))
// .in(Structattr::getStruct_code, structCodeSet)
// );
//空载具入库
whereJson.put("qty", 1);
String materialCode = StatusEnum.VEHICLE_TYPE.code("空托盘");
whereJson.put("material_id", materialCode);
//组盘
groupPlate(whereJson);
// 生成空载具入库任务
whereJson.put("config_code", IOSConstant.VEHICLE_IN_TASK);
whereJson.put("vehicle_code", whereJson.getString("vehicle_code"));
whereJson.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
//入库分配
divStructNoBills(whereJson);
return PdaResponse.requestOk();
}
/**
* 不含单据入库业务
@@ -561,12 +648,12 @@ public class PdaIosInServiceImpl implements PdaIosInService {
//卸货区空托盘应该放置的点,对应task point2
whereJson.put("sch_base_point", schBasePointString);
whereJson.put("bill_type",StatusEnum.IOBILL_TYPE_IN.code("来料入库"));
whereJson.put("priority","1");
whereJson.put("task_group_seq",taskGroupSeq);
whereJson.put("task_group_id",taskGroupId);
whereJson.put("form_data_code",dto.getFormDataCode());
jsonObjectList.add(whereJson);
//下一个的托盘放置点为本次的起点
lastSchBasePoint = whereJson.getString("site_code");
@@ -595,7 +682,6 @@ public class PdaIosInServiceImpl implements PdaIosInService {
}
return PdaResponse.requestOk();
}
// @Override
@@ -921,6 +1007,8 @@ public class PdaIosInServiceImpl implements PdaIosInService {
jsonMst.put("task_group_seq", whereJson.getString("task_group_seq"));
jsonMst.put("task_group_id", whereJson.getString("task_group_id"));
jsonMst.put("vehicle_code", whereJson.getString("vehicle_code"));
jsonMst.put("form_data_code", whereJson.getString("form_data_code"));
// 组织明细数据
IOStorInvDtl dtlDao = ioStorInvDtlMapper.selectOne(
new QueryWrapper<IOStorInvDtl>().lambda()

View File

@@ -117,6 +117,10 @@ public class SchBaseTask implements Serializable {
private String update_name;
private String form_data_code;
private String update_time;
@TableField(exist = false)
private String config_name;

View File

@@ -5,14 +5,14 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.apache.commons.collections4.CollectionUtils;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.IdUtil;;
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.pm_manage.service.IPmFormDataService;
import org.nl.wms.pm_manage.service.dao.PmFormData;
import org.nl.wms.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBasePointService;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
@@ -23,7 +23,6 @@ import org.nl.wms.sch_manage.service.util.AcsTaskDto;
import org.nl.wms.sch_manage.service.util.TaskType;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService;
import org.nl.wms.warehouse_manage.inAndOut.service.IOutBillService;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMapper;
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
@@ -35,6 +34,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author: zhengxuming
* @Description: 来料入库
@@ -64,6 +64,10 @@ public class InBillTask extends AbstractTask {
@Resource
private ISchBasePointService pointService;
@Autowired
private IPmFormDataService iPmFormDataService;
/**
* 仓位服务
*/
@@ -89,6 +93,7 @@ public class InBillTask extends AbstractTask {
task.setTask_group_seq(json.getBigDecimal("task_group_seq"));
task.setRequest_param(json.toString());
task.setPriority(json.getString("priority"));
task.setForm_data_code(json.getString("form_data_code"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());
@@ -189,6 +194,20 @@ public class InBillTask extends AbstractTask {
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code3()));
rawAssistIStorService.taskFinish(taskObj);
List<SchBaseTask> noFinishTask = taskService.list(new LambdaQueryWrapper<>(SchBaseTask.class)
.eq(SchBaseTask::getForm_data_code,taskObj.getForm_data_code())
.eq(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code(""))
.ne(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()));
//判断单据编号下的任务是否已经全部完成 即没有未完成数据
if(CollectionUtils.isEmpty(noFinishTask)){
iPmFormDataService.update(
new LambdaUpdateWrapper<PmFormData>()
.set(PmFormData::getStatus,IOSEnum.BILL_STATUS.code("完成"))
.set(PmFormData::getUpdate_time,DateUtil.now())
.set(PmFormData::getUpdate_name, "task")
.eq(PmFormData::getCode, taskObj.getForm_data_code()));
}
}
@Transactional(rollbackFor = Exception.class)

View File

@@ -788,6 +788,8 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
task.put("point_code3", whereJson.get("point_code3"));
task.put("point_code4", ioStorInvDis.getStruct_code());
task.put("form_data_code", whereJson.get("form_data_code"));
//第一个载具为计算得到的,第二个载具为起始点载具
task.put("vehicle_code", ioStorInvDis.getStoragevehicle_code());
task.put("vehicle_code2", whereJson.get("vehicle_code"));