Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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("获取区域")
|
||||
|
||||
@@ -94,6 +94,19 @@ public interface PdaIosInService {
|
||||
*/
|
||||
List<SelectItemVo> getSect(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 查询库区
|
||||
*
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse getPdaSect(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 查询库位
|
||||
*
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse getPdaStruct(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 查询区域
|
||||
|
||||
@@ -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"));
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* 多选删除
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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("已取消");
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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("已取消");
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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);
|
||||
;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user