rev:修改
This commit is contained in:
@@ -124,6 +124,7 @@
|
||||
attr.stor_name,
|
||||
attr.sect_name,
|
||||
attr.lock_type,
|
||||
attr.block_num,
|
||||
mater.material_id,
|
||||
mater.material_code,
|
||||
mater.material_name,
|
||||
|
||||
@@ -12,6 +12,10 @@
|
||||
AND
|
||||
attr.sect_id LIKE #{param.sect_id}
|
||||
</if>
|
||||
<if test="param.ext_id != null and param.ext_id != ''">
|
||||
AND
|
||||
attr.ext_id = #{param.ext_id}
|
||||
</if>
|
||||
|
||||
</where>
|
||||
GROUP BY
|
||||
|
||||
@@ -45,6 +45,10 @@ public class StrategyStructParam {
|
||||
* 载具编码
|
||||
*/
|
||||
private String storagevehicle_code;
|
||||
/**
|
||||
* 对应称重平台
|
||||
*/
|
||||
private String ext_id;
|
||||
|
||||
/**
|
||||
* 载具明细:混料的话则是数组
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.wms.decision_manage.service.decisioner.impl.base;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
@@ -13,6 +14,7 @@ import org.nl.wms.basedata_manage.service.dao.mapper.StructattrMapper;
|
||||
import org.nl.wms.basedata_manage.service.dto.StrategyMater;
|
||||
import org.nl.wms.basedata_manage.service.dto.StrategyStructParam;
|
||||
import org.nl.wms.decision_manage.service.decisioner.Decisioner;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -20,6 +22,7 @@ import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -42,6 +45,67 @@ public class MiddleRuleHandler extends Decisioner<Structattr, StrategyStructPara
|
||||
@Resource
|
||||
private StructattrMapper structattrMapper;
|
||||
|
||||
public List<Structattr> handler1(List<Structattr> list, StrategyStructParam param) {
|
||||
log.info("---------执行middle入库分配规则---------");
|
||||
List<Structattr> resuList = new ArrayList<>();
|
||||
|
||||
Structattr structattr = list.get(0);
|
||||
List<Structattr> attrList = iStructattrService.list(
|
||||
new QueryWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getSect_id, structattr.getSect_id())
|
||||
.and(row -> row.isNotNull(Structattr::getStoragevehicle_code)
|
||||
.ne(Structattr::getStoragevehicle_code, "")
|
||||
)
|
||||
);
|
||||
// 查询此托盘对应的库存信息
|
||||
List<String> vehicleList = attrList.stream()
|
||||
.map(Structattr::getStoragevehicle_code)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (ObjectUtil.isEmpty(vehicleList)) {
|
||||
// 为空:查询空的一组可用货位
|
||||
return this.queryAttrGroup(structattr,param.getExt_id());
|
||||
}
|
||||
|
||||
List<MdPbStoragevehicleext> extList = iMdPbStoragevehicleextService.list(
|
||||
new QueryWrapper<MdPbStoragevehicleext>().lambda()
|
||||
.in(MdPbStoragevehicleext::getStoragevehicle_code, vehicleList)
|
||||
);
|
||||
|
||||
// 不为空:判断是否有相同物料批次的库存
|
||||
StrategyMater strategyMater = param.getStrategyMaters().get(0);
|
||||
MdPbStoragevehicleext extDaoLike = extList.stream()
|
||||
.filter(row -> row.getMaterial_id().equals(strategyMater.getMaterial_id())
|
||||
&& row.getPcsn().equals(strategyMater.getPcsn())
|
||||
).findFirst().orElse(null);
|
||||
|
||||
if (ObjectUtil.isEmpty(extDaoLike)) {
|
||||
// 为空:查询空的一组可用货位
|
||||
return this.queryAttrGroup(structattr,param.getExt_id());
|
||||
}
|
||||
// 不为空查询此组空位
|
||||
Structattr attrLikeVehicle = iStructattrService.getOne(
|
||||
new QueryWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStoragevehicle_code, extDaoLike.getStoragevehicle_code())
|
||||
);
|
||||
resuList = iStructattrService.list(
|
||||
new QueryWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getSect_id, structattr.getSect_id())
|
||||
.eq(Structattr::getBlock_num, attrLikeVehicle.getBlock_num())
|
||||
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.and(row -> row.isNull(Structattr::getStoragevehicle_code)
|
||||
.or().eq(Structattr::getStoragevehicle_code, "")
|
||||
)
|
||||
.orderByAsc(Structattr::getStruct_code)
|
||||
);
|
||||
if (ObjectUtil.isEmpty(resuList)) {
|
||||
return this.queryAttrGroup(structattr, param.getExt_id());
|
||||
}
|
||||
return resuList;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Structattr> handler(List<Structattr> list, StrategyStructParam param) {
|
||||
log.info("---------执行middle入库分配规则---------");
|
||||
@@ -63,7 +127,7 @@ public class MiddleRuleHandler extends Decisioner<Structattr, StrategyStructPara
|
||||
|
||||
if (ObjectUtil.isEmpty(vehicleList)) {
|
||||
// 为空:查询空的一组可用货位
|
||||
return this.queryAttrGroup(structattr);
|
||||
return this.queryAttrGroup(structattr,param.getExt_id());
|
||||
}
|
||||
|
||||
List<MdPbStoragevehicleext> extList = iMdPbStoragevehicleextService.list(
|
||||
@@ -73,32 +137,44 @@ public class MiddleRuleHandler extends Decisioner<Structattr, StrategyStructPara
|
||||
|
||||
// 不为空:判断是否有相同物料批次的库存
|
||||
StrategyMater strategyMater = param.getStrategyMaters().get(0);
|
||||
MdPbStoragevehicleext extDaoLike = extList.stream()
|
||||
List<MdPbStoragevehicleext> extDaoLikeList = extList.stream()
|
||||
.filter(row -> row.getMaterial_id().equals(strategyMater.getMaterial_id())
|
||||
&& row.getPcsn().equals(strategyMater.getPcsn())
|
||||
).findFirst().orElse(null);
|
||||
).collect(Collectors.toList());
|
||||
|
||||
if (ObjectUtil.isEmpty(extDaoLike)) {
|
||||
if (ObjectUtil.isEmpty(extDaoLikeList)) {
|
||||
// 为空:查询空的一组可用货位
|
||||
return this.queryAttrGroup(structattr);
|
||||
return this.queryAttrGroup(structattr,param.getExt_id());
|
||||
}
|
||||
// 不为空查询此组空位
|
||||
Structattr attrLikeVehicle = iStructattrService.getOne(
|
||||
// 查询所属仓位
|
||||
List<String> vehicleInfo = extDaoLikeList.stream()
|
||||
.map(MdPbStoragevehicleext::getStoragevehicle_code)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
List<Structattr> attrListInfo = iStructattrService.list(
|
||||
new QueryWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStoragevehicle_code, extDaoLike.getStoragevehicle_code())
|
||||
);
|
||||
resuList = iStructattrService.list(
|
||||
new QueryWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getSect_id, structattr.getSect_id())
|
||||
.eq(Structattr::getBlock_num, attrLikeVehicle.getBlock_num())
|
||||
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.and(row -> row.isNull(Structattr::getStoragevehicle_code)
|
||||
.or().eq(Structattr::getStoragevehicle_code, "")
|
||||
)
|
||||
.orderByAsc(Structattr::getStruct_code)
|
||||
.in(Structattr::getStoragevehicle_code, vehicleInfo)
|
||||
);
|
||||
|
||||
for (Structattr attr : attrListInfo) {
|
||||
// 不为空查询此组空位
|
||||
resuList = iStructattrService.list(
|
||||
new QueryWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getSect_id, structattr.getSect_id())
|
||||
.eq(Structattr::getBlock_num, attr.getBlock_num())
|
||||
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.and(row -> row.isNull(Structattr::getStoragevehicle_code)
|
||||
.or().eq(Structattr::getStoragevehicle_code, "")
|
||||
)
|
||||
.orderByAsc(Structattr::getStruct_code)
|
||||
);
|
||||
if (ObjectUtil.isNotEmpty(resuList)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ObjectUtil.isEmpty(resuList)) {
|
||||
return this.queryAttrGroup(structattr);
|
||||
return this.queryAttrGroup(structattr, param.getExt_id());
|
||||
}
|
||||
return resuList;
|
||||
|
||||
@@ -110,9 +186,9 @@ public class MiddleRuleHandler extends Decisioner<Structattr, StrategyStructPara
|
||||
* @param structattr 实体类
|
||||
* @return List<Structattr>
|
||||
*/
|
||||
public List<Structattr> queryAttrGroup(Structattr structattr) {
|
||||
public List<Structattr> queryAttrGroup(Structattr structattr, String ext_id) {
|
||||
// 查询一组未有货组仓位
|
||||
List<Structattr> groupBlockList = structattrMapper.queryAttrGroup(MapOf.of("sect_id", structattr.getSect_id()));
|
||||
List<Structattr> groupBlockList = structattrMapper.queryAttrGroup(MapOf.of("sect_id", structattr.getSect_id(),"ext_id",ext_id));
|
||||
if (ObjectUtil.isEmpty(groupBlockList)) {
|
||||
throw new BadRequestException("当前组仓位不足!");
|
||||
}
|
||||
@@ -125,4 +201,66 @@ public class MiddleRuleHandler extends Decisioner<Structattr, StrategyStructPara
|
||||
);
|
||||
}
|
||||
|
||||
public Structattr isLikeMaterial(JSONObject json) {
|
||||
String material_id = json.getString("material_id");
|
||||
String pcsn = json.getString("pcsn");
|
||||
|
||||
List<Structattr> attrList = iStructattrService.list(
|
||||
new QueryWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getSect_id, IOSEnum.SECT_ID.code("中间站库区"))
|
||||
.and(row -> row.isNotNull(Structattr::getStoragevehicle_code)
|
||||
.ne(Structattr::getStoragevehicle_code, "")
|
||||
)
|
||||
);
|
||||
// 查询此托盘对应的库存信息
|
||||
List<String> vehicleList = attrList.stream()
|
||||
.map(Structattr::getStoragevehicle_code)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (ObjectUtil.isEmpty(vehicleList)) {
|
||||
// 为空:
|
||||
return null;
|
||||
}
|
||||
|
||||
List<MdPbStoragevehicleext> extList = iMdPbStoragevehicleextService.list(
|
||||
new QueryWrapper<MdPbStoragevehicleext>().lambda()
|
||||
.in(MdPbStoragevehicleext::getStoragevehicle_code, vehicleList)
|
||||
);
|
||||
|
||||
// 不为空:判断是否有相同物料批次的库存
|
||||
MdPbStoragevehicleext extDaoLike = extList.stream()
|
||||
.filter(row -> row.getMaterial_id().equals(material_id)
|
||||
&& row.getPcsn().equals(pcsn)
|
||||
).findFirst().orElse(null);
|
||||
|
||||
if (ObjectUtil.isEmpty(extDaoLike)) {
|
||||
// 为空:
|
||||
return null;
|
||||
}
|
||||
|
||||
// 不为空查询此组空位
|
||||
Structattr attrLikeVehicle = iStructattrService.getOne(
|
||||
new QueryWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStoragevehicle_code, extDaoLike.getStoragevehicle_code())
|
||||
);
|
||||
|
||||
List<Structattr> attrListRest = iStructattrService.list(
|
||||
new QueryWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getSect_id, IOSEnum.SECT_ID.code("中间站库区"))
|
||||
.eq(Structattr::getBlock_num, attrLikeVehicle.getBlock_num())
|
||||
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.and(row -> row.isNull(Structattr::getStoragevehicle_code)
|
||||
.or().eq(Structattr::getStoragevehicle_code, "")
|
||||
)
|
||||
.orderByAsc(Structattr::getStruct_code)
|
||||
);
|
||||
|
||||
if (ObjectUtil.isEmpty(attrListRest)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return attrListRest.get(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ public class EXTConstant {
|
||||
/**
|
||||
* ACS下发 取放货确认
|
||||
*/
|
||||
public final static String CONFIRM_AGV_ACS_API = "api/wms/confirmAgv";
|
||||
public final static String CONFIRM_AGV_ACS_API = "api/wms/isGetPut";
|
||||
|
||||
/**
|
||||
* ACS下发 获取称重信息
|
||||
|
||||
@@ -41,9 +41,8 @@ public interface WmsToAcsService {
|
||||
/**
|
||||
* 确认取放货
|
||||
* @param whereJson {
|
||||
* task_type: 1-取货确认 2- 放货确认
|
||||
* task_code: 任务号
|
||||
* point_code: 点位编码
|
||||
* type: 1-取货完成 2- 放货完成
|
||||
* device_code: 点位编码
|
||||
* }
|
||||
* @return AcsResponse
|
||||
*/
|
||||
|
||||
@@ -41,6 +41,5 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
@Override
|
||||
public AcsResponse confirmAgv(JSONObject whereJson) {
|
||||
return AcsUtil.notifyAcs(EXTConstant.CONFIRM_AGV_ACS_API, whereJson);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.SecondaryPackagingService;
|
||||
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.dao.mapper.SchBasePointMapper;
|
||||
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.TaskFactory;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.PalletOutTask;
|
||||
@@ -121,6 +122,8 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
||||
private SecondaryPackagingService secondaryPackagingService;
|
||||
@Resource
|
||||
private SectMaterialCheck sectMaterialCheck;
|
||||
@Resource
|
||||
private SchBasePointMapper schBasePointMapper;
|
||||
@Override
|
||||
public PdaResponse getGroupInfo(JSONObject param) {
|
||||
// search;
|
||||
@@ -662,10 +665,13 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
||||
JSONObject divObj = defaultPdaBuildParam.buildManuaOutBuckDivData(param, ioStorInvDtlDto);
|
||||
outBillService.manualDiv(divObj);
|
||||
}
|
||||
// 找一个没任务的称重位
|
||||
List<SchBasePoint> czws = pointService.getCanUsePointByRegion("ZJZ01");
|
||||
|
||||
// 根据仓位定位到出到哪个称重位
|
||||
String end_code = structattr.getExt_id();
|
||||
List<SchBasePoint> czws = schBasePointMapper.getCanUsePointByCode(end_code);
|
||||
// List<SchBasePoint> czws = pointService.getCanUsePointByRegion("ZJZ01");
|
||||
if (czws.isEmpty()) {
|
||||
throw new BadRequestException("找不到中间站的称重位!");
|
||||
throw new BadRequestException("当前称重位【"+end_code+"】有任务在执行");
|
||||
}
|
||||
// 3 创建任务
|
||||
JSONObject jsonMst = defaultPdaBuildParam.buildOutAllSetData(czws.get(0), invId);
|
||||
@@ -763,6 +769,7 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
||||
String invId = rawAssistIStorService.insertDtl(invObj);
|
||||
// 2 调用分配
|
||||
Map<String, Object> divObj = defaultPdaBuildParam.buildDivStructData(param2, sectattr, invId, true);
|
||||
divObj.put("ext_id", startPoint.getPoint_code());
|
||||
rawAssistIStorService.divStruct(divObj);
|
||||
// 3 创建任务
|
||||
Map<String, Object> jsonMst = defaultPdaBuildParam.buildTaskData(startPoint, invId);
|
||||
|
||||
@@ -76,14 +76,14 @@ public class SchBasePointController {
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@Log("确认取货")
|
||||
@Log("取货完成")
|
||||
@PostMapping("/getConfirm")
|
||||
public ResponseEntity<Object> getConfirm(@RequestBody JSONObject whereJson) {
|
||||
schBasePointService.getConfirm(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@Log("确认放货")
|
||||
@Log("放货完成")
|
||||
@PostMapping("/putConfirm")
|
||||
public ResponseEntity<Object> putConfirm(@RequestBody JSONObject whereJson) {
|
||||
schBasePointService.putConfirm(whereJson);
|
||||
|
||||
@@ -92,13 +92,13 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
|
||||
void unLockPoint(String point_code);
|
||||
|
||||
/**
|
||||
* 确认取货
|
||||
* 取货完成
|
||||
* @param whereJson 点位实体
|
||||
*/
|
||||
void getConfirm(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 确认放货
|
||||
* 放货完成
|
||||
* @param whereJson 点位实体
|
||||
*/
|
||||
void putConfirm(JSONObject whereJson);
|
||||
|
||||
@@ -59,6 +59,8 @@ public interface SchBasePointMapper extends BaseMapper<SchBasePoint> {
|
||||
|
||||
List<SchBasePoint> getCanUsePointByRegion(String regionCode);
|
||||
|
||||
List<SchBasePoint> getCanUsePointByCode(String point_code);
|
||||
|
||||
/**
|
||||
* 无人车卸货 - 查询无人车点位信息
|
||||
* @return PdaResponse
|
||||
|
||||
@@ -124,6 +124,20 @@
|
||||
OR t.point_code2 = p.point_code ))
|
||||
</select>
|
||||
|
||||
<select id="getCanUsePointByCode" resultType="org.nl.wms.sch_manage.service.dao.SchBasePoint">
|
||||
SELECT *
|
||||
FROM `sch_base_point` p
|
||||
WHERE p.point_code = #{point_code}
|
||||
AND p.is_used = TRUE
|
||||
AND p.point_status = '1'
|
||||
AND 0 = (SELECT COUNT(*)
|
||||
FROM sch_base_task t
|
||||
WHERE t.is_delete = '0'
|
||||
AND t.task_status <![CDATA[ < ]]> '5'
|
||||
AND ( t.point_code1 = p.point_code
|
||||
OR t.point_code2 = p.point_code ))
|
||||
</select>
|
||||
|
||||
<select id="queryNotCarPoint" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
point.*,
|
||||
|
||||
@@ -224,26 +224,10 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
@Override
|
||||
@Transactional
|
||||
public void getConfirm(JSONObject whereJson) {
|
||||
SchBasePoint pointDao = this.getById(whereJson.getString("point_code"));
|
||||
if (ObjectUtil.isEmpty(pointDao.getIng_task_code())) {
|
||||
throw new BadRequestException("当前站点没有任务【"+pointDao.getPoint_code()+"】");
|
||||
}
|
||||
|
||||
// 查询任务
|
||||
SchBaseTask taskDao = iSchBaseTaskService.getById(pointDao.getIng_task_code());
|
||||
if (ObjectUtil.isEmpty(taskDao)) {
|
||||
throw new BadRequestException("当前点位没有正在执行的任务!");
|
||||
}
|
||||
// 判断任务是否在执行中
|
||||
if (!taskDao.getTask_status().equals(TaskStatus.EXECUTING.getCode())) {
|
||||
throw new BadRequestException("当前点位任务已完成或未执行【"+taskDao.getTask_code()+"】");
|
||||
}
|
||||
|
||||
// 通知ACS可以离开
|
||||
JSONObject jsonParam = new JSONObject();
|
||||
jsonParam.put("task_type", IOSConstant.ONE);
|
||||
jsonParam.put("task_code", taskDao.getTask_code());
|
||||
jsonParam.put("point_code", taskDao.getPoint_code2());
|
||||
jsonParam.put("type", IOSConstant.ONE);
|
||||
jsonParam.put("device_code", whereJson.getString("point_code"));
|
||||
AcsResponse acsResponse = wmsToAcsService.confirmAgv(jsonParam);
|
||||
if (acsResponse.getStatus() != 200) {
|
||||
throw new BadRequestException(acsResponse.getMessage());
|
||||
@@ -253,25 +237,10 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
@Override
|
||||
@Transactional
|
||||
public void putConfirm(JSONObject whereJson) {
|
||||
SchBasePoint pointDao = this.getById(whereJson.getString("point_code"));
|
||||
if (ObjectUtil.isEmpty(pointDao.getIng_task_code())) {
|
||||
throw new BadRequestException("当前站点没有任务【"+pointDao.getPoint_code()+"】");
|
||||
}
|
||||
// 查询任务
|
||||
SchBaseTask taskDao = iSchBaseTaskService.getById(pointDao.getIng_task_code());
|
||||
if (ObjectUtil.isEmpty(taskDao)) {
|
||||
throw new BadRequestException("当前点位没有正在执行的任务!");
|
||||
}
|
||||
// 判断任务是否在执行中
|
||||
if (!taskDao.getTask_status().equals(TaskStatus.EXECUTING.getCode())) {
|
||||
throw new BadRequestException("当前点位任务已完成或未执行【"+taskDao.getTask_code()+"】");
|
||||
}
|
||||
|
||||
// 通知ACS可以离开
|
||||
JSONObject jsonParam = new JSONObject();
|
||||
jsonParam.put("task_type", IOSConstant.TWO);
|
||||
jsonParam.put("task_code", taskDao.getTask_code());
|
||||
jsonParam.put("point_code", taskDao.getPoint_code1());
|
||||
jsonParam.put("type", IOSConstant.TWO);
|
||||
jsonParam.put("device_code", whereJson.getString("point_code"));
|
||||
AcsResponse acsResponse = wmsToAcsService.confirmAgv(jsonParam);
|
||||
if (acsResponse.getStatus() != 200) {
|
||||
throw new BadRequestException(acsResponse.getMessage());
|
||||
|
||||
@@ -85,7 +85,8 @@ public class CenterInTask extends AbstractTask {
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
acsTaskDto.setExt_task_id(taskDao.getTask_id());
|
||||
acsTaskDto.setTask_code(taskDao.getTask_code());
|
||||
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
|
||||
// 对应关系CZJT01 : CZJT03,CZJT02 : CZJT04
|
||||
acsTaskDto.setStart_device_code(IOSEnum.CZW_SHIP.code(taskDao.getPoint_code1()));
|
||||
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
|
||||
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ import org.nl.wms.sch_manage.service.util.ACSTaskTypeEnum;
|
||||
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -75,7 +76,8 @@ public class CoatingUpTask extends AbstractTask {
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
acsTaskDto.setExt_task_id(taskDao.getTask_id());
|
||||
acsTaskDto.setTask_code(taskDao.getTask_code());
|
||||
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
|
||||
// 对应关系CZJT01 : CZJT03,CZJT02 : CZJT04
|
||||
acsTaskDto.setStart_device_code(IOSEnum.CZW_SHIP.code(taskDao.getPoint_code1()));
|
||||
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
|
||||
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
|
||||
|
||||
|
||||
@@ -135,7 +135,8 @@ public class IntermediateOutTask extends AbstractTask {
|
||||
acsTaskDto.setExt_task_id(taskDao.getTask_id());
|
||||
acsTaskDto.setTask_code(taskDao.getTask_code());
|
||||
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
|
||||
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
|
||||
// 对应关系CZJT01 : CZJT03,CZJT02 : CZJT04
|
||||
acsTaskDto.setNext_device_code(IOSEnum.CZW_SHIP.code(taskDao.getPoint_code2()));
|
||||
acsTaskDto.setPriority(taskDao.getPriority());
|
||||
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
|
||||
|
||||
@@ -211,6 +212,9 @@ public class IntermediateOutTask extends AbstractTask {
|
||||
throw new BadRequestException("获取重量失败:" + weighAcs.getMessage());
|
||||
}
|
||||
JSONObject data = weighAcs.getParameters();
|
||||
if (ObjectUtil.isEmpty(data.getString("weigh")) || data.getDoubleValue("weigh") == 0) {
|
||||
throw new BadRequestException("获取重量失败,重量为0或者为空!");
|
||||
}
|
||||
// 毛重
|
||||
BigDecimal weigh = NumberUtil.round(data.getString("weigh"), 2);
|
||||
// 净重
|
||||
|
||||
@@ -5,13 +5,17 @@ import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.apache.commons.collections4.Put;
|
||||
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.config.SpringContextHolder;
|
||||
import org.nl.wms.basedata_manage.service.IMdPdGroupbucketService;
|
||||
import org.nl.wms.basedata_manage.service.ISectattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Sectattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.decision_manage.service.decisioner.impl.base.MiddleRuleHandler;
|
||||
import org.nl.wms.ext.service.WmsToAcsService;
|
||||
import org.nl.wms.ext.service.util.AcsResponse;
|
||||
import org.nl.wms.pda.general_management.service.PdaBuildParamService;
|
||||
@@ -21,6 +25,7 @@ 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.dao.mapper.SchBasePointMapper;
|
||||
import org.nl.wms.sch_manage.service.util.ACSTaskTypeEnum;
|
||||
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
||||
@@ -32,6 +37,7 @@ import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -61,6 +67,8 @@ public class TabletingInTask extends AbstractTask {
|
||||
private IRawAssistIStorService rawAssistIStorService;
|
||||
@Resource
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
@Resource
|
||||
private SchBasePointMapper schBasePointMapper;
|
||||
|
||||
/**
|
||||
* 桶记录服务
|
||||
@@ -76,12 +84,28 @@ public class TabletingInTask extends AbstractTask {
|
||||
if (bucket.size() == 0) {
|
||||
throw new BadRequestException("该载具未存在组桶信息,请先组桶!");
|
||||
}
|
||||
// 找一个没任务的称重位
|
||||
List<SchBasePoint> czws = pointService.getCanUsePointByRegion("ZJZ01");
|
||||
JSONObject jsonObject = bucket.get(0);
|
||||
List<SchBasePoint> czws = new ArrayList<>();
|
||||
// 查询中间站是否有相同物料、批次仓位
|
||||
JSONObject jsonObject1 = new JSONObject();
|
||||
jsonObject1.put("material_id", jsonObject.getString("material_id"));
|
||||
jsonObject1.put("pcsn", jsonObject.getString("pcsn"));
|
||||
// 调用分配规则
|
||||
MiddleRuleHandler bean = SpringContextHolder.getBean(MiddleRuleHandler.class);
|
||||
Structattr attr = bean.isLikeMaterial(jsonObject1);
|
||||
if (ObjectUtil.isEmpty(attr)) {
|
||||
// 找一个没任务的称重位
|
||||
czws = pointService.getCanUsePointByRegion("ZJZ01");
|
||||
} else {
|
||||
czws = schBasePointMapper.getCanUsePointByCode(attr.getExt_id());
|
||||
if (czws.size() == 0) {
|
||||
throw new BadRequestException("称重位【"+attr.getExt_id()+"】有任务正在执行!");
|
||||
}
|
||||
}
|
||||
|
||||
if (czws.size() == 0) {
|
||||
throw new BadRequestException("找不到中间站的称重位!");
|
||||
}
|
||||
JSONObject jsonObject = bucket.get(0);
|
||||
SchBasePoint point = czws.get(0);
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setTask_id(IdUtil.getStringId());
|
||||
@@ -119,7 +143,8 @@ public class TabletingInTask extends AbstractTask {
|
||||
acsTaskDto.setExt_task_id(taskDao.getTask_id());
|
||||
acsTaskDto.setTask_code(taskDao.getTask_code());
|
||||
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
|
||||
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
|
||||
// 对应关系CZJT01 : CZJT03,CZJT02 : CZJT04
|
||||
acsTaskDto.setNext_device_code(IOSEnum.CZW_SHIP.code(taskDao.getPoint_code2()));
|
||||
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
|
||||
|
||||
acsTaskDto.setVehicle_type(IOSConstant.ONE);
|
||||
@@ -222,6 +247,7 @@ public class TabletingInTask extends AbstractTask {
|
||||
String invId = rawAssistIStorService.insertDtl(invObj);
|
||||
// 2 调用分配
|
||||
Map<String, Object> divObj = defaultPdaBuildParam.buildDivStructData(param, sectattr, invId, true);
|
||||
divObj.put("ext_id", taskObj.getPoint_code2());
|
||||
rawAssistIStorService.divStruct(divObj);
|
||||
// 3 创建任务
|
||||
Map<String, Object> jsonMst = defaultPdaBuildParam.buildTaskData(startPoint, invId);
|
||||
|
||||
@@ -93,6 +93,9 @@ public enum IOSEnum {
|
||||
// 仓库ID
|
||||
STOR_ID(MapOf.of("物料室仓库", "1582991156504039424","内包材仓库","1582991156504039425")),
|
||||
|
||||
// 库区id
|
||||
SECT_ID(MapOf.of("中间站库区", "1993215690856861696")),
|
||||
|
||||
// 库区编码
|
||||
SECT_CODE(MapOf.of("内包材区", "NBC01", "批料室区", "PZC01",
|
||||
"中间站区", "ZZC01", "物料间区", "WZC01", "辅料区", "WFL01", "原料区", "WYL01",
|
||||
@@ -145,6 +148,9 @@ public enum IOSEnum {
|
||||
// 打印记录托盘类型
|
||||
PRINT_VEHICLE_TYPE(MapOf.of("托盘", "1", "料桶", "2")),
|
||||
|
||||
// 中间站称重机台对应关系1.CZJT01:CZJT03,2.CZJT02:CZJT04
|
||||
CZW_SHIP(MapOf.of("CZJT01", "CZJT03", "CZJT02", "CZJT04")),
|
||||
|
||||
;
|
||||
|
||||
private Map<String, String> code;
|
||||
|
||||
@@ -421,6 +421,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
jo_form.put("stor_code", storDao.getStor_code());
|
||||
jo_form.put("storagevehicle_code", map.get("storagevehicle_code"));
|
||||
jo_form.put("strategyMaters", strategyDaoList);
|
||||
jo_form.put("ext_id", whereJson.get("ext_id"));
|
||||
// 调用自动分配
|
||||
struct = this.autoDis(jo_form);
|
||||
} else {
|
||||
@@ -850,6 +851,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
.sect_code(whereJson.getString("sect_code"))
|
||||
.stor_code(whereJson.getString("stor_code"))
|
||||
.storagevehicle_code(whereJson.getString("storagevehicle_code"))
|
||||
.ext_id(whereJson.getString("ext_id"))
|
||||
.strategyMaters(whereJson.getJSONArray("strategyMaters").toJavaList(StrategyMater.class))
|
||||
.build());
|
||||
|
||||
|
||||
@@ -175,20 +175,20 @@
|
||||
type="primary"
|
||||
icon="el-icon-circle-close"
|
||||
:disabled="crud.selections.length !== 1"
|
||||
@click="cleanVehicle"
|
||||
@click="getConfirm"
|
||||
>
|
||||
清载具
|
||||
放货完成
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
size="mini"
|
||||
type="danger"
|
||||
type="primary"
|
||||
icon="el-icon-circle-close"
|
||||
:disabled="crud.selections.length !== 1"
|
||||
@click="cleanMaterial"
|
||||
@click="putConfirm"
|
||||
>
|
||||
清物料
|
||||
取货完成
|
||||
</el-button>
|
||||
</crudOperation>
|
||||
<!--表单组件-->
|
||||
@@ -601,16 +601,16 @@ export default {
|
||||
this.crud.toQuery()
|
||||
})
|
||||
},
|
||||
cleanVehicle() {
|
||||
getConfirm() {
|
||||
const data = this.$refs.table.selection[0]
|
||||
crudSchBasePoint.cleanVehicle(data).then(res => {
|
||||
crudSchBasePoint.getConfirm(data).then(res => {
|
||||
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.crud.toQuery()
|
||||
})
|
||||
},
|
||||
cleanMaterial() {
|
||||
putConfirm() {
|
||||
const data = this.$refs.table.selection[0]
|
||||
crudSchBasePoint.cleanMaterial(data).then(res => {
|
||||
crudSchBasePoint.putConfirm(data).then(res => {
|
||||
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.crud.toQuery()
|
||||
})
|
||||
@@ -688,8 +688,8 @@ export default {
|
||||
// 表格渲染
|
||||
LODOP.ADD_PRINT_TABLE('15mm', '5mm', '95%', '95%', tableHtml)
|
||||
|
||||
LODOP.PREVIEW()// 预览
|
||||
// LODOP.PRINT()// 打印
|
||||
// LODOP.PREVIEW()// 预览
|
||||
LODOP.PRINT()// 打印
|
||||
// LODOP.PRINT_DESIGN()// 编辑
|
||||
this.crud.notify('打印成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.crud.toQuery()
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
<el-table-column prop="canuse_qty" label="可用数" :formatter="crud.formatNum3" :min-width="100" />
|
||||
<el-table-column prop="frozen_qty" label="冻结数" :formatter="crud.formatNum3" :min-width="100" />
|
||||
<el-table-column prop="qty_unit_name" label="计量单位" :min-width="flexWidth('qty_unit_name',crud.data,'计量单位')" />
|
||||
<el-table-column prop="block_num" label="所属区块" :min-width="flexWidth('block_num',crud.data,'所属区块')" />
|
||||
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
|
||||
<el-table-column prop="insert_time" label="入库时间" :min-width="flexWidth('insert_time',crud.data,'入库时间')" />
|
||||
</el-table>
|
||||
|
||||
Reference in New Issue
Block a user