rev:优化修改
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package org.nl.wms.basedata_manage.service.dao;
|
package org.nl.wms.basedata_manage.service.dao;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -129,4 +130,10 @@ public class MdPbStoragevehicleinfo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String ext_id;
|
private String ext_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 料箱类型(手持返回前端使用)
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String box_type;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -130,6 +130,19 @@ public class MdPbStoragevehicleextServiceImpl extends ServiceImpl<MdPbStorageveh
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 判断是大料箱还是小料箱
|
||||||
|
if (attrDao.getSect_code().equals(IOSEnum.SECT_CODE.code("大料箱区"))) {
|
||||||
|
// 更新组盘记录品质类型
|
||||||
|
iMdPbGroupplateService.update(
|
||||||
|
new UpdateWrapper<GroupPlate>().lambda()
|
||||||
|
.set(GroupPlate::getQuality_type, quality_type)
|
||||||
|
.eq(GroupPlate::getMaterial_id, extDao.getMaterial_id())
|
||||||
|
.eq(GroupPlate::getStoragevehicle_code, extDao.getStoragevehicle_code())
|
||||||
|
.eq(GroupPlate::getPcsn, extDao.getPcsn())
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 分配相同库区且有空托盘的仓位
|
// 分配相同库区且有空托盘的仓位
|
||||||
JSONObject jsonParam = new JSONObject();
|
JSONObject jsonParam = new JSONObject();
|
||||||
jsonParam.put("stor_id", attrDao.getStor_id());
|
jsonParam.put("stor_id", attrDao.getStor_id());
|
||||||
@@ -181,6 +194,7 @@ public class MdPbStoragevehicleextServiceImpl extends ServiceImpl<MdPbStorageveh
|
|||||||
*/
|
*/
|
||||||
private Structattr divStruct(JSONObject jsonParam) {
|
private Structattr divStruct(JSONObject jsonParam) {
|
||||||
|
|
||||||
|
List<Structattr> attrList = new ArrayList<>();
|
||||||
Structattr structattr = new Structattr();
|
Structattr structattr = new Structattr();
|
||||||
|
|
||||||
List<Structattr> vehicleAttrList = iStructattrService.list(
|
List<Structattr> vehicleAttrList = iStructattrService.list(
|
||||||
@@ -192,13 +206,13 @@ public class MdPbStoragevehicleextServiceImpl extends ServiceImpl<MdPbStorageveh
|
|||||||
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||||
.eq(Structattr::getIs_emptyvehicle, IOSConstant.ONE)
|
.eq(Structattr::getIs_emptyvehicle, IOSConstant.ONE)
|
||||||
.and(wrapper -> wrapper.isNotNull(Structattr::getStoragevehicle_code).or().ne(Structattr::getStoragevehicle_code, ""))
|
.and(wrapper -> wrapper.isNotNull(Structattr::getStoragevehicle_code).or().ne(Structattr::getStoragevehicle_code, ""))
|
||||||
.orderByAsc(Structattr::getPlacement_type)
|
.orderByDesc(Structattr::getPlacement_type)
|
||||||
.orderByAsc(Structattr::getStruct_code)
|
.orderByAsc(Structattr::getStruct_code)
|
||||||
);
|
);
|
||||||
if (ObjectUtil.isNotEmpty(vehicleAttrList)) {
|
if (ObjectUtil.isNotEmpty(vehicleAttrList)) {
|
||||||
structattr = vehicleAttrList.get(0);
|
attrList = vehicleAttrList;
|
||||||
} else {
|
} else {
|
||||||
List<Structattr> attrList = iStructattrService.list(
|
attrList = iStructattrService.list(
|
||||||
new QueryWrapper<Structattr>().lambda()
|
new QueryWrapper<Structattr>().lambda()
|
||||||
.eq(Structattr::getStor_id, jsonParam.getString("stor_id"))
|
.eq(Structattr::getStor_id, jsonParam.getString("stor_id"))
|
||||||
.eq(Structattr::getSect_code, jsonParam.getString("sectc_code"))
|
.eq(Structattr::getSect_code, jsonParam.getString("sectc_code"))
|
||||||
@@ -210,14 +224,56 @@ public class MdPbStoragevehicleextServiceImpl extends ServiceImpl<MdPbStorageveh
|
|||||||
.orderByAsc(Structattr::getPlacement_type)
|
.orderByAsc(Structattr::getPlacement_type)
|
||||||
.orderByAsc(Structattr::getStruct_code)
|
.orderByAsc(Structattr::getStruct_code)
|
||||||
);
|
);
|
||||||
if (ObjectUtil.isNotEmpty(attrList)) {
|
}
|
||||||
structattr = attrList.get(0);
|
|
||||||
|
// 校验
|
||||||
|
for (Structattr attr : attrList) {
|
||||||
|
// 判断深浅货位
|
||||||
|
if (attr.getPlacement_type().equals(IOSEnum.PLACEMENT_TYPE.code("深货位"))) {
|
||||||
|
// 判断浅货位是否锁定
|
||||||
|
Structattr shallowStartAttr = iStructattrService.getOne(
|
||||||
|
new QueryWrapper<Structattr>().lambda()
|
||||||
|
.eq(Structattr::getBlock_num, attr.getBlock_num())
|
||||||
|
.eq(Structattr::getCol_num, attr.getCol_num())
|
||||||
|
.eq(Structattr::getLayer_num, attr.getLayer_num())
|
||||||
|
.eq(Structattr::getPlacement_type, IOSEnum.PLACEMENT_TYPE.code("浅货位"))
|
||||||
|
);
|
||||||
|
if (ObjectUtil.isEmpty(shallowStartAttr)) {
|
||||||
|
throw new BadRequestException("仓位【"+attr.getStruct_code()+"】对应的浅货位不存在!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (shallowStartAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||||
|
structattr = attr;
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 浅货位
|
||||||
|
Structattr shallowStartAttr = iStructattrService.getOne(
|
||||||
|
new QueryWrapper<Structattr>().lambda()
|
||||||
|
.eq(Structattr::getBlock_num, attr.getBlock_num())
|
||||||
|
.eq(Structattr::getCol_num, attr.getCol_num())
|
||||||
|
.eq(Structattr::getLayer_num, attr.getLayer_num())
|
||||||
|
.eq(Structattr::getPlacement_type, IOSEnum.PLACEMENT_TYPE.code("深货位"))
|
||||||
|
);
|
||||||
|
if (ObjectUtil.isEmpty(shallowStartAttr)) {
|
||||||
|
throw new BadRequestException("仓位【"+attr.getStruct_code()+"】对应的深货位不存在!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (shallowStartAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||||
|
structattr = attr;
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(structattr)) {
|
if (ObjectUtil.isEmpty(structattr.getStruct_code())) {
|
||||||
throw new BadRequestException("当前库区【" + jsonParam.getString("sectc_code") + "】没有可用仓位");
|
throw new BadRequestException("当前库区【" + jsonParam.getString("sectc_code") + "】没有可用仓位");
|
||||||
}
|
}
|
||||||
|
|
||||||
return structattr;
|
return structattr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -82,4 +82,11 @@ public class PdaGeneralPublicController {
|
|||||||
return new ResponseEntity<>(pdaGeneralPublicService.queryVehicleType(), HttpStatus.OK);
|
return new ResponseEntity<>(pdaGeneralPublicService.queryVehicleType(), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/queryNowVehicle")
|
||||||
|
@Log("查询当前载具类型")
|
||||||
|
@SaIgnore
|
||||||
|
public ResponseEntity<Object> queryNowVehicle(@RequestBody JSONObject whereJson) {
|
||||||
|
return new ResponseEntity<>(pdaGeneralPublicService.queryNowVehicle(whereJson), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,4 +74,13 @@ public interface PdaGeneralPublicService {
|
|||||||
* @return PdaResponse
|
* @return PdaResponse
|
||||||
*/
|
*/
|
||||||
PdaResponse queryVehicleType();
|
PdaResponse queryVehicleType();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询当前载具类型
|
||||||
|
* @param whereJson {
|
||||||
|
* vehicle_code:载具编码
|
||||||
|
* }
|
||||||
|
* @return PdaResponse
|
||||||
|
*/
|
||||||
|
PdaResponse queryNowVehicle(JSONObject whereJson);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,8 +6,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import org.nl.wms.basedata_manage.service.IMdCsSupplierbaseService;
|
import org.nl.wms.basedata_manage.service.IMdCsSupplierbaseService;
|
||||||
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
|
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
|
||||||
|
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
|
||||||
import org.nl.wms.basedata_manage.service.dao.MdCsSupplierbase;
|
import org.nl.wms.basedata_manage.service.dao.MdCsSupplierbase;
|
||||||
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
|
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
|
||||||
|
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
|
||||||
import org.nl.wms.pda.general_management.service.PdaGeneralPublicService;
|
import org.nl.wms.pda.general_management.service.PdaGeneralPublicService;
|
||||||
import org.nl.wms.pda.util.PDAEnum;
|
import org.nl.wms.pda.util.PDAEnum;
|
||||||
import org.nl.wms.pda.util.PdaResponse;
|
import org.nl.wms.pda.util.PdaResponse;
|
||||||
@@ -54,6 +56,12 @@ public class PdaGeneralPublicServiceImpl implements PdaGeneralPublicService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private PdmBomCallMaterialMapper pdmBomCallMaterialMapper;
|
private PdmBomCallMaterialMapper pdmBomCallMaterialMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 载具信息服务
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
private IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PdaResponse queryGroupQuality() {
|
public PdaResponse queryGroupQuality() {
|
||||||
return PdaResponse.requestParamOk(PDAEnum.QUALITY_TYPE.getDict());
|
return PdaResponse.requestParamOk(PDAEnum.QUALITY_TYPE.getDict());
|
||||||
@@ -110,4 +118,16 @@ public class PdaGeneralPublicServiceImpl implements PdaGeneralPublicService {
|
|||||||
public PdaResponse queryVehicleType() {
|
public PdaResponse queryVehicleType() {
|
||||||
return PdaResponse.requestParamOk(PDAEnum.TASK_TYPE.getDict());
|
return PdaResponse.requestParamOk(PDAEnum.TASK_TYPE.getDict());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PdaResponse queryNowVehicle(JSONObject whereJson) {
|
||||||
|
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne(
|
||||||
|
new QueryWrapper<MdPbStoragevehicleinfo>().lambda()
|
||||||
|
.eq(MdPbStoragevehicleinfo::getStoragevehicle_code, whereJson.getString("vehicle_code"))
|
||||||
|
);
|
||||||
|
if (ObjectUtil.isNotEmpty(vehicleDao)) {
|
||||||
|
vehicleDao.setBox_type(vehicleDao.getStoragevehicle_type());
|
||||||
|
}
|
||||||
|
return PdaResponse.requestParamOk(vehicleDao);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,4 +95,18 @@ public class SchBasePointController {
|
|||||||
public ResponseEntity<Object> getPointDtl(@RequestBody JSONObject whereJson) {
|
public ResponseEntity<Object> getPointDtl(@RequestBody JSONObject whereJson) {
|
||||||
return new ResponseEntity<>(schBasePointService.getPointDtl(whereJson),HttpStatus.OK);
|
return new ResponseEntity<>(schBasePointService.getPointDtl(whereJson),HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Log("清载具")
|
||||||
|
@PostMapping("/cleanVehicle")
|
||||||
|
public ResponseEntity<Object> cleanVehicle(@RequestBody SchBasePoint dao) {
|
||||||
|
schBasePointService.cleanVehicle(dao);
|
||||||
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Log("清物料")
|
||||||
|
@PostMapping("/cleanMaterial")
|
||||||
|
public ResponseEntity<Object> cleanMaterial(@RequestBody SchBasePoint dao) {
|
||||||
|
schBasePointService.cleanMaterial(dao);
|
||||||
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,4 +112,16 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
JSONObject getPointDtl(JSONObject whereJson);
|
JSONObject getPointDtl(JSONObject whereJson);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清载具
|
||||||
|
* @param dao 实体类
|
||||||
|
*/
|
||||||
|
void cleanVehicle(SchBasePoint dao);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清物料
|
||||||
|
* @param dao 实体类
|
||||||
|
*/
|
||||||
|
void cleanMaterial(SchBasePoint dao);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
|
|||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
@@ -29,6 +30,8 @@ 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.PointUtils;
|
||||||
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.dao.GroupPlate;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -59,6 +62,9 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ISchBaseTaskService iSchBaseTaskService;
|
private ISchBaseTaskService iSchBaseTaskService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IMdPbGroupplateService iMdPbGroupplateService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<SchBasePoint> queryAll(SchBasePointQuery whereJson, PageQuery page) {
|
public IPage<SchBasePoint> queryAll(SchBasePointQuery whereJson, PageQuery page) {
|
||||||
IPage<SchBasePoint> pages = new Page<>(page.getPage() + 1, page.getSize());
|
IPage<SchBasePoint> pages = new Page<>(page.getPage() + 1, page.getSize());
|
||||||
@@ -272,4 +278,35 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
|||||||
public JSONObject getPointDtl(JSONObject whereJson) {
|
public JSONObject getPointDtl(JSONObject whereJson) {
|
||||||
return pointMapper.getPointDtl(whereJson).get(0);
|
return pointMapper.getPointDtl(whereJson).get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void cleanVehicle(SchBasePoint dao) {
|
||||||
|
dao.setVehicle_code("");
|
||||||
|
dao.setPoint_status(IOSEnum.POINT_STATUS.code("空位"));
|
||||||
|
dao.setIng_task_code("");
|
||||||
|
this.updateById(dao);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void cleanMaterial(SchBasePoint dao) {
|
||||||
|
if (ObjectUtil.isEmpty(dao.getVehicle_code())) {
|
||||||
|
throw new BadRequestException("点位载具编码不能为空!");
|
||||||
|
}
|
||||||
|
// 查询组盘信息
|
||||||
|
GroupPlate plateDao = iMdPbGroupplateService.getOne(
|
||||||
|
new QueryWrapper<GroupPlate>().lambda()
|
||||||
|
.eq(GroupPlate::getStoragevehicle_code, dao.getVehicle_code())
|
||||||
|
);
|
||||||
|
if (ObjectUtil.isEmpty(plateDao)) {
|
||||||
|
throw new BadRequestException("当前点位载具信息不存在组盘信息!");
|
||||||
|
}
|
||||||
|
iMdPbGroupplateService.removeById(plateDao);
|
||||||
|
|
||||||
|
// 更新点位信息
|
||||||
|
dao.setPoint_status(IOSEnum.POINT_STATUS.code("空载具"));
|
||||||
|
dao.setIng_task_code("");
|
||||||
|
this.updateById(dao);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -197,10 +197,14 @@ public class CheckMoveTask extends AbstractTask {
|
|||||||
@Override
|
@Override
|
||||||
public void taskConfirm(String task_code) {
|
public void taskConfirm(String task_code) {
|
||||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||||
|
StIvtCheckdtl dtlDao = iStIvtCheckdtlService.getOne(
|
||||||
|
new QueryWrapper<StIvtCheckdtl>().lambda()
|
||||||
|
.eq(StIvtCheckdtl::getTask_id, taskObj.getTask_id())
|
||||||
|
);
|
||||||
// 更新起点
|
// 更新起点
|
||||||
iStructattrService.update(
|
iStructattrService.update(
|
||||||
new UpdateWrapper<Structattr>().lambda()
|
new UpdateWrapper<Structattr>().lambda()
|
||||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code1())
|
.eq(Structattr::getStruct_code, dtlDao.getStruct_code())
|
||||||
.set(Structattr::getStoragevehicle_code, null)
|
.set(Structattr::getStoragevehicle_code, null)
|
||||||
);
|
);
|
||||||
// 更新终点
|
// 更新终点
|
||||||
@@ -213,10 +217,6 @@ public class CheckMoveTask extends AbstractTask {
|
|||||||
);
|
);
|
||||||
|
|
||||||
// 更新盘点明细状态
|
// 更新盘点明细状态
|
||||||
StIvtCheckdtl dtlDao = iStIvtCheckdtlService.getOne(
|
|
||||||
new QueryWrapper<StIvtCheckdtl>().lambda()
|
|
||||||
.eq(StIvtCheckdtl::getTask_id, taskObj.getTask_id())
|
|
||||||
);
|
|
||||||
dtlDao.setStatus(IOSEnum.CHECK_DTL_STATUS.code("盘点中"));
|
dtlDao.setStatus(IOSEnum.CHECK_DTL_STATUS.code("盘点中"));
|
||||||
iStIvtCheckdtlService.updateById(dtlDao);
|
iStIvtCheckdtlService.updateById(dtlDao);
|
||||||
|
|
||||||
|
|||||||
@@ -226,7 +226,7 @@ public class CombinedBoxMoveTask extends AbstractTask {
|
|||||||
// 更新起点
|
// 更新起点
|
||||||
iStructattrService.update(
|
iStructattrService.update(
|
||||||
new UpdateWrapper<Structattr>().lambda()
|
new UpdateWrapper<Structattr>().lambda()
|
||||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code1())
|
.eq(Structattr::getStruct_code, dtlDao.getTurnout_struct_code())
|
||||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||||
.set(Structattr::getStoragevehicle_code, null)
|
.set(Structattr::getStoragevehicle_code, null)
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ public class EmpVehicleOutTask extends AbstractTask {
|
|||||||
task.setPoint_code1(json.getString("point_code1"));
|
task.setPoint_code1(json.getString("point_code1"));
|
||||||
task.setPoint_code2(json.getString("point_code2"));
|
task.setPoint_code2(json.getString("point_code2"));
|
||||||
task.setPoint_code3(json.getString("point_code3"));
|
task.setPoint_code3(json.getString("point_code3"));
|
||||||
|
task.setPoint_code4(json.getString("point_code4"));
|
||||||
task.setVehicle_code(json.getString("vehicle_code"));
|
task.setVehicle_code(json.getString("vehicle_code"));
|
||||||
task.setRequest_param(json.toString());
|
task.setRequest_param(json.toString());
|
||||||
task.setPriority(json.getString("Priority"));
|
task.setPriority(json.getString("Priority"));
|
||||||
@@ -177,7 +178,7 @@ public class EmpVehicleOutTask extends AbstractTask {
|
|||||||
// 更新起点
|
// 更新起点
|
||||||
iStructattrService.update(
|
iStructattrService.update(
|
||||||
new UpdateWrapper<Structattr>().lambda()
|
new UpdateWrapper<Structattr>().lambda()
|
||||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code1())
|
.eq(Structattr::getStruct_code, taskObj.getPoint_code4())
|
||||||
.set(Structattr::getStoragevehicle_code, null)
|
.set(Structattr::getStoragevehicle_code, null)
|
||||||
.set(Structattr::getIs_emptyvehicle, IOSConstant.IS_DELETE_NO)
|
.set(Structattr::getIs_emptyvehicle, IOSConstant.IS_DELETE_NO)
|
||||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||||
@@ -203,10 +204,10 @@ public class EmpVehicleOutTask extends AbstractTask {
|
|||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public void cancelTask(SchBaseTask taskObj) {
|
public void cancelTask(SchBaseTask taskObj) {
|
||||||
// 更新终点
|
// 更新起点
|
||||||
iStructattrService.update(
|
iStructattrService.update(
|
||||||
new UpdateWrapper<Structattr>().lambda()
|
new UpdateWrapper<Structattr>().lambda()
|
||||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code1())
|
.eq(Structattr::getStruct_code, taskObj.getPoint_code4())
|
||||||
.set(Structattr::getTaskdtl_id, null)
|
.set(Structattr::getTaskdtl_id, null)
|
||||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -0,0 +1,191 @@
|
|||||||
|
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.query.QueryWrapper;
|
||||||
|
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.TaskStatus;
|
||||||
|
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||||
|
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||||
|
import org.nl.wms.sch_manage.service.util.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.service.IStIvtMoveinvService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 库内移库任务类子任务
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Liuxy
|
||||||
|
* @since 2025-10-17
|
||||||
|
*/
|
||||||
|
@Component(value = "InsideDtlMoveTask")
|
||||||
|
@TaskType("InsideDtlMoveTask")
|
||||||
|
public class InsideDtlMoveTask extends AbstractTask {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务服务类
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
private ISchBaseTaskService taskService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 移库主表服务类
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
private IStIvtMoveinvService iStIvtMoveinvService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 库内移库任务类
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
private InsideMoveTask insideMoveTask;
|
||||||
|
|
||||||
|
@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(InsideDtlMoveTask.class.getSimpleName());
|
||||||
|
task.setPoint_code1(json.getString("point_code1"));
|
||||||
|
task.setPoint_code2(json.getString("point_code2"));
|
||||||
|
task.setVehicle_code(json.getString("vehicle_code"));
|
||||||
|
task.setVehicle_code2(json.getString("vehicle_code2"));
|
||||||
|
task.setGroup_id(json.getString("group_id"));
|
||||||
|
task.setContact_task(json.getString("contact_task"));
|
||||||
|
task.setRequest_param(json.toString());
|
||||||
|
task.setPriority(json.getString("Priority"));
|
||||||
|
task.setIs_wait(json.getString("is_wait"));
|
||||||
|
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.ZERO);
|
||||||
|
acsTaskDto.setTask_type(ACSTaskTypeEnum.CTU_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)) {
|
||||||
|
// 更新明细状态
|
||||||
|
SchBaseTask dtlTask = taskService.getById(taskObj.getContact_task());
|
||||||
|
iStIvtMoveinvService.executing(dtlTask);
|
||||||
|
|
||||||
|
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("该任务不存在");
|
||||||
|
}
|
||||||
|
this.cancelTask(taskObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void taskConfirm(String task_code) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject resultWeigh(SchBaseTask taskObj) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void finishTask(SchBaseTask taskObj) {
|
||||||
|
// 更新任务状态
|
||||||
|
taskObj.setRemark("已完成");
|
||||||
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||||
|
taskService.updateById(taskObj);
|
||||||
|
|
||||||
|
// 查询所有任务都是否为完成
|
||||||
|
List<SchBaseTask> taskList = taskService.list(
|
||||||
|
new QueryWrapper<SchBaseTask>().lambda()
|
||||||
|
.eq(SchBaseTask::getContact_task, taskObj.getContact_task())
|
||||||
|
);
|
||||||
|
boolean all_finished = taskList.stream()
|
||||||
|
.allMatch(row -> row.getTask_status().equals(TaskStatus.FINISHED.getCode()));
|
||||||
|
|
||||||
|
if (all_finished) {
|
||||||
|
insideMoveTask.finishTask(taskService.getById(taskObj.getContact_task()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void cancelTask(SchBaseTask taskObj) {
|
||||||
|
// 更新任务状态
|
||||||
|
taskObj.setRemark("已取消");
|
||||||
|
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||||
|
taskService.updateById(taskObj);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -82,7 +82,7 @@ public class InsideMoveTask extends AbstractTask {
|
|||||||
taskService.save(task);
|
taskService.save(task);
|
||||||
|
|
||||||
// 下发任务
|
// 下发任务
|
||||||
this.sendTaskOne(task.getTask_id());
|
// this.sendTaskOne(task.getTask_id());
|
||||||
return task.getTask_id();
|
return task.getTask_id();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ public class PieceBoxMoveTask extends AbstractTask {
|
|||||||
// 更新起点
|
// 更新起点
|
||||||
iStructattrService.update(
|
iStructattrService.update(
|
||||||
new UpdateWrapper<Structattr>().lambda()
|
new UpdateWrapper<Structattr>().lambda()
|
||||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code1())
|
.eq(Structattr::getStruct_code, dtlDao.getTurnout_struct_code())
|
||||||
.set(Structattr::getStoragevehicle_code, null)
|
.set(Structattr::getStoragevehicle_code, null)
|
||||||
);
|
);
|
||||||
// 更新终点
|
// 更新终点
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ public interface StIvtCheckdtlMapper extends BaseMapper<StIvtCheckdtl> {
|
|||||||
*
|
*
|
||||||
* @param whereJson {
|
* @param whereJson {
|
||||||
* check_id 主表标识
|
* check_id 主表标识
|
||||||
|
* vehicle_code 载具编码
|
||||||
* }
|
* }
|
||||||
* @return List<JSONObject>
|
* @return List<JSONObject>
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -29,6 +29,10 @@
|
|||||||
AND
|
AND
|
||||||
ios.check_id = #{param.check_id}
|
ios.check_id = #{param.check_id}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="param.vehicle_code != null and param.vehicle_code != ''">
|
||||||
|
AND
|
||||||
|
dtl.storagevehicle_code = #{param.vehicle_code}
|
||||||
|
</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
AND
|
AND
|
||||||
mst.id = #{param.id}
|
mst.id = #{param.id}
|
||||||
</if>
|
</if>
|
||||||
|
ORDER BY qty
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -1157,6 +1157,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public void createTask(IOStorInvDis ioStorInvDis, String point_code, IOStorInv ioStorInv) {
|
public void createTask(IOStorInvDis ioStorInvDis, String point_code, IOStorInv ioStorInv) {
|
||||||
/*
|
/*
|
||||||
* 判断是否是深浅货位
|
* 判断是否是深浅货位
|
||||||
@@ -1168,7 +1169,8 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv>
|
|||||||
* 如果不是则报错提示
|
* 如果不是则报错提示
|
||||||
*/
|
*/
|
||||||
// 调用校验方法
|
// 调用校验方法
|
||||||
String struct_code = iOutBillService.checkIsHinder(ioStorInvDis);
|
String struct_code = ioStorInvDis.getStruct_code();
|
||||||
|
iOutBillService.checkIsHinder(ioStorInvDis);
|
||||||
|
|
||||||
//创建任务
|
//创建任务
|
||||||
JSONObject task_form = new JSONObject();
|
JSONObject task_form = new JSONObject();
|
||||||
|
|||||||
@@ -210,6 +210,7 @@ public class SelectOutServiceImpl extends ServiceImpl<IOStorInvDtlMapper, IOStor
|
|||||||
groupPlate.setProduce_time(oldGroup.getProduce_time());
|
groupPlate.setProduce_time(oldGroup.getProduce_time());
|
||||||
groupPlate.setExecution_stand(oldGroup.getExecution_stand());
|
groupPlate.setExecution_stand(oldGroup.getExecution_stand());
|
||||||
groupPlate.setBake_num(oldGroup.getBake_num());
|
groupPlate.setBake_num(oldGroup.getBake_num());
|
||||||
|
groupPlate.setOut_type(dto.getBill_type());
|
||||||
groupPlate.setQuality_type(oldGroup.getQuality_type());
|
groupPlate.setQuality_type(oldGroup.getQuality_type());
|
||||||
iMdPbGroupplateService.create(groupPlate);
|
iMdPbGroupplateService.create(groupPlate);
|
||||||
|
|
||||||
|
|||||||
@@ -402,7 +402,7 @@ public class StIvtCheckmstServiceImpl extends ServiceImpl<StIvtCheckmstMapper, S
|
|||||||
jsonTask.put("vehicle_code2", outAttr.getStoragevehicle_code());
|
jsonTask.put("vehicle_code2", outAttr.getStoragevehicle_code());
|
||||||
|
|
||||||
String task_id = moveOutMoveTask.create(jsonTask);
|
String task_id = moveOutMoveTask.create(jsonTask);
|
||||||
result.put("out_point", shallowAttr.getStruct_code());
|
result.put("out_point", outAttr.getStruct_code());
|
||||||
result.put("task_id", task_id);
|
result.put("task_id", task_id);
|
||||||
|
|
||||||
// 锁定起点
|
// 锁定起点
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
|||||||
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;
|
||||||
import org.nl.wms.sch_manage.service.util.TaskFactory;
|
import org.nl.wms.sch_manage.service.util.TaskFactory;
|
||||||
|
import org.nl.wms.sch_manage.service.util.tasks.InsideDtlMoveTask;
|
||||||
import org.nl.wms.sch_manage.service.util.tasks.MoveOutMoveTask;
|
import org.nl.wms.sch_manage.service.util.tasks.MoveOutMoveTask;
|
||||||
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;
|
||||||
@@ -87,6 +88,12 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
|||||||
@Autowired
|
@Autowired
|
||||||
private MoveOutMoveTask moveOutMoveTask;
|
private MoveOutMoveTask moveOutMoveTask;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 库内移库任务类子任务
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
private InsideDtlMoveTask insideDtlMoveTask;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) {
|
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) {
|
||||||
return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()),
|
return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()),
|
||||||
@@ -305,26 +312,33 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
|||||||
String task_id = "";
|
String task_id = "";
|
||||||
AbstractTask task = taskFactory.getTask(IOSEnum.MOVE_CONFIG_CODE.code(mstDao.getBill_type()));
|
AbstractTask task = taskFactory.getTask(IOSEnum.MOVE_CONFIG_CODE.code(mstDao.getBill_type()));
|
||||||
for (StIvtMoveinvdtl dtlDao : dtlList) {
|
for (StIvtMoveinvdtl dtlDao : dtlList) {
|
||||||
// 判断是否阻挡
|
if(mstDao.getBill_type().equals(IOSEnum.MOVE_BILL_TYPE.code("库内移库"))) {
|
||||||
JSONObject result = checkMove(dtlDao);
|
// 库内移库任务下发
|
||||||
|
task_id = checkMoveInside(dtlDao,task);
|
||||||
|
} else {
|
||||||
|
// 判断是否阻挡
|
||||||
|
JSONObject result = checkMove(dtlDao);
|
||||||
|
|
||||||
|
JSONObject jsonTask = new JSONObject();
|
||||||
|
jsonTask.put("point_code1", result.getString("out_point"));
|
||||||
|
jsonTask.put("point_code2", dtlDao.getTurnin_struct_code());
|
||||||
|
jsonTask.put("vehicle_code", dtlDao.getStoragevehicle_code());
|
||||||
|
jsonTask.put("vehicle_code2", dtlDao.getStoragevehicle_code2());
|
||||||
|
task_id = task.create(jsonTask);
|
||||||
|
|
||||||
|
if (ObjectUtil.isNotEmpty(result.getString("task_id"))) {
|
||||||
|
// 更新关联任务标识
|
||||||
|
iSchBaseTaskService.update(
|
||||||
|
new UpdateWrapper<SchBaseTask>().lambda()
|
||||||
|
.set(SchBaseTask::getContact_task, task_id)
|
||||||
|
.eq(SchBaseTask::getTask_id, result.getString("task_id"))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
JSONObject jsonTask = new JSONObject();
|
|
||||||
jsonTask.put("point_code1", result.getString("out_point"));
|
|
||||||
jsonTask.put("point_code2", dtlDao.getTurnin_struct_code());
|
|
||||||
jsonTask.put("vehicle_code", dtlDao.getStoragevehicle_code());
|
|
||||||
jsonTask.put("vehicle_code2", dtlDao.getStoragevehicle_code2());
|
|
||||||
task_id = task.create(jsonTask);
|
|
||||||
// 更新明细任务标识
|
// 更新明细任务标识
|
||||||
dtlDao.setTask_id(task_id);
|
dtlDao.setTask_id(task_id);
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(result.getString("task_id"))) {
|
|
||||||
// 更新关联任务标识
|
|
||||||
iSchBaseTaskService.update(
|
|
||||||
new UpdateWrapper<SchBaseTask>().lambda()
|
|
||||||
.set(SchBaseTask::getContact_task, task_id)
|
|
||||||
.eq(SchBaseTask::getTask_id, result.getString("task_id"))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
iStIvtMoveinvdtlService.updateBatchById(dtlList);
|
iStIvtMoveinvdtlService.updateBatchById(dtlList);
|
||||||
|
|
||||||
@@ -335,6 +349,115 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
|||||||
return task_id;
|
return task_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 库内移库任务下发
|
||||||
|
* @param dtlDao 移库明细
|
||||||
|
* @param task 任务类
|
||||||
|
* @return task_id
|
||||||
|
*/
|
||||||
|
private String checkMoveInside(StIvtMoveinvdtl dtlDao, AbstractTask task) {
|
||||||
|
// 生成主任务
|
||||||
|
JSONObject jsonTask = new JSONObject();
|
||||||
|
jsonTask.put("point_code1", dtlDao.getTurnout_struct_code());
|
||||||
|
jsonTask.put("point_code2", dtlDao.getTurnin_struct_code());
|
||||||
|
jsonTask.put("vehicle_code", dtlDao.getStoragevehicle_code());
|
||||||
|
jsonTask.put("vehicle_code2", dtlDao.getStoragevehicle_code2());
|
||||||
|
String task_id = task.create(jsonTask);
|
||||||
|
|
||||||
|
Structattr startAttr = iStructattrService.getByCode(dtlDao.getTurnout_struct_code());
|
||||||
|
Structattr endAttr = iStructattrService.getByCode(dtlDao.getTurnin_struct_code());
|
||||||
|
|
||||||
|
// ---------- 判断是否是深浅货位互换 ----------
|
||||||
|
if (startAttr.getBlock_num().equals(endAttr.getBlock_num())
|
||||||
|
&& startAttr.getCol_num().equals(endAttr.getCol_num())
|
||||||
|
&& startAttr.getLayer_num().equals(endAttr.getLayer_num())
|
||||||
|
) {
|
||||||
|
// 两个货位都必须有货
|
||||||
|
if (ObjectUtil.isNotEmpty(startAttr.getStoragevehicle_code()) && ObjectUtil.isNotEmpty(endAttr.getStoragevehicle_code())) {
|
||||||
|
// 子任务1
|
||||||
|
createInsideDtlMoveTask(startAttr.getStruct_code(),endAttr.getStruct_code(),startAttr.getStoragevehicle_code(),task_id);
|
||||||
|
// 子任务2
|
||||||
|
createInsideDtlMoveTask(endAttr.getStruct_code(),startAttr.getStruct_code(),endAttr.getStoragevehicle_code(),task_id);
|
||||||
|
return task_id;
|
||||||
|
} else {
|
||||||
|
throw new BadRequestException("当前仓位互换会造成仓位空洞,不允许互换!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------- 判断起点是否阻挡 ----------
|
||||||
|
// 判断起点深浅货位
|
||||||
|
if (startAttr.getPlacement_type().equals(IOSEnum.PLACEMENT_TYPE.code("深货位"))) {
|
||||||
|
// 查询对应浅货位
|
||||||
|
Structattr shallowStartAttr = iStructattrService.getOne(
|
||||||
|
new QueryWrapper<Structattr>().lambda()
|
||||||
|
.eq(Structattr::getBlock_num, startAttr.getBlock_num())
|
||||||
|
.eq(Structattr::getCol_num, startAttr.getCol_num())
|
||||||
|
.eq(Structattr::getLayer_num, startAttr.getLayer_num())
|
||||||
|
.eq(Structattr::getPlacement_type, IOSEnum.PLACEMENT_TYPE.code("浅货位"))
|
||||||
|
);
|
||||||
|
// 判断浅货位是否被锁定
|
||||||
|
if (!shallowStartAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||||
|
throw new BadRequestException("当前起点仓位对应的浅货位【"+shallowStartAttr.getStruct_code()+"】被锁定,无法下发任务");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ObjectUtil.isNotEmpty(shallowStartAttr.getStoragevehicle_code())) {
|
||||||
|
// 有货:创建子任务
|
||||||
|
createInsideDtlMoveTask(shallowStartAttr.getStruct_code(),shallowStartAttr.getStruct_code(),shallowStartAttr.getStoragevehicle_code(),task_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------- 判断终点是否阻挡 ----------
|
||||||
|
if (endAttr.getPlacement_type().equals(IOSEnum.PLACEMENT_TYPE.code("深货位"))) {
|
||||||
|
// 查询对应浅货位
|
||||||
|
Structattr shallowStartAttr = iStructattrService.getOne(
|
||||||
|
new QueryWrapper<Structattr>().lambda()
|
||||||
|
.eq(Structattr::getBlock_num, endAttr.getBlock_num())
|
||||||
|
.eq(Structattr::getCol_num, endAttr.getCol_num())
|
||||||
|
.eq(Structattr::getLayer_num, endAttr.getLayer_num())
|
||||||
|
.eq(Structattr::getPlacement_type, IOSEnum.PLACEMENT_TYPE.code("浅货位"))
|
||||||
|
);
|
||||||
|
|
||||||
|
// 判断浅货位是否被锁定
|
||||||
|
if (!shallowStartAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||||
|
throw new BadRequestException("当前终点仓位对应的浅货位【"+shallowStartAttr.getStruct_code()+"】被锁定,无法下发任务");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ObjectUtil.isNotEmpty(shallowStartAttr.getStoragevehicle_code())) {
|
||||||
|
// 有货:创建子任务
|
||||||
|
createInsideDtlMoveTask(shallowStartAttr.getStruct_code(),shallowStartAttr.getStruct_code(),shallowStartAttr.getStoragevehicle_code(),task_id);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 查询对应深货位
|
||||||
|
Structattr attr = iStructattrService.getOne(
|
||||||
|
new QueryWrapper<Structattr>().lambda()
|
||||||
|
.eq(Structattr::getBlock_num, endAttr.getBlock_num())
|
||||||
|
.eq(Structattr::getCol_num, endAttr.getCol_num())
|
||||||
|
.eq(Structattr::getLayer_num, endAttr.getLayer_num())
|
||||||
|
.eq(Structattr::getPlacement_type, IOSEnum.PLACEMENT_TYPE.code("深货位"))
|
||||||
|
);
|
||||||
|
|
||||||
|
// 判断深货位是否被锁定
|
||||||
|
if (!attr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||||
|
throw new BadRequestException("当前终点仓位对应的深货位【"+attr.getStruct_code()+"】被锁定,无法下发任务");
|
||||||
|
}
|
||||||
|
// 判断是否有货
|
||||||
|
if (ObjectUtil.isEmpty(attr.getStoragevehicle_code())) {
|
||||||
|
throw new BadRequestException("移库会造成仓位【"+attr.getStruct_code()+"】为空洞,无法下发任务");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------- 创建起点任务 ----------
|
||||||
|
createInsideDtlMoveTask(startAttr.getStruct_code(),endAttr.getStruct_code(),startAttr.getStoragevehicle_code(),task_id);
|
||||||
|
|
||||||
|
// ---------- 创建终点任务 ----------
|
||||||
|
if (ObjectUtil.isNotEmpty(endAttr.getStoragevehicle_code())) {
|
||||||
|
// 终点不为空则需要创建终点到起点的任务
|
||||||
|
createInsideDtlMoveTask(endAttr.getStruct_code(),startAttr.getStruct_code(),endAttr.getStoragevehicle_code(),task_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
return task_id;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断是否浅货位阻挡移库
|
* 判断是否浅货位阻挡移库
|
||||||
*
|
*
|
||||||
@@ -401,7 +524,7 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
|||||||
);
|
);
|
||||||
|
|
||||||
String task_id = moveOutMoveTask.create(jsonTask);
|
String task_id = moveOutMoveTask.create(jsonTask);
|
||||||
result.put("out_point",shallowAttr.getStruct_code());
|
result.put("out_point",outAttr.getStruct_code());
|
||||||
result.put("task_id",task_id);
|
result.put("task_id",task_id);
|
||||||
} else {
|
} else {
|
||||||
// 判断是否是当前移库单的移库
|
// 判断是否是当前移库单的移库
|
||||||
@@ -444,4 +567,13 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
|||||||
this.updateById(mstDao);
|
this.updateById(mstDao);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void createInsideDtlMoveTask(String point_code1, String point_code2, String vehicle_code, String contact_task) {
|
||||||
|
JSONObject jsonTask = new JSONObject();
|
||||||
|
jsonTask.put("point_code1", point_code1);
|
||||||
|
jsonTask.put("point_code2", point_code2);
|
||||||
|
jsonTask.put("vehicle_code", vehicle_code);
|
||||||
|
jsonTask.put("contact_task", contact_task);
|
||||||
|
insideDtlMoveTask.create(jsonTask);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public class VehicleOutServiceImpl implements VehicleOutService {
|
|||||||
private IStructattrService iStructattrService;
|
private IStructattrService iStructattrService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 空载具入库任务类
|
* 空载具出库任务类
|
||||||
*/
|
*/
|
||||||
@Resource
|
@Resource
|
||||||
private EmpVehicleOutTask empVehicleOutTask;
|
private EmpVehicleOutTask empVehicleOutTask;
|
||||||
@@ -81,11 +81,13 @@ public class VehicleOutServiceImpl implements VehicleOutService {
|
|||||||
List<Structattr> attrList = autoDivStruct(whereJson);
|
List<Structattr> attrList = autoDivStruct(whereJson);
|
||||||
|
|
||||||
Structattr structattr = new Structattr();
|
Structattr structattr = new Structattr();
|
||||||
|
String point_code1 = "";
|
||||||
for (Structattr attrDao : attrList) {
|
for (Structattr attrDao : attrList) {
|
||||||
// 判断是深浅货位
|
// 判断是深浅货位
|
||||||
if (attrDao.getPlacement_type().equals(IOSEnum.PLACEMENT_TYPE.code("浅货位"))) {
|
if (attrDao.getPlacement_type().equals(IOSEnum.PLACEMENT_TYPE.code("浅货位"))) {
|
||||||
// 直接创建出库任务
|
// 直接创建出库任务
|
||||||
structattr = attrDao;
|
structattr = attrDao;
|
||||||
|
point_code1 = attrDao.getStruct_code();
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
// 深货位:判断浅货位是否有货
|
// 深货位:判断浅货位是否有货
|
||||||
@@ -106,6 +108,7 @@ public class VehicleOutServiceImpl implements VehicleOutService {
|
|||||||
if (shallowAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
if (shallowAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||||
// 直接创建出库任务
|
// 直接创建出库任务
|
||||||
structattr = attrDao;
|
structattr = attrDao;
|
||||||
|
point_code1 = attrDao.getStruct_code();
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
@@ -116,6 +119,7 @@ public class VehicleOutServiceImpl implements VehicleOutService {
|
|||||||
if (shallowAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
if (shallowAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||||
// 创建移库任务
|
// 创建移库任务
|
||||||
structattr = createMoveTask(attrDao, shallowAttr);
|
structattr = createMoveTask(attrDao, shallowAttr);
|
||||||
|
point_code1 = attrDao.getStruct_code();
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
@@ -137,12 +141,14 @@ public class VehicleOutServiceImpl implements VehicleOutService {
|
|||||||
|
|
||||||
// 创建任务
|
// 创建任务
|
||||||
JSONObject jsonTask = new JSONObject();
|
JSONObject jsonTask = new JSONObject();
|
||||||
jsonTask.put("point_code1", structattr.getStruct_code());
|
jsonTask.put("point_code1", point_code1);
|
||||||
jsonTask.put("point_code2", IOSConstant.CZW_POINT);
|
jsonTask.put("point_code2", IOSConstant.CZW_POINT);
|
||||||
// 判断终点是否是称重位
|
// 判断终点是否是称重位
|
||||||
jsonTask.put("point_code3", whereJson.getString("point_code").equals(IOSConstant.CZW_POINT)
|
jsonTask.put("point_code3", whereJson.getString("point_code").equals(IOSConstant.CZW_POINT)
|
||||||
? "" : whereJson.getString("point_code")
|
? "" : whereJson.getString("point_code")
|
||||||
);
|
);
|
||||||
|
// 用于任务完成时更新原仓位
|
||||||
|
jsonTask.put("point_code4", structattr.getStruct_code());
|
||||||
jsonTask.put("vehicle_code", structattr.getStoragevehicle_code());
|
jsonTask.put("vehicle_code", structattr.getStoragevehicle_code());
|
||||||
String task_id = empVehicleOutTask.create(jsonTask);
|
String task_id = empVehicleOutTask.create(jsonTask);
|
||||||
|
|
||||||
|
|||||||
@@ -158,6 +158,28 @@
|
|||||||
>
|
>
|
||||||
解锁
|
解锁
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
slot="right"
|
||||||
|
class="filter-item"
|
||||||
|
size="mini"
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-circle-close"
|
||||||
|
:disabled="crud.selections.length !== 1"
|
||||||
|
@click="cleanVehicle"
|
||||||
|
>
|
||||||
|
清载具
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
slot="right"
|
||||||
|
class="filter-item"
|
||||||
|
size="mini"
|
||||||
|
type="danger"
|
||||||
|
icon="el-icon-circle-close"
|
||||||
|
:disabled="crud.selections.length !== 1"
|
||||||
|
@click="cleanMaterial"
|
||||||
|
>
|
||||||
|
清物料
|
||||||
|
</el-button>
|
||||||
</crudOperation>
|
</crudOperation>
|
||||||
<!--表单组件-->
|
<!--表单组件-->
|
||||||
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="540px">
|
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="540px">
|
||||||
@@ -531,6 +553,20 @@ export default {
|
|||||||
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||||
this.crud.toQuery()
|
this.crud.toQuery()
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
cleanVehicle() {
|
||||||
|
const data = this.$refs.table.selection[0]
|
||||||
|
crudSchBasePoint.cleanVehicle(data).then(res => {
|
||||||
|
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||||
|
this.crud.toQuery()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
cleanMaterial() {
|
||||||
|
const data = this.$refs.table.selection[0]
|
||||||
|
crudSchBasePoint.cleanMaterial(data).then(res => {
|
||||||
|
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||||
|
this.crud.toQuery()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,4 +72,21 @@ export function getPointDtl(data) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export default { add, edit, del, changeUsed, getPointList, changeLock, getConfirm, putConfirm, getPointDtl }
|
export function cleanVehicle(data) {
|
||||||
|
return request({
|
||||||
|
url: 'api/schBasePoint/cleanVehicle',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function cleanMaterial(data) {
|
||||||
|
return request({
|
||||||
|
url: 'api/schBasePoint/cleanMaterial',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export default { add, edit, del, changeUsed, getPointList, changeLock,
|
||||||
|
getConfirm, putConfirm, getPointDtl, cleanVehicle, cleanMaterial }
|
||||||
|
|||||||
@@ -79,7 +79,31 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
<div style="padding-bottom: 10px;padding-top: 10px">
|
<div style="padding-bottom: 10px;padding-top: 10px">
|
||||||
<span class="role-span">盘点明细</span>
|
<el-form
|
||||||
|
:inline="true"
|
||||||
|
class="demo-form-inline"
|
||||||
|
label-position="right"
|
||||||
|
label-width="80px"
|
||||||
|
label-suffix=":"
|
||||||
|
>
|
||||||
|
<el-form-item label="载具编码">
|
||||||
|
<el-input
|
||||||
|
v-model="vehicle_code"
|
||||||
|
size="mini"
|
||||||
|
clearable
|
||||||
|
placeholder="查询载具编码"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-search"
|
||||||
|
size="mini"
|
||||||
|
@click="getDtl"
|
||||||
|
>
|
||||||
|
搜索
|
||||||
|
</el-button>
|
||||||
|
</el-form>
|
||||||
|
<!-- <span class="role-span">盘点明细</span>-->
|
||||||
</div>
|
</div>
|
||||||
<!--表格渲染-->
|
<!--表格渲染-->
|
||||||
<el-table
|
<el-table
|
||||||
@@ -145,6 +169,7 @@ export default {
|
|||||||
nowrow: null,
|
nowrow: null,
|
||||||
nowindex: '',
|
nowindex: '',
|
||||||
storlist: [],
|
storlist: [],
|
||||||
|
vehicle_code: null,
|
||||||
tableData: [],
|
tableData: [],
|
||||||
form1: {
|
form1: {
|
||||||
check_id: '',
|
check_id: '',
|
||||||
@@ -173,7 +198,8 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
open() {
|
open() {
|
||||||
this.getDtl()
|
// 查询所有明细
|
||||||
|
// this.getDtl()
|
||||||
// 查询原材料库的仓库
|
// 查询原材料库的仓库
|
||||||
crudStorattr.getStor({}).then(res => {
|
crudStorattr.getStor({}).then(res => {
|
||||||
this.storlist = res
|
this.storlist = res
|
||||||
@@ -185,7 +211,12 @@ export default {
|
|||||||
this.crud.toQuery()
|
this.crud.toQuery()
|
||||||
},
|
},
|
||||||
getDtl() {
|
getDtl() {
|
||||||
check.getDtl({ 'check_id': this.form1.check_id }).then(res => {
|
check.getDtl({ 'check_id': this.form1.check_id, 'vehicle_code': this.vehicle_code }).then(res => {
|
||||||
|
for (const dtl of res) {
|
||||||
|
if (dtl.fac_qty === null) {
|
||||||
|
dtl.fac_qty = dtl.base_qty
|
||||||
|
}
|
||||||
|
}
|
||||||
this.tableData = res
|
this.tableData = res
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user