Merge remote-tracking branch 'origin/master'

This commit is contained in:
2025-08-13 20:32:50 +08:00
15 changed files with 312 additions and 63 deletions

View File

@@ -13,7 +13,7 @@ import org.springframework.stereotype.Service;
import java.util.List;
/**
* 原料库规则
* 原料库规则
* @Author: zhengxuming
* @Date: 2025年7月29日14:11:10
*/
@@ -34,9 +34,9 @@ public class RawInRuleHandle extends Decisioner<Structattr, JSONObject> {
.eq("is_used", true)
.eq("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"))
.eq("sect_code", param.getString("sect_code"))
.isNotNull("storagevehicle_code")
.isNull("storagevehicle_code")
.isNull("Task_code")
.eq("occupancy_state",2)
.eq("occupancy_state",1)
.orderByAsc("update_time");
List<Structattr> querylList = iStructattrService.list(query);
return querylList;

View File

@@ -144,15 +144,15 @@ public class MesToWmsServiceImpl implements MesToWmsService {
public MesResponse callMaterial(MesCallMaterialRequestDto dto) {
log.info("MES下发设备叫料信息输入参数-------------------: {}", dto);
if(dto.getIsManual() != null && dto.getIsManual()){
dto.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
}
RLock lock = redissonClient.getLock(dto.getTask_code());
boolean tryLock = lock.tryLock(1, TimeUnit.SECONDS);
try {
if (tryLock) {
if(dto.getIsManual() != null && dto.getIsManual()){
dto.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
}
String pointCode = dto.getDevice_code();
SchBasePoint outPoint = pointService.getById(pointCode);
if (null == outPoint) {
@@ -169,6 +169,10 @@ public class MesToWmsServiceImpl implements MesToWmsService {
throw new BadRequestException("仓位【" + dto.getStruct_code() + "】不存在!");
}
if(3 != outStructAttr.getOccupancy_state()|| StringUtils.isBlank(outStructAttr.getStoragevehicle_code())){
throw new BadRequestException("仓位【" + dto.getStruct_code() + "】上没有料,无法叫料!");
}
List<SchBaseTask> taskList = taskService.list(new QueryWrapper<SchBaseTask>().lambda()
.eq(SchBaseTask::getExt_task_code, dto.getTask_code()));
@@ -204,7 +208,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
}
if(!"1".equals(outPoint.getPoint_status())){
throw new BadRequestException("设备【" + dto.getStruct_code() + "】有托盘或有料,请执行下空桶上满料!");
throw new BadRequestException("设备【" + outPoint.getPoint_code() + "】有托盘或有料,请执行下空桶上满料!");
}
// 1、创建出库单、明细、分配明细
@@ -278,7 +282,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
}
outBillService.allSetPoint(taskParam);
return MesResponse.requestOk();
} else if("2".equals(dto.getTask_type())){
} else if("2".equals(dto.getTask_type())){
if(StringUtils.isBlank(outPoint.getVehicle_code())){
throw new BadRequestException("设备【" + pointCode + "】不存在料桶,请核对!");
@@ -424,24 +428,29 @@ public class MesToWmsServiceImpl implements MesToWmsService {
@SneakyThrows
public MesResponse backMaterial(MesBackMaterialRequestDto dto) {
log.info("MES下发设备退料信息输入参数-------------------: {}", dto);
if (dto.getIsManual() != null && dto.getIsManual()) {
dto.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
dto.setPcsn("退料");
dto.setQty_unit_name("");
//退料需要判断
if("1".equals(dto.getTask_type())){
if(StringUtils.isEmpty(dto.getMaterial_code())){
throw new BadRequestException("物料编码不可为空");
}
if(StringUtils.isEmpty(dto.getQty())){
throw new BadRequestException("数量不可为空");
}
}
}
RLock lock = redissonClient.getLock(dto.getTask_code());
boolean tryLock = lock.tryLock(1, TimeUnit.SECONDS);
try {
if (tryLock) {
log.info("MES下发设备退料信息输入参数--------------------------------------" + MesResponse.requestOk());
if (dto.getIsManual() != null && dto.getIsManual()) {
dto.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
//如果是手工,则需要判断是否已经组盘
List<GroupPlate> groupList = iMdPbGroupplateService.list(new QueryWrapper<GroupPlate>()
.eq("storagevehicle_code", dto.getVehicle_code())
.eq("status", IOSEnum.GROUP_PLATE_STATUS.code("组盘")));
if (CollectionUtils.isEmpty(groupList)) {
throw new BadRequestException("手工退料需要先组盘,请先组盘");
}
}
//根据料桶号去载具表匹配料桶类型
MdPbStoragevehicleinfo mdPbStoragevehicleinfo = iMdPbStoragevehicleinfoService.getByCode(dto.getVehicle_code());
@@ -470,6 +479,9 @@ public class MesToWmsServiceImpl implements MesToWmsService {
if("1".equals(dto.getTask_type())){
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getByCode(dto.getMaterial_code(), true);
//通过托盘号查找组盘信息
param.put("sect_code",sectattr.getSect_code());
param.put("sect_id",sectattr.getSect_id());
param.put("vehicle_code",dto.getVehicle_code());

View File

@@ -83,6 +83,21 @@ public class PdaIosInController {
return new ResponseEntity<>(pdaIosInService.getSect(whereJson), HttpStatus.OK);
}
@PostMapping("/getPdaSect")
@Log("PDA获取库区")
public ResponseEntity<Object> getPdaSect(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(pdaIosInService.getPdaSect(whereJson), HttpStatus.OK);
}
@PostMapping("/getPdaStruct")
@Log("PDA获取库位")
public ResponseEntity<Object> getPdaStruct(@RequestBody JSONObject whereJson) {
assertNotBlankJson(whereJson, "请求参数不能为空", "sect_code");
return new ResponseEntity<>(pdaIosInService.getPdaStruct(whereJson), HttpStatus.OK);
}
@PostMapping("/getRegion")
@Log("获取区域")

View File

@@ -94,6 +94,19 @@ public interface PdaIosInService {
*/
List<SelectItemVo> getSect(JSONObject whereJson);
/**
* 查询库区
*
* @return PdaResponse
*/
PdaResponse getPdaSect(JSONObject whereJson);
/**
* 查询库位
*
* @return PdaResponse
*/
PdaResponse getPdaStruct(JSONObject whereJson);
/**
* 查询区域

View File

@@ -349,7 +349,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
}
@Override
public List<SelectItemVo> getSect(JSONObject whereJson) {
public List<SelectItemVo> getSect(JSONObject whereJson) {
PageQuery pageQuery = new PageQuery();
IPage<SectattrDto> sectList = iSectattrService.queryAll(new HashMap(), pageQuery);
List<SelectItemVo> selectList = new ArrayList<>();
@@ -359,6 +359,38 @@ public class PdaIosInServiceImpl implements PdaIosInService {
return selectList;
}
@Override
public PdaResponse getPdaSect(JSONObject whereJson) {
PageQuery pageQuery = new PageQuery();
IPage<SectattrDto> sectList = iSectattrService.queryAll(new HashMap(), pageQuery);
List<SelectItemVo> selectList = new ArrayList<>();
sectList.getRecords().forEach(r ->
selectList.add(SelectItemVo.builder().text(r.getStor_name() + "-" + r.getSect_name()).value(r.getSect_id()).build())
);
return PdaResponse.requestParamOk(selectList);
}
@Override
public PdaResponse getPdaStruct(JSONObject whereJson) {
List<Structattr> structattrList = iStructattrService.list(new LambdaQueryWrapper<Structattr>()
.eq(Structattr::getOccupancy_state, 3)
.eq(Structattr::getLock_type, "0")
.and(wp -> wp
.eq(Structattr::getSect_id, whereJson.getString("sect_code"))
.or()
.eq(Structattr::getSect_code, whereJson.getString("sect_code"))
)
.isNotNull(Structattr::getStoragevehicle_code)
.isNull(Structattr::getTask_code));
List<SelectItemVo> selectList = new ArrayList<>();
structattrList.forEach(r ->
selectList.add(SelectItemVo.builder().text(r.getStruct_code() + "-" + r.getStruct_name()).value(r.getStruct_name()).build())
);
return PdaResponse.requestParamOk(selectList);
}
@Override
public PdaResponse getRegion(JSONObject whereJson) {
PageQuery pageQuery = new PageQuery();
@@ -495,10 +527,8 @@ public class PdaIosInServiceImpl implements PdaIosInService {
whereJson.put("config_code", IOSConstant.BACK_IN_TASK);
whereJson.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
//入库分配
//手工的,需要更新组盘表
if(!whereJson.containsKey("is_manual") || !whereJson.getBoolean("is_manual")){
groupPlate(whereJson);
}
groupPlate(whereJson);
whereJson.put("bill_type",StatusEnum.IOBILL_TYPE_IN.code("余料入库"));
whereJson.put("stragegy_type",StatusEnum.IOBILL_TYPE_IN.code("余料入库"));
@@ -535,11 +565,18 @@ public class PdaIosInServiceImpl implements PdaIosInService {
@Transactional
public PdaResponse vehicleInConfirm(JSONObject whereJson) {
//空载具入库
Sectattr sectattr = sectattrService.findByCode(whereJson.getString("sect_code"));
Sectattr sectattr = sectattrService.findById(whereJson.getString("sect_code"));
if(sectattr == null){
throw new BadRequestException("库区" + whereJson.getString("sect_code") +"不存在");
}
whereJson.put("sect_code", sectattr.getSect_code());
whereJson.put("sect_id", sectattr.getSect_id());
if(sectattr.getSect_name().contains("不合格")){
throw new BadRequestException("不合格区不允许空载具入库");
}
whereJson.put("stor_id",sectattr.getStor_id());
//得到当前点位的载具编号
@@ -551,6 +588,24 @@ public class PdaIosInServiceImpl implements PdaIosInService {
if(schBasePointList.size()>1){
throw new BadRequestException("存在重复点位,请确认");
}
if(!"2".equals(schBasePointList.get(0).getPoint_status())){
throw new BadRequestException("点位状态不为空载具,请核对!");
}
//判断点位和仓位是否有正在执行的任务
List<SchBaseTask> schBaseTaskList = iSchBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO)
.and(wp -> wp
.eq(SchBaseTask::getPoint_code1, schBasePointList.get(0).getPoint_code())
.or()
.eq(SchBaseTask::getPoint_code2, schBasePointList.get(0).getPoint_code())
)
.le(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode()));
if (CollectionUtils.isNotEmpty(schBaseTaskList)) {
throw new BadRequestException("存在正在执行的点位,请核对!");
}
whereJson.put("site_code",schBasePointList.get(0).getPoint_code());
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getByCode(whereJson.getString("vehicle_code"));

View File

@@ -27,10 +27,14 @@ import org.nl.wms.basedata_manage.service.dto.StrategyStructParam;
import org.nl.wms.decision_manage.service.strategyConfig.enums.StragegyTypeEnum;
import org.nl.wms.pda_manage.ios_manage.service.PdaIosOutService;
import org.nl.wms.pda_manage.util.PdaResponse;
import org.nl.wms.sch_manage.enums.PointStatusEnum;
import org.nl.wms.sch_manage.enums.StatusEnum;
import org.nl.wms.sch_manage.enums.TaskEnum;
import org.nl.wms.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBasePointService;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.tasks.PdaPointTask;
import org.nl.wms.sch_manage.service.util.tasks.StOutTask;
@@ -154,6 +158,9 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
@Autowired
private IInBillService iRawAssistIStorService;
@Autowired
private ISchBaseTaskService taskService;
@Override
public PdaResponse getDtl(JSONObject whereJson) {
@@ -240,6 +247,26 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
@Override
@Transactional
public PdaResponse vehicleOutConfirm(JSONObject whereJson) {
//出库点位需要空点位
List<SchBasePoint> schBasePointList = iSchBasePointService.list(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getPoint_code, whereJson.getString("siteCode"))
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()));
if(CollectionUtils.isEmpty(schBasePointList)){
throw new BadRequestException("点位" + whereJson.getString("siteCode") + "不存在或不是空位");
}
//判断点位是否有正在执行的任务
List<SchBaseTask> list = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
.lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())
.eq(SchBaseTask::getIs_delete, false)
.and(ll -> ll.eq(SchBaseTask::getPoint_code1, whereJson.getString("siteCode")).or()
.eq(SchBaseTask::getPoint_code2, whereJson.getString("siteCode"))));
if (CollectionUtils.isNotEmpty(list)) {
throw new BadRequestException(whereJson.getString("siteCode") + " 该点位已存在任务!");
}
long qty = 1L;
LambdaQueryWrapper<MdMeMaterialbase> queryWrapper = new LambdaQueryWrapper<>();
//空料箱出库
@@ -262,6 +289,9 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
if (ObjectUtil.isEmpty(sectattr)) {
throw new BadRequestException("该仓位所属的库区已禁用,请先启用该库区!");
}
if(sectattr.getSect_name().contains("不合格")){
throw new BadRequestException("不合格区不允许空载具入库");
}
BsrealStorattr storeDao = iSrealStorattrService.getById(sectattr.getStor_id());
whereJson.put("stor_code", storeDao.getStor_code());
whereJson.put("sect_code", sectattr.getSect_code());

View File

@@ -52,8 +52,7 @@ public class SchBasePointController {
@PostMapping("/updatePointType")
@Log("修改点位类型")
public ResponseEntity<Object> updatePointType(@Validated @RequestBody SchBasePoint entity) {
schBasePointService.updatePointType(entity);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
return new ResponseEntity<>(schBasePointService.updatePointType(entity),HttpStatus.OK);
}

View File

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.pda_manage.util.PdaResponse;
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
import org.nl.wms.sch_manage.service.dto.SchBasePointQuery;
@@ -45,7 +46,7 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
*
* @param entity /
*/
void updatePointType(SchBasePoint entity);
PdaResponse updatePointType(SchBasePoint entity);
/**
* 多选删除

View File

@@ -16,6 +16,7 @@ import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.pda_manage.util.PdaResponse;
import org.nl.wms.sch_manage.enums.PointStatusEnum;
import org.nl.wms.sch_manage.enums.StatusEnum;
import org.nl.wms.sch_manage.service.ISchBasePointService;
@@ -142,11 +143,15 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
}
@Override
public void updatePointType(SchBasePoint entity) {
public PdaResponse updatePointType(SchBasePoint entity) {
SchBasePoint point = pointMapper.selectById(entity.getPoint_code());
if (point == null) {
throw new BadRequestException("点位信息不存在,请核对编码=【" + entity.getPoint_code() + "】的点位在系统中是否配置!");
}
if(!"YLXCQ".equals(point.getRegion_code())){
throw new BadRequestException("只允许更改原料卸车区的点位");
}
point.setPoint_type(entity.getPoint_type());
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
@@ -155,6 +160,8 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
point.setUpdate_name(nickName);
point.setUpdate_time(now);
pointMapper.updateById(point);
return PdaResponse.requestOk();
}
@Override

View File

@@ -9,6 +9,7 @@ import org.nl.common.exception.BadRequestException;
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.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBasePointService;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
@@ -21,6 +22,8 @@ import org.nl.wms.warehouse_manage.enums.IOSEnum;
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;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@@ -50,6 +53,16 @@ public class StOutTask extends AbstractTask {
@Autowired
private ISchBasePointService iSchBasePointService;
/**
* 仓位服务
*/
@Autowired
private IStructattrService iStructattrService;
@Autowired
private IMdPbGroupplateService iMdPbGroupplateService;
@Override
public String create(JSONObject json) {
SchBaseTask task = new SchBaseTask();
@@ -177,6 +190,21 @@ public class StOutTask extends AbstractTask {
.eq(IOStorInvDis::getTask_id,taskObj.getTask_id())
);
//解锁库位
JSONObject finish_map = new JSONObject();
finish_map.put("struct_code",taskObj.getPoint_code1());
finish_map.put("storagevehicle_code",null);
finish_map.put("inv_type", null);
finish_map.put("inv_id", null);
finish_map.put("inv_code", null);
finish_map.put("occupancy_state", "1");
iStructattrService.updateStatusByCode("2",finish_map);
//更新组盘表 status 10->20
iMdPbGroupplateService.update(new LambdaUpdateWrapper<>(GroupPlate.class)
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
.eq(GroupPlate::getStoragevehicle_code,taskObj.getPoint_code1()));
// 更新任务状态
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
taskObj.setRemark("已取消");

View File

@@ -3,6 +3,7 @@ package org.nl.wms.sch_manage.service.util.tasks;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil;
@@ -20,10 +21,14 @@ import org.nl.wms.sch_manage.service.util.AbstractTask;
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.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
* @Author: gbx
* @Description: 空载具入库任务
@@ -51,6 +56,12 @@ public class VehicleInTask extends AbstractTask {
@Autowired
private IStructattrService iStructattrService;
/**
* 组盘信息表
*/
@Autowired
private IMdPbGroupplateService iMdPbGroupPlateService;
/**
* WMS回传MES
*/
@@ -162,9 +173,19 @@ public class VehicleInTask extends AbstractTask {
new UpdateWrapper<SchBasePoint>().lambda()
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
.set(SchBasePoint::getVehicle_code, null)
.set(SchBasePoint::getIng_task_code,null)
.set(SchBasePoint::getIos_id, null)
.set(SchBasePoint::getPoint_status,"1")
);
//更新组盘
iMdPbGroupPlateService.update(
new GroupPlate(),
new LambdaUpdateWrapper<GroupPlate>()
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
.eq(GroupPlate::getStoragevehicle_code, taskObj.getVehicle_code())
);
// 更新任务
taskObj.setRemark("已完成");
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
@@ -194,6 +215,15 @@ public class VehicleInTask extends AbstractTask {
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
taskService.updateById(taskObj);
//解锁
//解锁库位
JSONObject unlock_map = new JSONObject();
unlock_map.put("struct_code", taskObj.getPoint_code2());
unlock_map.put("inv_type", null);
unlock_map.put("inv_id", null);
unlock_map.put("inv_code", null);
iStructattrService.updateStatusByCode("2",unlock_map);
//反馈到MES系统
if("自动".equals(taskObj.getCreate_mode())){
JSONObject jsonObject=new JSONObject();

View File

@@ -3,8 +3,10 @@ package org.nl.wms.sch_manage.service.util.tasks;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.SecurityUtils;
import org.nl.common.utils.IdUtil;;
@@ -23,12 +25,16 @@ import org.nl.wms.warehouse_manage.enums.IOSEnum;
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;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @Author: gbx
@@ -58,6 +64,8 @@ public class VehicleOutTask extends AbstractTask {
*/
@Autowired
private IStructattrService iStructattrService;
@Autowired
private IMdPbGroupplateService iMdPbGroupplateService;
@Override
public String create(JSONObject json) {
@@ -153,23 +161,46 @@ public class VehicleOutTask extends AbstractTask {
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
taskObj.setRemark("已完成");
taskService.updateById(taskObj);
outBillService.taskFinish(taskObj);
// // 更新起点
// iStructattrService.update(
// new UpdateWrapper<Structattr>().lambda()
// .eq(Structattr::getStruct_code, taskObj.getPoint_code1())
//
// .set(Structattr::getOccupancy_state, 1)
// );
// 更新起点
iStructattrService.update(
new UpdateWrapper<Structattr>().lambda()
.eq(Structattr::getStruct_code, taskObj.getPoint_code1())
.set(Structattr::getOccupancy_state, 1)
);
//解锁
//解锁库位
JSONObject unlock_map = new JSONObject();
unlock_map.put("struct_code", taskObj.getPoint_code1());
unlock_map.put("inv_type", null);
unlock_map.put("inv_id", null);
unlock_map.put("inv_code", null);
unlock_map.put("storagevehicle_code", null);
unlock_map.put("occupancy_state", "1");
iStructattrService.updateStatusByCode("1",unlock_map);
// 更新终点
iSchBasePointService.update(
new UpdateWrapper<SchBasePoint>().lambda()
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2())
.set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code())
.set(SchBasePoint::getIng_task_code,null)
.set(SchBasePoint::getIos_id, null)
.set(SchBasePoint::getPoint_status,"2"));
//删除组盘表
//删除
Set<String> groupSet = iMdPbGroupplateService.list(new QueryWrapper<GroupPlate>().lambda()
.in(GroupPlate::getStoragevehicle_code, taskObj.getVehicle_code()))
.stream().map(GroupPlate::getStoragevehicle_code).collect(Collectors.toSet());
if(CollectionUtils.isNotEmpty(groupSet)) {
iMdPbGroupplateService.delete(groupSet);
}
}
@Transactional(rollbackFor = Exception.class)
@@ -192,6 +223,15 @@ public class VehicleOutTask extends AbstractTask {
.eq(IOStorInvDis::getTask_id,taskObj.getTask_id())
);
//解锁
//解锁库位
JSONObject unlock_map = new JSONObject();
unlock_map.put("struct_code", taskObj.getPoint_code1());
unlock_map.put("inv_type", null);
unlock_map.put("inv_id", null);
unlock_map.put("inv_code", null);
iStructattrService.updateStatusByCode("2",unlock_map);
// 更新任务状态
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
taskObj.setRemark("已取消");

View File

@@ -12,21 +12,16 @@ public class MesManualBackMaterialRequestDto {
@NotBlank(message = "料桶号不可为空")
private String vehicle_code;
private String material_code;
private String pcsn;
private String qty_unit_name;
@NotBlank(message = "数量不可为空")
private String qty;
private String supp_code;
private String supp_name;
private String remark;

View File

@@ -1158,6 +1158,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
finish_map.put("inv_type", null);
finish_map.put("inv_id", null);
finish_map.put("inv_code", null);
finish_map.put("occupancy_state", "1");
iStructattrService.updateStatusByCode("1",finish_map);
//库存绑定到出库点。
@@ -1261,6 +1262,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
finish_map.put("inv_type", null);
finish_map.put("inv_id", null);
finish_map.put("inv_code", null);
finish_map.put("occupancy_state", "1");
iStructattrService.updateStatusByCode("1",finish_map);
//库存变动:根据冻结数更新物料库存
StructattrChangeDto changeDto = StructattrChangeDto.builder()

View File

@@ -6,8 +6,10 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService;
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext;
import org.nl.wms.warehouse_manage.enums.IOSConstant;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
@@ -119,27 +121,47 @@ public class UpdateIvtUtils {
* @param where 输入参数
*/
private void updateAddCanuseInsertIvt(JSONObject where) {
throw new BadRequestException("当前载具已存在库存物料,请检查数据!");
// throw new BadRequestException("当前载具已存在库存物料,请检查数据!");
// 判断当前载具是否有物料
// MdPbStoragevehicleext extDao = iMdPbStoragevehicleextService.getOne(
// new QueryWrapper<MdPbStoragevehicleext>().lambda()
// .eq(MdPbStoragevehicleext::getStoragevehicle_code, where.getString("storagevehicle_code"))
// );
// if (ObjectUtil.isNotEmpty(extDao)) {
// throw new BadRequestException("当前载具【"+extDao.getStoragevehicle_code()+"】已存在库存物料,请检查数据!");
// }
//
// // 插入数据
// MdPbStoragevehicleext extParamDao = JSONObject.parseObject(JSONObject.toJSONString(where), MdPbStoragevehicleext.class);
// extParamDao.setStoragevehicleext_id(IdUtil.getStringId());
// extParamDao.setCanuse_qty(where.getBigDecimal("change_qty"));
// extParamDao.setFrozen_qty(BigDecimal.valueOf(0));
// extParamDao.setInsert_time(DateUtil.now());
// extParamDao.setUpdate_optid(SecurityUtils.getCurrentUserId());
// extParamDao.setUpdate_optname(SecurityUtils.getCurrentNickName());
// extParamDao.setUpdate_time(DateUtil.now());
// extParamDao.setRemark(where.getString("remark"));
// iMdPbStoragevehicleextService.save(extParamDao);
// MdPbStoragevehicleext extDao = iMdPbStoragevehicleextService.getOne(
// new QueryWrapper<MdPbStoragevehicleext>().lambda()
// .eq(MdPbStoragevehicleext::getStoragevehicle_code, where.getString("storagevehicle_code"))
// );
// if (ObjectUtil.isNotEmpty(extDao)) {
// throw new BadRequestException("当前载具【"+extDao.getStoragevehicle_code()+"】已存在库存物料,请检查数据!");
// }
//
// // 插入数据
// MdPbStoragevehicleext extParamDao = JSONObject.parseObject(JSONObject.toJSONString(where), MdPbStoragevehicleext.class);
// extParamDao.setStoragevehicleext_id(IdUtil.getStringId());
// extParamDao.setCanuse_qty(where.getBigDecimal("change_qty"));
// extParamDao.setFrozen_qty(BigDecimal.valueOf(0));
// extParamDao.setInsert_time(DateUtil.now());
// extParamDao.setUpdate_optid(SecurityUtils.getCurrentUserId());
// extParamDao.setUpdate_optname(SecurityUtils.getCurrentNickName());
// extParamDao.setUpdate_time(DateUtil.now());
// extParamDao.setRemark(where.getString("remark"));
// iMdPbStoragevehicleextService.save(extParamDao);
// 找当前托盘物料库存
GroupPlate extDao = iMdPbGroupPlateService.getOne(
new QueryWrapper<GroupPlate>().lambda()
.eq(GroupPlate::getStoragevehicle_code, where.getString("storagevehicle_code"))
);
if (ObjectUtil.isEmpty(extDao)) {
throw new BadRequestException("当前载具【" + extDao.getStoragevehicle_code() + "】不存在相关物料批次库存,请检查数据!");
}
// 加可用数
double canuse_qty = NumberUtil.add(extDao.getQty(), where.getDoubleValue("change_qty")).doubleValue();
if (canuse_qty < 0) {
throw new BadRequestException("可用数不能为负数,请检查变动数量!当前可用数为【" + extDao.getQty() + "】当前变动数为【" + where.getDoubleValue("change_qty") + "");
}
extDao.setUpdate_id(SecurityUtils.getCurrentUserId());
extDao.setUpdate_name(SecurityUtils.getCurrentNickName());
extDao.setUpdate_time(DateUtil.now());
extDao.setRemark(where.getString("remark"));
iMdPbGroupPlateService.updateById(extDao);
;
}
/**