Merge branch 'master' of http://47.111.78.178:8012/liuxy/HuaDongYiYaoWMS
This commit is contained in:
@@ -15,10 +15,14 @@
|
|||||||
m.material_name,
|
m.material_name,
|
||||||
m.material_spec,
|
m.material_spec,
|
||||||
m.material_model,
|
m.material_model,
|
||||||
m.material_type_id
|
m.material_type_id,
|
||||||
|
g.bucket_code AS vehicle_code,
|
||||||
|
class.class_name
|
||||||
FROM
|
FROM
|
||||||
`md_pd_groupbucket` g
|
`md_pd_groupbucket` g
|
||||||
LEFT JOIN md_me_materialbase m ON m.material_id = g.material_id
|
LEFT JOIN md_me_materialbase m ON m.material_id = g.material_id
|
||||||
|
LEFT JOIN md_pb_classstandard class ON class.class_id = m.material_type_id
|
||||||
|
|
||||||
WHERE
|
WHERE
|
||||||
g.bucket_code = #{vehicleCode}
|
g.bucket_code = #{vehicleCode}
|
||||||
</select>
|
</select>
|
||||||
@@ -68,11 +72,13 @@
|
|||||||
m.material_name,
|
m.material_name,
|
||||||
m.material_spec,
|
m.material_spec,
|
||||||
m.material_model,
|
m.material_model,
|
||||||
m.material_type_id
|
m.material_type_id,
|
||||||
|
class.class_name
|
||||||
FROM
|
FROM
|
||||||
`md_pd_groupbucket` mg
|
`md_pd_groupbucket` mg
|
||||||
LEFT JOIN st_ivt_structattr ss ON mg.bucket_code = ss.storagevehicle_code
|
LEFT JOIN st_ivt_structattr ss ON mg.bucket_code = ss.storagevehicle_code
|
||||||
LEFT JOIN md_me_materialbase m ON m.material_id = mg.material_id
|
LEFT JOIN md_me_materialbase m ON m.material_id = mg.material_id
|
||||||
|
LEFT JOIN md_pb_classstandard class ON class.class_id = m.material_type_id
|
||||||
WHERE IFNULL( ss.storagevehicle_code, '' ) <![CDATA[ <> ]]> ''
|
WHERE IFNULL( ss.storagevehicle_code, '' ) <![CDATA[ <> ]]> ''
|
||||||
<if test="material_id != null and material_id != ''">
|
<if test="material_id != null and material_id != ''">
|
||||||
AND mg.material_id = #{material_id}
|
AND mg.material_id = #{material_id}
|
||||||
|
|||||||
@@ -174,6 +174,7 @@ public class PdaCommonServiceImpl implements PdaCommonService {
|
|||||||
if (ObjectUtil.isEmpty(bagNo)) {
|
if (ObjectUtil.isEmpty(bagNo)) {
|
||||||
throw new BadRequestException("袋号不能为空!");
|
throw new BadRequestException("袋号不能为空!");
|
||||||
}
|
}
|
||||||
|
param.put("bag_code", bagNo);
|
||||||
List<JSONObject> bagAssembly = mdPbGroupplateMapper.getBagAssembly(param);
|
List<JSONObject> bagAssembly = mdPbGroupplateMapper.getBagAssembly(param);
|
||||||
if (bagAssembly.size() != 1) {
|
if (bagAssembly.size() != 1) {
|
||||||
throw new BadRequestException(bagAssembly.size() == 0 ? "组袋记录不存在,请先组袋!" : "组袋记录信息有误,请查询并清理后重试!");
|
throw new BadRequestException(bagAssembly.size() == 0 ? "组袋记录不存在,请先组袋!" : "组袋记录信息有误,请查询并清理后重试!");
|
||||||
@@ -197,10 +198,23 @@ public class PdaCommonServiceImpl implements PdaCommonService {
|
|||||||
return PdaResponse.requestOk("组盘成功!");
|
return PdaResponse.requestOk("组盘成功!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
@Override
|
@Override
|
||||||
public PdaResponse inEmptyVehicle(JSONObject param) {
|
public PdaResponse inEmptyVehicle(JSONObject param) {
|
||||||
log.info("手持请求空托盘入库:{}", param);
|
log.info("手持请求空托盘入库:{}", param);
|
||||||
|
RLock lock = redissonClient.getLock("lock:inEmptyVehicle");
|
||||||
|
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||||
|
try {
|
||||||
|
if (tryLock) {
|
||||||
vehicleInService.create(param);
|
vehicleInService.create(param);
|
||||||
|
} else {
|
||||||
|
throw new BadRequestException("速度太快啦,稍后再试...");
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
if (tryLock) {
|
||||||
|
lock.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
return PdaResponse.requestOk();
|
return PdaResponse.requestOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import org.nl.wms.pda.util.ThresholdChecker;
|
|||||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
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.SchBasePoint;
|
||||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
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.AbstractTask;
|
||||||
@@ -109,6 +110,8 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
private IOStorInvDtlMapper ioStorInvDtlMapper;
|
private IOStorInvDtlMapper ioStorInvDtlMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private ISysParamService paramService;
|
private ISysParamService paramService;
|
||||||
|
@Resource
|
||||||
|
private SecondaryPackagingService secondaryPackagingService;
|
||||||
@Override
|
@Override
|
||||||
public PdaResponse getGroupInfo(JSONObject param) {
|
public PdaResponse getGroupInfo(JSONObject param) {
|
||||||
// search;
|
// search;
|
||||||
@@ -120,7 +123,7 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
if (ObjectUtil.isEmpty(search)) {
|
if (ObjectUtil.isEmpty(search)) {
|
||||||
throw new BadRequestException("载具不存在!");
|
throw new BadRequestException("载具不存在!");
|
||||||
}
|
}
|
||||||
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(search, Arrays.asList("1", "2"));
|
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(search, Arrays.asList("1", "2", "4"));
|
||||||
return PdaResponse.requestParamOk(res);
|
return PdaResponse.requestParamOk(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,12 +140,17 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
* @param param
|
* @param param
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
@SneakyThrows
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public PdaResponse confirmCallMaterial(JSONObject param) {
|
public PdaResponse confirmCallMaterial(JSONObject param) {
|
||||||
// hint: 没有创建出库单
|
// hint: 没有创建出库单
|
||||||
// point_code, row
|
// point_code, row
|
||||||
log.info("手持托盘叫料:{}", param);
|
log.info("手持托盘叫料:{}", param);
|
||||||
|
RLock lock = redissonClient.getLock("lock:confirmCallMaterial");
|
||||||
|
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||||
|
try {
|
||||||
|
if (tryLock) {
|
||||||
if (ObjectUtil.isEmpty(param.get("point_code"))) {
|
if (ObjectUtil.isEmpty(param.get("point_code"))) {
|
||||||
throw new BadRequestException("请输入要料点!");
|
throw new BadRequestException("请输入要料点!");
|
||||||
}
|
}
|
||||||
@@ -163,10 +171,14 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
if (tasks.size() > 0) {
|
if (tasks.size() > 0) {
|
||||||
throw new BadRequestException("该点位已创建过任务!");
|
throw new BadRequestException("该点位已创建过任务!");
|
||||||
}
|
}
|
||||||
|
// 如果是缠绕,调用ACS请求的方法创建任务
|
||||||
|
if ("CRHCQ".equals(endPoint.getRegion_code())) {
|
||||||
|
JSONObject crParam = new JSONObject();
|
||||||
|
crParam.put("device_code", param.get("point_code"));
|
||||||
|
secondaryPackagingService.wrappingCall(crParam);
|
||||||
|
return PdaResponse.requestOk();
|
||||||
|
}
|
||||||
JSONObject row = param.getJSONObject("row");
|
JSONObject row = param.getJSONObject("row");
|
||||||
// 如果是制粒,需要走正规出入库流程
|
|
||||||
if ("ZLQ".equals(endPoint.getRegion_code())) {
|
|
||||||
Structattr structattr = structattrService.getByCode(row.getString("struct_code"));
|
Structattr structattr = structattrService.getByCode(row.getString("struct_code"));
|
||||||
param.put("bill_type", IOSEnum.OUT_BILL_TYPE.code("批料出库"));
|
param.put("bill_type", IOSEnum.OUT_BILL_TYPE.code("批料出库"));
|
||||||
// 1 创建出库单、明细、分配明细
|
// 1 创建出库单、明细、分配明细
|
||||||
@@ -182,29 +194,29 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
}
|
}
|
||||||
// 3 创建任务
|
// 3 创建任务
|
||||||
JSONObject jsonMst = defaultPdaBuildParam.buildOutAllSetData(endPoint, invId);
|
JSONObject jsonMst = defaultPdaBuildParam.buildOutAllSetData(endPoint, invId);
|
||||||
outBillService.allSetPoint(jsonMst);
|
// 如果是制粒/配液,需要走正规出入库流程
|
||||||
|
if ("ZLQ".equals(endPoint.getRegion_code()) || "PYQ".equals(endPoint.getRegion_code())) {
|
||||||
return PdaResponse.requestOk("呼叫成功!");
|
jsonMst.put("flag", "1");
|
||||||
|
}
|
||||||
|
outBillService.allSetPoint(jsonMst);
|
||||||
|
} else {
|
||||||
|
throw new BadRequestException("速度太快啦,稍后再试...");
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
if (tryLock) {
|
||||||
|
lock.unlock();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 创建任务
|
|
||||||
JSONObject taskParam = new JSONObject();
|
|
||||||
taskParam.put("point_code1", row.getString("struct_code"));
|
|
||||||
taskParam.put("point_code2", param.getString("point_code"));
|
|
||||||
taskParam.put("vehicle_code", row.getString("vehicle_code"));
|
|
||||||
// 代表任务完成的时候不需要调用库存完成
|
|
||||||
taskParam.put("flag", "1");
|
|
||||||
palletOutTask.create(taskParam);
|
|
||||||
return PdaResponse.requestOk("呼叫成功!");
|
return PdaResponse.requestOk("呼叫成功!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PdaResponse getPalletAssemblyOK(JSONObject param) {
|
public PdaResponse getPalletAssemblyOK(JSONObject param) {
|
||||||
String search = param.getString("search");
|
String search = param.getString("bag_code");
|
||||||
if (ObjectUtil.isEmpty(search)) {
|
if (ObjectUtil.isEmpty(search)) {
|
||||||
throw new BadRequestException("请输入袋号编码!");
|
throw new BadRequestException("请输入袋号编码!");
|
||||||
}
|
}
|
||||||
List<JSONObject> groups = groupplateService.getPalletView(search, Arrays.asList("1", "2"));
|
List<JSONObject> groups = groupplateService.getPalletView(search, Arrays.asList("1", "2", "4"));
|
||||||
if (groups.size() != 1) {
|
if (groups.size() != 1) {
|
||||||
throw new BadRequestException(groups.size() == 0 ? "组袋记录不存在,请先组袋!" : "组袋记录信息有误,请查询并清理后重试!");
|
throw new BadRequestException(groups.size() == 0 ? "组袋记录不存在,请先组袋!" : "组袋记录信息有误,请查询并清理后重试!");
|
||||||
}
|
}
|
||||||
@@ -219,65 +231,26 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public PdaResponse takePalletMaterial(JSONObject param) {
|
public PdaResponse takePalletMaterial(JSONObject param) {
|
||||||
log.info("手持取物料: {}", param);
|
log.info("手持取物料: {}", param);
|
||||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
|
||||||
String nickName = SecurityUtils.getCurrentNickName();
|
|
||||||
String now = DateUtil.now();
|
|
||||||
// search、rows、total_qty
|
// search、rows、total_qty
|
||||||
String search = param.getString("search");
|
String search = param.getString("search");
|
||||||
// SchBasePoint point = pointService.getByPointCode(search, false);
|
SchBasePoint point = pointService.getByPointCode(search, false);
|
||||||
// if (ObjectUtil.isNotEmpty(point)) {
|
if (ObjectUtil.isNotEmpty(point)) {
|
||||||
// search = point.getVehicle_code();
|
search = point.getVehicle_code();
|
||||||
// }
|
}
|
||||||
if (ObjectUtil.isEmpty(search)) {
|
if (ObjectUtil.isEmpty(search)) {
|
||||||
throw new BadRequestException("载具号不能为空!");
|
throw new BadRequestException("载具号不能为空!");
|
||||||
}
|
}
|
||||||
storagevehicleinfoService.getByCode(search);
|
storagevehicleinfoService.getByCode(search);
|
||||||
JSONArray rows = param.getJSONArray("rows");
|
JSONArray rows = param.getJSONArray("rows");
|
||||||
// 找到托盘的仓位
|
|
||||||
List<Structattr> startPoints = structattrService
|
|
||||||
.getByVehicleCode(rows.getJSONObject(0).getString("vehicle_code")
|
|
||||||
, IOSEnum.LOCK_TYPE.code("其他锁"), false);
|
|
||||||
if (startPoints.size() == 0) {
|
|
||||||
throw new BadRequestException("未找到当前托盘的原始库位信息!");
|
|
||||||
}
|
|
||||||
Structattr structattr = startPoints.get(0);
|
|
||||||
// 手动更新库存信息
|
|
||||||
// 1、创建出库单、明细、分配明细
|
|
||||||
// 1.1 单据表
|
|
||||||
String invId = IdUtil.getStringId();
|
|
||||||
IOStorInv ioStorInv = new IOStorInv();
|
|
||||||
ioStorInv.setIostorinv_id(invId);
|
|
||||||
ioStorInv.setBill_code(CodeUtil.getNewCode("OUT_STORE_CODE"));
|
|
||||||
ioStorInv.setBiz_date(DateUtil.format(new Date(), "yyyy-MM-dd"));
|
|
||||||
ioStorInv.setIo_type(IOSEnum.IO_TYPE.code("出库"));
|
|
||||||
ioStorInv.setDetail_count(1);
|
|
||||||
ioStorInv.setCreate_mode(IOSEnum.CREATE_MODE.code("终端产生"));
|
|
||||||
ioStorInv.setStor_id(structattr.getStor_id());
|
|
||||||
ioStorInv.setStor_code(structattr.getStor_code());
|
|
||||||
ioStorInv.setStor_name(structattr.getStor_name());
|
|
||||||
ioStorInv.setBill_status(IOSEnum.BILL_STATUS.code("完成"));
|
|
||||||
ioStorInv.setBill_type(IOSEnum.OUT_BILL_TYPE.code("原辅料出库"));
|
|
||||||
ioStorInv.setBuss_type(IOSEnum.OUT_BILL_TYPE.code("原辅料出库").substring(0, 4));
|
|
||||||
ioStorInv.setIs_delete(BaseDataEnum.IS_YES_NOT.code("否"));
|
|
||||||
ioStorInv.setIs_upload(BaseDataEnum.IS_YES_NOT.code("否"));
|
|
||||||
ioStorInv.setInput_optid(currentUserId);
|
|
||||||
ioStorInv.setInput_optname(nickName);
|
|
||||||
ioStorInv.setInput_time(now);
|
|
||||||
ioStorInv.setUpdate_optid(currentUserId);
|
|
||||||
ioStorInv.setUpdate_optname(nickName);
|
|
||||||
ioStorInv.setUpdate_time(now);
|
|
||||||
ioStorInv.setTotal_qty(param.getBigDecimal("total_qty"));
|
|
||||||
ioStorInv.setDetail_count(rows.size());
|
|
||||||
outBillService.save(ioStorInv);
|
|
||||||
// 扣除组盘数据
|
// 扣除组盘数据
|
||||||
List<GroupPlate> needAddOrUpdGroups = new ArrayList<>();
|
List<GroupPlate> needAddOrUpdGroups = new ArrayList<>();
|
||||||
List<String> needDelGroups = new ArrayList<>();
|
List<String> needDelGroups = new ArrayList<>();
|
||||||
List<MdPbStoragevehicleext> vehicleObjs = storagevehicleextService.list(new LambdaQueryWrapper<MdPbStoragevehicleext>()
|
|
||||||
.eq(MdPbStoragevehicleext::getStoragevehicle_code, rows.getJSONObject(0).getString("vehicle_code")));
|
|
||||||
BigDecimal whileSub = new BigDecimal("0");
|
|
||||||
for (int i = 0; i < rows.size(); i++) {
|
for (int i = 0; i < rows.size(); i++) {
|
||||||
JSONObject row = rows.getJSONObject(i);
|
JSONObject row = rows.getJSONObject(i);
|
||||||
GroupPlate delGroup = groupplateService.getById(row.getString("group_id"));
|
GroupPlate delGroup = groupplateService.getById(row.getString("group_id"));
|
||||||
|
if (ObjectUtil.isEmpty(delGroup)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
GroupPlate groupPlate = JSON.parseObject(row.toJSONString(), GroupPlate.class);
|
GroupPlate groupPlate = JSON.parseObject(row.toJSONString(), GroupPlate.class);
|
||||||
// 其他需要删除
|
// 其他需要删除
|
||||||
delGroup.setQty(delGroup.getQty().subtract(groupPlate.getQty()));
|
delGroup.setQty(delGroup.getQty().subtract(groupPlate.getQty()));
|
||||||
@@ -286,77 +259,9 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
} else {
|
} else {
|
||||||
needAddOrUpdGroups.add(delGroup);
|
needAddOrUpdGroups.add(delGroup);
|
||||||
}
|
}
|
||||||
whileSub.add(groupPlate.getQty());
|
|
||||||
// 1.2 单据明细
|
|
||||||
IOStorInvDtl dtl = new IOStorInvDtl();
|
|
||||||
dtl.setIostorinvdtl_id(IdUtil.getStringId());
|
|
||||||
dtl.setIostorinv_id(invId);
|
|
||||||
dtl.setSeq_no("1");
|
|
||||||
dtl.setMaterial_id(row.getString("material_id"));
|
|
||||||
dtl.setPcsn(groupPlate.getPcsn());
|
|
||||||
dtl.setBill_status(IOSEnum.BILL_STATUS.code("完成"));
|
|
||||||
dtl.setQty_unit_id(groupPlate.getQty_unit_id());
|
|
||||||
dtl.setQty_unit_name(groupPlate.getQty_unit_name());
|
|
||||||
dtl.setPlan_qty(groupPlate.getQty());
|
|
||||||
dtl.setAssign_qty(groupPlate.getQty());
|
|
||||||
dtl.setUnassign_qty(BigDecimal.ZERO);
|
|
||||||
ioStorInvDtlMapper.insert(dtl);
|
|
||||||
// 1.3 分配明细
|
|
||||||
IOStorInvDis ioStorInvDis = new IOStorInvDis();
|
|
||||||
ioStorInvDis.setIostorinvdis_id(IdUtil.getStringId());
|
|
||||||
ioStorInvDis.setIostorinv_id(dtl.getIostorinv_id());
|
|
||||||
ioStorInvDis.setIostorinvdtl_id(dtl.getIostorinvdtl_id());
|
|
||||||
ioStorInvDis.setSeq_no("1");
|
|
||||||
ioStorInvDis.setSect_id(structattr.getSect_id());
|
|
||||||
ioStorInvDis.setPcsn(groupPlate.getPcsn());
|
|
||||||
ioStorInvDis.setMaterial_id(row.getString("material_id"));
|
|
||||||
ioStorInvDis.setSect_name(structattr.getSect_name());
|
|
||||||
ioStorInvDis.setSect_code(structattr.getSect_code());
|
|
||||||
ioStorInvDis.setStruct_id(structattr.getStruct_id());
|
|
||||||
ioStorInvDis.setStruct_name(structattr.getStruct_name());
|
|
||||||
ioStorInvDis.setStruct_code(structattr.getStruct_code());
|
|
||||||
ioStorInvDis.setStoragevehicle_code(row.getString("vehicle_code"));
|
|
||||||
ioStorInvDis.setIs_issued(BaseDataEnum.IS_YES_NOT.code("否"));
|
|
||||||
ioStorInvDis.setQty_unit_id(groupPlate.getQty_unit_id());
|
|
||||||
ioStorInvDis.setQty_unit_name(groupPlate.getQty_unit_name());
|
|
||||||
ioStorInvDis.setWork_status(IOSEnum.INBILL_DIS_STATUS.code("完成"));
|
|
||||||
ioStorInvDis.setPlan_qty(groupPlate.getQty());
|
|
||||||
ioStorInvDisMapper.insert(ioStorInvDis);
|
|
||||||
vehicleObjs.stream()
|
|
||||||
.filter(vehicle ->
|
|
||||||
vehicle.getStoragevehicle_code().equals(row.getString("vehicle_code")) &&
|
|
||||||
vehicle.getMaterial_id().equals(row.getString("material_id")) &&
|
|
||||||
vehicle.getPcsn().equals(row.getString("pcsn")))
|
|
||||||
.findFirst()
|
|
||||||
.ifPresent(vehicle -> {
|
|
||||||
BigDecimal newQty = vehicle.getCanuse_qty().subtract(row.getBigDecimal("qty"));
|
|
||||||
vehicle.setCanuse_qty(newQty.max(BigDecimal.ZERO));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
List<MdPbStoragevehicleext> zeroQtyVehicles = vehicleObjs.stream()
|
|
||||||
.filter(vehicle -> vehicle.getCanuse_qty().compareTo(BigDecimal.ZERO) == 0)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
List<MdPbStoragevehicleext> nonZeroQtyVehicles = vehicleObjs.stream()
|
|
||||||
.filter(vehicle -> vehicle.getCanuse_qty().compareTo(BigDecimal.ZERO) != 0)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
groupplateService.saveOrUpdateBatch(needAddOrUpdGroups);
|
groupplateService.saveOrUpdateBatch(needAddOrUpdGroups);
|
||||||
groupplateService.removeByIds(needDelGroups);
|
groupplateService.removeByIds(needDelGroups);
|
||||||
// 托盘数量修改
|
|
||||||
if (nonZeroQtyVehicles.size() > 0) {
|
|
||||||
storagevehicleextService.updateBatchById(nonZeroQtyVehicles);
|
|
||||||
}
|
|
||||||
if (zeroQtyVehicles.size() > 0) {
|
|
||||||
storagevehicleextService.removeByIds(zeroQtyVehicles.stream().map(MdPbStoragevehicleext::getStoragevehicleext_id).collect(Collectors.toList()));
|
|
||||||
}
|
|
||||||
if (nonZeroQtyVehicles.size() == 0) {
|
|
||||||
// 说明托盘没东西了,点位释放
|
|
||||||
structattr.setLock_type(IOSEnum.LOCK_TYPE.code("未锁定"));
|
|
||||||
structattr.setStoragevehicle_code(null);
|
|
||||||
structattr.setIs_emptyvehicle("0");
|
|
||||||
structattrService.updateById(structattr);
|
|
||||||
}
|
|
||||||
return PdaResponse.requestOk("取料成功!");
|
return PdaResponse.requestOk("取料成功!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -369,6 +274,10 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
throw new BadRequestException("请扫点位!");
|
throw new BadRequestException("请扫点位!");
|
||||||
}
|
}
|
||||||
point.setVehicle_code("");
|
point.setVehicle_code("");
|
||||||
|
point.setMaterial_code("");
|
||||||
|
point.setMaterial_name("");
|
||||||
|
point.setMaterial_qty("");
|
||||||
|
point.setIng_task_code("");
|
||||||
point.setPoint_status(IOSEnum.POINT_STATUS.code("空位"));
|
point.setPoint_status(IOSEnum.POINT_STATUS.code("空位"));
|
||||||
point.setUpdate_id(SecurityUtils.getCurrentUserId());
|
point.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||||
point.setUpdate_name(SecurityUtils.getCurrentNickName());
|
point.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||||
@@ -377,45 +286,52 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
return PdaResponse.requestOk("取载具成功!");
|
return PdaResponse.requestOk("取载具成功!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public PdaResponse leftoverMaterialBack(JSONObject param) {
|
public PdaResponse leftoverMaterialBack(JSONObject param) {
|
||||||
// search, rows 按照托盘号原来的库区回去
|
// search, rows 按照托盘号原来的库区回去
|
||||||
|
RLock lock = redissonClient.getLock("lock:leftoverMaterialBack");
|
||||||
|
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||||
|
try {
|
||||||
|
if (tryLock) {
|
||||||
String search = param.getString("search");
|
String search = param.getString("search");
|
||||||
SchBasePoint startPoint = pointService.getByPointCode(search, false);
|
SchBasePoint startPoint = pointService.getByPointCode(search, false);
|
||||||
|
if (ObjectUtil.isEmpty(startPoint)) {
|
||||||
|
startPoint = pointService.getByVehicleCodeOne(search, true);
|
||||||
|
}
|
||||||
if (ObjectUtil.isEmpty(startPoint)) {
|
if (ObjectUtil.isEmpty(startPoint)) {
|
||||||
throw new BadRequestException("请扫点位!");
|
throw new BadRequestException("请扫点位!");
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isEmpty(startPoint.getVehicle_code())) {
|
if (ObjectUtil.isEmpty(startPoint.getVehicle_code())) {
|
||||||
throw new BadRequestException("该点位没有载具信息!");
|
throw new BadRequestException("该点位没有载具信息!");
|
||||||
}
|
}
|
||||||
List<Structattr> points = structattrService.getByVehicleCode(startPoint.getVehicle_code()
|
// 查找之前的任务
|
||||||
, IOSEnum.LOCK_TYPE.code("其他锁"), false);
|
List<SchBaseTask> list = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||||
if (points.size() != 1) {
|
.eq(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())
|
||||||
throw new BadRequestException(points.size() > 1
|
.eq(SchBaseTask::getVehicle_code, startPoint.getVehicle_code())
|
||||||
? "该托盘号绑定在多个点位" + points.stream().map(Structattr::getStruct_code).collect(Collectors.toList()) + ",请检查!"
|
.in(SchBaseTask::getConfig_code, "PalletOutTask")
|
||||||
: "该托盘号未绑定到点位或者点位被禁用或者点位以上锁,请检查!");
|
.orderByDesc(SchBaseTask::getTask_id));
|
||||||
|
if (list.size() == 0) {
|
||||||
|
throw new BadRequestException("找不到托盘原来的位置!");
|
||||||
}
|
}
|
||||||
|
SchBaseTask task = list.get(0);
|
||||||
|
Structattr structattr = structattrService.getByCode(task.getPoint_code1());
|
||||||
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(startPoint.getVehicle_code()
|
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(startPoint.getVehicle_code()
|
||||||
, Arrays.asList("2"));
|
, Arrays.asList("2", "4"));
|
||||||
if (res.size() > 0) {
|
if (res.size() > 0) {
|
||||||
log.info("剩料回库");
|
log.info("剩料回库");
|
||||||
// 剩料回库
|
// 剩料回库
|
||||||
param.put("rows", res);
|
param.put("rows", res);
|
||||||
Structattr structattr = points.get(0);
|
|
||||||
Sectattr sectattr = sectattrService.findByCode(structattr.getSect_code(), false);
|
Sectattr sectattr = sectattrService.findByCode(structattr.getSect_code(), false);
|
||||||
param.put("bill_type", IOSEnum.IN_BILL_TYPE.code("剩料回库"));
|
param.put("bill_type", IOSEnum.IN_BILL_TYPE.code("剩料回库"));
|
||||||
// 1 创建入库单、明细、分配明细
|
// 1 创建入库单、明细、分配明细
|
||||||
Map<String, Object> invObj = defaultPdaBuildParam.doBuildInvObj(param, startPoint, sectattr);
|
Map<String, Object> invObj = defaultPdaBuildParam.doBuildInvObj(param, startPoint, sectattr);
|
||||||
invObj.put("nonChecked", "1");
|
|
||||||
String invId = rawAssistIStorService.insertDtl(invObj);
|
String invId = rawAssistIStorService.insertDtl(invObj);
|
||||||
// 2 调用手动分配
|
// 2 调用手动分配
|
||||||
param.put("sect_code", structattr.getSect_code());
|
param.put("sect_code", structattr.getSect_code());
|
||||||
param.put("sect_name", structattr.getSect_name());
|
param.put("sect_name", structattr.getSect_name());
|
||||||
param.put("struct_id", structattr.getStruct_id());
|
Map<String, Object> divObj = defaultPdaBuildParam.buildDivStructData(param, sectattr, invId, true);
|
||||||
param.put("struct_name", structattr.getStruct_name());
|
|
||||||
param.put("struct_code", structattr.getStruct_code());
|
|
||||||
Map<String, Object> divObj = defaultPdaBuildParam.buildDivStructData(param, sectattr, invId, false);
|
|
||||||
rawAssistIStorService.divStruct(divObj);
|
rawAssistIStorService.divStruct(divObj);
|
||||||
// 3 创建任务
|
// 3 创建任务
|
||||||
Map<String, Object> jsonMst = defaultPdaBuildParam.buildTaskData(startPoint, invId);
|
Map<String, Object> jsonMst = defaultPdaBuildParam.buildTaskData(startPoint, invId);
|
||||||
@@ -424,11 +340,19 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
log.info("空载具回库");
|
log.info("空载具回库");
|
||||||
// 空载具回库
|
// 空载具回库
|
||||||
JSONObject vin = new JSONObject();
|
JSONObject vin = new JSONObject();
|
||||||
vin.put("storagevehicle_code", startPoint.getVehicle_code());
|
vin.put("storagevehicle_code", task.getVehicle_code());
|
||||||
vin.put("sect_code", startPoint.getOut_sect());
|
vin.put("sect_code", structattr.getSect_code());
|
||||||
vin.put("point_code", startPoint.getPoint_code());
|
vin.put("point_code", startPoint.getPoint_code());
|
||||||
vehicleInService.create(vin);
|
vehicleInService.create(vin);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
throw new BadRequestException("速度太快啦,稍后再试...");
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
if (tryLock) {
|
||||||
|
lock.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
return PdaResponse.requestOk();
|
return PdaResponse.requestOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -451,7 +375,7 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
String vehicleCode = param.getString("vehicle_code");
|
String vehicleCode = param.getString("vehicle_code");
|
||||||
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(vehicleCode, Arrays.asList("1"));
|
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(vehicleCode, Arrays.asList("1"));
|
||||||
if (res.size() == 0) {
|
if (res.size() == 0) {
|
||||||
throw new BadRequestException("当前托盘号不存在物料信息,请检查!");
|
throw new BadRequestException("当前托盘号【" + vehicleCode + "】不存在物料信息,请检查!");
|
||||||
}
|
}
|
||||||
// 如果是仓位就需要走原辅料入库
|
// 如果是仓位就需要走原辅料入库
|
||||||
Sectattr sectCode = sectattrService.findByCode(param.getString("sect_code"), false);
|
Sectattr sectCode = sectattrService.findByCode(param.getString("sect_code"), false);
|
||||||
@@ -468,7 +392,7 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
@Override
|
@Override
|
||||||
public PdaResponse takeFinish(JSONObject param) {
|
public PdaResponse takeFinish(JSONObject param) {
|
||||||
// todo: 下发允许AGV通过
|
// todo: 下发允许AGV通过
|
||||||
return null;
|
return PdaResponse.requestOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -486,14 +410,19 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
* 2、压片下料组盘后,扫点位、载具点确认,系统分配中间站空货位入库;
|
* 2、压片下料组盘后,扫点位、载具点确认,系统分配中间站空货位入库;
|
||||||
* 3、包衣下料组盘后,扫点位点呼叫AGV,系统呼叫AGV来取货;扫点位、载具点确认,系统分配中间站空货位入库;
|
* 3、包衣下料组盘后,扫点位点呼叫AGV,系统呼叫AGV来取货;扫点位、载具点确认,系统分配中间站空货位入库;
|
||||||
* 4、× 码垛完成后,扫点位、载具点确认,系统分配缓存点位搬运暂存;
|
* 4、× 码垛完成后,扫点位、载具点确认,系统分配缓存点位搬运暂存;
|
||||||
* 5、缠膜完成后,扫点位、载具点确认,系统分配缓存点位搬运暂存;
|
* 5、× 缠膜完成后,扫点位、载具点确认,系统分配缓存点位搬运暂存;
|
||||||
* @param param
|
* @param param
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
@SneakyThrows
|
||||||
@Override
|
@Override
|
||||||
public PdaResponse productionLine(JSONObject param) {
|
public PdaResponse productionLine(JSONObject param) {
|
||||||
// point_code, vehicle_code
|
// point_code, vehicle_code, is_wait
|
||||||
log.info("手持下料:{}", param);
|
log.info("手持下料:{}", param);
|
||||||
|
RLock lock = redissonClient.getLock("lock:inEmptyVehicle");
|
||||||
|
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||||
|
try {
|
||||||
|
if (tryLock) {
|
||||||
assertNotBlankJson(param, "载具号不能为空!", "vehicle_code");
|
assertNotBlankJson(param, "载具号不能为空!", "vehicle_code");
|
||||||
assertNotBlankJson(param, "点位不能为空!", "point_code");
|
assertNotBlankJson(param, "点位不能为空!", "point_code");
|
||||||
String pointCode = param.getString("point_code");
|
String pointCode = param.getString("point_code");
|
||||||
@@ -509,6 +438,14 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
// 压片/包衣下料
|
// 压片/包衣下料
|
||||||
AbstractTask task = taskFactory.getTask(IOSEnum.DOWN_CONFIG_CODE.code(point.getRegion_code()));
|
AbstractTask task = taskFactory.getTask(IOSEnum.DOWN_CONFIG_CODE.code(point.getRegion_code()));
|
||||||
task.create(param);
|
task.create(param);
|
||||||
|
} else {
|
||||||
|
throw new BadRequestException("速度太快啦,稍后再试...");
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
if (tryLock) {
|
||||||
|
lock.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
return PdaResponse.requestOk();
|
return PdaResponse.requestOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -622,6 +559,11 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
return PdaResponse.requestParamOk(res);
|
return PdaResponse.requestParamOk(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 包衣、内包装叫料
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ public class PdaWarehouseServiceImpl implements PdaWarehouseService {
|
|||||||
if (points.size() != 1) {
|
if (points.size() != 1) {
|
||||||
throw new BadRequestException(points.size() > 1
|
throw new BadRequestException(points.size() > 1
|
||||||
? "该托盘号绑定在多个点位" + points.stream().map(Structattr::getStruct_code).collect(Collectors.toList()) + ",请检查!"
|
? "该托盘号绑定在多个点位" + points.stream().map(Structattr::getStruct_code).collect(Collectors.toList()) + ",请检查!"
|
||||||
: "该托盘号未绑定到点位或者点位被禁用或者点位以上锁,请检查!");
|
: "该托盘号未绑定到点位或者点位被禁用或者点位已上锁,请检查!");
|
||||||
}
|
}
|
||||||
startStruct = points.get(0);
|
startStruct = points.get(0);
|
||||||
pointCode = startStruct.getStruct_code();
|
pointCode = startStruct.getStruct_code();
|
||||||
|
|||||||
@@ -156,4 +156,5 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
|
|||||||
*/
|
*/
|
||||||
List<SchBasePoint> getCRUsedDevice();
|
List<SchBasePoint> getCRUsedDevice();
|
||||||
|
|
||||||
|
SchBasePoint getByVehicleCodeOne(String search, boolean flag);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,6 +151,9 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
|||||||
if (ObjectUtil.isNotEmpty(pointStatus) && pointStatus.equals(PointStatusEnum.EMPTY_POINT.getCode())) {
|
if (ObjectUtil.isNotEmpty(pointStatus) && pointStatus.equals(PointStatusEnum.EMPTY_POINT.getCode())) {
|
||||||
entity.setVehicle_type("");
|
entity.setVehicle_type("");
|
||||||
entity.setVehicle_code("");
|
entity.setVehicle_code("");
|
||||||
|
entity.setMaterial_name("");
|
||||||
|
entity.setMaterial_code("");
|
||||||
|
entity.setMaterial_qty("");
|
||||||
}
|
}
|
||||||
pointMapper.updateById(entity);
|
pointMapper.updateById(entity);
|
||||||
}
|
}
|
||||||
@@ -340,4 +343,21 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
|||||||
public List<SchBasePoint> getCRUsedDevice() {
|
public List<SchBasePoint> getCRUsedDevice() {
|
||||||
return this.baseMapper.getCRUsedDevice();
|
return this.baseMapper.getCRUsedDevice();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SchBasePoint getByVehicleCodeOne(String search, boolean flag) {
|
||||||
|
if (ObjectUtil.isEmpty(search)) {
|
||||||
|
throw new BadRequestException("想要通过托盘号查找点位,托盘号不能为空!");
|
||||||
|
}
|
||||||
|
List<SchBasePoint> vehicleCode = getByVehicleCode(search);
|
||||||
|
if (flag) {
|
||||||
|
if (vehicleCode.size() == 0) {
|
||||||
|
throw new BadRequestException("托盘号【" + search + "】没有绑定到点位上,请检查!");
|
||||||
|
}
|
||||||
|
if (vehicleCode.size() > 1) {
|
||||||
|
throw new BadRequestException("托盘号【" + search + "】绑定到多个点位上,请检查!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return vehicleCode.get(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ public class EmpVehicleInTask extends AbstractTask {
|
|||||||
if (ObjectUtil.isEmpty(taskObj)) {
|
if (ObjectUtil.isEmpty(taskObj)) {
|
||||||
throw new BadRequestException("该任务不存在");
|
throw new BadRequestException("该任务不存在");
|
||||||
}
|
}
|
||||||
if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) {
|
if (Integer.parseInt(taskObj.getTask_status()) >= Integer.parseInt(TaskStatus.FINISHED.getCode())) {
|
||||||
throw new BadRequestException("只能取消生成中的任务!");
|
throw new BadRequestException("只能取消生成中的任务!");
|
||||||
}
|
}
|
||||||
this.cancelTask(taskObj);
|
this.cancelTask(taskObj);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
|||||||
import org.nl.wms.sch_manage.service.util.TaskType;
|
import org.nl.wms.sch_manage.service.util.TaskType;
|
||||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||||
|
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
|
||||||
import org.nl.wms.warehouse_management.service.IOutBillService;
|
import org.nl.wms.warehouse_management.service.IOutBillService;
|
||||||
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
|
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
|
||||||
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
|
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
|
||||||
@@ -72,7 +73,7 @@ public class PalletOutTask extends AbstractTask {
|
|||||||
* 组盘记录服务
|
* 组盘记录服务
|
||||||
*/
|
*/
|
||||||
@Resource
|
@Resource
|
||||||
private GroupPlateMapper groupPlateMapper;
|
private IMdPbGroupplateService pbGroupplateService;
|
||||||
@Resource
|
@Resource
|
||||||
private IStructattrService structattrService;
|
private IStructattrService structattrService;
|
||||||
|
|
||||||
@@ -100,9 +101,7 @@ public class PalletOutTask extends AbstractTask {
|
|||||||
|
|
||||||
// 点位上锁
|
// 点位上锁
|
||||||
structattrService.update(new LambdaUpdateWrapper<Structattr>()
|
structattrService.update(new LambdaUpdateWrapper<Structattr>()
|
||||||
.set(Structattr::getLock_type, ObjectUtil.isNotEmpty(json.get("flag"))
|
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("出库锁"))
|
||||||
? IOSEnum.LOCK_TYPE.code("其他锁")
|
|
||||||
: IOSEnum.LOCK_TYPE.code("出库锁"))
|
|
||||||
.eq(Structattr::getStruct_code, task.getPoint_code1()));
|
.eq(Structattr::getStruct_code, task.getPoint_code1()));
|
||||||
|
|
||||||
// 下发任务
|
// 下发任务
|
||||||
@@ -195,10 +194,17 @@ public class PalletOutTask extends AbstractTask {
|
|||||||
.set(SchBasePoint::getIng_task_code, taskObj.getTask_id())
|
.set(SchBasePoint::getIng_task_code, taskObj.getTask_id())
|
||||||
);
|
);
|
||||||
JSONObject jsonObject = JSONObject.parseObject(taskObj.getRequest_param());
|
JSONObject jsonObject = JSONObject.parseObject(taskObj.getRequest_param());
|
||||||
if (ObjectUtil.isEmpty(jsonObject.get("flag"))) {
|
|
||||||
// 解锁、库存清空
|
// 解锁、库存清空
|
||||||
outBillService.taskFinish(taskObj);
|
outBillService.taskFinish(taskObj);
|
||||||
|
JSONObject ext = jsonObject.getJSONObject("ext");
|
||||||
|
if (ObjectUtil.isNotEmpty(ext.get("flag"))) {
|
||||||
this.taskConfirm(taskObj.getTask_code());
|
this.taskConfirm(taskObj.getTask_code());
|
||||||
|
} else {
|
||||||
|
// 修改组盘信息
|
||||||
|
pbGroupplateService.update(new LambdaUpdateWrapper<GroupPlate>()
|
||||||
|
.set(GroupPlate::getRemark, taskObj.getPoint_code1())
|
||||||
|
.set(GroupPlate::getStatus, "4")
|
||||||
|
.eq(GroupPlate::getVehicle_code, taskObj.getVehicle_code()));
|
||||||
}
|
}
|
||||||
// 任务完成
|
// 任务完成
|
||||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||||
@@ -233,7 +239,7 @@ public class PalletOutTask extends AbstractTask {
|
|||||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||||
|
|
||||||
// 删除组盘信息
|
// 删除组盘信息
|
||||||
groupPlateMapper.delete(
|
pbGroupplateService.remove(
|
||||||
new QueryWrapper<GroupPlate>().lambda()
|
new QueryWrapper<GroupPlate>().lambda()
|
||||||
.eq(GroupPlate::getVehicle_code, taskObj.getVehicle_code())
|
.eq(GroupPlate::getVehicle_code, taskObj.getVehicle_code())
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package org.nl.wms.sch_manage.service.util.tasks;
|
|||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
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.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
import org.nl.common.exception.BadRequestException;
|
import org.nl.common.exception.BadRequestException;
|
||||||
@@ -22,7 +23,9 @@ import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
|||||||
import org.nl.wms.sch_manage.service.util.TaskType;
|
import org.nl.wms.sch_manage.service.util.TaskType;
|
||||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
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.IRawAssistIStorService;
|
||||||
|
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
|
||||||
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
|
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
|
||||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
|
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@@ -42,7 +45,8 @@ public class RawInTask extends AbstractTask {
|
|||||||
private ISchBaseTaskService taskService;
|
private ISchBaseTaskService taskService;
|
||||||
@Resource
|
@Resource
|
||||||
private IRawAssistIStorService rawAssistIStorService;
|
private IRawAssistIStorService rawAssistIStorService;
|
||||||
|
@Resource
|
||||||
|
private IMdPbGroupplateService groupplateService;
|
||||||
@Resource
|
@Resource
|
||||||
private IOStorInvDisMapper ioStorInvDisMapper;
|
private IOStorInvDisMapper ioStorInvDisMapper;
|
||||||
@Resource
|
@Resource
|
||||||
@@ -161,6 +165,7 @@ public class RawInTask extends AbstractTask {
|
|||||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||||
.set(SchBasePoint::getIng_task_code, "")
|
.set(SchBasePoint::getIng_task_code, "")
|
||||||
);
|
);
|
||||||
|
taskConfirm(taskObj.getTask_code());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -186,6 +191,12 @@ public class RawInTask extends AbstractTask {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void taskConfirm(String task_code) {
|
public void taskConfirm(String task_code) {
|
||||||
|
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||||
|
|
||||||
|
groupplateService.update(
|
||||||
|
new LambdaUpdateWrapper<GroupPlate>()
|
||||||
|
.eq(GroupPlate::getVehicle_code, taskObj.getVehicle_code())
|
||||||
|
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* 缠绕机下料
|
||||||
* @author: lyd
|
* @author: lyd
|
||||||
* @date: 2026/1/12
|
* @date: 2026/1/12
|
||||||
*/
|
*/
|
||||||
@@ -45,7 +45,7 @@ public class WrappingDownTask extends AbstractTask {
|
|||||||
// 查找空闲的需要缠绕的点
|
// 查找空闲的需要缠绕的点
|
||||||
List<SchBasePoint> list = pointService.getNoTaskPointByRegionAndType("CRHCQ", "4", "1");
|
List<SchBasePoint> list = pointService.getNoTaskPointByRegionAndType("CRHCQ", "4", "1");
|
||||||
if (list.size() == 0) {
|
if (list.size() == 0) {
|
||||||
throw new BadRequestException("没有需要缠绕的点!");
|
throw new BadRequestException("没有空闲的已缠绕点!");
|
||||||
}
|
}
|
||||||
SchBasePoint basePoint = list.get(0);
|
SchBasePoint basePoint = list.get(0);
|
||||||
SchBasePoint parentPoint = pointService.getById(json.getString("device_code"));
|
SchBasePoint parentPoint = pointService.getById(json.getString("device_code"));
|
||||||
|
|||||||
@@ -165,11 +165,14 @@
|
|||||||
m.material_spec,
|
m.material_spec,
|
||||||
m.material_model,
|
m.material_model,
|
||||||
m.material_type_id,
|
m.material_type_id,
|
||||||
|
c.class_code,
|
||||||
|
c.class_name,
|
||||||
s.supp_name
|
s.supp_name
|
||||||
FROM
|
FROM
|
||||||
`md_pb_groupplate` g
|
`md_pb_groupplate` g
|
||||||
LEFT JOIN md_me_materialbase m ON m.material_id = g.material_id
|
LEFT JOIN md_me_materialbase m ON m.material_id = g.material_id
|
||||||
LEFT JOIN md_cs_supplierbase s ON s.supp_code = g.supp_code
|
LEFT JOIN md_cs_supplierbase s ON s.supp_code = g.supp_code
|
||||||
|
LEFT JOIN md_pb_classstandard c ON c.class_id = m.material_type_id
|
||||||
WHERE g.vehicle_code = #{search} AND g.`status` IN
|
WHERE g.vehicle_code = #{search} AND g.`status` IN
|
||||||
<foreach collection="status" item="code" separator="," open="(" close=")">
|
<foreach collection="status" item="code" separator="," open="(" close=")">
|
||||||
#{code}
|
#{code}
|
||||||
@@ -190,16 +193,15 @@
|
|||||||
m.material_model,
|
m.material_model,
|
||||||
m.material_type_id,
|
m.material_type_id,
|
||||||
s.supp_name,
|
s.supp_name,
|
||||||
|
class.class_name,
|
||||||
mg.vehicle_code AS storagevehicle_code,
|
mg.vehicle_code AS storagevehicle_code,
|
||||||
e.canuse_qty,
|
|
||||||
e.frozen_qty,
|
|
||||||
mg.qty AS plan_qty
|
mg.qty AS plan_qty
|
||||||
FROM
|
FROM
|
||||||
`st_ivt_structattr` ss
|
`st_ivt_structattr` ss
|
||||||
LEFT JOIN md_pb_groupplate mg ON mg.vehicle_code = ss.storagevehicle_code
|
LEFT JOIN md_pb_groupplate mg ON mg.vehicle_code = ss.storagevehicle_code AND mg.`status` = '2'
|
||||||
LEFT JOIN md_me_materialbase m ON m.material_id = mg.material_id
|
LEFT JOIN md_me_materialbase m ON m.material_id = mg.material_id
|
||||||
LEFT JOIN md_cs_supplierbase s ON s.supp_code = mg.supp_code AND mg.`status` = '2'
|
LEFT JOIN md_cs_supplierbase s ON s.supp_code = mg.supp_code
|
||||||
LEFT JOIN md_pb_storagevehicleext e ON ss.storagevehicle_code = e.storagevehicle_code
|
LEFT JOIN md_pb_classstandard class ON class.class_id = m.material_type_id
|
||||||
WHERE
|
WHERE
|
||||||
IFNULL(ss.storagevehicle_code,'') <![CDATA[ <> ]]> ''
|
IFNULL(ss.storagevehicle_code,'') <![CDATA[ <> ]]> ''
|
||||||
AND IFNULL( mg.group_id, '' ) <![CDATA[ <> ]]> ''
|
AND IFNULL( mg.group_id, '' ) <![CDATA[ <> ]]> ''
|
||||||
|
|||||||
@@ -56,7 +56,6 @@
|
|||||||
<rrOperation />
|
<rrOperation />
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<rrOperation />
|
|
||||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||||
<crudOperation :permission="permission">
|
<crudOperation :permission="permission">
|
||||||
<!-- <el-button
|
<!-- <el-button
|
||||||
@@ -186,7 +185,7 @@ export default {
|
|||||||
this.crud.toQuery()
|
this.crud.toQuery()
|
||||||
},
|
},
|
||||||
printTable() {
|
printTable() {
|
||||||
let row = this.$refs.table.selection[0]
|
const row = this.$refs.table.selection[0]
|
||||||
var bake_num = row.bake_num
|
var bake_num = row.bake_num
|
||||||
if (row.out_type === '1004') {
|
if (row.out_type === '1004') {
|
||||||
bake_num += 1
|
bake_num += 1
|
||||||
|
|||||||
Reference in New Issue
Block a user