add:空载具出入库任务。
This commit is contained in:
@@ -376,7 +376,7 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
|
||||
Map<String, Decisioner> decisionerMap = SpringContextHolder.getBeansOfType(Decisioner.class);
|
||||
QueryWrapper<Structattr> query = new QueryWrapper<Structattr>()
|
||||
.eq("is_used", true)
|
||||
.eq("lock_type", StatusEnum.LOCK.code("无锁"))
|
||||
.eq("lock_type",IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.eq("stor_code", param.getStor_code())
|
||||
.eq("sect_code", param.getSect_code())
|
||||
.isNull("storagevehicle_code");
|
||||
|
||||
@@ -10,6 +10,7 @@ import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.decision_manage.service.strategyConfig.decisioner.Decisioner;
|
||||
import org.nl.wms.sch_manage.enums.StatusEnum;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@@ -85,7 +86,7 @@ public class DepthPriorityHandler extends Decisioner<Structattr, JSONObject> {
|
||||
.in(Structattr::getRow_num, Arrays.asList(1, 4))
|
||||
.eq(Structattr::getStor_code, StatusEnum.STOCK_INFO.code("料箱库"))
|
||||
.eq(Structattr::getIs_used, 1)
|
||||
.eq(Structattr::getLock_type, StatusEnum.LOCK.code("无锁")));
|
||||
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")));
|
||||
//先找2排的再找3排的
|
||||
if (!list1.isEmpty()) {
|
||||
List<Structattr> combinedResult = new ArrayList<>();
|
||||
|
||||
@@ -63,15 +63,15 @@ public class PdaIosInController {
|
||||
|
||||
@PostMapping("/getSect")
|
||||
@Log("获取库区")
|
||||
public ResponseEntity<Object> getSect() {
|
||||
return new ResponseEntity<>(pdaIosInService.getSect(), HttpStatus.OK);
|
||||
public ResponseEntity<Object> getSect(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaIosInService.getSect(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/getRegion")
|
||||
@Log("获取区域")
|
||||
public ResponseEntity<Object> getRegion() {
|
||||
return new ResponseEntity<>(pdaIosInService.getRegion(), HttpStatus.OK);
|
||||
public ResponseEntity<Object> getRegion(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaIosInService.getRegion(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ public interface PdaIosInService {
|
||||
*
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse getSect();
|
||||
PdaResponse getSect(JSONObject whereJson);
|
||||
|
||||
|
||||
/**
|
||||
@@ -87,7 +87,7 @@ public interface PdaIosInService {
|
||||
*
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse getRegion();
|
||||
PdaResponse getRegion(JSONObject whereJson);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ 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.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@@ -26,6 +27,7 @@ import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseRegionService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseRegion;
|
||||
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.BackInTask;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
@@ -57,6 +59,8 @@ import static org.nl.wms.warehouse_management.enums.IOSEnum.GROUP_PLATE_STATUS;
|
||||
@Service
|
||||
public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
|
||||
@Autowired
|
||||
private Map<String, AbstractTask> applyTaskMap;
|
||||
/**
|
||||
* 组盘记录mapper
|
||||
*/
|
||||
@@ -132,7 +136,6 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse groupPlate(JSONObject whereJson) {
|
||||
// 物料编码
|
||||
String materialId = whereJson.getString("material_id");
|
||||
@@ -144,7 +147,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getById(materialId);
|
||||
MdPbMeasureunit unitDao = iMdPbMeasureunitService.getById(materDao.getBase_unit_id());
|
||||
// 校验
|
||||
if (ObjectUtil.isEmpty(vehicleDao) || ObjectUtil.isEmpty(materDao)) {
|
||||
if (ObjectUtil.isEmpty(vehicleDao) || ObjectUtil.isEmpty(materDao) || ObjectUtil.isEmpty(materDao)) {
|
||||
throw new BadRequestException("载具,物料或单位信息有误!");
|
||||
}
|
||||
//判断该载具是否存在组盘信息
|
||||
@@ -169,8 +172,8 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
.material_id(materDao.getMaterial_code())
|
||||
.storagevehicle_code(vehicleDao.getStoragevehicle_code())
|
||||
.pcsn(pcsn)
|
||||
.qty_unit_id(unitDao != null ? unitDao.getMeasure_unit_id() : null)
|
||||
.qty_unit_name(unitDao != null ? unitDao.getUnit_name() : null)
|
||||
.qty_unit_id(unitDao.getMeasure_unit_id())
|
||||
.qty_unit_name(unitDao.getUnit_name())
|
||||
.qty(new BigDecimal(qty))
|
||||
.status(GROUP_PLATE_STATUS.code("组盘"))
|
||||
.ext_code(whereJson.getString("ext_code"))
|
||||
@@ -210,7 +213,6 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
PageQuery pageQuery = new PageQuery();
|
||||
pageQuery.setPage(whereJson.getInteger("page") - 1);
|
||||
pageQuery.setSize(whereJson.getInteger("size"));
|
||||
String search = whereJson.getString("search");
|
||||
MaterialQuery materialQuery = new MaterialQuery();
|
||||
if (StringUtils.isNotBlank(whereJson.getString("search"))) {
|
||||
materialQuery.setSearch(whereJson.getString("search").trim().toUpperCase());
|
||||
@@ -219,6 +221,25 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
return PdaResponse.build(mapPage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse getSect(JSONObject whereJson) {
|
||||
PageQuery pageQuery = new PageQuery();
|
||||
pageQuery.setPage(whereJson.getInteger("page") - 1);
|
||||
pageQuery.setSize(whereJson.getInteger("size"));
|
||||
IPage<SectattrDto> sectList = iSectattrService.queryAll(new HashMap(), pageQuery);
|
||||
sectList.getRecords().forEach(r -> r.setSect_name(r.getStor_name() + "-" + r.getSect_name()));
|
||||
return PdaResponse.requestParamOk(sectList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse getRegion(JSONObject whereJson) {
|
||||
PageQuery pageQuery = new PageQuery();
|
||||
pageQuery.setPage(whereJson.getInteger("page") - 1);
|
||||
pageQuery.setSize(whereJson.getInteger("size"));
|
||||
IPage<SchBaseRegion> regionList = iSchBaseRegionService.queryAll(new HashMap(), pageQuery);
|
||||
return PdaResponse.requestParamOk(regionList.getRecords());
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse getVehicleMaterial(JSONObject whereJson) {
|
||||
whereJson.put("status", GROUP_PLATE_STATUS.code("组盘"));
|
||||
@@ -246,26 +267,6 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
return PdaResponse.requestParamOk(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse getSect() {
|
||||
PageQuery page = new PageQuery();
|
||||
page.setSize(100);
|
||||
page.setPage(0);
|
||||
IPage<SectattrDto> sectList = iSectattrService.queryAll(new HashMap(), page);
|
||||
List<SectattrDto> result = sectList.getRecords();
|
||||
result.forEach(r -> r.setSect_name(r.getStor_name() + "-" + r.getSect_name()));
|
||||
result.sort(Comparator.comparing(SectattrDto::getSect_name));
|
||||
return PdaResponse.requestParamOk(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse getRegion() {
|
||||
PageQuery page = new PageQuery();
|
||||
page.setSize(100);
|
||||
page.setPage(0);
|
||||
IPage<SchBaseRegion> regionList = iSchBaseRegionService.queryAll(new HashMap(), page);
|
||||
return PdaResponse.requestParamOk(regionList.getRecords());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@@ -280,70 +281,110 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse confirmReturnMaterial(JSONObject whereJson) {
|
||||
// 生成回库任务
|
||||
whereJson.put("config_code", IOSConstant.BACK_IN_TASK);
|
||||
whereJson.put("vehicle_code", whereJson.getString("vehicle_code"));
|
||||
whereJson.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
|
||||
//入库分配
|
||||
divStructNoBills(whereJson);
|
||||
//更新组盘表状态
|
||||
mdPbGroupplateMapper.update(new GroupPlate(), new LambdaUpdateWrapper<GroupPlate>()
|
||||
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘"))
|
||||
.eq(GroupPlate::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")));
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 不含单据入库业务
|
||||
*/
|
||||
private void divStructNoBills(JSONObject whereJson) {
|
||||
//校验载具
|
||||
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getByCode(whereJson.getString("vehicle_code"));
|
||||
if (ObjectUtil.isEmpty(vehicleDao)) {
|
||||
throw new BadRequestException("不存在该载具号信息,请检查");
|
||||
}
|
||||
// 查询仓库
|
||||
//校验仓库
|
||||
BsrealStorattr storeDao = iSrealStorattrService.getById(whereJson.getString("stor_id"));
|
||||
if (ObjectUtil.isEmpty(storeDao)) {
|
||||
throw new BadRequestException("该库区未找到对应仓库信息,请检查");
|
||||
}
|
||||
//分配仓位
|
||||
JSONObject params = new JSONObject();
|
||||
params.put("storagevehicle_code", vehicleDao.getStoragevehicle_code());
|
||||
params.put("ioType", StatusEnum.STRATEGY_TYPE.code("入库"));
|
||||
params.put("sect_code", whereJson.getString("sect_code"));
|
||||
params.put("storagevehicle_code", vehicleDao.getStoragevehicle_code());
|
||||
params.put("stor_code", storeDao.getStor_code());
|
||||
params.put("sect_code", whereJson.getString("sect_code"));
|
||||
params.put("material_code", whereJson.getString("material_code"));
|
||||
params.put("qty", whereJson.getString("qty"));
|
||||
params.put("pcsn", whereJson.getString("pcsn"));
|
||||
Structattr attrDao = iRawAssistIStorService.divBackStruct(params);
|
||||
Structattr attrDao = iRawAssistIStorService.getStructattr(whereJson);
|
||||
//确定起点
|
||||
SchBasePoint schBasePoint = iSchBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getVehicle_code, whereJson.getString("vehicle_code")));
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
throw new BadRequestException("未找到载具所在的点位信息,请检查");
|
||||
}
|
||||
// 生成回库任务
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("config_code", IOSConstant.BACK_IN_TASK);
|
||||
task.put("point_code1", schBasePoint.getPoint_code());
|
||||
task.put("point_code2", attrDao.getStruct_code());
|
||||
task.put("vehicle_code", whereJson.getString("vehicle_code"));
|
||||
task.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
|
||||
String task_id = backInTask.create(task);
|
||||
// 更新终点锁定状态
|
||||
attrDao.setLock_type(IOSEnum.LOCK_TYPE.code("入库锁"));
|
||||
attrDao.setTaskdtl_id(task_id);
|
||||
iStructattrService.updateById(attrDao);
|
||||
whereJson.put("point_code1", schBasePoint.getPoint_code());
|
||||
//确定终点
|
||||
whereJson.put("point_code2", attrDao.getStruct_code());
|
||||
//创建任务
|
||||
String taskId = applyTaskMap.get(whereJson.getString("config_code")).create(whereJson);
|
||||
// 更新起点绑定id
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.set(SchBasePoint::getIos_id, null)
|
||||
.eq(SchBasePoint::getPoint_code, schBasePoint.getPoint_code())
|
||||
);
|
||||
return PdaResponse.requestOk();
|
||||
// 更新终点锁定状态
|
||||
JSONObject lock_map = new JSONObject();
|
||||
lock_map.put("struct_code", attrDao.getStruct_code());
|
||||
lock_map.put("inv_id", null);
|
||||
lock_map.put("inv_code", null);
|
||||
lock_map.put("inv_type", null);
|
||||
lock_map.put("taskdtl_id", taskId);
|
||||
lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("入库锁"));
|
||||
iStructattrService.updateStatusByCode("0", lock_map);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse confirmIn(JSONObject whereJson) {
|
||||
//获取起点
|
||||
SchBasePoint schBasePoint = iSchBasePointService
|
||||
.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getVehicle_code, whereJson.getString("vehicle_code")));
|
||||
whereJson.put("point_code", schBasePoint.getPoint_code());
|
||||
// 预组织出入库单据实体
|
||||
Map<String, Object> jsonMst = organizeInsertData(whereJson);
|
||||
// 调用服务新增出入库单
|
||||
String iostorinv_id = iRawAssistIStorService.insertDtl(jsonMst);
|
||||
// 预组织出入库单据明细的分配数据
|
||||
whereJson.put("iostorinv_id", iostorinv_id);
|
||||
Map<String, Object> jsonDtl = organizeDivData(whereJson);
|
||||
// 调用分配,默认自动分配库位
|
||||
iRawAssistIStorService.divStruct(new JSONObject(jsonDtl));
|
||||
// 下发任务
|
||||
sendTask(whereJson);
|
||||
//物料组盘入库
|
||||
if (StringUtils.isBlank(whereJson.getString("is_empty_vehicle"))) {
|
||||
//获取起点
|
||||
SchBasePoint schBasePoint = iSchBasePointService
|
||||
.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getVehicle_code, whereJson.getString("vehicle_code")));
|
||||
whereJson.put("point_code", schBasePoint.getPoint_code());
|
||||
// 预组织出入库单据实体
|
||||
Map<String, Object> jsonMst = organizeInsertData(whereJson);
|
||||
// 调用服务新增出入库单
|
||||
String iostorinv_id = iRawAssistIStorService.insertDtl(jsonMst);
|
||||
// 预组织出入库单据明细的分配数据
|
||||
whereJson.put("iostorinv_id", iostorinv_id);
|
||||
Map<String, Object> jsonDtl = organizeDivData(whereJson);
|
||||
// 调用分配,默认自动分配库位
|
||||
iRawAssistIStorService.divStruct(new JSONObject(jsonDtl));
|
||||
// 下发任务
|
||||
sendTask(whereJson);
|
||||
//更新组盘表状态
|
||||
mdPbGroupplateMapper.update(new GroupPlate(), new LambdaUpdateWrapper<GroupPlate>()
|
||||
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘"))
|
||||
.eq(GroupPlate::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")));
|
||||
} else {
|
||||
//空载具入库
|
||||
whereJson.put("qty", 1);
|
||||
//组盘
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
@@ -16,20 +16,24 @@ import org.nl.common.utils.MapOf;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
import org.nl.wms.basedata_manage.service.IBsrealStorattrService;
|
||||
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.basedata_manage.service.ISectattrService;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.StructattrVechielDto;
|
||||
import org.nl.wms.basedata_manage.service.dao.*;
|
||||
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper;
|
||||
import org.nl.wms.basedata_manage.service.dto.StrategyStructMaterialVO;
|
||||
import org.nl.wms.basedata_manage.service.dto.StrategyStructParam;
|
||||
import org.nl.wms.pda.ios_manage.service.PdaIosOutService;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
import org.nl.wms.sch_manage.enums.StatusEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
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;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.VehicleOutTask;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
|
||||
@@ -49,6 +53,9 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.nl.wms.warehouse_management.enums.IOSEnum.GROUP_PLATE_STATUS;
|
||||
|
||||
@@ -62,17 +69,29 @@ import static org.nl.wms.warehouse_management.enums.IOSEnum.GROUP_PLATE_STATUS;
|
||||
*/
|
||||
@Service
|
||||
public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
@Autowired
|
||||
private Map<String, AbstractTask> applyTaskMap;
|
||||
/**
|
||||
* 组盘记录mapper
|
||||
*/
|
||||
@Autowired
|
||||
private MdPbGroupplateMapper mdPbGroupplateMapper;
|
||||
/**
|
||||
* 库区服务
|
||||
*/
|
||||
@Autowired
|
||||
private ISectattrService iSectattrService;
|
||||
|
||||
/**
|
||||
* 出入库单主表
|
||||
*/
|
||||
@Resource
|
||||
private IOStorInvMapper ioStorInvMapper;
|
||||
/**
|
||||
* 仓库服务
|
||||
*/
|
||||
@Autowired
|
||||
private IBsrealStorattrService iSrealStorattrService;
|
||||
|
||||
/**
|
||||
* 基础物料服务
|
||||
@@ -212,28 +231,85 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 空载具出库
|
||||
* 1:托盘2料箱
|
||||
*/
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse vehicleOutConfirm(JSONObject whereJson) {
|
||||
//锁定货位
|
||||
JSONObject lock_map = new JSONObject();
|
||||
lock_map.put("struct_code", whereJson.getString("struct_code"));
|
||||
lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("出库锁"));
|
||||
iStructattrService.updateStatusByCode("0", lock_map);
|
||||
//创建任务
|
||||
JSONObject taskForm = new JSONObject();
|
||||
taskForm.put("task_type", "STOutTask");
|
||||
taskForm.put("TaskCode", CodeUtil.getNewCode("TASK_CODE"));
|
||||
taskForm.put("PickingLocation", whereJson.getString("struct_code"));
|
||||
taskForm.put("PlacedLocation", whereJson.getString("siteCode"));
|
||||
taskForm.put("vehicle_code", whereJson.getString("storagevehicle_code"));
|
||||
StOutTask stOutTask = SpringContextHolder.getBean("STOutTask");
|
||||
stOutTask.create(taskForm);
|
||||
iStructattrService.updateStatusByCode("0", lock_map);
|
||||
long qty = 1L;
|
||||
//空料箱出库
|
||||
if (StringUtils.isNotBlank(whereJson.getString("qty"))) {
|
||||
qty = whereJson.getLongValue("qty");
|
||||
if (qty > 6) {
|
||||
throw new BadRequestException("请输入小于7以内的载具数量");
|
||||
}
|
||||
whereJson.put("material_id", "2");
|
||||
whereJson.put("material_code", "2");
|
||||
} else {
|
||||
//空托盘出库
|
||||
whereJson.put("material_id", "1");
|
||||
whereJson.put("material_code", "1");
|
||||
}
|
||||
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_OUT_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());
|
||||
VehicleOutTask VehicleOutTask = SpringContextHolder.getBean("VehicleOutTask");
|
||||
applyTaskMap.get(IOSConstant.VEHICLE_IN_TASK).create(whereJson);
|
||||
VehicleOutTask.create(taskForm);
|
||||
});
|
||||
//更新组盘记录表
|
||||
mdPbGroupplateMapper.update(new GroupPlate(), new LambdaUpdateWrapper<>(GroupPlate.class)
|
||||
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))
|
||||
.eq(GroupPlate::getGroup_id, whereJson.getString("group_id"))
|
||||
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)
|
||||
);
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
@@ -392,7 +468,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
throw new BadRequestException("未找到载具所在的点位信息,请检查");
|
||||
}
|
||||
// 生成回库任务
|
||||
// 生成转运任务
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("config_code", IOSConstant.PDA_POINT_TASK);
|
||||
task.put("point_code1", schBasePoint.getPoint_code());
|
||||
|
||||
@@ -71,7 +71,8 @@ public enum StatusEnum {
|
||||
/**
|
||||
* 点位锁类型
|
||||
*/
|
||||
LOCK(ForkMap.of("无锁", "00", null, "入库锁", "10", null, "入库盘点锁", "16", null, "出库锁", "20", null, "盘点出库锁", "26", null, "移库锁", "50", null, "异常锁定", "60", null, "空出锁", "70", null)),
|
||||
//LOCK(ForkMap.of("无锁", "00", null, "入库锁", "10", null, "入库盘点锁", "16", null, "出库锁", "20", null, "盘点出库锁", "26", null, "移库锁", "50", null, "异常锁定", "60", null, "空出锁", "70", null)),
|
||||
|
||||
STRATEGY_TYPE(ForkMap.of("入库", "1", null, "出库", "2", null, "出入库", "3", null)),
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,174 @@
|
||||
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.UpdateWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
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.AcsTaskDto;
|
||||
import org.nl.wms.sch_manage.service.util.TaskType;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* @Author: gbx
|
||||
* @Description: 空载具入库任务
|
||||
* @Date: 2025/7/3
|
||||
*/
|
||||
@Component(value = "VehicleInTask")
|
||||
@TaskType("VehicleInTask")
|
||||
public class VehicleInTask extends AbstractTask {
|
||||
|
||||
/**
|
||||
* 任务服务类
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
/**
|
||||
* 点位服务
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
|
||||
/**
|
||||
* 仓位服务
|
||||
*/
|
||||
@Autowired
|
||||
private IStructattrService iStructattrService;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setTask_id(IdUtil.getStringId());
|
||||
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.setTask_status(TaskStatus.CREATE.getCode());
|
||||
task.setConfig_code(json.getString("config_code"));
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
taskService.save(task);
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AcsTaskDto sendAcsParam(String taskId) {
|
||||
SchBaseTask taskDao = taskService.getById(taskId);
|
||||
|
||||
// 组织下发给acs的数据
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
acsTaskDto.setExt_task_uuid(taskDao.getTask_id());
|
||||
acsTaskDto.setTask_code(taskDao.getTask_code());
|
||||
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
|
||||
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
|
||||
acsTaskDto.setPriority(taskDao.getPriority());
|
||||
acsTaskDto.setTask_type("1");
|
||||
return acsTaskDto;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
throw new BadRequestException("该任务已完成!");
|
||||
}
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) {
|
||||
// 更新明细状态
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) {
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) {
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) {
|
||||
throw new BadRequestException("只能取消生成中的任务!");
|
||||
}
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backMes(String task_code) {
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void finishTask(SchBaseTask taskObj) {
|
||||
// 更新终点
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code())
|
||||
.set(Structattr::getTaskdtl_id, null)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
// 更新起点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getVehicle_code, null)
|
||||
.set(SchBasePoint::getIos_id, null)
|
||||
);
|
||||
// 更新任务
|
||||
taskObj.setRemark("已完成");
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void cancelTask(SchBaseTask taskObj) {
|
||||
// 更新终点
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getTaskdtl_id, null)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
// 更新任务
|
||||
taskObj.setRemark("已取消");
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,166 @@
|
||||
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 org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
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.AcsTaskDto;
|
||||
import org.nl.wms.sch_manage.service.util.TaskType;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.IOutBillService;
|
||||
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
|
||||
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: 空载具出库任务
|
||||
* @Date: 2025/7/3
|
||||
*/
|
||||
@Component(value = "VehicleOutTask")
|
||||
@TaskType("VehicleOutTask")
|
||||
public class VehicleOutTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
@Resource
|
||||
private IOutBillService outBillService;
|
||||
|
||||
@Resource
|
||||
private IOStorInvDisMapper ioStorInvDisMapper;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setTask_id(IdUtil.getStringId());
|
||||
task.setTask_code(json.getString("TaskCode"));
|
||||
task.setTask_status(TaskStatus.CREATE.getCode());
|
||||
task.setConfig_code(json.getString("task_type"));
|
||||
task.setPoint_code1(json.getString("PickingLocation"));
|
||||
task.setPoint_code2(json.getString("PlacedLocation"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setGroup_id(json.getString("group_id"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
taskService.save(task);
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AcsTaskDto sendAcsParam(String taskId) {
|
||||
SchBaseTask taskDao = taskService.getById(taskId);
|
||||
|
||||
// 组织下发给acs的数据
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
acsTaskDto.setExt_task_uuid(taskDao.getTask_id());
|
||||
acsTaskDto.setTask_code(taskDao.getTask_code());
|
||||
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
|
||||
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
|
||||
if (taskDao.getPoint_code2().contains("-")) {
|
||||
acsTaskDto.setNext_device_code(taskDao.getPoint_code2().replace('-', '_'));
|
||||
}
|
||||
acsTaskDto.setPriority(taskDao.getPriority());
|
||||
acsTaskDto.setTask_type("1");
|
||||
|
||||
return acsTaskDto;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
throw new BadRequestException("该任务已完成!");
|
||||
}
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) {
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) {
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) {
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
if (!TaskStatus.CREATE.getCode().equals(taskObj.getTask_status())) {
|
||||
throw new BadRequestException("任务状态必须为生成才能取消任务");
|
||||
}
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backMes(String task_code) {
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finishTask(SchBaseTask taskObj) {
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setRemark("已完成");
|
||||
taskService.updateById(taskObj);
|
||||
outBillService.taskFinish(taskObj);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void cancelTask(SchBaseTask taskObj) {
|
||||
|
||||
// 取消任务
|
||||
taskService.update(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
.set(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code("是"))
|
||||
.set(SchBaseTask::getTask_status, TaskStatus.CANCELED.getCode())
|
||||
.set(SchBaseTask::getRemark,"已取消")
|
||||
.eq(SchBaseTask::getTask_id,taskObj.getTask_id())
|
||||
);
|
||||
|
||||
//分配表清除任务
|
||||
ioStorInvDisMapper.update(new IOStorInvDis(),new LambdaUpdateWrapper<>(IOStorInvDis.class)
|
||||
.set(IOStorInvDis::getTask_id,null)
|
||||
.set(IOStorInvDis::getPoint_code,null)
|
||||
.set(IOStorInvDis::getIs_issued,0)
|
||||
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("未生成"))
|
||||
.eq(IOStorInvDis::getTask_id,taskObj.getTask_id())
|
||||
);
|
||||
|
||||
// 更新任务状态
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskObj.setRemark("已取消");
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
}
|
||||
@@ -66,4 +66,16 @@ public class IOSConstant {
|
||||
* 手持定点任务
|
||||
*/
|
||||
public final static String PDA_POINT_TASK = "PdaPointTask";
|
||||
|
||||
/**
|
||||
* 空载具入库任务
|
||||
*/
|
||||
public final static String VEHICLE_IN_TASK = "VehicleInTask";
|
||||
|
||||
|
||||
/**
|
||||
* 空载具出库任务
|
||||
*/
|
||||
public final static String VEHICLE_OUT_TASK = "VehicleOutTask";
|
||||
|
||||
}
|
||||
|
||||
@@ -40,17 +40,7 @@ public interface IRawAssistIStorService extends IService<IOStorInv> {
|
||||
|
||||
void divStruct(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 根据库区策略获取仓位
|
||||
* storagevehicle_code 载具号
|
||||
* ioType 出入库类型
|
||||
* sect_code 库区编码
|
||||
* stor_code 仓库编码
|
||||
* material_code 物料编码
|
||||
* qty 计划数量
|
||||
* pcsn 批次号
|
||||
*/
|
||||
Structattr divBackStruct(JSONObject whereJson);
|
||||
|
||||
|
||||
void unDivStruct(Map whereJson);
|
||||
|
||||
@@ -65,4 +55,6 @@ public interface IRawAssistIStorService extends IService<IOStorInv> {
|
||||
Structattr autoDis(JSONObject whereJson);
|
||||
|
||||
List<IOStorInvDisDto> getInBillTaskDtl(Map whereJson);
|
||||
|
||||
Structattr getStructattr(JSONObject param);
|
||||
}
|
||||
|
||||
@@ -428,7 +428,6 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
|
||||
/**
|
||||
* 根据库区策略获取仓位
|
||||
* storagevehicle_code 载具号
|
||||
* ioType 出入库类型
|
||||
* sect_code 库区编码
|
||||
* stor_code 仓库编码
|
||||
@@ -437,34 +436,6 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
* pcsn 批次号
|
||||
*/
|
||||
@Override
|
||||
public Structattr divBackStruct(JSONObject whereJson) {
|
||||
Structattr structattr = getStructattr(whereJson);
|
||||
//锁定货位
|
||||
JSONObject lock_map = new JSONObject();
|
||||
lock_map.put("struct_code", structattr.getStruct_code());
|
||||
lock_map.put("inv_id", null);
|
||||
lock_map.put("inv_code", null);
|
||||
lock_map.put("inv_type", null);
|
||||
lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("入库锁"));
|
||||
iStructattrService.updateStatusByCode("0", lock_map);
|
||||
//更新组盘表状态
|
||||
mdPbGroupplateService.update(new LambdaUpdateWrapper<GroupPlate>()
|
||||
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘"))
|
||||
.eq(GroupPlate::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")));
|
||||
return structattr;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据库区策略获取仓位
|
||||
* ioType 出入库类型
|
||||
* sect_code 库区编码
|
||||
* stor_code 仓库编码
|
||||
* material_code 物料编码
|
||||
* qty 计划数量
|
||||
* pcsn 批次号
|
||||
*/
|
||||
public Structattr getStructattr(JSONObject param) {
|
||||
List<Structattr> structattrs = iStructattrService.inBoundSectDiv(
|
||||
StrategyStructParam.builder()
|
||||
@@ -475,12 +446,10 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
.qty(new BigDecimal(param.getString("qty")))
|
||||
.pcsn(param.getString("pcsn"))
|
||||
.build());
|
||||
|
||||
if (CollectionUtils.isEmpty(structattrs)) {
|
||||
throw new BadRequestException("无可用货位");
|
||||
}
|
||||
return structattrs.get(0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user