opt: 包衣前段业务
This commit is contained in:
@@ -24,4 +24,11 @@ public interface IMdPdGroupbucketService extends IService<MdPdGroupbucket> {
|
|||||||
List<JSONObject> getBucketInfoByBucket(String vehicleCode);
|
List<JSONObject> getBucketInfoByBucket(String vehicleCode);
|
||||||
|
|
||||||
void upDateWeight(String weight, String vehicleCode);
|
void upDateWeight(String weight, String vehicleCode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取料桶信息
|
||||||
|
* @param param:material_id, pcsn
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<JSONObject> getBucketGroupInfo(JSONObject param);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,4 +19,6 @@ public interface MdPdGroupbucketMapper extends BaseMapper<MdPdGroupbucket> {
|
|||||||
List<JSONObject> getBucketInfoByBucket(String vehicleCode);
|
List<JSONObject> getBucketInfoByBucket(String vehicleCode);
|
||||||
|
|
||||||
void upDateWeight(String weight, String vehicleCode);
|
void upDateWeight(String weight, String vehicleCode);
|
||||||
|
|
||||||
|
List<JSONObject> getBucketGroupInfo(JSONObject param);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,4 +22,31 @@
|
|||||||
WHERE
|
WHERE
|
||||||
g.bucket_code = #{vehicleCode}
|
g.bucket_code = #{vehicleCode}
|
||||||
</select>
|
</select>
|
||||||
|
<select id="getBucketGroupInfo" resultType="com.alibaba.fastjson.JSONObject">
|
||||||
|
SELECT
|
||||||
|
ss.struct_id,
|
||||||
|
ss.struct_code,
|
||||||
|
ss.struct_name,
|
||||||
|
ss.sect_id,
|
||||||
|
ss.sect_code,
|
||||||
|
ss.sect_name,
|
||||||
|
mg.*,
|
||||||
|
mg.bucket_code AS vehicle_code,
|
||||||
|
m.material_code,
|
||||||
|
m.material_name,
|
||||||
|
m.material_spec,
|
||||||
|
m.material_model,
|
||||||
|
m.material_type_id
|
||||||
|
FROM
|
||||||
|
`md_pd_groupbucket` mg
|
||||||
|
LEFT JOIN st_ivt_structattr ss ON mg.bucket_code = ss.storagevehicle_code
|
||||||
|
LEFT JOIN md_me_materialbase m ON m.material_id = mg.material_id
|
||||||
|
WHERE IFNULL( ss.storagevehicle_code, '' ) <![CDATA[ <> ]]> ''
|
||||||
|
<if test="material_id != null and material_id != ''">
|
||||||
|
AND mg.material_id = #{material_id}
|
||||||
|
</if>
|
||||||
|
<if test="pcsn != null and pcsn != ''">
|
||||||
|
AND mg.pcsn = #{pcsn}
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import org.nl.wms.basedata_manage.service.dao.MdPdGroupbucket;
|
|||||||
import org.nl.wms.basedata_manage.service.dao.mapper.MdPdGroupbucketMapper;
|
import org.nl.wms.basedata_manage.service.dao.mapper.MdPdGroupbucketMapper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -29,4 +30,9 @@ public class MdPdGroupbucketServiceImpl extends ServiceImpl<MdPdGroupbucketMappe
|
|||||||
public void upDateWeight(String weight, String vehicleCode) {
|
public void upDateWeight(String weight, String vehicleCode) {
|
||||||
this.baseMapper.upDateWeight(weight, vehicleCode);
|
this.baseMapper.upDateWeight(weight, vehicleCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<JSONObject> getBucketGroupInfo(JSONObject param) {
|
||||||
|
return this.baseMapper.getBucketGroupInfo(param);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,4 +111,16 @@ public class PdaProductionController {
|
|||||||
public ResponseEntity<Object> getVehicleInfo(@RequestBody JSONObject whereJson) {
|
public ResponseEntity<Object> getVehicleInfo(@RequestBody JSONObject whereJson) {
|
||||||
return new ResponseEntity<>(pdaProductionService.getVehicleInfo(whereJson), HttpStatus.OK);
|
return new ResponseEntity<>(pdaProductionService.getVehicleInfo(whereJson), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
@PostMapping("/getBucketGroupInfo")
|
||||||
|
@Log("料桶叫料-获取物料库存信息")
|
||||||
|
@SaIgnore
|
||||||
|
public ResponseEntity<Object> getBucketGroupInfo(@RequestBody JSONObject whereJson) {
|
||||||
|
return new ResponseEntity<>(pdaProductionService.getBucketGroupInfo(whereJson), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
@PostMapping("/confirmCallBucketMaterial")
|
||||||
|
@Log("料桶叫料-确认叫料")
|
||||||
|
@SaIgnore
|
||||||
|
public ResponseEntity<Object> confirmCallBucketMaterial(@RequestBody JSONObject whereJson) {
|
||||||
|
return new ResponseEntity<>(pdaProductionService.confirmCallBucketMaterial(whereJson), HttpStatus.OK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,13 +49,14 @@ public interface PdaBuildParamService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建出库单参数
|
* 构建出库单参数
|
||||||
* @param param
|
* @param param 参数
|
||||||
* @param storId
|
* @param storId 仓库id
|
||||||
|
* @param flag 是否过滤物料
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
JSONObject doBuildOutInvObj(JSONObject param, String storId);
|
JSONObject doBuildOutInvObj(JSONObject param, String storId, Boolean flag);
|
||||||
|
|
||||||
JSONObject buildManuaOutDivData(JSONObject param, Sectattr outStructAttr, IOStorInvDtlDto ioStorInvDtlDto);
|
JSONObject buildManuaOutDivData(JSONObject param, IOStorInvDtlDto ioStorInvDtlDto);
|
||||||
|
|
||||||
JSONObject buildOutAllSetData(SchBasePoint endPoint, String invId);
|
JSONObject buildOutAllSetData(SchBasePoint endPoint, String invId);
|
||||||
|
|
||||||
@@ -79,4 +80,6 @@ public interface PdaBuildParamService {
|
|||||||
* @param bill_type 单据类型
|
* @param bill_type 单据类型
|
||||||
*/
|
*/
|
||||||
void createMove(JSONObject param, String bill_type);
|
void createMove(JSONObject param, String bill_type);
|
||||||
|
|
||||||
|
JSONObject buildManuaOutBuckDivData(JSONObject param, IOStorInvDtlDto ioStorInvDtlDto);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,4 +78,18 @@ public interface PdaProductionService {
|
|||||||
PdaResponse receivedIn(JSONObject param);
|
PdaResponse receivedIn(JSONObject param);
|
||||||
|
|
||||||
PdaResponse getVehicleInfo(JSONObject param);
|
PdaResponse getVehicleInfo(JSONObject param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取料桶的数据
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
PdaResponse getBucketGroupInfo(JSONObject param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 料桶-确认叫料
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
PdaResponse confirmCallBucketMaterial(JSONObject param);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil;
|
|||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.alibaba.fastjson.TypeReference;
|
||||||
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.query.QueryWrapper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -181,10 +182,10 @@ public class DefaultPdaBuildParamService implements PdaBuildParamService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject doBuildOutInvObj(JSONObject param, String storId) {
|
public JSONObject doBuildOutInvObj(JSONObject param, String storId, Boolean flag) {
|
||||||
JSONObject insertInvObj = new JSONObject();
|
JSONObject insertInvObj = new JSONObject();
|
||||||
JSONArray rows = param.getJSONArray("rows");
|
JSONArray rows = param.getJSONArray("rows");
|
||||||
List<JSONObject> result = filterAndSumByMaterialIdAndPcsn(rows);
|
List<JSONObject> result = flag ? filterAndSumByMaterialIdAndPcsn(rows) : rows.toJavaObject(new TypeReference<List<JSONObject>>() {});
|
||||||
List<JSONObject> rowList = new ArrayList<>();
|
List<JSONObject> rowList = new ArrayList<>();
|
||||||
for (JSONObject rowObj : result) {
|
for (JSONObject rowObj : result) {
|
||||||
List<JSONObject> temps = outBillService.getCanuseSpecifiedIvt(MapOf.of("stor_id", rowObj.getString("stor_id")
|
List<JSONObject> temps = outBillService.getCanuseSpecifiedIvt(MapOf.of("stor_id", rowObj.getString("stor_id")
|
||||||
@@ -224,10 +225,10 @@ public class DefaultPdaBuildParamService implements PdaBuildParamService {
|
|||||||
// 取第一个对象作为基础(保留除了qty外的其他信息)
|
// 取第一个对象作为基础(保留除了qty外的其他信息)
|
||||||
JSONObject baseObj = new JSONObject(group.get(0));
|
JSONObject baseObj = new JSONObject(group.get(0));
|
||||||
|
|
||||||
// 计算该分组中所有对象的qty总和
|
// 计算该分组中所有对象的qty总和(使用BigDecimal)
|
||||||
int totalQty = group.stream()
|
BigDecimal totalQty = group.stream()
|
||||||
.mapToInt(obj -> obj.getInteger("qty"))
|
.map(obj -> obj.getBigDecimal("qty"))
|
||||||
.sum();
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
|
||||||
// 更新qty为总和
|
// 更新qty为总和
|
||||||
baseObj.put("qty", totalQty);
|
baseObj.put("qty", totalQty);
|
||||||
@@ -241,7 +242,7 @@ public class DefaultPdaBuildParamService implements PdaBuildParamService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject buildManuaOutDivData(JSONObject param, Sectattr outStructAttr, IOStorInvDtlDto ioStorInvDtlDto) {
|
public JSONObject buildManuaOutDivData(JSONObject param, IOStorInvDtlDto ioStorInvDtlDto) {
|
||||||
JSONObject outDivObj = new JSONObject();
|
JSONObject outDivObj = new JSONObject();
|
||||||
// 对应的明细id和主表id
|
// 对应的明细id和主表id
|
||||||
JSONObject row = new JSONObject();
|
JSONObject row = new JSONObject();
|
||||||
@@ -399,4 +400,28 @@ public class DefaultPdaBuildParamService implements PdaBuildParamService {
|
|||||||
}
|
}
|
||||||
iStIvtMoveinvdtlService.saveBatch(moveDtlList);
|
iStIvtMoveinvdtlService.saveBatch(moveDtlList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject buildManuaOutBuckDivData(JSONObject param, IOStorInvDtlDto ioStorInvDtlDto) {
|
||||||
|
JSONObject outDivObj = new JSONObject();
|
||||||
|
// 对应的明细id和主表id
|
||||||
|
JSONObject row = new JSONObject();
|
||||||
|
outDivObj.put("row", row);
|
||||||
|
row.put("iostorinv_id", ioStorInvDtlDto.getIostorinv_id());
|
||||||
|
row.put("iostorinvdtl_id", ioStorInvDtlDto.getIostorinvdtl_id());
|
||||||
|
// 每个料桶可能是物料批次一样,但是托盘不一样
|
||||||
|
JSONArray pRows = param.getJSONArray("rows");
|
||||||
|
List<JSONObject> dtLMaterialInfo = pRows.stream()
|
||||||
|
.map(obj -> (JSONObject) obj)
|
||||||
|
.filter(obj -> ioStorInvDtlDto.getMaterial_id().equals(obj.getString("material_id"))
|
||||||
|
&& ioStorInvDtlDto.getPcsn().equals(obj.getString("pcsn")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
outDivObj.put("rows", dtLMaterialInfo);
|
||||||
|
for (int i = 0; i < dtLMaterialInfo.size(); i++) {
|
||||||
|
JSONObject rowsJSONObject = dtLMaterialInfo.get(i);
|
||||||
|
rowsJSONObject.put("canuse_qty", rowsJSONObject.getString("qty"));
|
||||||
|
rowsJSONObject.put("storagevehicle_code", rowsJSONObject.getString("bucket_code"));
|
||||||
|
}
|
||||||
|
return outDivObj;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -210,6 +210,10 @@ public class PdaCommonServiceImpl implements PdaCommonService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PdaResponse confirmBucketAssembly(AssemblyBucketParam param) {
|
public PdaResponse confirmBucketAssembly(AssemblyBucketParam param) {
|
||||||
|
List<JSONObject> infoByBucket = groupbucketService.getBucketInfoByBucket(param.getBucket_code());
|
||||||
|
if (infoByBucket.size() > 0) {
|
||||||
|
throw new BadRequestException("该桶已绑定过!");
|
||||||
|
}
|
||||||
MdPdGroupbucket groupbucket = new MdPdGroupbucket();
|
MdPdGroupbucket groupbucket = new MdPdGroupbucket();
|
||||||
BeanUtil.copyProperties(param, groupbucket);
|
BeanUtil.copyProperties(param, groupbucket);
|
||||||
groupbucket.setId(IdUtil.getStringId());
|
groupbucket.setId(IdUtil.getStringId());
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
|
|||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.alibaba.fastjson.TypeReference;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -128,7 +129,7 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public PdaResponse confirmCallMaterial(JSONObject param) {
|
public PdaResponse confirmCallMaterial(JSONObject param) {
|
||||||
// hint: 没有创建出库单
|
// hint: 没有创建出库单
|
||||||
// point_code, row,sect_code
|
// point_code, row
|
||||||
log.info("手持托盘叫料:{}", param);
|
log.info("手持托盘叫料:{}", param);
|
||||||
if (ObjectUtil.isEmpty(param.get("point_code"))) {
|
if (ObjectUtil.isEmpty(param.get("point_code"))) {
|
||||||
throw new BadRequestException("请输入要料点!");
|
throw new BadRequestException("请输入要料点!");
|
||||||
@@ -146,7 +147,7 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
}
|
}
|
||||||
// 判断任务是否创建
|
// 判断任务是否创建
|
||||||
List<SchBaseTask> tasks = taskService.getTaskByQuery(new LambdaQueryWrapper<SchBaseTask>()
|
List<SchBaseTask> tasks = taskService.getTaskByQuery(new LambdaQueryWrapper<SchBaseTask>()
|
||||||
.eq(SchBaseTask::getPoint_code1, pointCode));
|
.eq(SchBaseTask::getPoint_code2, pointCode));
|
||||||
if (tasks.size() > 0) {
|
if (tasks.size() > 0) {
|
||||||
throw new BadRequestException("该点位已创建过任务!");
|
throw new BadRequestException("该点位已创建过任务!");
|
||||||
}
|
}
|
||||||
@@ -159,13 +160,12 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
// 1 创建出库单、明细、分配明细
|
// 1 创建出库单、明细、分配明细
|
||||||
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(row.getString("vehicle_code"), Arrays.asList("1", "2"));
|
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(row.getString("vehicle_code"), Arrays.asList("1", "2"));
|
||||||
param.put("rows", res);
|
param.put("rows", res);
|
||||||
JSONObject invObj = defaultPdaBuildParam.doBuildOutInvObj(param, structattr.getStor_id());
|
JSONObject invObj = defaultPdaBuildParam.doBuildOutInvObj(param, structattr.getStor_id(), true);
|
||||||
String invId = outBillService.insertDtl(invObj);
|
String invId = outBillService.insertDtl(invObj);
|
||||||
Sectattr sectattr = sectattrService.findByCode(structattr.getSect_code(), false);
|
|
||||||
// 2 循环,根据插入的dtl 去寻找袋的组盘信息调用手动分配
|
// 2 循环,根据插入的dtl 去寻找袋的组盘信息调用手动分配
|
||||||
List<IOStorInvDtlDto> billDtl = outBillService.getOutBillDtl(MapUtil.of("iostorinv_id", invId));
|
List<IOStorInvDtlDto> billDtl = outBillService.getOutBillDtl(MapUtil.of("iostorinv_id", invId));
|
||||||
for (IOStorInvDtlDto ioStorInvDtlDto : billDtl) {
|
for (IOStorInvDtlDto ioStorInvDtlDto : billDtl) {
|
||||||
JSONObject divObj = defaultPdaBuildParam.buildManuaOutDivData(param, sectattr, ioStorInvDtlDto);
|
JSONObject divObj = defaultPdaBuildParam.buildManuaOutDivData(param, ioStorInvDtlDto);
|
||||||
outBillService.manualDiv(divObj);
|
outBillService.manualDiv(divObj);
|
||||||
}
|
}
|
||||||
// 3 创建任务
|
// 3 创建任务
|
||||||
@@ -489,12 +489,12 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
if (ObjectUtil.isEmpty(point)) {
|
if (ObjectUtil.isEmpty(point)) {
|
||||||
throw new BadRequestException("点位[" + pointCode +"]不存在!");
|
throw new BadRequestException("点位[" + pointCode +"]不存在!");
|
||||||
}
|
}
|
||||||
if (point.getRegion_code().startsWith("FSSQ")) {
|
if (point.getRegion_code().startsWith("FSSQ") || point.getRegion_code().startsWith("CLS")) {
|
||||||
// 粉碎室入库逻辑
|
// 粉碎室/称量室入库逻辑
|
||||||
productionInStorage(param, point);
|
productionInStorage(param, point);
|
||||||
return PdaResponse.requestOk();
|
return PdaResponse.requestOk();
|
||||||
}
|
}
|
||||||
|
// 压片下料
|
||||||
AbstractTask task = taskFactory.getTask(IOSEnum.DOWN_CONFIG_CODE.code(point.getRegion_code()));
|
AbstractTask task = taskFactory.getTask(IOSEnum.DOWN_CONFIG_CODE.code(point.getRegion_code()));
|
||||||
task.create(param);
|
task.create(param);
|
||||||
return PdaResponse.requestOk();
|
return PdaResponse.requestOk();
|
||||||
@@ -602,4 +602,68 @@ public class PdaProductionServiceImpl implements PdaProductionService {
|
|||||||
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(search, Arrays.asList("1"));
|
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(search, Arrays.asList("1"));
|
||||||
return PdaResponse.requestParamOk(res);
|
return PdaResponse.requestParamOk(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PdaResponse getBucketGroupInfo(JSONObject param) {
|
||||||
|
// material_id, pcsn
|
||||||
|
List<JSONObject> res = groupbucketService.getBucketGroupInfo(param);
|
||||||
|
return PdaResponse.requestParamOk(res);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public PdaResponse confirmCallBucketMaterial(JSONObject param) {
|
||||||
|
// param: point_code, rows
|
||||||
|
log.info("料桶叫料:{}", param);
|
||||||
|
assertNotBlankJson(param, "参数不能为空!", "point_code", "rows");
|
||||||
|
RLock lock = redissonClient.getLock("lock:confirmCallBucketMaterial");
|
||||||
|
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||||
|
try {
|
||||||
|
if (tryLock) {
|
||||||
|
// param:point_code(点位),rows
|
||||||
|
String point_code = param.getString("point_code");
|
||||||
|
SchBasePoint endPoint = pointService.getByPointCode(point_code, true);
|
||||||
|
if (ObjectUtil.isEmpty(endPoint)) {
|
||||||
|
throw new BadRequestException("输入的点位不存在或者点位已被禁用, 请检查输入点位是否正确或是否被禁用!");
|
||||||
|
}
|
||||||
|
// 判断任务是否创建
|
||||||
|
List<SchBaseTask> tasks = taskService.getTaskByQuery(new LambdaQueryWrapper<SchBaseTask>()
|
||||||
|
.eq(SchBaseTask::getPoint_code2, point_code));
|
||||||
|
if (tasks.size() > 0) {
|
||||||
|
throw new BadRequestException("该点位已创建过任务!");
|
||||||
|
}
|
||||||
|
List<JSONObject> rows = param.getJSONArray("rows").toJavaObject(new TypeReference<List<JSONObject>>() {});;
|
||||||
|
param.put("bill_type", IOSEnum.OUT_BILL_TYPE.code("料桶出库"));
|
||||||
|
param.put("rows", rows);
|
||||||
|
// 1 创建出库单、明细、分配明细
|
||||||
|
// todo: 认为明细都是一个库区的(不同库区需要不同出库单?)
|
||||||
|
Structattr structattr = structattrService.getByCode(rows.get(0).getString("struct_code"));
|
||||||
|
JSONObject invObj = defaultPdaBuildParam.doBuildOutInvObj(param, structattr.getStor_id(), true);
|
||||||
|
String invId = outBillService.insertDtl(invObj);
|
||||||
|
// 2 根据插入的dtl 去寻找袋的组盘信息调用手动分配
|
||||||
|
List<IOStorInvDtlDto> billDtl = outBillService.getOutBillDtl(MapUtil.of("iostorinv_id", invId));
|
||||||
|
for (IOStorInvDtlDto ioStorInvDtlDto : billDtl) {
|
||||||
|
JSONObject divObj = defaultPdaBuildParam.buildManuaOutBuckDivData(param, ioStorInvDtlDto);
|
||||||
|
outBillService.manualDiv(divObj);
|
||||||
|
}
|
||||||
|
// 找一个没任务的称重位
|
||||||
|
List<SchBasePoint> czws = pointService.getCanUsePointByRegion("ZJZ01");
|
||||||
|
if (czws.isEmpty()) {
|
||||||
|
throw new BadRequestException("找不到中间站的称重位!");
|
||||||
|
}
|
||||||
|
// 3 创建任务
|
||||||
|
JSONObject jsonMst = defaultPdaBuildParam.buildOutAllSetData(czws.get(0), invId);
|
||||||
|
jsonMst.put("target", endPoint.getPoint_code());
|
||||||
|
outBillService.allSetPoint(jsonMst);
|
||||||
|
} else {
|
||||||
|
throw new BadRequestException("速度太快啦,稍后再试...");
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
if (tryLock) {
|
||||||
|
lock.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,83 @@
|
|||||||
|
package org.nl.wms.sch_manage.service.util.tasks;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
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.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.AbstractTask;
|
||||||
|
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 包衣上料任务
|
||||||
|
* @author: lyd
|
||||||
|
* @date: 2026/1/9
|
||||||
|
*/
|
||||||
|
@Component("CoatingUpTask")
|
||||||
|
public class CoatingUpTask extends AbstractTask {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ISchBaseTaskService taskService;
|
||||||
|
|
||||||
|
@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.CREATED.getCode());
|
||||||
|
task.setConfig_code(CoatingUpTask.class.getSimpleName());
|
||||||
|
task.setPoint_code1(json.getString("point_code"));
|
||||||
|
task.setPoint_code2(json.getString("target"));
|
||||||
|
task.setVehicle_code(json.getString("vehicle_code"));
|
||||||
|
task.setMaterial_id(json.getString("material_id"));
|
||||||
|
task.setMaterial_qty(json.getBigDecimal("material_qty"));
|
||||||
|
task.setGroup_id(json.getString("group_id"));
|
||||||
|
task.setRequest_param(json.toString());
|
||||||
|
task.setTask_type(TaskEnum.TASK_TYPE.code("料箱"));
|
||||||
|
task.setPriority("1");
|
||||||
|
task.setIs_wait("0");
|
||||||
|
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) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void updateStatus(String task_code, TaskStatus status) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void forceFinish(String task_code) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void cancel(String task_code) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void taskConfirm(String task_code) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,239 @@
|
|||||||
|
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 com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
|
import org.nl.common.exception.BadRequestException;
|
||||||
|
import org.nl.common.utils.SecurityUtils;
|
||||||
|
import org.nl.config.IdUtil;
|
||||||
|
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||||
|
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.TaskFactory;
|
||||||
|
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||||
|
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||||
|
import org.nl.wms.warehouse_management.service.IOutBillService;
|
||||||
|
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
|
||||||
|
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
|
||||||
|
import org.nl.wms.warehouse_management.service.dao.mapper.GroupPlateMapper;
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 中间出库
|
||||||
|
* @author: lyd
|
||||||
|
* @date: 2026/1/9
|
||||||
|
*/
|
||||||
|
@Component("IntermediateOutTask")
|
||||||
|
public class IntermediateOutTask extends AbstractTask {
|
||||||
|
@Resource
|
||||||
|
private TaskFactory taskFactory;
|
||||||
|
/**
|
||||||
|
* 任务服务
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
private ISchBaseTaskService taskService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出库服务
|
||||||
|
*/
|
||||||
|
@Resource
|
||||||
|
private IOutBillService outBillService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分配明细mapper
|
||||||
|
*/
|
||||||
|
@Resource
|
||||||
|
private IOStorInvDisMapper ioStorInvDisMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点位服务
|
||||||
|
*/
|
||||||
|
@Resource
|
||||||
|
private ISchBasePointService iSchBasePointService;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 组盘记录服务
|
||||||
|
*/
|
||||||
|
@Resource
|
||||||
|
private GroupPlateMapper groupPlateMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String create(JSONObject json) {
|
||||||
|
SchBaseTask task = new SchBaseTask();
|
||||||
|
task.setTask_id(IdUtil.getStringId());
|
||||||
|
task.setTask_code(json.getString("TaskCode"));
|
||||||
|
task.setTask_status(TaskStatus.CREATE.getCode());
|
||||||
|
task.setConfig_code(IntermediateOutTask.class.getSimpleName());
|
||||||
|
task.setPoint_code1(json.getString("point_code1"));
|
||||||
|
task.setPoint_code2(json.getString("point_code2"));
|
||||||
|
task.setVehicle_code(json.getString("vehicle_code"));
|
||||||
|
task.setMaterial_id(json.getString("material_id"));
|
||||||
|
task.setMaterial_qty(json.getBigDecimal("material_qty"));
|
||||||
|
task.setGroup_id(json.getString("group_id"));
|
||||||
|
task.setRequest_param(json.toString());
|
||||||
|
task.setPriority(json.getString("Priority"));
|
||||||
|
task.setTask_type(TaskEnum.TASK_TYPE.code("料箱"));
|
||||||
|
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.setPriority(taskDao.getPriority());
|
||||||
|
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
|
||||||
|
|
||||||
|
acsTaskDto.setVehicle_type(IOSConstant.ONE);
|
||||||
|
acsTaskDto.setIs_wait(taskDao.getIs_wait());
|
||||||
|
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)) {
|
||||||
|
this.executingTask(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 (!TaskStatus.CREATE.getCode().equals(taskObj.getTask_status())) {
|
||||||
|
throw new BadRequestException("任务状态必须为生成才能取消任务");
|
||||||
|
}
|
||||||
|
this.cancelTask(taskObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void finishTask(SchBaseTask taskObj) {
|
||||||
|
// todo: 获取重量判断与记录的重量是否一样(判断上下幅度阈值,超过则不继续)
|
||||||
|
// 任务完成
|
||||||
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||||
|
taskObj.setRemark("已完成");
|
||||||
|
taskService.updateById(taskObj);
|
||||||
|
outBillService.taskFinish(taskObj);
|
||||||
|
// 创建上料任务
|
||||||
|
JSONObject request = JSONObject.parseObject(taskObj.getRequest_param());
|
||||||
|
// "ext":{"iostorinv_id":"2009532623130595328","point_code":"ZJZCZ01","target":"YPDJW01"}
|
||||||
|
JSONObject ext = request.getJSONObject("ext");
|
||||||
|
// todo: 先固定包衣,后续改
|
||||||
|
ext.put("config_code", "CoatingUpTask");
|
||||||
|
ext.put("vehicle_code", taskObj.getVehicle_code());
|
||||||
|
ext.put("material_qty", taskObj.getMaterial_qty());
|
||||||
|
ext.put("material_name", taskObj.getMaterial_name());
|
||||||
|
ext.put("material_id", taskObj.getMaterial_id());
|
||||||
|
ext.put("pre_task_id", taskObj.getTask_id());
|
||||||
|
ext.put("group_id", taskObj.getGroup_id());
|
||||||
|
AbstractTask coatingUpTask = taskFactory.getTask("CoatingUpTask");
|
||||||
|
coatingUpTask.create(ext);
|
||||||
|
this.taskConfirm(taskObj.getTask_code());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void cancelTask(SchBaseTask taskObj) {
|
||||||
|
|
||||||
|
// 取消任务
|
||||||
|
taskService.update(new LambdaUpdateWrapper<SchBaseTask>()
|
||||||
|
.set(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code("是"))
|
||||||
|
.set(SchBaseTask::getTask_status, TaskStatus.CANCELED.getCode())
|
||||||
|
.set(SchBaseTask::getRemark, "已取消")
|
||||||
|
.eq(SchBaseTask::getTask_id, taskObj.getTask_id())
|
||||||
|
);
|
||||||
|
|
||||||
|
//分配表清除任务
|
||||||
|
ioStorInvDisMapper.update(new IOStorInvDis(), new LambdaUpdateWrapper<>(IOStorInvDis.class)
|
||||||
|
.set(IOStorInvDis::getTask_id, null)
|
||||||
|
.set(IOStorInvDis::getPoint_code, null)
|
||||||
|
.set(IOStorInvDis::getIs_issued, 0)
|
||||||
|
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("未生成"))
|
||||||
|
.eq(IOStorInvDis::getTask_id, taskObj.getTask_id())
|
||||||
|
);
|
||||||
|
|
||||||
|
// 更新任务状态
|
||||||
|
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||||
|
taskObj.setRemark("已取消");
|
||||||
|
taskService.updateById(taskObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void taskConfirm(String task_code) {
|
||||||
|
// AGV任务做完才能删除
|
||||||
|
// SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||||
|
//
|
||||||
|
// // 删除组盘信息
|
||||||
|
// groupPlateMapper.delete(
|
||||||
|
// new QueryWrapper<GroupPlate>().lambda()
|
||||||
|
// .eq(GroupPlate::getVehicle_code, taskObj.getVehicle_code())
|
||||||
|
// .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))
|
||||||
|
// );
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -198,12 +198,12 @@ public class PalletOutTask extends AbstractTask {
|
|||||||
if (ObjectUtil.isEmpty(jsonObject.get("flag"))) {
|
if (ObjectUtil.isEmpty(jsonObject.get("flag"))) {
|
||||||
// 解锁、库存清空
|
// 解锁、库存清空
|
||||||
outBillService.taskFinish(taskObj);
|
outBillService.taskFinish(taskObj);
|
||||||
|
this.taskConfirm(taskObj.getTask_code());
|
||||||
}
|
}
|
||||||
// 任务完成
|
// 任务完成
|
||||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||||
taskObj.setRemark("已完成");
|
taskObj.setRemark("已完成");
|
||||||
taskService.updateById(taskObj);
|
taskService.updateById(taskObj);
|
||||||
this.taskConfirm(taskObj.getTask_code());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@@ -236,7 +236,6 @@ public class PalletOutTask extends AbstractTask {
|
|||||||
groupPlateMapper.delete(
|
groupPlateMapper.delete(
|
||||||
new QueryWrapper<GroupPlate>().lambda()
|
new QueryWrapper<GroupPlate>().lambda()
|
||||||
.eq(GroupPlate::getVehicle_code, taskObj.getVehicle_code())
|
.eq(GroupPlate::getVehicle_code, taskObj.getVehicle_code())
|
||||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import org.nl.wms.warehouse_management.enums.IOSEnum;
|
|||||||
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
|
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
|
||||||
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
|
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -66,9 +67,9 @@ public class TabletingInTask extends AbstractTask {
|
|||||||
throw new BadRequestException("该载具未存在组桶信息,请先组桶!");
|
throw new BadRequestException("该载具未存在组桶信息,请先组桶!");
|
||||||
}
|
}
|
||||||
// 找一个没任务的称重位
|
// 找一个没任务的称重位
|
||||||
List<SchBasePoint> czws = pointService.getCanUsePointByRegion("ZZC01");
|
List<SchBasePoint> czws = pointService.getCanUsePointByRegion("ZJZ01");
|
||||||
if (czws.size() == 0) {
|
if (czws.size() == 0) {
|
||||||
throw new BadRequestException("找不到中转区的称重位!");
|
throw new BadRequestException("找不到中间站的称重位!");
|
||||||
}
|
}
|
||||||
JSONObject jsonObject = bucket.get(0);
|
JSONObject jsonObject = bucket.get(0);
|
||||||
SchBasePoint point = czws.get(0);
|
SchBasePoint point = czws.get(0);
|
||||||
@@ -110,7 +111,7 @@ public class TabletingInTask extends AbstractTask {
|
|||||||
|
|
||||||
acsTaskDto.setVehicle_type(IOSConstant.ONE);
|
acsTaskDto.setVehicle_type(IOSConstant.ONE);
|
||||||
acsTaskDto.setIs_wait(IOSConstant.ZERO);
|
acsTaskDto.setIs_wait(IOSConstant.ZERO);
|
||||||
acsTaskDto.setTask_type(ACSTaskTypeEnum.CTU_TASK.getCode());
|
acsTaskDto.setTask_type(ACSTaskTypeEnum.AGV_TASK.getCode());
|
||||||
|
|
||||||
acsTaskDto.setPriority(IOSConstant.ONE);
|
acsTaskDto.setPriority(IOSConstant.ONE);
|
||||||
acsTaskDto.setAgv_system_type(IOSConstant.THREE);
|
acsTaskDto.setAgv_system_type(IOSConstant.THREE);
|
||||||
@@ -144,7 +145,7 @@ public class TabletingInTask extends AbstractTask {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cancelTask(SchBaseTask taskObj) {
|
public void cancelTask(SchBaseTask taskObj) {
|
||||||
// 取消任务
|
// 取消任务
|
||||||
taskService.update(new LambdaUpdateWrapper<SchBaseTask>()
|
taskService.update(new LambdaUpdateWrapper<SchBaseTask>()
|
||||||
.set(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code("是"))
|
.set(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code("是"))
|
||||||
@@ -159,7 +160,8 @@ public class TabletingInTask extends AbstractTask {
|
|||||||
taskService.updateById(taskObj);
|
taskService.updateById(taskObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void finishTask(SchBaseTask taskObj) {
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void finishTask(SchBaseTask taskObj) {
|
||||||
// 任务完成
|
// 任务完成
|
||||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||||
taskObj.setRemark("已完成");
|
taskObj.setRemark("已完成");
|
||||||
@@ -173,6 +175,9 @@ public class TabletingInTask extends AbstractTask {
|
|||||||
.set(SchBasePoint::getIng_task_code, "")
|
.set(SchBasePoint::getIng_task_code, "")
|
||||||
);
|
);
|
||||||
SchBasePoint startPoint = pointService.getByPointCode(taskObj.getPoint_code2(), false);
|
SchBasePoint startPoint = pointService.getByPointCode(taskObj.getPoint_code2(), false);
|
||||||
|
if (ObjectUtil.isEmpty(startPoint.getIn_sect())) {
|
||||||
|
throw new BadRequestException("入库库区设置不能为空!");
|
||||||
|
}
|
||||||
// todo: 获取重量
|
// todo: 获取重量
|
||||||
groupbucketService.upDateWeight("26.8", taskObj.getVehicle_code());
|
groupbucketService.upDateWeight("26.8", taskObj.getVehicle_code());
|
||||||
JSONObject param = new JSONObject();
|
JSONObject param = new JSONObject();
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ public enum IOSEnum {
|
|||||||
OUT_BILL_TYPE(MapOf.of("手工出库", "1009",
|
OUT_BILL_TYPE(MapOf.of("手工出库", "1009",
|
||||||
"原辅料出库", "1001",
|
"原辅料出库", "1001",
|
||||||
"批料出库", "1002",
|
"批料出库", "1002",
|
||||||
|
"料桶出库", "1003",
|
||||||
"直接出库", "1099"
|
"直接出库", "1099"
|
||||||
)),
|
)),
|
||||||
|
|
||||||
@@ -62,7 +63,9 @@ public enum IOSEnum {
|
|||||||
|
|
||||||
// 出库任务配置类编码
|
// 出库任务配置类编码
|
||||||
OUT_CONFIG_CODE(MapOf.of( "1009", "HandOutTask",
|
OUT_CONFIG_CODE(MapOf.of( "1009", "HandOutTask",
|
||||||
"1001", "CallMaterialTask", "1002", "PalletOutTask"
|
"1001", "CallMaterialTask",
|
||||||
|
"1002", "PalletOutTask",
|
||||||
|
"1003", "IntermediateOutTask"
|
||||||
)),
|
)),
|
||||||
// 下料任务配置编码
|
// 下料任务配置编码
|
||||||
DOWN_CONFIG_CODE(MapOf.of("YPQ", "TabletingInTask"
|
DOWN_CONFIG_CODE(MapOf.of("YPQ", "TabletingInTask"
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ public interface IOutBillService extends IService<IOStorInv> {
|
|||||||
* @param point_code 出库点位
|
* @param point_code 出库点位
|
||||||
* @param ioStorInv 主表实体类
|
* @param ioStorInv 主表实体类
|
||||||
*/
|
*/
|
||||||
void createTask(IOStorInvDis ioStorInvDis, String point_code, IOStorInv ioStorInv);
|
void createTask(IOStorInvDis ioStorInvDis, String point_code, IOStorInv ioStorInv, JSONObject ext);
|
||||||
|
|
||||||
List<JSONObject> getCanuseSpecifiedIvt(Map param);
|
List<JSONObject> getCanuseSpecifiedIvt(Map param);
|
||||||
|
|
||||||
|
|||||||
@@ -199,7 +199,8 @@
|
|||||||
LEFT JOIN md_pb_storagevehicleext e ON ss.storagevehicle_code = e.storagevehicle_code
|
LEFT JOIN md_pb_storagevehicleext e ON ss.storagevehicle_code = e.storagevehicle_code
|
||||||
WHERE
|
WHERE
|
||||||
IFNULL(ss.storagevehicle_code,'') <![CDATA[ <> ]]> ''
|
IFNULL(ss.storagevehicle_code,'') <![CDATA[ <> ]]> ''
|
||||||
<if test="material_id != null and material_id != ''">
|
AND IFNULL( mg.group_id, '' ) <![CDATA[ <> ]]> ''
|
||||||
|
<if test="material_id != null and material_id != ''">
|
||||||
AND
|
AND
|
||||||
mg.material_id = #{material_id}
|
mg.material_id = #{material_id}
|
||||||
</if>
|
</if>
|
||||||
|
|||||||
@@ -1088,13 +1088,13 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv>
|
|||||||
|
|
||||||
for (IOStorInvDis ioStorInvDis : ioStorInvDisList) {
|
for (IOStorInvDis ioStorInvDis : ioStorInvDisList) {
|
||||||
// 创建任务
|
// 创建任务
|
||||||
iOutBillService.createTask(ioStorInvDis, point_code, ioStorInv);
|
iOutBillService.createTask(ioStorInvDis, point_code, ioStorInv, whereJson);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void createTask(IOStorInvDis ioStorInvDis, String point_code, IOStorInv ioStorInv) {
|
public void createTask(IOStorInvDis ioStorInvDis, String point_code, IOStorInv ioStorInv, JSONObject ext) {
|
||||||
IOStorInvDis newDis = ioStorInvDisMapper.selectById(ioStorInvDis.getIostorinvdis_id());
|
IOStorInvDis newDis = ioStorInvDisMapper.selectById(ioStorInvDis.getIostorinvdis_id());
|
||||||
if (newDis.getWork_status().equals(IOSEnum.INBILL_DIS_STATUS.code("生成"))) {
|
if (newDis.getWork_status().equals(IOSEnum.INBILL_DIS_STATUS.code("生成"))) {
|
||||||
return;
|
return;
|
||||||
@@ -1107,6 +1107,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv>
|
|||||||
task_form.put("vehicle_code", ioStorInvDis.getStoragevehicle_code());
|
task_form.put("vehicle_code", ioStorInvDis.getStoragevehicle_code());
|
||||||
task_form.put("material_id", ioStorInvDis.getMaterial_id());
|
task_form.put("material_id", ioStorInvDis.getMaterial_id());
|
||||||
task_form.put("material_qty", ioStorInvDis.getPlan_qty());
|
task_form.put("material_qty", ioStorInvDis.getPlan_qty());
|
||||||
|
task_form.put("ext", ext);
|
||||||
if (ioStorInvDis.getIs_check().equals(IOSConstant.ONE)) {
|
if (ioStorInvDis.getIs_check().equals(IOSConstant.ONE)) {
|
||||||
task_form.put("is_wait", IOSConstant.ONE);
|
task_form.put("is_wait", IOSConstant.ONE);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user