rev:分配逻辑;todo:分配完更新单据还是载具?
This commit is contained in:
@@ -16,6 +16,11 @@ public class CodeUtil {
|
||||
ISysCodeRuleService service = SpringContextHolder.getBean(ISysCodeRuleService.class);
|
||||
RedissonUtils.lock(() -> code[0] = service.codeDemo("1",ruleCode), ruleCode, 1);
|
||||
return code[0];
|
||||
|
||||
}
|
||||
public static String codeView(String ruleCode) {
|
||||
final String[] code = {""};
|
||||
ISysCodeRuleService service = SpringContextHolder.getBean(ISysCodeRuleService.class);
|
||||
RedissonUtils.lock(() -> code[0] = service.codeDemo("0",ruleCode), ruleCode, 1);
|
||||
return code[0];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,27 +49,27 @@ public class StIvtStructattr implements Serializable {
|
||||
/**
|
||||
* 容量
|
||||
*/
|
||||
private BigDecimal capacity;
|
||||
private Integer capacity;
|
||||
|
||||
/**
|
||||
* 宽度
|
||||
*/
|
||||
private BigDecimal width;
|
||||
private Integer w;
|
||||
|
||||
/**
|
||||
* 高度
|
||||
*/
|
||||
private BigDecimal height;
|
||||
private Integer h;
|
||||
|
||||
/**
|
||||
* 深度
|
||||
* 深度(长度)
|
||||
*/
|
||||
private BigDecimal zdepth;
|
||||
private Integer l;
|
||||
|
||||
/**
|
||||
* 承受重量
|
||||
*/
|
||||
private BigDecimal weight;
|
||||
private Integer weight;
|
||||
|
||||
/**
|
||||
* 起始X坐标
|
||||
@@ -106,21 +106,6 @@ public class StIvtStructattr implements Serializable {
|
||||
*/
|
||||
private Integer block_num;
|
||||
|
||||
/**
|
||||
* 入库顺序
|
||||
*/
|
||||
private Integer in_order_seq;
|
||||
|
||||
/**
|
||||
* 出库库顺序
|
||||
*/
|
||||
private Integer out_order_seq;
|
||||
|
||||
/**
|
||||
* 放置类型
|
||||
*/
|
||||
private String placement_type;
|
||||
|
||||
/**
|
||||
* 超限货位关联的货位编号
|
||||
*/
|
||||
|
||||
@@ -32,7 +32,7 @@ public interface IBmVehicleInfoService extends IService<BmVehicleInfo> {
|
||||
* @param vehile_code
|
||||
* @return
|
||||
*/
|
||||
Map vehileInfo(String vehile_code);
|
||||
BmVehicleInfo vehileInfo(String vehile_code);
|
||||
|
||||
void updateVehicleMaterial(JSONObject vorm);
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.wms.base_manage.vehicle.service.dao;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
@@ -26,21 +27,20 @@ public class BmVehicleInfo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 载具标识
|
||||
*/
|
||||
@TableId
|
||||
private String storagevehicle_id;
|
||||
|
||||
/**
|
||||
* 载具编码
|
||||
*/
|
||||
private String storagevehicle_code;
|
||||
@TableId
|
||||
private String vehicle_code;
|
||||
|
||||
/**
|
||||
* 载具名称
|
||||
*/
|
||||
private String storagevehicle_name;
|
||||
private String vehicle_name;
|
||||
/**
|
||||
* 载具名称
|
||||
*/
|
||||
private String vehicle_type;
|
||||
|
||||
/**
|
||||
* 一维码
|
||||
@@ -57,26 +57,6 @@ public class BmVehicleInfo implements Serializable {
|
||||
*/
|
||||
private String rfid_code;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String create_id;
|
||||
|
||||
/**
|
||||
* 创建人姓名
|
||||
*/
|
||||
private String create_name;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private String create_time;
|
||||
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
private String update_id;
|
||||
|
||||
/**
|
||||
* 修改人姓名
|
||||
*/
|
||||
@@ -93,32 +73,28 @@ public class BmVehicleInfo implements Serializable {
|
||||
*/
|
||||
private Boolean is_used;
|
||||
|
||||
/**
|
||||
* 载具类型
|
||||
*/
|
||||
private String storagevehicle_type;
|
||||
|
||||
/**
|
||||
* 载具宽度
|
||||
*/
|
||||
private BigDecimal vehicle_width;
|
||||
|
||||
|
||||
/**
|
||||
* 载具重量(kg)
|
||||
*/
|
||||
private BigDecimal vehicle_weight;
|
||||
private Integer w;
|
||||
|
||||
|
||||
/**
|
||||
* 载具长度
|
||||
*/
|
||||
private BigDecimal vehicle_long;
|
||||
private Integer l;
|
||||
|
||||
/**
|
||||
* 载具高度
|
||||
*/
|
||||
private BigDecimal vehicle_height;
|
||||
private Integer h;
|
||||
|
||||
/**
|
||||
* 载具重量(kg)
|
||||
*/
|
||||
private Integer weight;
|
||||
|
||||
|
||||
/**
|
||||
* 载具是否超仓位
|
||||
@@ -133,7 +109,12 @@ public class BmVehicleInfo implements Serializable {
|
||||
/**
|
||||
* 外部标识
|
||||
*/
|
||||
private String ext_id;
|
||||
private JSONObject ext_json;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -15,5 +15,5 @@ import java.util.Map;
|
||||
*/
|
||||
public interface BmVehicleInfoMapper extends BaseMapper<BmVehicleInfo> {
|
||||
|
||||
Map vehileInfo(String vehicle_code);
|
||||
BmVehicleInfo vehileInfo(String vehicle_code);
|
||||
}
|
||||
|
||||
@@ -2,11 +2,9 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.nl.wms.base_manage.vehicle.service.dao.mapper.BmVehicleInfoMapper">
|
||||
|
||||
<select id="vehileInfo" resultType="java.util.Map">
|
||||
<select id="vehileInfo" resultType="org.nl.wms.base_manage.vehicle.service.dao.BmVehicleInfo">
|
||||
select *
|
||||
from md_pb_storagevehicleinfo
|
||||
left join md_pb_storagevehicleext
|
||||
on md_pb_storagevehicleinfo.storagevehicle_code = md_pb_storagevehicleext.storagevehicle_code
|
||||
where md_pb_storagevehicleinfo.storagevehicle_code = #{vehicle_code}
|
||||
and md_pb_storagevehicleinfo.is_delete = false
|
||||
</select>
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.domain.entity.PageQuery;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.base_manage.vehicle.service.IBmVehicleInfoService;
|
||||
@@ -36,28 +37,21 @@ import java.util.Map;
|
||||
@Service
|
||||
public class BmVehicleInfoServiceImpl extends ServiceImpl<BmVehicleInfoMapper, BmVehicleInfo> implements IBmVehicleInfoService {
|
||||
|
||||
/* @Autowired
|
||||
private MdPbStoragevehicleextServiceImpl storagevehicleextService;
|
||||
|
||||
@Autowired
|
||||
protected IMdMeMaterialbaseService iMdMeMaterialbaseService;*/
|
||||
|
||||
@Override
|
||||
public Map vehileInfo(String vehicle_code) {
|
||||
if(StringUtils.isEmpty(vehicle_code)){
|
||||
return new HashMap();
|
||||
}
|
||||
return this.baseMapper.vehileInfo(vehicle_code);
|
||||
public BmVehicleInfo vehileInfo(String vehicle_code) {
|
||||
return this.getOne(new QueryWrapper<BmVehicleInfo>().eq("vehicle_code",vehicle_code));
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONArray create(JSONObject map) {
|
||||
BmVehicleInfo one = this.getOne(new QueryWrapper<BmVehicleInfo>().eq("storagevehicle_code", map.getString("storagevehicle_code")));
|
||||
BmVehicleInfo one = this.getOne(new QueryWrapper<BmVehicleInfo>()
|
||||
.eq("vehicle_code", map.getString("vehicle_code")));
|
||||
if (!ObjectUtil.isEmpty(one)) {
|
||||
throw new BadRequestException("此载具已存在");
|
||||
}
|
||||
String code = "";
|
||||
switch (map.getString("storagevehicle_type")) {
|
||||
switch (map.getString("vehicle_type")) {
|
||||
case "00":
|
||||
code = "VEHICCLE_CODE_XMTPT";
|
||||
break;
|
||||
@@ -81,16 +75,14 @@ public class BmVehicleInfoServiceImpl extends ServiceImpl<BmVehicleInfoMapper, B
|
||||
int num = MapUtil.getInt(map, "num");
|
||||
for (int i = 0; i < num; i++) {
|
||||
BmVehicleInfo entity = new BmVehicleInfo();
|
||||
entity.setStoragevehicle_id(IdUtil.getStringId());
|
||||
/*entity.setStoragevehicle_code(CodeUtil.getNewCode(code));*/
|
||||
entity.setStoragevehicle_name(entity.getStoragevehicle_code());
|
||||
entity.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
entity.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
entity.setCreate_time(DateUtil.now());
|
||||
entity.setVehicle_code(CodeUtil.getNewCode(code));
|
||||
entity.setVehicle_name(entity.getVehicle_name());
|
||||
entity.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
entity.setUpdate_name(DateUtil.now());
|
||||
entity.setIs_used(map.getString("is_used").equals("1"));
|
||||
entity.setStoragevehicle_type(map.getString("storagevehicle_type"));
|
||||
entity.setVehicle_type(map.getString("vehicle_type"));
|
||||
this.save(entity);
|
||||
resultCodeArr.add(entity.getStoragevehicle_code());
|
||||
resultCodeArr.add(entity.getVehicle_code());
|
||||
}
|
||||
return resultCodeArr;
|
||||
}
|
||||
@@ -168,7 +160,6 @@ public class BmVehicleInfoServiceImpl extends ServiceImpl<BmVehicleInfoMapper, B
|
||||
public void changeActive(JSONObject json) {
|
||||
|
||||
BmVehicleInfo entity = json.toJavaObject(BmVehicleInfo.class);
|
||||
entity.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
entity.setUpdate_time(DateUtil.now());
|
||||
entity.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
this.updateById(entity);
|
||||
@@ -198,14 +189,8 @@ public class BmVehicleInfoServiceImpl extends ServiceImpl<BmVehicleInfoMapper, B
|
||||
break;
|
||||
}
|
||||
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
map.put("code", term);
|
||||
map.put("flag", "0");
|
||||
// GenCodeServiceImpl genCodeService = new GenCodeServiceImpl();
|
||||
// String value = genCodeService.codeDemo(map);
|
||||
|
||||
JSONObject json = new JSONObject();
|
||||
// json.put("value", value);
|
||||
json.put("value", CodeUtil.codeView(term));
|
||||
return json;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.nl.common.domain.entity.BaseQuery;
|
||||
import org.nl.common.domain.entity.QParam;
|
||||
import org.nl.common.enums.QueryTEnum;
|
||||
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
|
||||
|
||||
import java.io.Serializable;
|
||||
@@ -24,4 +26,12 @@ public class FormStrucQuery extends BaseQuery<BmFormStruc> {
|
||||
|
||||
private String form_type;
|
||||
|
||||
private String search;
|
||||
|
||||
|
||||
@Override
|
||||
public void paramMapping() {
|
||||
this.doP.put("search", QParam.builder().k(new String[]{"form_name"}).type(QueryTEnum.LK).build());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,11 +2,15 @@ package org.nl.wms.decision_manage.handler.impl.base;
|
||||
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.nl.common.utils.ListOf;
|
||||
import org.nl.common.utils.SpringContextHolder;
|
||||
import org.nl.wms.base_manage.struct.service.dao.StIvtStructattr;
|
||||
import org.nl.wms.base_manage.vehicle.service.IBmVehicleInfoService;
|
||||
import org.nl.wms.base_manage.vehicle.service.dao.BmVehicleInfo;
|
||||
import org.nl.wms.base_manage.vehicleext.service.IMdPbStoragevehicleextService;
|
||||
import org.nl.wms.base_manage.vehicleext.service.dao.MdPbStoragevehicleext;
|
||||
import org.nl.wms.decision_manage.handler.Decisioner;
|
||||
@@ -20,17 +24,17 @@ import org.springframework.stereotype.Service;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/4/6 16:18
|
||||
* 货位限位策略:限高,限宽,双货位
|
||||
* 货位限位策略:限高,限宽,限长,限重
|
||||
*/
|
||||
@Service("limitStorage")
|
||||
public class LimitStorageRuleHandler extends Decisioner<StIvtStructattr,String> {
|
||||
//每个策略的配置信息
|
||||
private static StStrategyConfig Strategy_Config;
|
||||
public class LimitStorageRuleHandler extends Decisioner<StIvtStructattr,StIvtIostorinvdtlIn> {
|
||||
|
||||
/**
|
||||
* 出入库明细服务
|
||||
*/
|
||||
@@ -41,7 +45,7 @@ public class LimitStorageRuleHandler extends Decisioner<StIvtStructattr,String>
|
||||
* 载具扩展属性服务服务
|
||||
*/
|
||||
@Autowired
|
||||
private IMdPbStoragevehicleextService iMdPbStoragevehicleextService;
|
||||
private IBmVehicleInfoService bmVehicleInfoService;
|
||||
|
||||
/**
|
||||
* 货位限位策略:根据货位的长宽高
|
||||
@@ -54,32 +58,30 @@ public class LimitStorageRuleHandler extends Decisioner<StIvtStructattr,String>
|
||||
* @return List<StIvtStructattr> :仓位集合
|
||||
*/
|
||||
@Override
|
||||
public List<StIvtStructattr> handler(List<StIvtStructattr> list, String param) {
|
||||
public List<StIvtStructattr> handler(List<StIvtStructattr> list, StIvtIostorinvdtlIn param) {
|
||||
// 判断仓位是否为空
|
||||
if (ObjectUtil.isEmpty(list)) {
|
||||
throw new BadRequestException("仓位集合为空!");
|
||||
}
|
||||
|
||||
// 判断策略类型
|
||||
JSONObject jsonParam = JSONObject.parseObject(param, JSONObject.class);
|
||||
|
||||
List<StIvtStructattr> resultList = new ArrayList<>();
|
||||
|
||||
switch (Strategy_Config.getStrategy_type()) {
|
||||
case "1":
|
||||
// 入库策略
|
||||
resultList = inHandler(list,jsonParam);
|
||||
break;
|
||||
case "2":
|
||||
// 出库策略
|
||||
resultList = outHandler(list,jsonParam);
|
||||
break;
|
||||
case "3":
|
||||
// 通用策略
|
||||
break;
|
||||
default:
|
||||
throw new BadRequestException("策略类型错误!");
|
||||
String vehicleCode = param.getVehicle_code();
|
||||
BmVehicleInfo vehileInfo = bmVehicleInfoService.vehileInfo(vehicleCode);
|
||||
if (vehileInfo==null){
|
||||
throw new BadRequestException("当前载具信息不存在:"+vehicleCode+"!");
|
||||
}
|
||||
List<StIvtStructattr> resultList = inHandler(list,vehileInfo);
|
||||
|
||||
|
||||
// switch (Strategy_Config.getStrategy_type()) {
|
||||
// case "1":
|
||||
// // 入库策略
|
||||
// break;
|
||||
// case "2":
|
||||
// // 出库策略
|
||||
// resultList = outHandler(list,jsonParam);
|
||||
// break;
|
||||
// case "3":
|
||||
// // 通用策略
|
||||
// break;
|
||||
// default:
|
||||
// throw new BadRequestException("策略类型错误!");
|
||||
return resultList;
|
||||
}
|
||||
|
||||
@@ -89,15 +91,30 @@ public class LimitStorageRuleHandler extends Decisioner<StIvtStructattr,String>
|
||||
* @param jsonParam:materialId :物料标识、width: 宽度、 height:高度、zdepth:深度
|
||||
* @return List<StIvtStructattr> :仓位集合
|
||||
*/
|
||||
private List<StIvtStructattr> inHandler(List<StIvtStructattr> attrList, JSONObject jsonParam) {
|
||||
|
||||
private List<StIvtStructattr> inHandler(List<StIvtStructattr> attrList, BmVehicleInfo vehicle) {
|
||||
//限制条件:限制哪些
|
||||
List<String> limits = JSONArray.parseArray(strategyConfig.getParam(), String.class);
|
||||
Predicate<StIvtStructattr> predicate = stIvtStructattr -> {
|
||||
Boolean result = Boolean.TRUE;
|
||||
if (limits.contains("h")){
|
||||
result = result && stIvtStructattr.getH()>=vehicle.getH();
|
||||
}
|
||||
if (limits.contains("w")){
|
||||
result = result && stIvtStructattr.getW()>=vehicle.getW();
|
||||
}
|
||||
if (limits.contains("l")){
|
||||
result = result && stIvtStructattr.getL()>=vehicle.getL();
|
||||
}
|
||||
if (limits.contains("weight")){
|
||||
result = result && stIvtStructattr.getWeight()>=vehicle.getWeight();
|
||||
}
|
||||
return result;
|
||||
};
|
||||
// 判断长宽高是否符合要求
|
||||
return attrList.stream()
|
||||
.filter(row -> row.getWidth().doubleValue() <= jsonParam.getDoubleValue("width") &&
|
||||
row.getHeight().doubleValue() <= jsonParam.getDoubleValue("height") &&
|
||||
row.getZdepth().doubleValue() <= jsonParam.getDoubleValue("zdepth")
|
||||
)
|
||||
List<StIvtStructattr> collect = attrList.stream()
|
||||
.filter(predicate)
|
||||
.collect(Collectors.toList());
|
||||
return collect;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -106,59 +123,60 @@ public class LimitStorageRuleHandler extends Decisioner<StIvtStructattr,String>
|
||||
* @param jsonParam:iostorinvdtlId : 出入库明细标识(此方法只根据时间匹配)
|
||||
* @return List<StIvtStructattr> :需出库仓位集合
|
||||
*/
|
||||
private List<StIvtStructattr> outHandler(List<StIvtStructattr> attrList, JSONObject jsonParam) {
|
||||
// private List<StIvtStructattr> outHandler(List<StIvtStructattr> attrList, JSONObject jsonParam) {
|
||||
//
|
||||
// // 查询对应的出入库明细
|
||||
// StIvtIostorinvdtlIn dtlDao = iStIvtIostorinvdtlService.getById(jsonParam.getString("iostorinvdtlId"));
|
||||
//
|
||||
// // 查询传入仓位物料中的数量是否满足明细中的数量
|
||||
// List<String> vehicleCodeIn = attrList.stream()
|
||||
// .map(StIvtStructattr::getVehicle_code)
|
||||
// .distinct()
|
||||
// .collect(Collectors.toList());
|
||||
//
|
||||
// // 查询对应的载具物料
|
||||
// List<MdPbStoragevehicleext> extList = iMdPbStoragevehicleextService.list(
|
||||
// new QueryWrapper<MdPbStoragevehicleext>().lambda()
|
||||
// .in(MdPbStoragevehicleext::getStoragevehicle_code, vehicleCodeIn)
|
||||
// );
|
||||
//
|
||||
// double attrQty = extList.stream()
|
||||
// .map(MdPbStoragevehicleext::getQty)
|
||||
// .reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||
// .doubleValue();
|
||||
//
|
||||
// if (dtlDao.getUnassign_qty().doubleValue() > attrQty) {
|
||||
// // 说明不满足所需重量则全部返回
|
||||
// return attrList;
|
||||
// }
|
||||
//
|
||||
// // 需返回仓位物料集合
|
||||
// List<StIvtStructattr> resultList = new ArrayList<>();
|
||||
// // 满足所需数量: 根据巷道进行平均分配
|
||||
// double unAssingQty = dtlDao.getUnassign_qty().doubleValue();
|
||||
//
|
||||
// while (unAssingQty > 0) {
|
||||
//
|
||||
// // 添加需返回的仓位物料
|
||||
// StIvtStructattr attrDao = attrList.get(0);
|
||||
// resultList.add(attrDao);
|
||||
//
|
||||
// // 减去未分配重量
|
||||
// MdPbStoragevehicleext extDao = extList.stream()
|
||||
// .filter(row -> row.getStoragevehicle_code().equals(attrDao.getVehicle_code()))
|
||||
// .findFirst().orElse(null);
|
||||
//
|
||||
// if (ObjectUtil.isEmpty(extDao)) {
|
||||
// throw new BadRequestException("未查询到载具对应的物料【"+attrDao.getVehicle_code()+"】");
|
||||
// }
|
||||
//
|
||||
// unAssingQty = NumberUtil.sub(unAssingQty,extDao.getQty().doubleValue());
|
||||
//
|
||||
// // 移出此仓位物料,方便下一轮进行匹配
|
||||
// attrList.remove(attrDao);
|
||||
// }
|
||||
//
|
||||
// return resultList;
|
||||
// }
|
||||
|
||||
// 查询对应的出入库明细
|
||||
StIvtIostorinvdtlIn dtlDao = iStIvtIostorinvdtlService.getById(jsonParam.getString("iostorinvdtlId"));
|
||||
|
||||
// 查询传入仓位物料中的数量是否满足明细中的数量
|
||||
List<String> vehicleCodeIn = attrList.stream()
|
||||
.map(StIvtStructattr::getVehicle_code)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 查询对应的载具物料
|
||||
List<MdPbStoragevehicleext> extList = iMdPbStoragevehicleextService.list(
|
||||
new QueryWrapper<MdPbStoragevehicleext>().lambda()
|
||||
.in(MdPbStoragevehicleext::getStoragevehicle_code, vehicleCodeIn)
|
||||
);
|
||||
|
||||
double attrQty = extList.stream()
|
||||
.map(MdPbStoragevehicleext::getQty)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||
.doubleValue();
|
||||
|
||||
if (dtlDao.getUnassign_qty().doubleValue() > attrQty) {
|
||||
// 说明不满足所需重量则全部返回
|
||||
return attrList;
|
||||
}
|
||||
|
||||
// 需返回仓位物料集合
|
||||
List<StIvtStructattr> resultList = new ArrayList<>();
|
||||
// 满足所需数量: 根据巷道进行平均分配
|
||||
double unAssingQty = dtlDao.getUnassign_qty().doubleValue();
|
||||
|
||||
while (unAssingQty > 0) {
|
||||
|
||||
// 添加需返回的仓位物料
|
||||
StIvtStructattr attrDao = attrList.get(0);
|
||||
resultList.add(attrDao);
|
||||
|
||||
// 减去未分配重量
|
||||
MdPbStoragevehicleext extDao = extList.stream()
|
||||
.filter(row -> row.getStoragevehicle_code().equals(attrDao.getVehicle_code()))
|
||||
.findFirst().orElse(null);
|
||||
|
||||
if (ObjectUtil.isEmpty(extDao)) {
|
||||
throw new BadRequestException("未查询到载具对应的物料【"+attrDao.getVehicle_code()+"】");
|
||||
}
|
||||
|
||||
unAssingQty = NumberUtil.sub(unAssingQty,extDao.getQty().doubleValue());
|
||||
|
||||
// 移出此仓位物料,方便下一轮进行匹配
|
||||
attrList.remove(attrDao);
|
||||
}
|
||||
|
||||
return resultList;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.function.ToIntFunction;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/*
|
||||
@@ -29,7 +30,7 @@ import java.util.stream.Collectors;
|
||||
* 就近放置策略:根据物料ABC类区分
|
||||
*/
|
||||
@Service("nearby")
|
||||
public class NearbyRuleHandler extends Decisioner<StIvtStructattr,String> {
|
||||
public class NearbyRuleHandler extends Decisioner<StIvtStructattr,StIvtIostorinvdtlIn> {
|
||||
//每个策略的配置信息
|
||||
private static StStrategyConfig stStrategyConfig;
|
||||
/**
|
||||
@@ -55,33 +56,14 @@ public class NearbyRuleHandler extends Decisioner<StIvtStructattr,String> {
|
||||
* @return List<StIvtStructattr> :仓位集合
|
||||
*/
|
||||
@Override
|
||||
public List<StIvtStructattr> handler(List<StIvtStructattr> list, String param) {
|
||||
public List<StIvtStructattr> handler(List<StIvtStructattr> list, StIvtIostorinvdtlIn param) {
|
||||
// 判断仓位是否为空
|
||||
if (ObjectUtil.isEmpty(list)) {
|
||||
throw new BadRequestException("仓位集合为空!");
|
||||
}
|
||||
|
||||
// 判断策略类型
|
||||
JSONObject jsonParam = JSONObject.parseObject(param, JSONObject.class);
|
||||
|
||||
List<StIvtStructattr> resultList = new ArrayList<>();
|
||||
|
||||
switch (jsonParam.getString("ioType")) {
|
||||
case "1":
|
||||
// 入库策略
|
||||
resultList = inHandler(list,jsonParam);
|
||||
break;
|
||||
case "2":
|
||||
// 出库策略
|
||||
resultList = outHandler(list,jsonParam);
|
||||
break;
|
||||
case "3":
|
||||
// 通用策略
|
||||
break;
|
||||
default:
|
||||
throw new BadRequestException("策略类型错误!");
|
||||
}
|
||||
return resultList;
|
||||
list.sort(Comparator.comparingInt(i -> i.getRow_num()+i.getCol_num()+i.getLayer_num()+i.getBlock_num()));
|
||||
//就近分配区分出库还是入库策略
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -92,9 +74,7 @@ public class NearbyRuleHandler extends Decisioner<StIvtStructattr,String> {
|
||||
*/
|
||||
private List<StIvtStructattr> inHandler(List<StIvtStructattr> attrList, JSONObject jsonParam) {
|
||||
|
||||
return attrList.stream()
|
||||
.sorted(Comparator.comparing(StIvtStructattr::getIn_order_seq))
|
||||
.collect(Collectors.toList());
|
||||
return attrList;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -106,9 +86,6 @@ public class NearbyRuleHandler extends Decisioner<StIvtStructattr,String> {
|
||||
private List<StIvtStructattr> outHandler(List<StIvtStructattr> attrList, JSONObject jsonParam) {
|
||||
|
||||
// 先进行顺序排序
|
||||
attrList = attrList.stream()
|
||||
.sorted(Comparator.comparing(StIvtStructattr::getIn_order_seq))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 查询对应的出入库明细
|
||||
StIvtIostorinvdtlIn dtlDao = iStIvtIostorinvdtlService.getById(jsonParam.getString("iostorinvdtlId"));
|
||||
|
||||
@@ -45,7 +45,7 @@ public class BpmnJSONConverter {
|
||||
List<JSONObject> list = nodes.toJavaList(JSONObject.class);
|
||||
Iterator<JSONObject> iterator = list.iterator();
|
||||
while(iterator.hasNext()){
|
||||
JSONObject node = (JSONObject)iterator.next();
|
||||
JSONObject node = iterator.next();
|
||||
iterator.remove();
|
||||
Node_Converter.get(node.getString("type")).convertToBpmnModel(iterator, node,bpmnModel);
|
||||
|
||||
@@ -57,168 +57,5 @@ public class BpmnJSONConverter {
|
||||
Node_Converter.get("sequenceFlow").convertToBpmnModel(iterator, edge,bpmnModel);
|
||||
}
|
||||
return bpmnModel;
|
||||
//流程线
|
||||
// JSONArray edges = model_json.getJSONArray("edges");
|
||||
// model.setStartEventFormTypes(startEventFormTypes);
|
||||
// model.setUserTaskFormTypes(userTaskFormTypes);
|
||||
// try {
|
||||
// Process activeProcess = new Process();
|
||||
// List<SubProcess> activeSubProcessList = new ArrayList<>();
|
||||
// while (xtr.hasNext()) {
|
||||
// try {
|
||||
// xtr.next();
|
||||
// } catch (Exception e) {
|
||||
// LOGGER.debug("Error reading XML document", e);
|
||||
// throw new XMLException("Error reading XML", e);
|
||||
// }
|
||||
//
|
||||
// if (xtr.isEndElement() && (ELEMENT_SUBPROCESS.equals(xtr.getLocalName()) ||
|
||||
// ELEMENT_TRANSACTION.equals(xtr.getLocalName()) ||
|
||||
// ELEMENT_ADHOC_SUBPROCESS.equals(xtr.getLocalName()))) {
|
||||
//
|
||||
// activeSubProcessList.remove(activeSubProcessList.size() - 1);
|
||||
// }
|
||||
//
|
||||
// if (!xtr.isStartElement()) {
|
||||
// continue;
|
||||
// }
|
||||
//
|
||||
// if (ELEMENT_DEFINITIONS.equals(xtr.getLocalName())) {
|
||||
// definitionsParser.parse(xtr, model);
|
||||
//
|
||||
// } else if (ELEMENT_RESOURCE.equals(xtr.getLocalName())) {
|
||||
// resourceParser.parse(xtr, model);
|
||||
//
|
||||
// } else if (ELEMENT_SIGNAL.equals(xtr.getLocalName())) {
|
||||
// signalParser.parse(xtr, model);
|
||||
//
|
||||
// } else if (ELEMENT_MESSAGE.equals(xtr.getLocalName())) {
|
||||
// messageParser.parse(xtr, model);
|
||||
//
|
||||
// } else if (ELEMENT_ERROR.equals(xtr.getLocalName())) {
|
||||
//
|
||||
// if (StringUtils.isNotEmpty(xtr.getAttributeValue(null, ATTRIBUTE_ID))) {
|
||||
// model.addError(xtr.getAttributeValue(null, ATTRIBUTE_ID), xtr.getAttributeValue(null, ATTRIBUTE_ERROR_CODE));
|
||||
// }
|
||||
//
|
||||
// } else if (ELEMENT_ESCALATION.equals(xtr.getLocalName())) {
|
||||
//
|
||||
// if (StringUtils.isNotEmpty(xtr.getAttributeValue(null, ATTRIBUTE_ID))) {
|
||||
// model.addEscalation(xtr.getAttributeValue(null, ATTRIBUTE_ID), xtr.getAttributeValue(null, ATTRIBUTE_ESCALATION_CODE),
|
||||
// xtr.getAttributeValue(null, ATTRIBUTE_NAME));
|
||||
// }
|
||||
//
|
||||
// } else if (ELEMENT_IMPORT.equals(xtr.getLocalName())) {
|
||||
// importParser.parse(xtr, model);
|
||||
//
|
||||
// } else if (ELEMENT_ITEM_DEFINITION.equals(xtr.getLocalName())) {
|
||||
// itemDefinitionParser.parse(xtr, model);
|
||||
//
|
||||
// } else if (ELEMENT_DATA_STORE.equals(xtr.getLocalName())) {
|
||||
// dataStoreParser.parse(xtr, model);
|
||||
//
|
||||
// } else if (ELEMENT_INTERFACE.equals(xtr.getLocalName())) {
|
||||
// interfaceParser.parse(xtr, model);
|
||||
//
|
||||
// } else if (ELEMENT_IOSPECIFICATION.equals(xtr.getLocalName())) {
|
||||
// ioSpecificationParser.parseChildElement(xtr, activeProcess, model);
|
||||
//
|
||||
// } else if (ELEMENT_PARTICIPANT.equals(xtr.getLocalName())) {
|
||||
// participantParser.parse(xtr, model);
|
||||
//
|
||||
// } else if (ELEMENT_MESSAGE_FLOW.equals(xtr.getLocalName())) {
|
||||
// messageFlowParser.parse(xtr, model);
|
||||
//
|
||||
// } else if (ELEMENT_PROCESS.equals(xtr.getLocalName())) {
|
||||
//
|
||||
// Process process = processParser.parse(xtr, model);
|
||||
// if (process != null) {
|
||||
// activeProcess = process;
|
||||
// // copy over anything already parsed
|
||||
// process.setAttributes(activeProcess.getAttributes());
|
||||
// process.setDocumentation(activeProcess.getDocumentation());
|
||||
// process.setExtensionElements(activeProcess.getExtensionElements());
|
||||
// }
|
||||
//
|
||||
// } else if (ELEMENT_POTENTIAL_STARTER.equals(xtr.getLocalName())) {
|
||||
// potentialStarterParser.parse(xtr, activeProcess);
|
||||
//
|
||||
// } else if (ELEMENT_LANE.equals(xtr.getLocalName())) {
|
||||
// laneParser.parse(xtr, activeProcess, model);
|
||||
//
|
||||
// } else if (ELEMENT_DOCUMENTATION.equals(xtr.getLocalName())) {
|
||||
//
|
||||
// BaseElement parentElement = null;
|
||||
// if (!activeSubProcessList.isEmpty()) {
|
||||
// parentElement = activeSubProcessList.get(activeSubProcessList.size() - 1);
|
||||
// } else if (activeProcess != null) {
|
||||
// parentElement = activeProcess;
|
||||
// }
|
||||
// documentationParser.parseChildElement(xtr, parentElement, model);
|
||||
//
|
||||
// } else if (activeProcess == null && ELEMENT_TEXT_ANNOTATION.equals(xtr.getLocalName())) {
|
||||
// String elementId = xtr.getAttributeValue(null, ATTRIBUTE_ID);
|
||||
// TextAnnotation textAnnotation = (TextAnnotation) new TextAnnotationXMLConverter().convertXMLToElement(xtr, model);
|
||||
// textAnnotation.setId(elementId);
|
||||
// model.getGlobalArtifacts().add(textAnnotation);
|
||||
//
|
||||
// } else if (activeProcess == null && ELEMENT_ASSOCIATION.equals(xtr.getLocalName())) {
|
||||
// String elementId = xtr.getAttributeValue(null, ATTRIBUTE_ID);
|
||||
// Association association = (Association) new AssociationXMLConverter().convertXMLToElement(xtr, model);
|
||||
// association.setId(elementId);
|
||||
// model.getGlobalArtifacts().add(association);
|
||||
//
|
||||
// } else if (ELEMENT_EXTENSIONS.equals(xtr.getLocalName())) {
|
||||
// extensionElementsParser.parse(xtr, activeSubProcessList, activeProcess, model);
|
||||
//
|
||||
// } else if (ELEMENT_SUBPROCESS.equals(xtr.getLocalName()) || ELEMENT_TRANSACTION.equals(xtr.getLocalName()) || ELEMENT_ADHOC_SUBPROCESS.equals(xtr.getLocalName())) {
|
||||
// subProcessParser.parse(xtr, activeSubProcessList, activeProcess);
|
||||
//
|
||||
// } else if (ELEMENT_COMPLETION_CONDITION.equals(xtr.getLocalName())) {
|
||||
// if (!activeSubProcessList.isEmpty()) {
|
||||
// SubProcess subProcess = activeSubProcessList.get(activeSubProcessList.size() - 1);
|
||||
// if (subProcess instanceof AdhocSubProcess) {
|
||||
// AdhocSubProcess adhocSubProcess = (AdhocSubProcess) subProcess;
|
||||
// adhocSubProcess.setCompletionCondition(xtr.getElementText());
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// } else if (ELEMENT_DI_SHAPE.equals(xtr.getLocalName())) {
|
||||
// bpmnShapeParser.parse(xtr, model);
|
||||
//
|
||||
// } else if (ELEMENT_DI_EDGE.equals(xtr.getLocalName())) {
|
||||
// bpmnEdgeParser.parse(xtr, model);
|
||||
//
|
||||
// } else {
|
||||
//
|
||||
// if (!activeSubProcessList.isEmpty() && ELEMENT_MULTIINSTANCE.equalsIgnoreCase(xtr.getLocalName())) {
|
||||
// multiInstanceParser.parseChildElement(xtr, activeSubProcessList.get(activeSubProcessList.size() - 1), model);
|
||||
//
|
||||
// } else if (convertersToBpmnMap.containsKey(xtr.getLocalName())) {
|
||||
// if (activeProcess != null) {
|
||||
// BaseBpmnXMLConverter converter = convertersToBpmnMap.get(xtr.getLocalName());
|
||||
// converter.convertToBpmnModel(xtr, model, activeProcess, activeSubProcessList);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// for (Process process : model.getProcesses()) {
|
||||
// for (Pool pool : model.getPools()) {
|
||||
// if (process.getId().equals(pool.getProcessRef())) {
|
||||
// pool.setExecutable(process.isExecutable());
|
||||
// }
|
||||
// }
|
||||
// processFlowElements(process.getFlowElements(), process);
|
||||
// }
|
||||
//
|
||||
// } catch (XMLException e) {
|
||||
// throw e;
|
||||
//
|
||||
// } catch (Exception e) {
|
||||
// LOGGER.error("Error processing BPMN document", e);
|
||||
// throw new XMLException("Error processing BPMN document", e);
|
||||
// }
|
||||
// return model;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ public class StartEventConverter extends BaseNodeConverter {
|
||||
start.setName(properties.getString("name"));
|
||||
start.setDocumentation(properties.getString("documentation"));
|
||||
//设置触发事件
|
||||
start.setPassNode(true);
|
||||
start.setPassNode(properties.getBoolean("passNode"));
|
||||
start.setExecutionListeners(null);
|
||||
start.setSkipExpression(properties.getString("skipExpression"));
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ public abstract class FlowNodeActivityBehavior<T> {
|
||||
iActRuExecutionService.update(new UpdateWrapper<ActRuExecution>()
|
||||
.eq("proc_inst_id",entity.getProc_inst_id())
|
||||
.set("status", StatusEnum.FLOW_STATUS.code("暂停"))
|
||||
.set("remark","流程节点:"+entity.getActivityName()+"执行错误"+ex.getMessage()));
|
||||
.set("remark","节点:"+entity.getActivityName()+":异常:"+ex.getMessage()));
|
||||
}
|
||||
}
|
||||
private final void leaveActivity(ExecutionEntity<T> entity) {
|
||||
|
||||
@@ -72,8 +72,7 @@ public class SubProcessActivityBehavior extends FlowNodeActivityBehavior<JSONObj
|
||||
subEntity.setForm_type(entity.getForm_type());
|
||||
subEntity.setDeploymentId(entity.getDeploymentId());
|
||||
subEntity.setCurrentFlowElement(startEvent);
|
||||
new JSONObject(form);
|
||||
subEntity.setT(entity.getT());
|
||||
subEntity.setT(o);
|
||||
//在endEvent中有个所有子流程结束的判断:如果判断成功会触发父流程:startEvent暂时通过等待处理防止自动流程导致endEvent判断出错
|
||||
commandExecutor.execute(new StartInstanceCmd(), subEntity);
|
||||
}).exceptionally(throwable -> {
|
||||
|
||||
@@ -64,21 +64,17 @@ public class DecisionHandler extends TypeHandler<JSONObject,JSONObject> {
|
||||
if (CollectionUtils.isEmpty(list)){
|
||||
throw new BadRequestException("当前分配策略无可用货位");
|
||||
}
|
||||
//跟新货位载具
|
||||
String struct_code = list.get(0).getStruct_code();
|
||||
//更新仓位,更新数据
|
||||
iStIvtStructattrService.update(new UpdateWrapper<StIvtStructattr>()
|
||||
.set("vahicle_code",struct_code)
|
||||
.eq("struct_code",struct_code));
|
||||
// iPmFormDataService.updateById(iostorinvdtlIn);
|
||||
stIvtIostorinvdtlInService.updateById(iostorinvdtlIn);
|
||||
item_json.getJSONObject("form_data").put("point_code2", struct_code);
|
||||
}
|
||||
//跟新货位载具
|
||||
System.out.println(list);
|
||||
// JSONArray item = entity.getJSONArray("item");
|
||||
// for (int i = 0; i < item.size(); i++) {
|
||||
//
|
||||
// }
|
||||
String struct_code = list.get(0).getStruct_code();
|
||||
//更新仓位,更新数据
|
||||
iStIvtStructattrService.update(new UpdateWrapper<StIvtStructattr>()
|
||||
.set("vehicle_code",iostorinvdtlIn.getVehicle_code())
|
||||
.eq("struct_code",struct_code));
|
||||
stIvtIostorinvdtlInService.update(new UpdateWrapper<StIvtIostorinvdtlIn>()
|
||||
.set("vehicle_code",struct_code)
|
||||
.eq("id",iostorinvdtlIn.getId()));
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ spring:
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||
username: ${DB_USER:root}
|
||||
password: ${DB_PWD:password}
|
||||
password: ${DB_PWD:123456}
|
||||
|
||||
# 初始连接数
|
||||
initial-size: 5
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
ENV = 'development'
|
||||
|
||||
# 接口地址
|
||||
VUE_APP_BASE_API = 'http://192.168.10.24:8012'
|
||||
VUE_APP_WS_API = 'ws://192.168.10.24:8012'
|
||||
VUE_APP_BASE_API = 'http://127.0.0.1:8012'
|
||||
VUE_APP_WS_API = 'ws://127.0.0.1:8012'
|
||||
|
||||
# 是否启用 babel-plugin-dynamic-import-node插件
|
||||
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
window.g = {
|
||||
dev: {
|
||||
VUE_APP_BASE_API: '/'
|
||||
VUE_APP_BASE_API: 'http://127.0.0.1:8012'
|
||||
},
|
||||
prod: {
|
||||
VUE_APP_BASE_API: 'http://192.168.46.5:8012'
|
||||
VUE_APP_BASE_API: 'http://127.0.0.1:8012'
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
>
|
||||
<el-form-item label="载具类型">
|
||||
<el-select
|
||||
v-model="query.storagevehicle_type"
|
||||
v-model="query.vehicle_type"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="请选择"
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
<el-form-item label="载具号">
|
||||
<el-input
|
||||
v-model="query.storagevehicle_code_begin"
|
||||
v-model="query.vehicle_code_begin"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="起始载具号"
|
||||
@@ -41,7 +41,7 @@
|
||||
/>
|
||||
-
|
||||
<el-input
|
||||
v-model="query.storagevehicle_code_end"
|
||||
v-model="query.vehicle_code_end"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="结束载具号"
|
||||
@@ -77,7 +77,7 @@
|
||||
>
|
||||
<el-form ref="form" :model="materialForm" :rules="rules" size="mini" label-width="110px">
|
||||
<el-form-item label="载具编码" prop="vehicle_code">
|
||||
<el-input v-model="materialForm.storagevehicle_code" disabled style="width: 370px;" />
|
||||
<el-input v-model="materialForm.vehicle_code" disabled style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="物料编码" prop="material_code">
|
||||
<template slot-scope="scope">
|
||||
@@ -109,9 +109,9 @@
|
||||
@close="materiValueCancel()"
|
||||
>
|
||||
<el-form ref="form" :model="updateForm" :rules="rules" size="mini" label-width="110px">
|
||||
<el-form-item label="载具编号" prop="storagevehicle_code">
|
||||
<el-form-item label="载具编号" prop="vehicle_code">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="updateForm.storagevehicle_code" clearable />
|
||||
<el-input v-model="updateForm.vehicle_code" clearable />
|
||||
</template>
|
||||
</el-form-item>
|
||||
<el-form-item label="载具重量(g)" prop="vehicle_weight">
|
||||
@@ -164,9 +164,9 @@
|
||||
width="450px"
|
||||
>
|
||||
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="100px">
|
||||
<el-form-item label="载具类型" prop="storagevehicle_type">
|
||||
<el-form-item label="载具类型" prop="vehicle_type">
|
||||
<el-select
|
||||
v-model="form.storagevehicle_type"
|
||||
v-model="form.vehicle_type"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="请选择"
|
||||
@@ -182,8 +182,8 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<br>
|
||||
<el-form-item label="起始载具号" prop="storagevehicle_code">
|
||||
<el-input v-model="form.storagevehicle_code" :disabled="true" style="width: 250px;" />
|
||||
<el-form-item label="起始载具号" prop="vehicle_code">
|
||||
<el-input v-model="form.vehicle_code" :disabled="true" style="width: 250px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="载具数量" prop="num">
|
||||
<el-input-number v-model="form.num" :precision="0" style="width: 150px;" />
|
||||
@@ -209,18 +209,17 @@
|
||||
@selection-change="crud.selectionChangeHandler"
|
||||
>
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column v-if="false" prop="storagevehicle_id" label="载具标识" />
|
||||
<el-table-column prop="storagevehicle_type" label="载具类型">
|
||||
<template slot-scope="scope">
|
||||
{{ dict.label.storagevehicle_type[scope.row.storagevehicle_type] }}
|
||||
{{ dict.label.storagevehicle_type[scope.row.vehicle_type] }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="storagevehicle_code" label="载具编码">
|
||||
<el-table-column prop="vehicle_code" label="载具编码">
|
||||
<template slot-scope="scope">
|
||||
<el-link type="warning" @click="toView(scope.row.storagevehicle_code)">{{ scope.row.storagevehicle_code }}</el-link>
|
||||
<el-link type="warning" @click="toView(scope.row.vehicle_code)">{{ scope.row.vehicle_code }}</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="storagevehicle_name" label="载具名称" />
|
||||
<el-table-column prop="vehicle_name" label="载具名称" />
|
||||
<el-table-column prop="vehicle_weight" label="载具单重(g)" />
|
||||
<el-table-column label="是否启用" align="center" prop="is_used">
|
||||
<template slot-scope="scope">
|
||||
@@ -232,8 +231,8 @@
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="create_name" label="创建人" />
|
||||
<el-table-column prop="create_time" label="创建时间" />
|
||||
<el-table-column prop="update_name" label="创建人" />
|
||||
<el-table-column prop="update_time" label="创建时间" />
|
||||
<el-table-column
|
||||
v-permission="['admin','storagevehicleinfo:edit','storagevehicleinfo:del']"
|
||||
label="操作"
|
||||
@@ -276,27 +275,23 @@ import { getLodop } from '@/assets/js/lodop/LodopFuncs'
|
||||
// import MaterDtl from '@/views/wms/pub/MaterDialog'
|
||||
|
||||
const defaultForm = {
|
||||
storagevehicle_id: null,
|
||||
storagevehicle_code: null,
|
||||
storagevehicle_name: null,
|
||||
vehicle_code: null,
|
||||
vehicle_name: null,
|
||||
one_code: null,
|
||||
two_code: null,
|
||||
rfid_code: null,
|
||||
create_id: null,
|
||||
create_name: null,
|
||||
create_time: null,
|
||||
update_optid: null,
|
||||
update_optname: null,
|
||||
update_name: null,
|
||||
update_time: null,
|
||||
is_delete: null,
|
||||
is_used: '1',
|
||||
storagevehicle_type: null,
|
||||
vehicle_width: null,
|
||||
vehicle_long: null,
|
||||
vehicle_height: null,
|
||||
w: null,
|
||||
l: null,
|
||||
h: null,
|
||||
weight: null,
|
||||
overstruct_type: null,
|
||||
occupystruct_qty: null,
|
||||
ext_id: null,
|
||||
ext_json: null,
|
||||
num: '1'
|
||||
}
|
||||
export default {
|
||||
@@ -308,8 +303,8 @@ export default {
|
||||
return CRUD({
|
||||
title: '载具',
|
||||
url: 'api/bmVehicleInfo',
|
||||
idField: 'storagevehicle_id',
|
||||
sort: 'storagevehicle_id,desc',
|
||||
idField: 'vehicle_code',
|
||||
sort: 'vehicle_code,desc',
|
||||
crudMethod: { ...crudStoragevehicleinfo },
|
||||
optShow: {
|
||||
add: true,
|
||||
@@ -349,16 +344,7 @@ export default {
|
||||
resultCodeArr: [],
|
||||
permission: {},
|
||||
rules: {
|
||||
storagevehicle_code: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
||||
],
|
||||
create_id: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
||||
],
|
||||
create_name: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
||||
],
|
||||
create_time: [
|
||||
vehicle_code: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
||||
],
|
||||
is_delete: [
|
||||
@@ -367,7 +353,7 @@ export default {
|
||||
is_used: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
||||
],
|
||||
storagevehicle_type: [
|
||||
vehicle_type: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
||||
],
|
||||
overstruct_type: [
|
||||
@@ -462,7 +448,7 @@ export default {
|
||||
console.log(_selectData.length)
|
||||
console.log(this.printForm)
|
||||
for (let i = 0; i < _selectData.length; i++) {
|
||||
const code = _selectData[i].storagevehicle_code
|
||||
const code = _selectData[i].vehicle_code
|
||||
const LODOP = getLodop()
|
||||
LODOP.SET_SHOW_MODE('HIDE_DISBUTTIN_SETUP', 1)// 隐藏那些无效按钮
|
||||
// 打印纸张大小设置https://www.it610.com/article/2094844.html
|
||||
@@ -523,11 +509,11 @@ export default {
|
||||
getVehicle(code) {
|
||||
if (!code) {
|
||||
this.crud.notify('请选择载具类型', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
this.form.storagevehicle_code = ''
|
||||
this.form.vehicle_code = ''
|
||||
return false
|
||||
}
|
||||
crudStoragevehicleinfo.getVehicle(code).then(res => {
|
||||
this.form.storagevehicle_code = res.value
|
||||
this.form.vehicle_code = res.value
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,8 +130,8 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="自定义映射" prop="class_desc">
|
||||
<el-input type="textarea" v-model="form.form_param" style="width: 370px;" />
|
||||
<el-form-item label="自定义字段2" prop="class_desc">
|
||||
<el-input type="textarea" v-model="form.form_param" :formatter="jsonFormat" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
|
||||
@@ -0,0 +1,246 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!--工具栏-->
|
||||
<div class="head-container">
|
||||
|
||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||
<!--表单组件-->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:before-close="crud.cancelCU"
|
||||
:visible.sync="crud.status.cu > 0"
|
||||
:title="crud.status.title"
|
||||
width="600px"
|
||||
>
|
||||
<el-form ref="form" :model="form" size="mini" label-width="80px">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="表单类型" prop="class_code">
|
||||
<el-input v-model="form.form_type" style="width: 120px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="表单名称" prop="class_name">
|
||||
<el-input v-model="form.form_name" style="width: 120px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col >
|
||||
<el-form-item label="表单描述" prop="class_name">
|
||||
<el-input v-model="form.form_desc" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col >
|
||||
<el-form-item label="表单对应json" prop="class_name">
|
||||
<el-input v-model="form.convert_json" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col >
|
||||
<el-form-item label="是否含有子表" prop="class_name">
|
||||
<el-radio-group v-model="form.has_child" style="width: 140px">
|
||||
<el-radio label=true>是</el-radio>
|
||||
<el-radio label=false>否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col>
|
||||
<el-select
|
||||
v-model="form.parent_id"
|
||||
placeholder="父表类型"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in form_types"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="业务表id映射" prop="class_desc">
|
||||
<el-input v-model="form.bus_id" style="width: 120px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="业务表编码映射" prop="class_desc">
|
||||
<el-input v-model="form.bus_code" style="width: 120px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="业务表时间映射" prop="class_desc">
|
||||
<el-input v-model="form.bus_data" style="width: 120px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="业务表状态映射" prop="class_desc">
|
||||
<el-input v-model="form.bus_status" style="width: 120px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="物料id映射" prop="class_desc">
|
||||
<el-input v-model="form.material_id" style="width: 120px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="物料数量映射" prop="class_desc">
|
||||
<el-input v-model="form.qty" style="width: 120px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="物料批次映射" prop="class_desc">
|
||||
<el-input v-model="form.pcsn" style="width: 120px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="自定义字段2" prop="class_desc">
|
||||
<el-input type="textarea" v-model="form.form_param" :formatter="jsonFormat" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="text" @click="crud.cancelCU">取消</el-button>
|
||||
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!--表格渲染-->
|
||||
<el-table
|
||||
ref="table"
|
||||
v-loading="crud.loading"
|
||||
lazy
|
||||
:load="getClassDatas"
|
||||
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
|
||||
:data="crud.data"
|
||||
row-key="id"
|
||||
@select="crud.selectChange"
|
||||
@select-all="crud.selectAllChange"
|
||||
@selection-change="crud.selectionChangeHandler"
|
||||
>
|
||||
<el-table-column prop="form_type" label="表单类型" />
|
||||
<el-table-column prop="form_name" label="表单名称" />
|
||||
<el-table-column prop="form_desc" label="描述" />
|
||||
<el-table-column prop="convert_json" label="表单对应json" />
|
||||
<el-table-column prop="create_time" label="创建时间" />
|
||||
<el-table-column prop="has_child" :formatter="booleanFormat" label="是否关联子表" />
|
||||
<el-table-column prop="parent_id" label="父表id" />
|
||||
<el-table-column prop="bus_id" label="业务单据id映射" />
|
||||
<el-table-column prop="bus_code" label="业务单据code映射" />
|
||||
<el-table-column prop="bus_date" label="业务单据时间映射" />
|
||||
<el-table-column prop="status" label="业务单据状态映射" />
|
||||
<el-table-column prop="material_id" label="物料id映射" />
|
||||
<el-table-column prop="qty" label="物料数量映射" />
|
||||
<el-table-column prop="pcsn" label="物料批次映射" />
|
||||
<el-table-column prop="form_param" :show-overflow-tooltip="true" :formatter="jsonFormat" label="自定义字段映射" />
|
||||
<el-table-column
|
||||
label="操作"
|
||||
width="250px"
|
||||
align="center"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<udOperation
|
||||
style="display: inline"
|
||||
:data="scope.row"
|
||||
:permission="permission"
|
||||
:disabled-edit="scope.row.is_modify === '0'"
|
||||
:disabled-dle="scope.row.is_modify === '0'"
|
||||
msg="确定删除吗,如果存在下级节点则一并删除,此操作不能撤销!"
|
||||
/>
|
||||
<el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus-outline" @click="crud.toAddAndData(addSibling(scope.row))">新增同级</el-button>
|
||||
<el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus" @click="crud.toAddAndData(addChildren(scope.row))">新增子级</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--分页组件-->
|
||||
<pagination />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import formstruc from '@/views/wms/config_manage/formStruc/formstruc'
|
||||
import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
||||
import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
import udOperation from '@crud/UD.operation'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
|
||||
const defaultForm = {
|
||||
form_type: null,
|
||||
form_name: null,
|
||||
form_desc: null,
|
||||
create_time: null,
|
||||
create_id: null,
|
||||
bus_id: null,
|
||||
bus_code: null,
|
||||
bus_date: null,
|
||||
bus_status: null,
|
||||
material_id: null,
|
||||
qty: null,
|
||||
pcsn: null,
|
||||
form_param: null,
|
||||
has_child: false,
|
||||
parent_id: null
|
||||
}
|
||||
export default {
|
||||
name: 'FormStruc',
|
||||
dicts: ['base_data'],
|
||||
components: { pagination, crudOperation, rrOperation, udOperation, Treeselect },
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
cruds() {
|
||||
return CRUD({
|
||||
title: '基础类别',
|
||||
url: 'api/bmFormStruc',
|
||||
idField: 'id',
|
||||
sort: 'id,desc',
|
||||
query: {'search':'组盘'},
|
||||
crudMethod: { ...formstruc },
|
||||
optShow: {
|
||||
add: true,
|
||||
reset: true
|
||||
}
|
||||
})
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
classes: [],
|
||||
uploadShow: false,
|
||||
form_types: [],
|
||||
permission: {}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getFormSelect() // 获取分类
|
||||
},
|
||||
methods: {
|
||||
getFormSelect() {
|
||||
formstruc.getTypes().then((res) => { // 获取分类名称,查询根据分类编码查找对应分支树
|
||||
this.form_types = res
|
||||
})
|
||||
},
|
||||
booleanFormat(row, index) {
|
||||
if (row.has_child) {
|
||||
return '是'
|
||||
} else {
|
||||
return '否'
|
||||
}
|
||||
},
|
||||
jsonFormat(row, index) {
|
||||
if (row.form_param != null) {
|
||||
return JSON.stringify(row.form_param)
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
</style>
|
||||
Reference in New Issue
Block a user