|
|
@ -7,31 +7,35 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
|
import org.apache.commons.collections4.CollectionUtils; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.nl.common.base.TableDataInfo; |
|
|
|
import org.nl.common.domain.query.PageQuery; |
|
|
|
import org.nl.common.exception.BadRequestException; |
|
|
|
import org.nl.common.utils.IdUtil; |
|
|
|
import org.nl.common.utils.RedissonUtils; |
|
|
|
import org.nl.common.utils.SecurityUtils; |
|
|
|
import org.nl.wms.basedata_manage.service.*; |
|
|
|
import org.nl.wms.basedata_manage.service.dao.*; |
|
|
|
import org.nl.wms.basedata_manage.service.dto.MaterialQuery; |
|
|
|
import org.nl.wms.pda.ios_manage.service.PdaIosInService; |
|
|
|
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.tasks.BackInTask; |
|
|
|
import org.nl.wms.warehouse_management.enums.IOSConstant; |
|
|
|
import org.nl.wms.warehouse_management.enums.IOSEnum; |
|
|
|
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService; |
|
|
|
import org.nl.wms.warehouse_management.service.IRawAssistIStorService; |
|
|
|
import org.nl.wms.warehouse_management.service.dao.GroupPlate; |
|
|
|
import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl; |
|
|
|
import org.nl.wms.warehouse_management.service.dao.mapper.GroupPlateMapper; |
|
|
|
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper; |
|
|
|
import org.nl.wms.warehouse_management.service.dao.mapper.MdPbGroupplateMapper; |
|
|
|
import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.http.ResponseEntity; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
@ -107,15 +111,17 @@ public class PdaIosInServiceImpl implements PdaIosInService { |
|
|
|
*/ |
|
|
|
@Autowired |
|
|
|
private IRawAssistIStorService iRawAssistIStorService; |
|
|
|
|
|
|
|
/** |
|
|
|
* 回库任务类 |
|
|
|
*/ |
|
|
|
@Autowired |
|
|
|
private BackInTask backInTask; |
|
|
|
/** |
|
|
|
* 入库明细服务 |
|
|
|
*/ |
|
|
|
@Autowired |
|
|
|
private IOStorInvDtlMapper ioStorInvDtlMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private GroupPlateMapper groupPlateMapper; |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
@ -133,16 +139,23 @@ public class PdaIosInServiceImpl implements PdaIosInService { |
|
|
|
if (ObjectUtil.isEmpty(vehicleDao) || ObjectUtil.isEmpty(materDao)) { |
|
|
|
throw new BadRequestException("载具,物料或单位信息有误!"); |
|
|
|
} |
|
|
|
RedissonUtils.lock(() -> { |
|
|
|
//判断该载具编号是否已经存在库内
|
|
|
|
long count = iStructattrService.count( |
|
|
|
new LambdaQueryWrapper<Structattr>() |
|
|
|
.eq(Structattr::getStoragevehicle_code, vehicleDao.getStoragevehicle_code()) |
|
|
|
); |
|
|
|
if (count > 0) { |
|
|
|
throw new BadRequestException("载具编码:" + vehicleDao.getStoragevehicle_code() + "已存在库内,请对数据进行核实!"); |
|
|
|
} |
|
|
|
}, StatusEnum.STRATEGY_TYPE.code("入库") + vehicleDao.getStoragevehicle_code(), 5); |
|
|
|
//判断该载具是否存在组盘信息
|
|
|
|
long statusCount = iMdPbGroupplateService.count( |
|
|
|
new LambdaQueryWrapper<GroupPlate>() |
|
|
|
.eq(GroupPlate::getStoragevehicle_code, vehicleDao.getStoragevehicle_code()) |
|
|
|
.lt(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("出库")) |
|
|
|
); |
|
|
|
if (statusCount > 0) { |
|
|
|
throw new BadRequestException("载具编码:" + vehicleDao.getStoragevehicle_code() + "已存在组盘信息,请对数据进行核实!"); |
|
|
|
} |
|
|
|
//判断该载具编号是否已经存在库内
|
|
|
|
long count = iStructattrService.count( |
|
|
|
new LambdaQueryWrapper<Structattr>() |
|
|
|
.eq(Structattr::getStoragevehicle_code, vehicleDao.getStoragevehicle_code()) |
|
|
|
); |
|
|
|
if (count > 0) { |
|
|
|
throw new BadRequestException("载具编码:" + vehicleDao.getStoragevehicle_code() + "已存在库内,请对数据进行核实!"); |
|
|
|
} |
|
|
|
GroupPlate groupDao = GroupPlate.builder() |
|
|
|
.group_id(IdUtil.getStringId()) |
|
|
|
.material_id(materDao.getMaterial_code()) |
|
|
@ -185,38 +198,24 @@ public class PdaIosInServiceImpl implements PdaIosInService { |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public PdaResponse getMaterialList(JSONObject whereJson) { |
|
|
|
public TableDataInfo<MdMeMaterialbase> getMaterialList(JSONObject whereJson) { |
|
|
|
PageQuery pageQuery = new PageQuery(); |
|
|
|
pageQuery.setPage(whereJson.getInteger("page") - 1); |
|
|
|
pageQuery.setSize(whereJson.getInteger("size")); |
|
|
|
String search = whereJson.getString("search"); |
|
|
|
LambdaQueryWrapper<MdMeMaterialbase> wrapper = new QueryWrapper<MdMeMaterialbase>().lambda(); |
|
|
|
if (StringUtils.isNotBlank(search)) { |
|
|
|
wrapper.nested(r -> r |
|
|
|
.like(MdMeMaterialbase::getMaterial_code, search) |
|
|
|
.or() |
|
|
|
.like(MdMeMaterialbase::getMaterial_name, search) |
|
|
|
.or() |
|
|
|
.like(MdMeMaterialbase::getMaterial_spec, search) |
|
|
|
); |
|
|
|
MaterialQuery materialQuery = new MaterialQuery(); |
|
|
|
if (StringUtils.isNotBlank(whereJson.getString("search"))) { |
|
|
|
materialQuery.setSearch(whereJson.getString("search").trim().toUpperCase()); |
|
|
|
} |
|
|
|
wrapper.eq(MdMeMaterialbase::getIs_delete, IOSConstant.IS_DELETE_NO) |
|
|
|
.eq(MdMeMaterialbase::getIs_used, IOSConstant.IS_DELETE_YES) |
|
|
|
.select( |
|
|
|
MdMeMaterialbase::getMaterial_id, |
|
|
|
MdMeMaterialbase::getMaterial_code, |
|
|
|
MdMeMaterialbase::getMaterial_name, |
|
|
|
MdMeMaterialbase::getMaterial_model, |
|
|
|
MdMeMaterialbase::getMaterial_spec, |
|
|
|
MdMeMaterialbase::getBase_unit_id |
|
|
|
) |
|
|
|
.last("LIMIT 100"); |
|
|
|
List<MdMeMaterialbase> materialist = iMdMeMaterialbaseService.list(wrapper); |
|
|
|
return PdaResponse.requestParamOk(materialist); |
|
|
|
Page mapPage = iMdMeMaterialbaseService.pageMaps(pageQuery.build(), materialQuery.build()); |
|
|
|
return PdaResponse.build(mapPage); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public PdaResponse getVehicleMaterial(JSONObject whereJson) { |
|
|
|
whereJson.put("status", GROUP_PLATE_STATUS.code("组盘")); |
|
|
|
whereJson.put("vehicleCode", whereJson.getString("search")); |
|
|
|
return PdaResponse.requestParamOk(groupPlateMapper.getVehicleMaterial(whereJson)); |
|
|
|
return PdaResponse.requestParamOk(mdPbGroupplateMapper.getVehicleMaterial(whereJson)); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -232,13 +231,17 @@ public class PdaIosInServiceImpl implements PdaIosInService { |
|
|
|
whereJson.put("status", GROUP_PLATE_STATUS.code("出库")); |
|
|
|
whereJson.put("vehicleCode", whereJson.getString("search")); |
|
|
|
whereJson.put("qty", 0); |
|
|
|
return PdaResponse.requestParamOk(groupPlateMapper.getVehicleMaterial(whereJson)); |
|
|
|
List<JSONObject> list = mdPbGroupplateMapper.getVehicleMaterial(whereJson); |
|
|
|
if (CollectionUtils.isEmpty(list)) { |
|
|
|
throw new BadRequestException("此载具无余料可回库!"); |
|
|
|
} |
|
|
|
return PdaResponse.requestParamOk(list); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public PdaResponse getSect() { |
|
|
|
PageQuery page = new PageQuery(); |
|
|
|
page.setSize(100); |
|
|
|
page.setSize(20); |
|
|
|
page.setPage(0); |
|
|
|
IPage<SectattrDto> sectList = iSectattrService.queryAll(new HashMap(), page); |
|
|
|
List<SectattrDto> result = sectList.getRecords(); |
|
|
@ -253,7 +256,7 @@ public class PdaIosInServiceImpl implements PdaIosInService { |
|
|
|
* |
|
|
|
* @param whereJson { |
|
|
|
* vehicle_code:载具编码 |
|
|
|
* sect_id:库区 |
|
|
|
* sect_code:库区 |
|
|
|
* } |
|
|
|
* @return PdaResponse |
|
|
|
*/ |
|
|
@ -262,9 +265,46 @@ public class PdaIosInServiceImpl implements PdaIosInService { |
|
|
|
public PdaResponse confirmReturnMaterial(JSONObject whereJson) { |
|
|
|
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getByCode(whereJson.getString("vehicle_code")); |
|
|
|
if (ObjectUtil.isEmpty(vehicleDao)) { |
|
|
|
throw new BadRequestException("没有该载具号信息"); |
|
|
|
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("stor_code", storeDao.getStor_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); |
|
|
|
//获取起点
|
|
|
|
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); |
|
|
|
// 更新起点绑定id
|
|
|
|
iSchBasePointService.update( |
|
|
|
new UpdateWrapper<SchBasePoint>().lambda() |
|
|
|
.set(SchBasePoint::getIos_id, null) |
|
|
|
.eq(SchBasePoint::getPoint_code, schBasePoint.getPoint_code()) |
|
|
|
); |
|
|
|
return PdaResponse.requestOk(); |
|
|
|
} |
|
|
|
|
|
|
@ -272,12 +312,9 @@ public class PdaIosInServiceImpl implements PdaIosInService { |
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public PdaResponse confirmIn(JSONObject whereJson) { |
|
|
|
//校验起点
|
|
|
|
//获取起点
|
|
|
|
SchBasePoint schBasePoint = iSchBasePointService |
|
|
|
.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getVehicle_code, whereJson.getString("vehicle_code"))); |
|
|
|
if (schBasePoint == null) { |
|
|
|
throw new BadRequestException("载具编码:" + whereJson.getString("vehicle_code") + "未绑定站点信息,请检查!"); |
|
|
|
} |
|
|
|
whereJson.put("point_code", schBasePoint.getPoint_code()); |
|
|
|
// 预组织出入库单据实体
|
|
|
|
Map<String, Object> jsonMst = organizeInsertData(whereJson); |
|
|
@ -298,7 +335,7 @@ public class PdaIosInServiceImpl implements PdaIosInService { |
|
|
|
* @param whereJson { |
|
|
|
* storagevehicle_code:载具编码 |
|
|
|
* point_code:点位编码 |
|
|
|
* sect_id:库区 |
|
|
|
* sect_code:库区 |
|
|
|
* } |
|
|
|
* @return Map<String, Object> |
|
|
|
*/ |
|
|
@ -358,7 +395,7 @@ public class PdaIosInServiceImpl implements PdaIosInService { |
|
|
|
private Map<String, Object> organizeDivData(JSONObject whereJson) { |
|
|
|
// 查询库区
|
|
|
|
Sectattr sectDao = iSectattrService.getById(whereJson.getString("sect_id")); |
|
|
|
// 查询库区
|
|
|
|
// 查询仓库
|
|
|
|
BsrealStorattr storeDao = iSrealStorattrService.getById(sectDao.getStor_id()); |
|
|
|
// 组织主数据
|
|
|
|
Map<String, Object> jsonMst = new HashMap<>(); |
|
|
@ -391,7 +428,7 @@ public class PdaIosInServiceImpl implements PdaIosInService { |
|
|
|
* @param whereJson { |
|
|
|
* storagevehicle_code:载具编码 |
|
|
|
* point_code:点位编码 |
|
|
|
* sect_id:库区 |
|
|
|
* sect_code:库区 |
|
|
|
* iostorinv_id: id |
|
|
|
* } |
|
|
|
*/ |
|
|
|