rev:需求变更开发
This commit is contained in:
@@ -3,6 +3,7 @@ package org.nl.wms.basedata_manage.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.base.TableDataInfo;
|
||||
@@ -18,6 +19,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -98,6 +100,13 @@ public class GroupController {
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/outReceiveGroup")
|
||||
@Log("退料组盘")
|
||||
public ResponseEntity<Object> outReceiveGroup(@RequestBody GroupPlate dto) {
|
||||
iMdPbGroupplateService.outReceiveGroup(dto);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/getPcsn")
|
||||
@Log("获取批次下拉框")
|
||||
public ResponseEntity<Object> getPcsn() {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.wms.pdm_manage.controller;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.base.TableDataInfo;
|
||||
@@ -64,15 +65,21 @@ public class BomCallMaterialController {
|
||||
@PostMapping("/startBom")
|
||||
@Log("提交叫料单")
|
||||
public ResponseEntity<Object> startBom(@RequestBody PdmBomCallMaterial dao) {
|
||||
iPdmBomCallMaterialService.startBom(dao);
|
||||
iPdmBomCallMaterialService.startBom(dao);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PostMapping("/confirm")
|
||||
@Log("强制确认叫料单")
|
||||
public ResponseEntity<Object> confirm(@RequestBody PdmBomCallMaterial dao) {
|
||||
iPdmBomCallMaterialService.confirm(dao);
|
||||
iPdmBomCallMaterialService.confirm(dao);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PostMapping("/queryMaterialBom")
|
||||
@Log("查询当天工单")
|
||||
public ResponseEntity<Object> queryMaterialBom(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(iPdmBomCallMaterialService.queryMaterialBom(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package org.nl.wms.pdm_manage.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.pdm_manage.service.dao.PdmBomCallMaterial;
|
||||
import org.nl.wms.pdm_manage.service.dto.PdmBomCallMaterialDto;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -78,5 +80,12 @@ public interface IPdmBomCallMaterialService extends IService<PdmBomCallMaterial>
|
||||
*/
|
||||
void confirm(PdmBomCallMaterial dao);
|
||||
|
||||
|
||||
/**
|
||||
* 查询当天工单
|
||||
* @param whereJson {
|
||||
* material_id
|
||||
* }
|
||||
* @return List<PdmBomCallMaterial>
|
||||
*/
|
||||
List<PdmBomCallMaterial> queryMaterialBom(JSONObject whereJson);
|
||||
}
|
||||
|
||||
@@ -94,4 +94,14 @@ public class PdmBomCallMaterialDtl implements Serializable {
|
||||
*/
|
||||
private String confirm_time;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 组盘标识
|
||||
*/
|
||||
private String group_id;
|
||||
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
INNER JOIN md_me_materialbase mater ON mater.material_id = dtl.material_id
|
||||
LEFT JOIN st_ivt_structattr attr ON attr.struct_code = dtl.struct_code
|
||||
<where>
|
||||
mst.bom_status IN ('3','4')
|
||||
mst.bom_status IN ('2','3','4')
|
||||
<if test="param.material_code != null and param.material_code != ''">
|
||||
AND
|
||||
(mater.material_code LIKE #{param.material_code} or
|
||||
|
||||
@@ -149,9 +149,14 @@ public class PdmBomCallMaterialDtlServiceImpl extends ServiceImpl<PdmBomCallMate
|
||||
bomdtlDao.setConfirm_time(DateUtil.now());
|
||||
bomdtlDao.setWeigh_qty(dto.getWeigh_qty());
|
||||
this.updateById(bomdtlDao);
|
||||
|
||||
// 查询叫料工单
|
||||
PdmBomCallMaterial bomDao = iPdmBomCallMaterialService.getById(dto.getBom_id());
|
||||
// 更新叫料单状态
|
||||
iPdmBomCallMaterialService.updateStatus(bomDao.getBom_id());
|
||||
// 如果是退料组盘退料则不需要以下操作
|
||||
if (ObjectUtil.isNotEmpty(dto.getRemark())) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 增加叫料工单实际用料重量: 叫料单实际用料 + (叫料明细出库重量 - 叫料明细称重重量)
|
||||
double qty = NumberUtil.sub(dto.getOut_qty(), dto.getWeigh_qty()).doubleValue();
|
||||
@@ -160,8 +165,6 @@ public class PdmBomCallMaterialDtlServiceImpl extends ServiceImpl<PdmBomCallMate
|
||||
bomDao.setReal_weigh_qty(NumberUtil.round(real_weigh_qty, 2));
|
||||
iPdmBomCallMaterialService.updateById(bomDao);
|
||||
|
||||
// 更新叫料单状态
|
||||
iPdmBomCallMaterialService.updateStatus(bomDao.getBom_id());
|
||||
|
||||
// 如果是大料箱出库仓位:称重重量不为0则不删除组盘信息而是清除工单信息
|
||||
Structattr attrDao = iStructattrService.getByCode(bomdtlDao.getStruct_code());
|
||||
|
||||
@@ -155,4 +155,15 @@ public class PdmBomCallMaterialServiceImpl extends ServiceImpl<PdmBomCallMateria
|
||||
iPdmBomCallMaterialDtlService.confirm(dtlDto);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PdmBomCallMaterial> queryMaterialBom(JSONObject whereJson) {
|
||||
return this.list(
|
||||
new QueryWrapper<PdmBomCallMaterial>().lambda()
|
||||
.eq(PdmBomCallMaterial::getStart_time, DateUtil.today())
|
||||
.eq(PdmBomCallMaterial::getMaterial_id, whereJson.getString("material_id"))
|
||||
.eq(PdmBomCallMaterial::getBom_status, BomEnum.CALL_BOM_STATUS.code("完成"))
|
||||
.orderByDesc(PdmBomCallMaterial::getReal_weigh_qty)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,4 +109,30 @@ public class SchBasePointController {
|
||||
schBasePointService.cleanMaterial(dao);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@Log("获取直接退料载具下拉框")
|
||||
@PostMapping("/getVehicleCode")
|
||||
public ResponseEntity<Object> getVehicleCode() {
|
||||
return new ResponseEntity<>(schBasePointService.getVehicleCode(),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@Log("直接退料")
|
||||
@PostMapping("/confirmReceive")
|
||||
public ResponseEntity<Object> confirmReceive(@RequestBody JSONObject whereJson) {
|
||||
schBasePointService.confirmReceive(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@Log("获取二次退料载具下拉框")
|
||||
@PostMapping("/getTwoVehicleCode")
|
||||
public ResponseEntity<Object> getTwoVehicleCode() {
|
||||
return new ResponseEntity<>(schBasePointService.getTwoVehicleCode(),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@Log("二次退料")
|
||||
@PostMapping("/confirmTwoReceive")
|
||||
public ResponseEntity<Object> confirmTwoReceive(@RequestBody JSONObject whereJson) {
|
||||
schBasePointService.confirmTwoReceive(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.dto.SchBasePointQuery;
|
||||
|
||||
import java.util.List;
|
||||
@@ -124,4 +125,32 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
|
||||
* @param dao 实体类
|
||||
*/
|
||||
void cleanMaterial(SchBasePoint dao);
|
||||
|
||||
/**
|
||||
* 获取直接退料载具下拉框
|
||||
* @return List<SchBaseTask>
|
||||
*/
|
||||
List<SchBaseTask> getVehicleCode();
|
||||
|
||||
/**
|
||||
* 直接退料
|
||||
* @param whereJson {
|
||||
* vehicle_code: 载具编码
|
||||
* }
|
||||
*/
|
||||
void confirmReceive(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 获取二次退料载具下拉框
|
||||
* @return List<SchBaseTask>
|
||||
*/
|
||||
List<SchBaseTask> getTwoVehicleCode();
|
||||
|
||||
/**
|
||||
* 二次退料
|
||||
* @param whereJson {
|
||||
* vehicle_code: 载具编码
|
||||
* }
|
||||
*/
|
||||
void confirmTwoReceive(JSONObject whereJson);
|
||||
}
|
||||
|
||||
@@ -144,7 +144,8 @@
|
||||
|
||||
<if test="param.config_code != null">
|
||||
AND (tc.config_code = #{param.config_code} OR
|
||||
tc.config_code = 'PdaPointTask')
|
||||
tc.config_code = 'PdaPointTask' OR
|
||||
tc.config_code = 'CallReceiveEmpTask')
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY t.create_time DESC
|
||||
|
||||
@@ -28,6 +28,8 @@ import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper;
|
||||
import org.nl.wms.sch_manage.service.dao.mapper.SchBaseRegionMapper;
|
||||
import org.nl.wms.sch_manage.service.dto.SchBasePointQuery;
|
||||
import org.nl.wms.sch_manage.service.util.PointUtils;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.CallReceiveEmpTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.ReceiveOutThreePointTask;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
|
||||
@@ -306,4 +308,78 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
dao.setIng_task_code("");
|
||||
this.updateById(dao);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBaseTask> getVehicleCode() {
|
||||
// 查询正在执行的领料出库AGV三点任务
|
||||
return iSchBaseTaskService.list(
|
||||
new QueryWrapper<SchBaseTask>().lambda()
|
||||
.eq(SchBaseTask::getIs_delete, IOSConstant.ZERO)
|
||||
.eq(SchBaseTask::getConfig_code, ReceiveOutThreePointTask.class.getSimpleName())
|
||||
.eq(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode())
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void confirmReceive(JSONObject whereJson) {
|
||||
// 查询当前载具正在执行的领料出库AGV三点任务
|
||||
List<SchBaseTask> vehicleList = iSchBaseTaskService.list(
|
||||
new QueryWrapper<SchBaseTask>().lambda()
|
||||
.eq(SchBaseTask::getIs_delete, IOSConstant.ZERO)
|
||||
.eq(SchBaseTask::getConfig_code, ReceiveOutThreePointTask.class.getSimpleName())
|
||||
.eq(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode())
|
||||
.eq(SchBaseTask::getVehicle_code, whereJson.getString("vehicle_code"))
|
||||
);
|
||||
if (ObjectUtil.isEmpty(vehicleList)) {
|
||||
throw new BadRequestException("当前载具没有正在执行的领料任务【"+whereJson.getString("vehicle_code")+"】");
|
||||
}
|
||||
if (vehicleList.size() > 1) {
|
||||
throw new BadRequestException("当前载具存在多条领料任务【"+whereJson.getString("vehicle_code")+"】");
|
||||
}
|
||||
|
||||
// 通知ACS可以离开
|
||||
SchBaseTask taskDao = vehicleList.get(0);
|
||||
JSONObject jsonParam = new JSONObject();
|
||||
jsonParam.put("task_type", IOSConstant.TWO);
|
||||
jsonParam.put("task_code", taskDao.getTask_code());
|
||||
jsonParam.put("point_code", taskDao.getPoint_code2());
|
||||
wmsToAcsService.confirmAgv(jsonParam);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBaseTask> getTwoVehicleCode() {
|
||||
// 查询正在执行的空载具出库AGV三点任务
|
||||
return iSchBaseTaskService.list(
|
||||
new QueryWrapper<SchBaseTask>().lambda()
|
||||
.eq(SchBaseTask::getIs_delete, IOSConstant.ZERO)
|
||||
.eq(SchBaseTask::getConfig_code, CallReceiveEmpTask.class.getSimpleName())
|
||||
.eq(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode())
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void confirmTwoReceive(JSONObject whereJson) {
|
||||
// 查询当前载具正在执行的空载具出库AGV三点任务
|
||||
List<SchBaseTask> vehicleList = iSchBaseTaskService.list(
|
||||
new QueryWrapper<SchBaseTask>().lambda()
|
||||
.eq(SchBaseTask::getIs_delete, IOSConstant.ZERO)
|
||||
.eq(SchBaseTask::getConfig_code, CallReceiveEmpTask.class.getSimpleName())
|
||||
.eq(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode())
|
||||
.eq(SchBaseTask::getVehicle_code, whereJson.getString("vehicle_code"))
|
||||
);
|
||||
if (ObjectUtil.isEmpty(vehicleList)) {
|
||||
throw new BadRequestException("当前载具没有正在执行的空料箱出库AGV任务【"+whereJson.getString("vehicle_code")+"】");
|
||||
}
|
||||
if (vehicleList.size() > 1) {
|
||||
throw new BadRequestException("当前载具存在多条空料箱出库AGV任务【"+whereJson.getString("vehicle_code")+"】");
|
||||
}
|
||||
|
||||
// 通知ACS可以离开
|
||||
SchBaseTask taskDao = vehicleList.get(0);
|
||||
JSONObject jsonParam = new JSONObject();
|
||||
jsonParam.put("task_type", IOSConstant.TWO);
|
||||
jsonParam.put("task_code", taskDao.getTask_code());
|
||||
jsonParam.put("point_code", taskDao.getPoint_code2());
|
||||
wmsToAcsService.confirmAgv(jsonParam);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,11 @@ import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.param.dao.Param;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
import org.nl.wms.pdm_manage.enums.BomEnum;
|
||||
import org.nl.wms.pdm_manage.service.IPdmBomCallMaterialDtlService;
|
||||
import org.nl.wms.pdm_manage.service.IPdmBomCallMaterialService;
|
||||
import org.nl.wms.pdm_manage.service.dao.PdmBomCallMaterial;
|
||||
import org.nl.wms.pdm_manage.service.dao.PdmBomCallMaterialDtl;
|
||||
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
@@ -27,16 +32,22 @@ 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.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.IOStorInv;
|
||||
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
|
||||
import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -58,12 +69,33 @@ public class BackInTask extends AbstractTask {
|
||||
@Resource
|
||||
private IOStorInvDisMapper ioStorInvDisMapper;
|
||||
|
||||
@Resource
|
||||
private IOStorInvDtlMapper ioStorInvDtlMapper;
|
||||
|
||||
/**
|
||||
* 点位服务
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
|
||||
/**
|
||||
* 组盘服务
|
||||
*/
|
||||
@Autowired
|
||||
private IMdPbGroupplateService iMdPbGroupplateService;
|
||||
|
||||
/**
|
||||
* BOM服务
|
||||
*/
|
||||
@Autowired
|
||||
private IPdmBomCallMaterialService iPdmBomCallMaterialService;
|
||||
|
||||
/**
|
||||
* BOM明细服务
|
||||
*/
|
||||
@Autowired
|
||||
private IPdmBomCallMaterialDtlService iPdmBomCallMaterialDtlService;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
@@ -226,6 +258,17 @@ public class BackInTask extends AbstractTask {
|
||||
);
|
||||
// 查询主表
|
||||
IOStorInv mstDao = rawAssistIStorService.getById(disDaiList.get(0).getIostorinv_id());
|
||||
// 判断组盘是否是二次退料组盘
|
||||
GroupPlate late = iMdPbGroupplateService.getOne(
|
||||
new QueryWrapper<GroupPlate>().lambda()
|
||||
.eq(GroupPlate::getStoragevehicle_code, taskObj.getVehicle_code())
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘"))
|
||||
);
|
||||
if (ObjectUtil.isNotEmpty(late.getBom_list())) {
|
||||
// 重新计算并分配工单重量
|
||||
late.setQty(BigDecimal.valueOf(Double.parseDouble(taskObj.getWeigh_qty())));
|
||||
return twoReceive(late, taskObj, disDaiList, mstDao);
|
||||
}
|
||||
|
||||
// 校验称重重量与组盘重量是否相符
|
||||
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
|
||||
@@ -266,4 +309,170 @@ public class BackInTask extends AbstractTask {
|
||||
}
|
||||
return resultJson;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算二次退料
|
||||
*
|
||||
* @param dto 组盘实体类
|
||||
* @param taskObj 任务实体类
|
||||
* @return JSONObject
|
||||
*/
|
||||
private JSONObject twoReceive(GroupPlate dto, SchBaseTask taskObj, List<IOStorInvDis> disDaiList, IOStorInv mstDao) {
|
||||
// 返回数据
|
||||
JSONObject resultJson = new JSONObject();
|
||||
// 查询明细
|
||||
List<PdmBomCallMaterialDtl> bomDtlList = iPdmBomCallMaterialDtlService.list(
|
||||
new QueryWrapper<PdmBomCallMaterialDtl>().lambda()
|
||||
.eq(PdmBomCallMaterialDtl::getGroup_id, dto.getGroup_id())
|
||||
);
|
||||
// 查询主bom
|
||||
List<PdmBomCallMaterial> bomMstList = iPdmBomCallMaterialService.list(
|
||||
new QueryWrapper<PdmBomCallMaterial>().lambda()
|
||||
.in(PdmBomCallMaterial::getBom_id, bomDtlList.stream()
|
||||
.map(PdmBomCallMaterialDtl::getBom_id)
|
||||
.collect(Collectors.toList()))
|
||||
);
|
||||
// 更新bom已用料重量
|
||||
for (PdmBomCallMaterialDtl dtl : bomDtlList) {
|
||||
PdmBomCallMaterial mst = bomMstList.stream()
|
||||
.filter(row -> row.getBom_id().equals(dtl.getBom_id()))
|
||||
.findFirst().orElse(null);
|
||||
mst.setReal_weigh_qty(NumberUtil.add(mst.getReal_weigh_qty(), dtl.getOut_qty()));
|
||||
mst.setBom_status(BomEnum.CALL_BOM_STATUS.code("完成"));
|
||||
iPdmBomCallMaterialService.updateById(mst);
|
||||
}
|
||||
// 删除明细
|
||||
iPdmBomCallMaterialDtlService.removeByIds(bomDtlList.stream()
|
||||
.map(PdmBomCallMaterialDtl::getBomdtl_id)
|
||||
.collect(Collectors.toList()));
|
||||
try {
|
||||
// 调用重新计算
|
||||
outReceiveSum(dto);
|
||||
// 更新组盘重量
|
||||
iMdPbGroupplateService.updateById(dto);
|
||||
// 更新入库分配明细重量
|
||||
disDaiList.forEach(item -> {
|
||||
item.setPlan_qty(dto.getQty());
|
||||
item.setReal_qty(dto.getQty());
|
||||
ioStorInvDisMapper.updateById(item);
|
||||
});
|
||||
// 更新明细
|
||||
IOStorInvDtl iosDtl = ioStorInvDtlMapper.selectById(disDaiList.get(0).getIostorinvdtl_id());
|
||||
iosDtl.setPlan_qty(dto.getQty());
|
||||
iosDtl.setReal_qty(dto.getQty());
|
||||
iosDtl.setAssign_qty(dto.getQty());
|
||||
ioStorInvDtlMapper.updateById(iosDtl);
|
||||
// 跟更新主表
|
||||
mstDao.setTotal_qty(dto.getQty());
|
||||
rawAssistIStorService.updateById(mstDao);
|
||||
|
||||
// 更新任务重量
|
||||
taskObj.setMaterial_qty(dto.getQty());
|
||||
taskService.updateById(taskObj);
|
||||
resultJson.put("is_weigh", IOSConstant.ONE);
|
||||
} catch (Exception e) {
|
||||
// 取消任务
|
||||
this.cancelTask(taskObj);
|
||||
// 备注任务
|
||||
SchBaseTask taskDao = taskService.getById(taskObj.getTask_id());
|
||||
taskDao.setRemark("已取消-所选工单重量不够退料,请重新退料组盘!称重重量为【" + dto.getQty() + "】");
|
||||
taskService.updateById(taskDao);
|
||||
|
||||
// 取消分配及删除单据
|
||||
ArrayList<LinkedHashMap> tableMater = new ArrayList<>();
|
||||
disDaiList.forEach(item -> {
|
||||
tableMater.add(JSONObject.parseObject(JSONObject.toJSONString(item), LinkedHashMap.class));
|
||||
});
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("tableMater", tableMater);
|
||||
rawAssistIStorService.unDivStruct(map);
|
||||
// 删除单据
|
||||
String[] ids = {mstDao.getIostorinv_id()};
|
||||
rawAssistIStorService.deleteAll(ids);
|
||||
|
||||
// 删除组盘信息
|
||||
iMdPbGroupplateService.removeById(dto);
|
||||
resultJson.put("is_weigh", IOSConstant.ZERO);
|
||||
}
|
||||
return resultJson;
|
||||
}
|
||||
|
||||
public void outReceiveSum(GroupPlate dto) {
|
||||
// 转换为集合
|
||||
String cleanStr = dto.getBom_list().trim()
|
||||
.replaceAll("^\\[|\\]$", "")
|
||||
.replaceAll("\\s+", "");
|
||||
List<String> bomCodeList = new ArrayList<>();
|
||||
if (!cleanStr.isEmpty()) {
|
||||
bomCodeList = Arrays.asList(cleanStr.split(","));
|
||||
}
|
||||
// 查询所选工单
|
||||
List<PdmBomCallMaterial> bomDaoList = iPdmBomCallMaterialService.list(
|
||||
new QueryWrapper<PdmBomCallMaterial>().lambda()
|
||||
.in(PdmBomCallMaterial::getBom_code, bomCodeList)
|
||||
.orderByDesc(PdmBomCallMaterial::getReal_weigh_qty)
|
||||
);
|
||||
// 判断工单总的可退重量是否满足组盘总量
|
||||
Double sumQty = bomDaoList.stream()
|
||||
.map(row -> row.getReal_weigh_qty().doubleValue())
|
||||
.reduce(Double::sum)
|
||||
.orElse(0.00);
|
||||
|
||||
double group_qty = dto.getQty().doubleValue();
|
||||
if (sumQty < group_qty) {
|
||||
throw new BadRequestException("当前所选工单不满足退料重量,当前所选工单重量为【" + sumQty + "】");
|
||||
}
|
||||
|
||||
// 进行工单分配重量
|
||||
for (PdmBomCallMaterial dao : bomDaoList) {
|
||||
double bom_qty = dao.getReal_weigh_qty().doubleValue();
|
||||
|
||||
if (bom_qty >= group_qty) {
|
||||
// 创建退料明细
|
||||
createBomDtl(dao, dto, group_qty);
|
||||
break;
|
||||
} else {
|
||||
// 创建退料明细
|
||||
createBomDtl(dao, dto, bom_qty);
|
||||
group_qty = NumberUtil.sub(group_qty, bom_qty);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建退料明细
|
||||
*
|
||||
* @param dao bom实体类
|
||||
* @param plate 组盘实体类
|
||||
* @param qty 需要减扣的数量
|
||||
*/
|
||||
public void createBomDtl(PdmBomCallMaterial dao, GroupPlate plate, double qty) {
|
||||
// 查询当前随便一个退料明细
|
||||
List<PdmBomCallMaterialDtl> dtlList = iPdmBomCallMaterialDtlService.list(
|
||||
new QueryWrapper<PdmBomCallMaterialDtl>().lambda()
|
||||
.eq(PdmBomCallMaterialDtl::getBom_id, dao.getBom_id())
|
||||
);
|
||||
PdmBomCallMaterialDtl dtlDao = dtlList.get(0);
|
||||
dtlDao.setBomdtl_id(IdUtil.getStringId());
|
||||
dtlDao.setPcsn(plate.getPcsn());
|
||||
dtlDao.setVehicle_code(plate.getStoragevehicle_code());
|
||||
dtlDao.setBom_status(BomEnum.CALL_BOM_DTL_STATUS.code("完成"));
|
||||
dtlDao.setOut_qty(BigDecimal.valueOf(qty));
|
||||
dtlDao.setWeigh_qty(BigDecimal.ZERO);
|
||||
// TODO dtlDao.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
// TODO dtlDao.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
dtlDao.setCreate_id("1");
|
||||
dtlDao.setCreate_name("管理员");
|
||||
|
||||
dtlDao.setCreate_time(DateUtil.now());
|
||||
dtlDao.setConfirm_time(DateUtil.now());
|
||||
dtlDao.setRemark("由退料组盘创建");
|
||||
dtlDao.setGroup_id(plate.getGroup_id());
|
||||
iPdmBomCallMaterialDtlService.save(dtlDao);
|
||||
|
||||
// 更新主bom
|
||||
dao.setReal_weigh_qty(NumberUtil.sub(dao.getReal_weigh_qty(), qty));
|
||||
dao.setBom_status(BomEnum.CALL_BOM_STATUS.code("完成"));
|
||||
iPdmBomCallMaterialService.updateById(dao);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,220 @@
|
||||
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.sch_manage.enums.TaskEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.util.ACSTaskTypeEnum;
|
||||
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.IOSConstant;
|
||||
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;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 呼叫退料空载具任务类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2026-01-04
|
||||
*/
|
||||
@Component(value = "CallReceiveEmpTask")
|
||||
@TaskType("CallReceiveEmpTask")
|
||||
public class CallReceiveEmpTask extends AbstractTask {
|
||||
|
||||
/**
|
||||
* 任务服务类
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
/**
|
||||
* 点位服务
|
||||
*/
|
||||
@Resource
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
|
||||
@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(CallReceiveEmpTask.class.getSimpleName());
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setPoint_code3(json.getString("point_code3"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setTask_type(TaskEnum.TASK_TYPE.code("载具"));
|
||||
task.setExt_group_data(json.getString("ext_group_data"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setContact_task(json.getString("contact_task"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
taskService.save(task);
|
||||
|
||||
// 下发任务
|
||||
this.sendTaskOne(task.getTask_id());
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AcsTaskDto sendAcsParam(String taskId) {
|
||||
SchBaseTask taskDao = taskService.getById(taskId);
|
||||
|
||||
// 组织下发给acs的数据
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
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());
|
||||
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
|
||||
|
||||
acsTaskDto.setVehicle_type(IOSConstant.ONE);
|
||||
acsTaskDto.setIs_wait(IOSConstant.ONE);
|
||||
acsTaskDto.setTask_type(ACSTaskTypeEnum.AGV_TASK.getCode());
|
||||
|
||||
acsTaskDto.setPriority(IOSConstant.ONE);
|
||||
acsTaskDto.setAgv_system_type(IOSConstant.THREE);
|
||||
acsTaskDto.setIs_get_pause(IOSConstant.ZERO);
|
||||
acsTaskDto.setIs_put_pause(IOSConstant.ZERO);
|
||||
return acsTaskDto;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
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)) {
|
||||
// 更新明细状态
|
||||
this.executing(taskObj);
|
||||
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
|
||||
@Transactional
|
||||
public void forceFinish(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
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 taskConfirm(String task_code) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject resultWeigh(SchBaseTask taskObj) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void finishTask(SchBaseTask taskObj) {
|
||||
// 更新point_code2
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2())
|
||||
.set(SchBasePoint::getVehicle_code, "")
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位"))
|
||||
.set(SchBasePoint::getIng_task_code, "")
|
||||
);
|
||||
// 更新更新point_code1
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code())
|
||||
.set(SchBasePoint::getIng_task_code, taskObj.getTask_id())
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料"))
|
||||
);
|
||||
// 更新任务
|
||||
taskObj.setRemark("已完成");
|
||||
taskObj.setUpdate_time(DateUtil.now());
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void cancelTask(SchBaseTask taskObj) {
|
||||
// 更新point_code1
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getIng_task_code, "")
|
||||
);
|
||||
// 更新point_code2
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2())
|
||||
.set(SchBasePoint::getIng_task_code, "")
|
||||
);
|
||||
// 更新任务
|
||||
taskObj.setRemark("已取消");
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
private void executing(SchBaseTask taskObj) {
|
||||
// 更新起点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getIng_task_code, taskObj.getTask_id())
|
||||
);
|
||||
// 更新终点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2())
|
||||
.set(SchBasePoint::getIng_task_code, taskObj.getTask_id())
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -64,6 +64,12 @@ public class EmpVehicleOutTask extends AbstractTask {
|
||||
@Resource
|
||||
private PdaPointTask pdaPointTask;
|
||||
|
||||
/**
|
||||
* 呼叫退料空载具任务服务
|
||||
*/
|
||||
@Resource
|
||||
private CallReceiveEmpTask callReceiveEmpTask;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
@@ -201,6 +207,11 @@ public class EmpVehicleOutTask extends AbstractTask {
|
||||
if (ObjectUtil.isNotEmpty(taskObj.getPoint_code3())) {
|
||||
createAgvTask(taskObj);
|
||||
}
|
||||
|
||||
// 判断point_code4是否有值; 有值需要生成 呼叫退料空载具任务
|
||||
if (ObjectUtil.isNotEmpty(taskObj.getPoint_code4())) {
|
||||
callOutReceiveTask(taskObj);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@@ -231,4 +242,18 @@ public class EmpVehicleOutTask extends AbstractTask {
|
||||
jsonTask.put("task_type", TaskEnum.TASK_TYPE.code("载具"));
|
||||
pdaPointTask.create(jsonTask);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成退料空载具任务至产线
|
||||
*
|
||||
* @param taskObj 任务实体类
|
||||
*/
|
||||
private void callOutReceiveTask(SchBaseTask taskObj) {
|
||||
JSONObject jsonTask = new JSONObject();
|
||||
jsonTask.put("point_code1", IOSConstant.CZW_POINT);
|
||||
jsonTask.put("point_code2", taskObj.getPoint_code4());
|
||||
jsonTask.put("vehicle_code", taskObj.getVehicle_code());
|
||||
jsonTask.put("task_type", TaskEnum.TASK_TYPE.code("载具"));
|
||||
callReceiveEmpTask.create(jsonTask);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,10 +85,10 @@ public class ReceiveOutTask extends AbstractTask {
|
||||
private IPdmBomCallMaterialDtlService iPdmBomCallMaterialDtlService;
|
||||
|
||||
/**
|
||||
* 点对点任务类
|
||||
* 领料出库三点AGV任务类
|
||||
*/
|
||||
@Resource
|
||||
private PdaPointTask pdaPointTask;
|
||||
private ReceiveOutThreePointTask receiveOutThreePointTask;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
@@ -278,7 +278,7 @@ public class ReceiveOutTask extends AbstractTask {
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成点位点任务:称重位至库外站点
|
||||
* 生成退料三点任务:称重位至库外站点
|
||||
*
|
||||
* @param taskObj 任务实体类
|
||||
*/
|
||||
@@ -290,6 +290,6 @@ public class ReceiveOutTask extends AbstractTask {
|
||||
jsonTask.put("task_type", TaskEnum.TASK_TYPE.code("料箱"));
|
||||
jsonTask.put("material_id", taskObj.getMaterial_id());
|
||||
jsonTask.put("material_qty", taskObj.getMaterial_qty());
|
||||
pdaPointTask.create(jsonTask);
|
||||
receiveOutThreePointTask.create(jsonTask);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,224 @@
|
||||
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.sch_manage.enums.TaskEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.util.ACSTaskTypeEnum;
|
||||
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.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.VehicleInService;
|
||||
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;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 领料出库三点AGV任务类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2026-01-04
|
||||
*/
|
||||
@Component(value = "ReceiveOutThreePointTask")
|
||||
@TaskType("ReceiveOutThreePointTask")
|
||||
public class ReceiveOutThreePointTask extends AbstractTask {
|
||||
|
||||
/**
|
||||
* 任务服务类
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
/**
|
||||
* 点位服务
|
||||
*/
|
||||
@Resource
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
|
||||
@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(ReceiveOutThreePointTask.class.getSimpleName());
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setPoint_code3(json.getString("point_code3"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setMaterial_id(json.getString("material_id"));
|
||||
task.setMaterial_qty(json.getBigDecimal("material_qty"));
|
||||
task.setTask_type(TaskEnum.TASK_TYPE.code("料箱"));
|
||||
task.setExt_group_data(json.getString("ext_group_data"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setContact_task(json.getString("contact_task"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
taskService.save(task);
|
||||
|
||||
// 下发任务
|
||||
this.sendTaskOne(task.getTask_id());
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AcsTaskDto sendAcsParam(String taskId) {
|
||||
SchBaseTask taskDao = taskService.getById(taskId);
|
||||
|
||||
// 组织下发给acs的数据
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
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());
|
||||
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
|
||||
|
||||
acsTaskDto.setVehicle_type(IOSConstant.ONE);
|
||||
acsTaskDto.setIs_wait(IOSConstant.ONE);
|
||||
acsTaskDto.setTask_type(ACSTaskTypeEnum.AGV_TASK.getCode());
|
||||
|
||||
acsTaskDto.setPriority(IOSConstant.ONE);
|
||||
acsTaskDto.setAgv_system_type(IOSConstant.THREE);
|
||||
acsTaskDto.setIs_get_pause(IOSConstant.ZERO);
|
||||
acsTaskDto.setIs_put_pause(IOSConstant.ZERO);
|
||||
return acsTaskDto;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
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)) {
|
||||
// 更新明细状态
|
||||
this.executing(taskObj);
|
||||
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
|
||||
@Transactional
|
||||
public void forceFinish(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
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 taskConfirm(String task_code) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject resultWeigh(SchBaseTask taskObj) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void finishTask(SchBaseTask taskObj) {
|
||||
// 更新point_code2
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2())
|
||||
.set(SchBasePoint::getVehicle_code, "")
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位"))
|
||||
.set(SchBasePoint::getIng_task_code, "")
|
||||
);
|
||||
// 更新更新point_code1
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code())
|
||||
.set(SchBasePoint::getIng_task_code, taskObj.getTask_id())
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空载具"))
|
||||
);
|
||||
// 更新任务
|
||||
taskObj.setRemark("已完成");
|
||||
taskObj.setUpdate_time(DateUtil.now());
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void cancelTask(SchBaseTask taskObj) {
|
||||
// 更新point_code1
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getIng_task_code, "")
|
||||
);
|
||||
// 更新point_code2
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2())
|
||||
.set(SchBasePoint::getIng_task_code, "")
|
||||
);
|
||||
// 更新任务
|
||||
taskObj.setRemark("已取消");
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
private void executing(SchBaseTask taskObj) {
|
||||
// 更新起点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getIng_task_code, taskObj.getTask_id())
|
||||
);
|
||||
// 更新终点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2())
|
||||
.set(SchBasePoint::getIng_task_code, taskObj.getTask_id())
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -46,4 +46,11 @@ public class VehicleOutController {
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PostMapping("/confirmOutEmp")
|
||||
@Log("呼叫退料空载具")
|
||||
public ResponseEntity<Object> confirmOutEmp(@RequestBody JSONObject whereJson) {
|
||||
vehicleOutService.confirmOutEmp(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.warehouse_management.service;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdCsSupplierbase;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
|
||||
@@ -38,8 +39,9 @@ public interface IMdPbGroupplateService extends IService<GroupPlate> {
|
||||
* 新增组盘记录
|
||||
*
|
||||
* @param dto 组盘记录实体类
|
||||
* @return String
|
||||
*/
|
||||
void create(GroupPlate dto);
|
||||
String create(GroupPlate dto);
|
||||
|
||||
/**
|
||||
* 修改组盘记录
|
||||
@@ -111,4 +113,10 @@ public interface IMdPbGroupplateService extends IService<GroupPlate> {
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse getPcsn();
|
||||
|
||||
/**
|
||||
* 退料组盘
|
||||
* @param dto 实体类
|
||||
*/
|
||||
void outReceiveGroup(GroupPlate dto);
|
||||
}
|
||||
|
||||
@@ -34,4 +34,14 @@ public interface VehicleOutService {
|
||||
* }
|
||||
*/
|
||||
void create(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 呼叫退料空载具
|
||||
*
|
||||
* @param whereJson {
|
||||
* point_code: 出库点位
|
||||
* sect_code: 库区编码
|
||||
* }
|
||||
*/
|
||||
void confirmOutEmp(JSONObject whereJson);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
package org.nl.wms.warehouse_management.service.dao;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.core.JsonToken;
|
||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||
import com.fasterxml.jackson.databind.JsonDeserializer;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Liuxy
|
||||
@@ -139,4 +148,23 @@ public class GroupPlate implements Serializable {
|
||||
* 是否退料
|
||||
*/
|
||||
private String is_return;
|
||||
|
||||
/**
|
||||
* 工单集合
|
||||
*/
|
||||
@JsonDeserialize(using = ArrayToStringDeserializer.class)
|
||||
private String bom_list;
|
||||
|
||||
// 自定义反序列化逻辑
|
||||
static class ArrayToStringDeserializer extends JsonDeserializer<String> {
|
||||
@Override
|
||||
public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
|
||||
GroupPlate groupPlate = JSONObject.parseObject(JSONObject.toJSONString(p.getCurrentValue()), GroupPlate.class);
|
||||
if (ObjectUtil.isEmpty(groupPlate)) {
|
||||
List<String> list = p.readValueAs(List.class);
|
||||
return list.toString();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,13 +2,18 @@ package org.nl.wms.warehouse_management.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
@@ -25,6 +30,11 @@ import org.nl.wms.basedata_manage.service.dao.MdPbMeasureunit;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
|
||||
import org.nl.wms.pda.general_management.service.PdaInGroupBoxService;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
import org.nl.wms.pdm_manage.enums.BomEnum;
|
||||
import org.nl.wms.pdm_manage.service.IPdmBomCallMaterialDtlService;
|
||||
import org.nl.wms.pdm_manage.service.IPdmBomCallMaterialService;
|
||||
import org.nl.wms.pdm_manage.service.dao.PdmBomCallMaterial;
|
||||
import org.nl.wms.pdm_manage.service.dao.PdmBomCallMaterialDtl;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
|
||||
@@ -32,15 +42,14 @@ import org.nl.wms.warehouse_management.service.dao.GroupPlate;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.MdPbGroupplateMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.IOException;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -83,6 +92,18 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper,
|
||||
@Autowired
|
||||
private PdaInGroupBoxService pdaInGroupBoxService;
|
||||
|
||||
/**
|
||||
* BOM服务
|
||||
*/
|
||||
@Autowired
|
||||
private IPdmBomCallMaterialService iPdmBomCallMaterialService;
|
||||
|
||||
/**
|
||||
* BOM明细服务
|
||||
*/
|
||||
@Autowired
|
||||
private IPdmBomCallMaterialDtlService iPdmBomCallMaterialDtlService;
|
||||
|
||||
@Override
|
||||
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) {
|
||||
return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()),
|
||||
@@ -91,7 +112,7 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper,
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void create(GroupPlate dto) {
|
||||
public String create(GroupPlate dto) {
|
||||
// 校验载具信息
|
||||
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getByCode(dto.getStoragevehicle_code());
|
||||
if (ObjectUtil.isEmpty(vehicleDao.getWeigth())) {
|
||||
@@ -124,6 +145,7 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper,
|
||||
dto.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
dto.setCreate_time(DateUtil.now());
|
||||
this.save(dto);
|
||||
return dto.getGroup_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -207,4 +229,85 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper,
|
||||
public PdaResponse getPcsn() {
|
||||
return pdaInGroupBoxService.queryPcsn();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void outReceiveGroup(GroupPlate dto){
|
||||
// 插入组盘记录
|
||||
dto.setGroup_id(this.create(dto));
|
||||
// 转换为集合
|
||||
String cleanStr = dto.getBom_list().trim()
|
||||
.replaceAll("^\\[|\\]$", "")
|
||||
.replaceAll("\\s+", "");
|
||||
List<String> bomCodeList = new ArrayList<>();
|
||||
if (!cleanStr.isEmpty()) {
|
||||
bomCodeList = Arrays.asList(cleanStr.split(","));
|
||||
}
|
||||
// 查询所选工单
|
||||
List<PdmBomCallMaterial> bomDaoList = iPdmBomCallMaterialService.list(
|
||||
new QueryWrapper<PdmBomCallMaterial>().lambda()
|
||||
.in(PdmBomCallMaterial::getBom_code, bomCodeList)
|
||||
.orderByDesc(PdmBomCallMaterial::getReal_weigh_qty)
|
||||
);
|
||||
// 判断工单总的可退重量是否满足组盘总量
|
||||
Double sumQty = bomDaoList.stream()
|
||||
.map(row -> row.getReal_weigh_qty().doubleValue())
|
||||
.reduce(Double::sum)
|
||||
.orElse(0.00);
|
||||
|
||||
double group_qty = dto.getQty().doubleValue();
|
||||
if (sumQty < group_qty) {
|
||||
throw new BadRequestException("当前所选工单不满足退料重量,当前所选工单重量为【" + sumQty + "】");
|
||||
}
|
||||
|
||||
// 进行工单分配重量
|
||||
for (PdmBomCallMaterial dao : bomDaoList) {
|
||||
double bom_qty = dao.getReal_weigh_qty().doubleValue();
|
||||
|
||||
if (bom_qty >= group_qty) {
|
||||
// 创建退料明细
|
||||
createBomDtl(dao, dto, group_qty);
|
||||
break;
|
||||
} else {
|
||||
// 创建退料明细
|
||||
createBomDtl(dao, dto, bom_qty);
|
||||
group_qty = NumberUtil.sub(group_qty, bom_qty);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建退料明细
|
||||
*
|
||||
* @param dao bom实体类
|
||||
* @param plate 组盘实体类
|
||||
* @param qty 需要减扣的数量
|
||||
*/
|
||||
public void createBomDtl(PdmBomCallMaterial dao, GroupPlate plate, double qty) {
|
||||
// 查询当前随便一个退料明细
|
||||
List<PdmBomCallMaterialDtl> dtlList = iPdmBomCallMaterialDtlService.list(
|
||||
new QueryWrapper<PdmBomCallMaterialDtl>().lambda()
|
||||
.eq(PdmBomCallMaterialDtl::getBom_id, dao.getBom_id())
|
||||
);
|
||||
PdmBomCallMaterialDtl dtlDao = dtlList.get(0);
|
||||
dtlDao.setBomdtl_id(IdUtil.getStringId());
|
||||
dtlDao.setPcsn(plate.getPcsn());
|
||||
dtlDao.setVehicle_code(plate.getStoragevehicle_code());
|
||||
dtlDao.setBom_status(BomEnum.CALL_BOM_DTL_STATUS.code("生成"));
|
||||
dtlDao.setOut_qty(BigDecimal.valueOf(qty));
|
||||
dtlDao.setWeigh_qty(BigDecimal.ZERO);
|
||||
dtlDao.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
dtlDao.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
dtlDao.setCreate_time(DateUtil.now());
|
||||
dtlDao.setConfirm_time( "" );
|
||||
dtlDao.setRemark("由退料组盘创建");
|
||||
dtlDao.setGroup_id(plate.getGroup_id());
|
||||
iPdmBomCallMaterialDtlService.save(dtlDao);
|
||||
|
||||
// 更新主bom
|
||||
dao.setReal_weigh_qty(NumberUtil.sub(dao.getReal_weigh_qty(), qty));
|
||||
dao.setBom_status(BomEnum.CALL_BOM_STATUS.code("退料中"));
|
||||
iPdmBomCallMaterialService.updateById(dao);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -695,6 +695,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
groupPlateMapper.update(new GroupPlate(), new LambdaUpdateWrapper<>(GroupPlate.class)
|
||||
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
||||
.set(ioStorInv.getBill_type().equals(IOSEnum.IN_BILL_TYPE.code("退料入库")),GroupPlate::getIs_return, IOSConstant.ONE)
|
||||
.set(GroupPlate::getBom_list,"")
|
||||
.eq(GroupPlate::getPcsn, ioStorInvDis.getPcsn())
|
||||
.eq(GroupPlate::getStoragevehicle_code, ioStorInvDis.getStoragevehicle_code())
|
||||
.eq(GroupPlate::getMaterial_id, ioStorInvDis.getMaterial_id())
|
||||
|
||||
@@ -10,9 +10,7 @@ import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.mapper.SchBaseTaskMapper;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.EmpOutMoveTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.EmpVehicleOutTask;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
@@ -42,12 +40,6 @@ public class VehicleOutServiceImpl implements VehicleOutService {
|
||||
@Autowired
|
||||
private SchBaseTaskMapper schBaseTaskMapper;
|
||||
|
||||
/**
|
||||
* 任务服务
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBaseTaskService iSchBaseTaskService;
|
||||
|
||||
/**
|
||||
* 仓位服务
|
||||
*/
|
||||
@@ -60,12 +52,6 @@ public class VehicleOutServiceImpl implements VehicleOutService {
|
||||
@Resource
|
||||
private EmpVehicleOutTask empVehicleOutTask;
|
||||
|
||||
/**
|
||||
* 空载具出库移库任务类
|
||||
*/
|
||||
@Autowired
|
||||
private EmpOutMoveTask empOutMoveTask;
|
||||
|
||||
@Override
|
||||
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) {
|
||||
whereJson.put("config_code", EmpVehicleOutTask.class.getSimpleName());
|
||||
@@ -80,55 +66,7 @@ public class VehicleOutServiceImpl implements VehicleOutService {
|
||||
if (ObjectUtil.isEmpty(attrList)) {
|
||||
throw new BadRequestException("暂时没有可用的空载具!");
|
||||
}
|
||||
|
||||
Structattr structattr = attrList.get(0);
|
||||
/*String point_code1 = "";
|
||||
for (Structattr attrDao : attrList) {
|
||||
// 判断是深浅货位
|
||||
if (attrDao.getPlacement_type().equals(IOSEnum.PLACEMENT_TYPE.code("浅货位"))) {
|
||||
// 直接创建出库任务
|
||||
structattr = attrDao;
|
||||
point_code1 = attrDao.getStruct_code();
|
||||
break;
|
||||
} else {
|
||||
// 深货位:判断浅货位是否有货
|
||||
// 查询浅货位
|
||||
Structattr shallowAttr = iStructattrService.getOne(
|
||||
new QueryWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getBlock_num, attrDao.getBlock_num())
|
||||
.eq(Structattr::getCol_num, attrDao.getCol_num())
|
||||
.eq(Structattr::getLayer_num, attrDao.getLayer_num())
|
||||
.eq(Structattr::getPlacement_type, IOSEnum.PLACEMENT_TYPE.code("浅货位"))
|
||||
);
|
||||
if (ObjectUtil.isEmpty(shallowAttr)) {
|
||||
throw new BadRequestException("仓位【" + attrDao.getStruct_code() + "】对应的浅货位不存在,请检查数据!");
|
||||
}
|
||||
|
||||
if (ObjectUtil.isEmpty(shallowAttr.getStoragevehicle_code())) {
|
||||
// 浅货位空位
|
||||
if (shallowAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||
// 直接创建出库任务
|
||||
structattr = attrDao;
|
||||
point_code1 = attrDao.getStruct_code();
|
||||
break;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
||||
} else {
|
||||
// 浅货位有货
|
||||
if (shallowAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||
// 创建移库任务
|
||||
structattr = createMoveTask(attrDao, shallowAttr);
|
||||
point_code1 = attrDao.getStruct_code();
|
||||
break;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
// 锁定仓位
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
@@ -138,60 +76,42 @@ public class VehicleOutServiceImpl implements VehicleOutService {
|
||||
|
||||
// 创建任务
|
||||
JSONObject jsonTask = new JSONObject();
|
||||
jsonTask.put("vehicle_code", structattr.getStoragevehicle_code());
|
||||
jsonTask.put("point_code1", structattr.getStruct_code());
|
||||
jsonTask.put("point_code2", IOSConstant.CZW_POINT);
|
||||
// 判断终点是否是称重位
|
||||
// 判断终点是否是称重位- 正常出库
|
||||
jsonTask.put("point_code3", whereJson.getString("point_code").equals(IOSConstant.CZW_POINT)
|
||||
? "" : whereJson.getString("point_code")
|
||||
);
|
||||
// 用于任务完成时更新原仓位
|
||||
// jsonTask.put("point_code4", structattr.getStruct_code());
|
||||
// jsonTask.put("vehicle_code", structattr.getStoragevehicle_code());
|
||||
String task_id = empVehicleOutTask.create(jsonTask);
|
||||
|
||||
/* if (ObjectUtil.isNotEmpty(structattr.getTask_id())) {
|
||||
// 更新空载具出库任务类ext_group_data字段
|
||||
iSchBaseTaskService.update(
|
||||
new UpdateWrapper<SchBaseTask>().lambda()
|
||||
.set(SchBaseTask::getExt_group_data, task_id)
|
||||
.eq(SchBaseTask::getTask_id, structattr.getTask_id())
|
||||
);
|
||||
}*/
|
||||
empVehicleOutTask.create(jsonTask);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建移库任务
|
||||
*
|
||||
* @param attrDao 深货位
|
||||
* @param shallowAttr 浅货位
|
||||
* @return Structattr 新货位
|
||||
*/
|
||||
private Structattr createMoveTask(Structattr attrDao, Structattr shallowAttr) {
|
||||
// 锁定起点
|
||||
@Override
|
||||
@Transactional
|
||||
public void confirmOutEmp(JSONObject whereJson) {
|
||||
// 根据库区找空载具
|
||||
List<Structattr> attrList = autoDivStruct(whereJson);
|
||||
if (ObjectUtil.isEmpty(attrList)) {
|
||||
throw new BadRequestException("暂时没有可用的空载具!");
|
||||
}
|
||||
Structattr structattr = attrList.get(0);
|
||||
// 锁定仓位
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("移出锁"))
|
||||
.eq(Structattr::getStruct_code, shallowAttr.getStruct_code())
|
||||
);
|
||||
// 锁定终点
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("移入锁"))
|
||||
.eq(Structattr::getStruct_code, attrDao.getStruct_code())
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("空托盘出库锁"))
|
||||
.eq(Structattr::getStruct_code, structattr.getStruct_code())
|
||||
);
|
||||
|
||||
// 创建移库任务
|
||||
JSONObject jsonMoveTask = new JSONObject();
|
||||
jsonMoveTask.put("point_code1", shallowAttr.getStruct_code());
|
||||
jsonMoveTask.put("point_code2", attrDao.getStruct_code());
|
||||
jsonMoveTask.put("vehicle_code", shallowAttr.getStoragevehicle_code());
|
||||
jsonMoveTask.put("vehicle_code2", attrDao.getStoragevehicle_code());
|
||||
|
||||
String task_id = empOutMoveTask.create(jsonMoveTask);
|
||||
shallowAttr.setTask_id(task_id);
|
||||
|
||||
shallowAttr.setStoragevehicle_code(attrDao.getStoragevehicle_code());
|
||||
return shallowAttr;
|
||||
// 创建任务
|
||||
JSONObject jsonTask = new JSONObject();
|
||||
jsonTask.put("vehicle_code", structattr.getStoragevehicle_code());
|
||||
jsonTask.put("point_code1", structattr.getStruct_code());
|
||||
jsonTask.put("point_code2", IOSConstant.CZW_POINT);
|
||||
// 判断终点是否是称重位- 退料呼叫空载具
|
||||
jsonTask.put("point_code4", whereJson.getString("point_code").equals(IOSConstant.CZW_POINT)
|
||||
? "" : whereJson.getString("point_code")
|
||||
);
|
||||
empVehicleOutTask.create(jsonTask);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user