rev:1.海柔半成品acs与mes接口 2.半成品、成品库存增加单据类型字段
This commit is contained in:
@@ -43,7 +43,9 @@ public enum AcsTaskEnum {
|
|||||||
TASK_STRUCT_HR_IN("26","入库-海柔半成品-生产入库"),
|
TASK_STRUCT_HR_IN("26","入库-海柔半成品-生产入库"),
|
||||||
TASK_STRUCT_HR_OUT("27","出库-海柔半成品-生产出库"),
|
TASK_STRUCT_HR_OUT("27","出库-海柔半成品-生产出库"),
|
||||||
TASK_STRUCT_HR_CHECK("28","海柔半成品-盘点"),
|
TASK_STRUCT_HR_CHECK("28","海柔半成品-盘点"),
|
||||||
TASK_STRUCT_CP_CHECK("13","-盘点"),
|
TASK_STRUCT_HR_EMP_IN("29","入库-海柔半成品-空托盘"),
|
||||||
|
TASK_STRUCT_HR_EMP_OUT("30","出库-海柔半成品-空托盘"),
|
||||||
|
TASK_STRUCT_CP_CHECK("13","成品-盘点"),
|
||||||
TASK_WASH_LACK("20","清洗机-缺料请求"),
|
TASK_WASH_LACK("20","清洗机-缺料请求"),
|
||||||
TASK_WASH_EMP("21","清洗机-空框请求"),
|
TASK_WASH_EMP("21","清洗机-空框请求"),
|
||||||
TASK_WASH_FULL_AUTO("22","清洗机-满料请求自动"),//去半成品入库:参数不全也去异常处理位
|
TASK_WASH_FULL_AUTO("22","清洗机-满料请求自动"),//去半成品入库:参数不全也去异常处理位
|
||||||
|
|||||||
@@ -120,6 +120,14 @@ public class AcsToWmsController {
|
|||||||
return new ResponseEntity<>( HttpStatus.OK);
|
return new ResponseEntity<>( HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/deviceApply")
|
||||||
|
@Log("海柔半成品任务申请")
|
||||||
|
//("海柔半成品任务申请")
|
||||||
|
@SaIgnore
|
||||||
|
public ResponseEntity<Object> deviceApply(@RequestBody JSONObject string) {
|
||||||
|
return new ResponseEntity<>(acsToWmsService.deviceApply(string),HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("/taskPublish")
|
@GetMapping("/taskPublish")
|
||||||
@Log("taskPublish")
|
@Log("taskPublish")
|
||||||
|
|||||||
@@ -82,4 +82,17 @@ public interface AcsToWmsService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
void feedOrderRealQty(JSONObject string);
|
void feedOrderRealQty(JSONObject string);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param json {
|
||||||
|
* type: 类型
|
||||||
|
* device_code1: 设备1
|
||||||
|
* barcode1: 条码1
|
||||||
|
* device_code2: 设备2
|
||||||
|
* barcode2: 条码2
|
||||||
|
* }
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
Map<String, Object> deviceApply(JSONObject json);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package org.nl.wms.ext_manage.acs.service.impl;
|
|||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
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.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
@@ -32,6 +33,8 @@ import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
|
|||||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
||||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvEmpBcpService;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpInService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
@@ -61,9 +64,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{
|
|||||||
private IPdmBiDeviceService deviceService;
|
private IPdmBiDeviceService deviceService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISchBaseTaskService itaskService;
|
private ISchBaseTaskService itaskService;
|
||||||
|
@Autowired
|
||||||
|
private IStIvtIostorinvHrBcpInService iStIvtIostorinvHrBcpInService;
|
||||||
|
@Autowired
|
||||||
|
private IStIvtIostorinvEmpBcpService iStIvtIostorinvEmpBcpService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> apply(JSONObject param) {
|
public Map<String, Object> apply(JSONObject param) {
|
||||||
@@ -342,4 +346,88 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{
|
|||||||
.set("dq_real_qty",dq_real_qty).eq("workorder_code",workorderCode));
|
.set("dq_real_qty",dq_real_qty).eq("workorder_code",workorderCode));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> deviceApply(JSONObject json) {
|
||||||
|
/*
|
||||||
|
* 1.申请入满箱任务
|
||||||
|
* 2.申请入空箱任务
|
||||||
|
* 3.申请出满箱任务
|
||||||
|
* 4.申请出空箱任务
|
||||||
|
*/
|
||||||
|
HashMap<String, Object> result = new HashMap<>();
|
||||||
|
|
||||||
|
String type = json.getString("type");
|
||||||
|
|
||||||
|
try {
|
||||||
|
String device_code1 = json.getString("device_code1");
|
||||||
|
String barcode1 = json.getString("barcode1");
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(device_code1)) throw new BadRequestException("设备不能为空!");
|
||||||
|
|
||||||
|
if (StrUtil.equals(type, "1")) {
|
||||||
|
/* 1.申请入满箱任务 */
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(barcode1)) throw new BadRequestException("条码不能为空!");
|
||||||
|
|
||||||
|
JSONObject param = new JSONObject();
|
||||||
|
param.put("device_code",device_code1);
|
||||||
|
param.put("barcode",barcode1);
|
||||||
|
|
||||||
|
// 1.调用入库服务
|
||||||
|
iStIvtIostorinvHrBcpInService.fullIn(param);
|
||||||
|
|
||||||
|
// 2.判断device_code2、barcode2 是否为空
|
||||||
|
if (ObjectUtil.isNotEmpty(json.getString("device_code2")) && ObjectUtil.isNotEmpty(json.getString("barcode2"))) {
|
||||||
|
|
||||||
|
param.put("device_code",json.getString("device_code2"));
|
||||||
|
param.put("barcode",json.getString("barcode2"));
|
||||||
|
iStIvtIostorinvHrBcpInService.fullIn(param);
|
||||||
|
}
|
||||||
|
} else if (StrUtil.equals(type, "2")) {
|
||||||
|
/* 2.申请入空箱任务 */
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(barcode1)) throw new BadRequestException("条码不能为空!");
|
||||||
|
|
||||||
|
JSONObject param = new JSONObject();
|
||||||
|
param.put("device_code",device_code1);
|
||||||
|
param.put("barcode",barcode1);
|
||||||
|
|
||||||
|
// 1.调用空托盘入库服务
|
||||||
|
iStIvtIostorinvEmpBcpService.InEmp(param);
|
||||||
|
|
||||||
|
// 2.判断device_code2、barcode2 是否为空
|
||||||
|
if (ObjectUtil.isNotEmpty(json.getString("device_code2")) && ObjectUtil.isNotEmpty(json.getString("barcode2"))) {
|
||||||
|
param.put("device_code",json.getString("device_code2"));
|
||||||
|
param.put("barcode",json.getString("barcode2"));
|
||||||
|
iStIvtIostorinvEmpBcpService.InEmp(param);
|
||||||
|
}
|
||||||
|
} else if (StrUtil.equals(type, "3")) {
|
||||||
|
/* 3.申请出满箱任务 */
|
||||||
|
|
||||||
|
} else if (StrUtil.equals(type, "4")) {
|
||||||
|
/* 4.申请出空箱任务 */
|
||||||
|
|
||||||
|
JSONObject param = new JSONObject();
|
||||||
|
param.put("device_code",device_code1);
|
||||||
|
param.put("barcode",barcode1);
|
||||||
|
|
||||||
|
// 1.调用空托盘出库库服务
|
||||||
|
iStIvtIostorinvEmpBcpService.OutEmp(param);
|
||||||
|
|
||||||
|
// 2.判断device_code2、barcode2 是否为空
|
||||||
|
if (ObjectUtil.isNotEmpty(json.getString("device_code2"))) {
|
||||||
|
param.put("device_code",json.getString("device_code2"));
|
||||||
|
iStIvtIostorinvEmpBcpService.OutEmp(param);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
result.put("status", HttpStatus.BAD_REQUEST.value());
|
||||||
|
result.put("message", e.getMessage());
|
||||||
|
}
|
||||||
|
result.put("status", HttpStatus.OK.value());
|
||||||
|
result.put("message", "");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ public enum IOSEnum {
|
|||||||
//是否
|
//是否
|
||||||
IS_USED(MapOf.of("是", "1", "否", "0")),
|
IS_USED(MapOf.of("是", "1", "否", "0")),
|
||||||
//仓库编码
|
//仓库编码
|
||||||
STOR_CODE(MapOf.of("原材料仓", "1528627964823080960", "半成品仓库", "15286279952695336962","成品库", "1528627995269533696")),
|
STOR_CODE(MapOf.of("原材料仓", "1528627964823080960", "半成品仓库", "15286279952695336962","成品库", "1528627995269533696","海柔半成品","15286279952695336963")),
|
||||||
//库区编码
|
//库区编码
|
||||||
SECT_CODE(MapOf.of("成品库区", "1528631043496742912", "半成品库区", "1528631044482404352")),
|
SECT_CODE(MapOf.of("成品库区", "1528631043496742912", "半成品库区", "1528631044482404352")),
|
||||||
//托盘超限类型
|
//托盘超限类型
|
||||||
@@ -36,8 +36,8 @@ public enum IOSEnum {
|
|||||||
ORDER_STATUS(MapOf.of("生成", "10", "提交", "20", "发货中", "30", "确认", "99")),
|
ORDER_STATUS(MapOf.of("生成", "10", "提交", "20", "发货中", "30", "确认", "99")),
|
||||||
//锁定类型
|
//锁定类型
|
||||||
LOCK_TYPE(MapOf.of("未锁定", "0", "入库锁", "1", "出库锁", "2","盘点锁", "3","损溢锁", "4","拼盘锁","5","其他锁","99")),
|
LOCK_TYPE(MapOf.of("未锁定", "0", "入库锁", "1", "出库锁", "2","盘点锁", "3","损溢锁", "4","拼盘锁","5","其他锁","99")),
|
||||||
// 海柔半成品出库类型
|
// 海柔半成品出入库类型
|
||||||
BILL_TYPE_HR(MapOf.of("生产出库", "1001", "盘点出库", "1002", "手工出库", "1009")),
|
BILL_TYPE_HR(MapOf.of("生产出库", "1001", "盘点出库", "1002", "手工出库", "1009","生产入库","0001")),
|
||||||
;
|
;
|
||||||
private Map<String, String> code;
|
private Map<String, String> code;
|
||||||
|
|
||||||
|
|||||||
@@ -121,5 +121,10 @@ public class StIvtStructivtCp implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private BigDecimal unit_weight;
|
private BigDecimal unit_weight;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单据类型
|
||||||
|
*/
|
||||||
|
private String bill_type;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -152,6 +152,7 @@
|
|||||||
mater.material_spec,
|
mater.material_spec,
|
||||||
attr.storagevehicle_code,
|
attr.storagevehicle_code,
|
||||||
ivt.canuse_qty,
|
ivt.canuse_qty,
|
||||||
|
ivt.bill_type,
|
||||||
ivt.frozen_qty,
|
ivt.frozen_qty,
|
||||||
ivt.ivt_qty,
|
ivt.ivt_qty,
|
||||||
ivt.warehousing_qty,
|
ivt.warehousing_qty,
|
||||||
|
|||||||
@@ -187,6 +187,7 @@ public class StIvtStructivtCpServiceImpl extends ServiceImpl<StIvtStructivtCpMap
|
|||||||
dao.setProduct_area(json.getString("product_area"));
|
dao.setProduct_area(json.getString("product_area"));
|
||||||
dao.setStor_id(json.getString("stor_id"));
|
dao.setStor_id(json.getString("stor_id"));
|
||||||
dao.setUnit_weight(materDao.getNet_weight());
|
dao.setUnit_weight(materDao.getNet_weight());
|
||||||
|
dao.setBill_type(json.getString("bill_type_scode"));
|
||||||
this.save(dao);
|
this.save(dao);
|
||||||
|
|
||||||
// 插入库存变动记录
|
// 插入库存变动记录
|
||||||
|
|||||||
@@ -26,5 +26,11 @@ public class RuleUtil {
|
|||||||
*/
|
*/
|
||||||
public static final String PRODUCTION_OUT_2 = "out_2";
|
public static final String PRODUCTION_OUT_2 = "out_2";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 空托盘出库分配:
|
||||||
|
* 根据 仓库、库区、找仓位上的空载具
|
||||||
|
*/
|
||||||
|
public static final String PRODUCTION_EMP_OUT_1 = "emp_out_1";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -81,6 +81,21 @@ public class DivRuleCpServiceImpl implements DivRuleCpService {
|
|||||||
.eq(StIvtStructattr::getStruct_id, attrDao.getControl_code())
|
.eq(StIvtStructattr::getStruct_id, attrDao.getControl_code())
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
case RuleUtil.PRODUCTION_EMP_OUT_1 :
|
||||||
|
attrDao = iStIvtStructattrService.getOne(
|
||||||
|
new QueryWrapper<StIvtStructattr>().lambda()
|
||||||
|
.eq(StIvtStructattr::getStor_id, stor_id)
|
||||||
|
.eq(StIvtStructattr::getSect_id, sect_id)
|
||||||
|
.eq(StIvtStructattr::getIs_used, IOSEnum.IS_USED.code("是"))
|
||||||
|
.eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||||
|
.and(qr -> qr.ne(StIvtStructattr::getStoragevehicle_code,"")
|
||||||
|
.or().isNull(StIvtStructattr::getStoragevehicle_code)
|
||||||
|
)
|
||||||
|
.eq(StIvtStructattr::getIs_emptyvehicle, true)
|
||||||
|
.orderByDesc(StIvtStructattr::getXqty)
|
||||||
|
.orderByAsc(StIvtStructattr::getYqty)
|
||||||
|
, false);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import org.nl.wms.storage_manage.semimanage.service.iostorInv.IStIvtIostorinvBcp
|
|||||||
import org.nl.wms.storage_manage.semimanage.service.iostorInv.IStIvtIostorinvBcpService;
|
import org.nl.wms.storage_manage.semimanage.service.iostorInv.IStIvtIostorinvBcpService;
|
||||||
import org.nl.wms.storage_manage.semimanage.service.shutFrame.IStIvtShutframeinvBcpService;
|
import org.nl.wms.storage_manage.semimanage.service.shutFrame.IStIvtShutframeinvBcpService;
|
||||||
import org.nl.wms.storage_manage.semimanagehr.service.check.IStIvtCheckmstHrBcpService;
|
import org.nl.wms.storage_manage.semimanagehr.service.check.IStIvtCheckmstHrBcpService;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvEmpBcpService;
|
||||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpInService;
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpInService;
|
||||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpOutService;
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpOutService;
|
||||||
|
|
||||||
@@ -81,6 +82,14 @@ public enum TASKEnum implements FunctionStrategy<String, JSONObject> {
|
|||||||
IStIvtCheckmstHrBcpService bean = SpringContextHolder.getBean(IStIvtCheckmstHrBcpService.class);
|
IStIvtCheckmstHrBcpService bean = SpringContextHolder.getBean(IStIvtCheckmstHrBcpService.class);
|
||||||
bean.taskOperate(form);
|
bean.taskOperate(form);
|
||||||
}),
|
}),
|
||||||
|
HR_BCP_EMP_IN_TASK(type -> AcsTaskEnum.TASK_STRUCT_HR_EMP_IN.getCode().equals(type), form -> {
|
||||||
|
IStIvtIostorinvEmpBcpService bean = SpringContextHolder.getBean(IStIvtIostorinvEmpBcpService.class);
|
||||||
|
bean.taskOperateIn(form);
|
||||||
|
}),
|
||||||
|
HR_BCP_EMP_OUT_TASK(type -> AcsTaskEnum.TASK_STRUCT_HR_EMP_OUT.getCode().equals(type), form -> {
|
||||||
|
IStIvtIostorinvEmpBcpService bean = SpringContextHolder.getBean(IStIvtIostorinvEmpBcpService.class);
|
||||||
|
bean.taskOperateOut(form);
|
||||||
|
}),
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@@ -264,6 +264,7 @@ public class StIvtIostorinvBcpServiceImpl extends ServiceImpl<StIvtIostorinvBcpM
|
|||||||
.canuse_qty(mst.getPlan_qty())
|
.canuse_qty(mst.getPlan_qty())
|
||||||
.workshop_id(mst.getWorkshop_id())
|
.workshop_id(mst.getWorkshop_id())
|
||||||
.unit_weight(mst.getUnit_weight())
|
.unit_weight(mst.getUnit_weight())
|
||||||
|
.bill_type(mst.getBill_type())
|
||||||
.build();
|
.build();
|
||||||
structivtBcpService.save(ivtDao);
|
structivtBcpService.save(ivtDao);
|
||||||
|
|
||||||
|
|||||||
@@ -103,5 +103,10 @@ public class StIvtStructivtBcp implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private BigDecimal unit_weight;
|
private BigDecimal unit_weight;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库类型
|
||||||
|
*/
|
||||||
|
private String bill_type;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package org.nl.wms.storage_manage.semimanagehr.service.iostorInv;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvOrder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 半成品空载具服务 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author generator
|
||||||
|
* @since 2023-08-01
|
||||||
|
*/
|
||||||
|
public interface IStIvtIostorinvEmpBcpService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* acs申请入空箱
|
||||||
|
* @param json {
|
||||||
|
* device_code: 设备
|
||||||
|
* barcode: 条码
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
void InEmp(JSONObject json);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入空托盘任务反馈
|
||||||
|
* @param form /
|
||||||
|
*/
|
||||||
|
void taskOperateIn(JSONObject form);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* acs申请出空箱
|
||||||
|
* @param json {
|
||||||
|
* device_code: 设备
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
void OutEmp(JSONObject json);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出空托盘任务反馈
|
||||||
|
* @param form /
|
||||||
|
*/
|
||||||
|
void taskOperateOut(JSONObject form);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -59,4 +59,14 @@ public interface IStIvtIostorinvHrBcpInService extends IService<StIvtIostorinvHr
|
|||||||
|
|
||||||
List<Map> getPdaAll(JSONObject form);
|
List<Map> getPdaAll(JSONObject form);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* acs 申请入满箱任务
|
||||||
|
* @param /
|
||||||
|
* {
|
||||||
|
* device_code : 设备
|
||||||
|
* barcode : 条码
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
void fullIn(JSONObject json);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package org.nl.wms.storage_manage.semimanagehr.service.iostorInv;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvOrder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 出入库顺序表 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author generator
|
||||||
|
* @since 2023-08-01
|
||||||
|
*/
|
||||||
|
public interface IStIvtIostorinvOrderService extends IService<StIvtIostorinvOrder> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
package org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 出入库顺序表
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author generator
|
||||||
|
* @since 2023-08-01
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@TableName("st_ivt_iostorinv_order_bcp")
|
||||||
|
public class StIvtIostorinvOrder implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 顺序标识
|
||||||
|
*/
|
||||||
|
@TableId(value = "order_id")
|
||||||
|
private String order_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车间
|
||||||
|
*/
|
||||||
|
private String workshop_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 仓库标识
|
||||||
|
*/
|
||||||
|
private String stor_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 输送设备
|
||||||
|
*/
|
||||||
|
private String out_device;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 来源设备
|
||||||
|
*/
|
||||||
|
private String in_device;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 条码
|
||||||
|
*/
|
||||||
|
private String bar_code;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业务日期
|
||||||
|
*/
|
||||||
|
private String biz_date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料标识
|
||||||
|
*/
|
||||||
|
private String material_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单
|
||||||
|
*/
|
||||||
|
private String sale_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工单
|
||||||
|
*/
|
||||||
|
private String workorder_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重量
|
||||||
|
*/
|
||||||
|
private BigDecimal weight;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数量
|
||||||
|
*/
|
||||||
|
private BigDecimal qty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出入类型
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否删除
|
||||||
|
*/
|
||||||
|
private boolean is_delete;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
private String create_time;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.nl.common.anno.Datazhuazhua;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvOrder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 出入库顺序表 Mapper 接口
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author generator
|
||||||
|
* @since 2023-05-10
|
||||||
|
*/
|
||||||
|
@Datazhuazhua
|
||||||
|
public interface StIvtIostorinvOrderMapper extends BaseMapper<StIvtIostorinvOrder> {
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.mapper.StIvtIostorinvOrderMapper">
|
||||||
|
</mapper>
|
||||||
@@ -0,0 +1,286 @@
|
|||||||
|
package org.nl.wms.storage_manage.semimanagehr.service.iostorInv.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.map.MapUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
|
import org.nl.common.enums.AcsTaskEnum;
|
||||||
|
import org.nl.common.publish.BussEventMulticaster;
|
||||||
|
import org.nl.common.publish.event.PointEvent;
|
||||||
|
import org.nl.common.utils.IdUtil;
|
||||||
|
import org.nl.common.utils.MapOf;
|
||||||
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
|
import org.nl.modules.wql.util.SpringContextHolder;
|
||||||
|
import org.nl.wms.ext_manage.acs.service.WmsToAcsService;
|
||||||
|
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService;
|
||||||
|
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
|
||||||
|
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtSectattr;
|
||||||
|
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||||
|
import org.nl.wms.scheduler_manage.service.extendtask.manage.TaskStatusEnum;
|
||||||
|
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||||
|
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||||
|
import org.nl.wms.storage_manage.IOSEnum;
|
||||||
|
import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService;
|
||||||
|
import org.nl.wms.storage_manage.productmanage.util.RuleUtil;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvEmpBcpService;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvHrBcp;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 半成品空载具 服务实现类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author generator
|
||||||
|
* @since 2023-05-10
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class StIvtIostorinvEmpBcpServiceImpl implements IStIvtIostorinvEmpBcpService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IStIvtSectattrService sectattrService; // 库区服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
protected IStIvtStructattrService iStIvtStructattrService; // 仓位属性服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DivRuleCpService divRuleCpService; // 分配规则服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISchBaseTaskService iSchBaseTaskService; // 任务表服务
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void InEmp(JSONObject json) {
|
||||||
|
/*
|
||||||
|
* 1.找一个空货位
|
||||||
|
* 2.生成任务
|
||||||
|
* 3.下发任务
|
||||||
|
* 4.锁住货位
|
||||||
|
*/
|
||||||
|
String device_code = json.getString("device_code"); // 设备
|
||||||
|
String barcode = json.getString("barcode"); // 条码
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(device_code)) throw new BadRequestException("设备不能为空!");
|
||||||
|
if (ObjectUtil.isEmpty(barcode)) throw new BadRequestException("条码不能为空!");
|
||||||
|
|
||||||
|
// 1.找一个空货位
|
||||||
|
StIvtSectattr sect = sectattrService.getOne(
|
||||||
|
new QueryWrapper<StIvtSectattr>().lambda()
|
||||||
|
.eq(StIvtSectattr::getSect_name, "海柔半成品库区")
|
||||||
|
);
|
||||||
|
|
||||||
|
JSONObject jo = new JSONObject();
|
||||||
|
jo.put("sect_id", sect.getSect_id());
|
||||||
|
jo.put("stor_id", sect.getStor_id());
|
||||||
|
jo.put("rule_type", RuleUtil.PRODUCTION_IN_1);
|
||||||
|
|
||||||
|
// 调用服务
|
||||||
|
StIvtStructattr arrtDao = divRuleCpService.divRuleIn(jo);
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(arrtDao)) {
|
||||||
|
throw new BadRequestException("无可分配货位");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2.生成任务
|
||||||
|
SchBaseTask taskDao = new SchBaseTask();
|
||||||
|
PointEvent event = PointEvent.builder()
|
||||||
|
.type(AcsTaskEnum.TASK_STRUCT_HR_EMP_IN)
|
||||||
|
.acs_task_type("7")
|
||||||
|
.task_group_id(IdUtil.getStringId())
|
||||||
|
.point_code1(device_code)
|
||||||
|
.point_code3(barcode)
|
||||||
|
.vehicle_code(barcode)
|
||||||
|
.product_area("A3")
|
||||||
|
.callback((Consumer<String>) taskDao::setTask_id)
|
||||||
|
.build();
|
||||||
|
BussEventMulticaster.Publish(event);
|
||||||
|
|
||||||
|
// 3.下发任务
|
||||||
|
sendTask(taskDao.getTask_id());
|
||||||
|
|
||||||
|
// 4.锁定货位
|
||||||
|
arrtDao.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁"));
|
||||||
|
iStIvtStructattrService.updateById(arrtDao);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void taskOperateIn(JSONObject form) {
|
||||||
|
String task_id = form.getString("task_id");
|
||||||
|
String status = form.getString("status");
|
||||||
|
SchBaseTask taskDao = iSchBaseTaskService.getById(task_id);
|
||||||
|
|
||||||
|
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
|
||||||
|
/* 完成 */
|
||||||
|
|
||||||
|
// 1.更新任务为完成
|
||||||
|
taskDao.setTask_status(TaskStatusEnum.FINISHED.getCode());
|
||||||
|
iSchBaseTaskService.updateById(taskDao);
|
||||||
|
|
||||||
|
// 2.更新仓位:解锁仓位、更新载具、更新是否是空载具
|
||||||
|
iStIvtStructattrService.update(
|
||||||
|
new UpdateWrapper<StIvtStructattr>().lambda()
|
||||||
|
.set(StIvtStructattr::getStoragevehicle_code, taskDao.getVehicle_code())
|
||||||
|
.set(StIvtStructattr::getLock_type,IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||||
|
.set(StIvtStructattr::getIs_emptyvehicle, true)
|
||||||
|
.eq(StIvtStructattr::getStruct_code, taskDao.getPoint_code3())
|
||||||
|
);
|
||||||
|
|
||||||
|
} else if (status.equals(AcsTaskEnum.STATUS_START.getCode())){
|
||||||
|
/* 执行中 */
|
||||||
|
|
||||||
|
// 1.更新任务为执行中
|
||||||
|
taskDao.setTask_status(TaskStatusEnum.EXECUTING.getCode());
|
||||||
|
iSchBaseTaskService.updateById(taskDao);
|
||||||
|
|
||||||
|
}else if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())){
|
||||||
|
/* 取消 */
|
||||||
|
|
||||||
|
// 1.更新任务为取消
|
||||||
|
taskDao.setTask_status(TaskStatusEnum.CANCEL.getCode());
|
||||||
|
iSchBaseTaskService.updateById(taskDao);
|
||||||
|
|
||||||
|
// 2.更新仓位:解锁仓位
|
||||||
|
iStIvtStructattrService.update(
|
||||||
|
new UpdateWrapper<StIvtStructattr>().lambda()
|
||||||
|
.set(StIvtStructattr::getLock_type,IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||||
|
.eq(StIvtStructattr::getStruct_code, taskDao.getPoint_code3())
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void OutEmp(JSONObject json) {
|
||||||
|
/*
|
||||||
|
* 1.找一个空载具的货位
|
||||||
|
* 2.生成任务
|
||||||
|
* 3.下发任务
|
||||||
|
*/
|
||||||
|
String device_code = json.getString("device_code");
|
||||||
|
|
||||||
|
// 1.找一个空载具的货位
|
||||||
|
StIvtSectattr sect = sectattrService.getOne(
|
||||||
|
new QueryWrapper<StIvtSectattr>().lambda()
|
||||||
|
.eq(StIvtSectattr::getSect_name, "海柔半成品库区")
|
||||||
|
);
|
||||||
|
|
||||||
|
JSONObject jo = new JSONObject();
|
||||||
|
jo.put("sect_id", sect.getSect_id());
|
||||||
|
jo.put("stor_id", sect.getStor_id());
|
||||||
|
jo.put("rule_type", RuleUtil.PRODUCTION_EMP_OUT_1);
|
||||||
|
|
||||||
|
// 调用服务
|
||||||
|
StIvtStructattr arrtDao = divRuleCpService.divRuleIn(jo);
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(arrtDao)) {
|
||||||
|
throw new BadRequestException("没有可用的空托盘!");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2.生成任务
|
||||||
|
SchBaseTask taskDao = new SchBaseTask();
|
||||||
|
PointEvent event = PointEvent.builder()
|
||||||
|
.type(AcsTaskEnum.TASK_STRUCT_HR_EMP_OUT)
|
||||||
|
.acs_task_type("7")
|
||||||
|
.task_group_id(IdUtil.getStringId())
|
||||||
|
.point_code1(arrtDao.getStruct_code())
|
||||||
|
.point_code3(device_code)
|
||||||
|
.vehicle_code(arrtDao.getStoragevehicle_code())
|
||||||
|
.product_area("A3")
|
||||||
|
.callback((Consumer<String>) taskDao::setTask_id)
|
||||||
|
.build();
|
||||||
|
BussEventMulticaster.Publish(event);
|
||||||
|
|
||||||
|
// 3.下发任务
|
||||||
|
sendTask(taskDao.getTask_id());
|
||||||
|
|
||||||
|
// 4.锁定货位
|
||||||
|
arrtDao.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁"));
|
||||||
|
iStIvtStructattrService.updateById(arrtDao);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void taskOperateOut(JSONObject form) {
|
||||||
|
String task_id = form.getString("task_id");
|
||||||
|
String status = form.getString("status");
|
||||||
|
SchBaseTask taskDao = iSchBaseTaskService.getById(task_id);
|
||||||
|
|
||||||
|
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
|
||||||
|
/* 完成 */
|
||||||
|
|
||||||
|
// 1.更新任务为完成
|
||||||
|
taskDao.setTask_status(TaskStatusEnum.FINISHED.getCode());
|
||||||
|
iSchBaseTaskService.updateById(taskDao);
|
||||||
|
|
||||||
|
// 2.更新仓位:解锁仓位、更新载具、更新是否是空载具
|
||||||
|
iStIvtStructattrService.update(
|
||||||
|
new UpdateWrapper<StIvtStructattr>().lambda()
|
||||||
|
.set(StIvtStructattr::getStoragevehicle_code, "")
|
||||||
|
.set(StIvtStructattr::getLock_type,IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||||
|
.set(StIvtStructattr::getIs_emptyvehicle, false)
|
||||||
|
.eq(StIvtStructattr::getStruct_code, taskDao.getPoint_code1())
|
||||||
|
);
|
||||||
|
|
||||||
|
} else if (status.equals(AcsTaskEnum.STATUS_START.getCode())){
|
||||||
|
/* 执行中 */
|
||||||
|
|
||||||
|
// 1.更新任务为执行中
|
||||||
|
taskDao.setTask_status(TaskStatusEnum.EXECUTING.getCode());
|
||||||
|
iSchBaseTaskService.updateById(taskDao);
|
||||||
|
|
||||||
|
}else if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())){
|
||||||
|
/* 取消 */
|
||||||
|
|
||||||
|
// 1.更新任务为取消
|
||||||
|
taskDao.setTask_status(TaskStatusEnum.CANCEL.getCode());
|
||||||
|
iSchBaseTaskService.updateById(taskDao);
|
||||||
|
|
||||||
|
// 2.更新仓位:解锁仓位
|
||||||
|
iStIvtStructattrService.update(
|
||||||
|
new UpdateWrapper<StIvtStructattr>().lambda()
|
||||||
|
.set(StIvtStructattr::getLock_type,IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||||
|
.eq(StIvtStructattr::getStruct_code, taskDao.getPoint_code3())
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下发任务
|
||||||
|
* @param task_id /
|
||||||
|
*/
|
||||||
|
private void sendTask(String task_id) {
|
||||||
|
|
||||||
|
SchBaseTask taskDao = iSchBaseTaskService.getById(task_id);
|
||||||
|
JSONArray param = new JSONArray();
|
||||||
|
param.add(JSON.parseObject(JSONUtil.toJsonStr(taskDao)));
|
||||||
|
|
||||||
|
// 1.下发任务
|
||||||
|
WmsToAcsService bean = SpringContextHolder.getBean(WmsToAcsService.class);
|
||||||
|
Map<String, Object> result = bean.issueTaskToAcs3(param);
|
||||||
|
|
||||||
|
// 反馈失败报错
|
||||||
|
if (!ObjectUtil.equal(MapUtil.getStr(result, "status"),"200")) {
|
||||||
|
throw new BadRequestException("下发失败:"+MapUtil.getStr(result, "message"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2.更新任务状态
|
||||||
|
taskDao.setTask_status(TaskStatusEnum.ISSUE.getCode());
|
||||||
|
iSchBaseTaskService.updateById(taskDao);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -27,6 +27,8 @@ import org.nl.modules.common.exception.BadRequestException;
|
|||||||
import org.nl.modules.system.util.CodeUtil;
|
import org.nl.modules.system.util.CodeUtil;
|
||||||
import org.nl.modules.wql.util.SpringContextHolder;
|
import org.nl.modules.wql.util.SpringContextHolder;
|
||||||
import org.nl.wms.ext_manage.acs.service.WmsToAcsService;
|
import org.nl.wms.ext_manage.acs.service.WmsToAcsService;
|
||||||
|
import org.nl.wms.masterdata_manage.service.master.IMdPbMeasureunitService;
|
||||||
|
import org.nl.wms.masterdata_manage.service.master.dao.MdPbMeasureunit;
|
||||||
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
||||||
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||||
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
|
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
|
||||||
@@ -49,7 +51,9 @@ import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil;
|
|||||||
import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService;
|
import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService;
|
||||||
import org.nl.wms.storage_manage.productmanage.util.RuleUtil;
|
import org.nl.wms.storage_manage.productmanage.util.RuleUtil;
|
||||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpInService;
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpInService;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvOrderService;
|
||||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvHrBcp;
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvHrBcp;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvOrder;
|
||||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.mapper.StIvtIostorinvHrBcpMapper;
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.mapper.StIvtIostorinvHrBcpMapper;
|
||||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto.HrBcpIostorInvQuery;
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto.HrBcpIostorInvQuery;
|
||||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.IStIvtStructivtHrBcpService;
|
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.IStIvtStructivtHrBcpService;
|
||||||
@@ -104,6 +108,15 @@ public class StIvtIostorinvHrBcpInServiceImpl extends ServiceImpl<StIvtIostorinv
|
|||||||
@Autowired
|
@Autowired
|
||||||
protected IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务
|
protected IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
protected IStIvtIostorinvOrderService iStIvtIostorinvOrderService; // 出入顺序服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
protected IMdMeMaterialbaseService iMdMeMaterialbaseService; // 物料服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
protected IMdPbMeasureunitService iMdPbMeasureunitService; // 计量单位服务
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object queryDtl(HrBcpIostorInvQuery query, PageQuery pageQuery) {
|
public Object queryDtl(HrBcpIostorInvQuery query, PageQuery pageQuery) {
|
||||||
Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize());
|
Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize());
|
||||||
@@ -420,6 +433,66 @@ public class StIvtIostorinvHrBcpInServiceImpl extends ServiceImpl<StIvtIostorinv
|
|||||||
return this.baseMapper.getPdaAll(form);
|
return this.baseMapper.getPdaAll(form);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void fullIn(JSONObject json) {
|
||||||
|
/*
|
||||||
|
* 1.从出入顺序表中找到对应数据
|
||||||
|
* 2.创建入库单
|
||||||
|
* 3.生成任务
|
||||||
|
* 4.下发任务
|
||||||
|
*/
|
||||||
|
|
||||||
|
String device_code = json.getString("device_code"); // 设备
|
||||||
|
String barcode = json.getString("barcode"); // 载具号
|
||||||
|
|
||||||
|
// 1.从出入顺序表中找到对应数据: 根据来源设备和条码找到最近的一条
|
||||||
|
StIvtIostorinvOrder orderDao = iStIvtIostorinvOrderService.getOne(
|
||||||
|
new QueryWrapper<StIvtIostorinvOrder>().lambda()
|
||||||
|
.eq(StIvtIostorinvOrder::getIn_device, device_code)
|
||||||
|
.eq(StIvtIostorinvOrder::getBar_code, barcode)
|
||||||
|
.eq(StIvtIostorinvOrder::getType, IOSEnum.IO_TYPE.code("入库"))
|
||||||
|
.orderByDesc(StIvtIostorinvOrder::getCreate_time)
|
||||||
|
, false
|
||||||
|
);
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(orderDao)) throw new BadRequestException("此条码在系统中不存在记录");
|
||||||
|
|
||||||
|
// 2.创建入库单
|
||||||
|
JSONObject jsonMst = new JSONObject();
|
||||||
|
jsonMst.put("biz_date", DateUtil.today());
|
||||||
|
jsonMst.put("bill_type", IOSEnum.BILL_TYPE_HR.code("生产入库"));
|
||||||
|
jsonMst.put("remark", "" );
|
||||||
|
jsonMst.put("product_code", "A3" );
|
||||||
|
jsonMst.put("point_code", device_code );
|
||||||
|
jsonMst.put("stor_id", IOSEnum.STOR_CODE.code("海柔半成品"));
|
||||||
|
jsonMst.put("auto_send", "1"); // 是否自动创建任务并下发
|
||||||
|
|
||||||
|
JSONArray tableData = new JSONArray();
|
||||||
|
|
||||||
|
JSONObject jsonDtl = new JSONObject();
|
||||||
|
jsonDtl.put("material_id", orderDao.getMaterial_id());
|
||||||
|
jsonDtl.put("pcsn", "");
|
||||||
|
jsonDtl.put("plan_qty", orderDao.getWeight());
|
||||||
|
jsonDtl.put("quality_scode", IVTEnum.QUALITY_SCODE.code("合格品"));
|
||||||
|
|
||||||
|
物料信息:
|
||||||
|
{
|
||||||
|
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getById(orderDao.getMaterial_id());
|
||||||
|
MdPbMeasureunit untiDao = iMdPbMeasureunitService.getById(materDao.getBase_unit_id());
|
||||||
|
|
||||||
|
jsonDtl.put("base_unit_id", untiDao.getMeasure_unit_id());
|
||||||
|
jsonDtl.put("base_unit_name", untiDao.getUnit_name());
|
||||||
|
jsonDtl.put("unit_weight", materDao.getNet_weight());
|
||||||
|
jsonDtl.put("storagevehicle_code", barcode);
|
||||||
|
}
|
||||||
|
tableData.add(jsonDtl);
|
||||||
|
jsonMst.put("tableData",tableData);
|
||||||
|
|
||||||
|
// 调用创建方法并自动创建任务下发
|
||||||
|
create(jsonMst);
|
||||||
|
}
|
||||||
|
|
||||||
private void delTask(String task_id) {
|
private void delTask(String task_id) {
|
||||||
|
|
||||||
StIvtIostorinvHrBcp mstDao = this.getOne(
|
StIvtIostorinvHrBcp mstDao = this.getOne(
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package org.nl.wms.storage_manage.semimanagehr.service.iostorInv.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvOrderService;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvOrder;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.mapper.StIvtIostorinvOrderMapper;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 出入库顺序表 服务实现类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author generator
|
||||||
|
* @since 2023-05-10
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class StIvtIostorinvOrderServiceImpl extends ServiceImpl<StIvtIostorinvOrderMapper, StIvtIostorinvOrder> implements IStIvtIostorinvOrderService {
|
||||||
|
}
|
||||||
Binary file not shown.
@@ -103,6 +103,7 @@
|
|||||||
<el-table-column show-overflow-tooltip prop="storagevehicle_code" label="载具号" />
|
<el-table-column show-overflow-tooltip prop="storagevehicle_code" label="载具号" />
|
||||||
<el-table-column show-overflow-tooltip prop="sale_code" label="销售单号" />
|
<el-table-column show-overflow-tooltip prop="sale_code" label="销售单号" />
|
||||||
<el-table-column show-overflow-tooltip min-width="110" prop="seq_no" label="销售单行号" />
|
<el-table-column show-overflow-tooltip min-width="110" prop="seq_no" label="销售单行号" />
|
||||||
|
<el-table-column show-overflow-tooltip prop="bill_type" label="单据类型" :formatter="formatBillType" />
|
||||||
<el-table-column show-overflow-tooltip prop="canuse_qty" label="可用数量" :formatter="crud.formatNum3" />
|
<el-table-column show-overflow-tooltip prop="canuse_qty" label="可用数量" :formatter="crud.formatNum3" />
|
||||||
<el-table-column show-overflow-tooltip prop="frozen_qty" label="冻结数量" :formatter="crud.formatNum3" />
|
<el-table-column show-overflow-tooltip prop="frozen_qty" label="冻结数量" :formatter="crud.formatNum3" />
|
||||||
<el-table-column show-overflow-tooltip prop="ivt_qty" label="库存数量" :formatter="crud.formatNum3" />
|
<el-table-column show-overflow-tooltip prop="ivt_qty" label="库存数量" :formatter="crud.formatNum3" />
|
||||||
@@ -140,6 +141,7 @@ export default {
|
|||||||
},
|
},
|
||||||
mixins: [presenter(), header(), crud()],
|
mixins: [presenter(), header(), crud()],
|
||||||
// 数据字典
|
// 数据字典
|
||||||
|
dicts: ['ST_INV_CP_IN_TYPE'],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
height: document.documentElement.clientHeight - 180 + 'px;',
|
height: document.documentElement.clientHeight - 180 + 'px;',
|
||||||
@@ -160,6 +162,9 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
formatBillType(row, column) {
|
||||||
|
return this.dict.label.ST_INV_CP_IN_TYPE[row.bill_type]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -88,6 +88,7 @@
|
|||||||
<el-table-column show-overflow-tooltip prop="sect_name" label="库区名称" />
|
<el-table-column show-overflow-tooltip prop="sect_name" label="库区名称" />
|
||||||
<el-table-column show-overflow-tooltip prop="struct_code" label="仓位编码" />
|
<el-table-column show-overflow-tooltip prop="struct_code" label="仓位编码" />
|
||||||
<el-table-column show-overflow-tooltip prop="struct_name" label="仓位名称" />
|
<el-table-column show-overflow-tooltip prop="struct_name" label="仓位名称" />
|
||||||
|
<el-table-column show-overflow-tooltip prop="bill_type" label="单据类型" :formatter="formatBillType" />
|
||||||
<el-table-column show-overflow-tooltip min-width="120" prop="material_code" label="物料编码" />
|
<el-table-column show-overflow-tooltip min-width="120" prop="material_code" label="物料编码" />
|
||||||
<el-table-column show-overflow-tooltip min-width="120" prop="material_name" label="物料名称" />
|
<el-table-column show-overflow-tooltip min-width="120" prop="material_name" label="物料名称" />
|
||||||
<el-table-column show-overflow-tooltip min-width="120" prop="material_spec" label="物料规格" />
|
<el-table-column show-overflow-tooltip min-width="120" prop="material_spec" label="物料规格" />
|
||||||
@@ -126,6 +127,7 @@ export default {
|
|||||||
},
|
},
|
||||||
mixins: [presenter(), header(), crud()],
|
mixins: [presenter(), header(), crud()],
|
||||||
// 数据字典
|
// 数据字典
|
||||||
|
dicts: ['ST_INV_BCP_IN_TYPE'],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
height: document.documentElement.clientHeight - 180 + 'px;',
|
height: document.documentElement.clientHeight - 180 + 'px;',
|
||||||
@@ -151,6 +153,9 @@ export default {
|
|||||||
this.crud.notify('导出成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
this.crud.notify('导出成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
formatBillType(row, column) {
|
||||||
|
return this.dict.label.ST_INV_BCP_IN_TYPE[row.bill_type]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user