rev:liantiao1youhua
This commit is contained in:
@@ -17,4 +17,15 @@ public class DictConstantPool {
|
||||
|
||||
public static final Map<String,String> PRODUCT_OUT_POINT_TP = MapOf.of("A1","1131","A2","2127","A3","3110");
|
||||
|
||||
public static Map<String,String> BASE_FORM = MapOf.of(
|
||||
"biz_id","业务单据单据id"
|
||||
,"biz_code","业务单据编号"
|
||||
,"biz_date","业务单据日期"
|
||||
,"biz_status","业务单据状态"
|
||||
,"biz_form_type","业务单据类型"
|
||||
,"material_id","物料id"
|
||||
,"qty","数量"
|
||||
,"unit_id","单位"
|
||||
,"pcsn","批次"
|
||||
,"vehicle_code","载具");
|
||||
}
|
||||
|
||||
@@ -84,14 +84,20 @@ public class SpelUtil {
|
||||
Map<String, String> result = new HashMap<>();
|
||||
for (String field : fieldSkip.keySet()) {
|
||||
String skip = fieldSkip.get(field);
|
||||
Expression expression = SpelUtil.SPEL_PARSER.parseExpression(skip);
|
||||
try {
|
||||
String value = expression.getValue(context, String.class);
|
||||
result.put(field,value);
|
||||
}catch (SpelEvaluationException ex){
|
||||
throw new BadRequestException("当前业务数据没有映射字段"+field+" 对应的数据"+skip);
|
||||
if (skip.charAt(0) == '#'){
|
||||
try {
|
||||
Expression expression = SpelUtil.SPEL_PARSER.parseExpression(skip);
|
||||
String value = expression.getValue(context, String.class);
|
||||
result.put(field,value);
|
||||
}catch (SpelEvaluationException ex){
|
||||
ex.printStackTrace();
|
||||
throw new BadRequestException("当前业务数据没有映射字段"+field+" 对应的数据"+skip);
|
||||
}
|
||||
}else {
|
||||
result.put(field,skip);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.domain.constant.DictConstantPool;
|
||||
import org.nl.common.domain.entity.PageQuery;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
@@ -39,16 +40,6 @@ import java.util.stream.Collectors;
|
||||
@SaIgnore
|
||||
public class BmFormStrucController {
|
||||
|
||||
private static Map<String,String> BASE_FORM = MapOf.of("biz_id","业务单据单据id"
|
||||
,"biz_code","业务单据编号"
|
||||
,"biz_date","业务单据日期"
|
||||
,"biz_status","业务单据状态"
|
||||
,"biz_form_type","业务单据类型"
|
||||
,"material_id","物料id"
|
||||
,"qty","数量"
|
||||
,"unit_id","单位"
|
||||
,"pcsn","批次"
|
||||
,"vehicle_code","载具");
|
||||
|
||||
@Autowired
|
||||
IBmFormStrucService iBmFormStrucService;
|
||||
@@ -158,7 +149,7 @@ public class BmFormStrucController {
|
||||
BmFormStruc form_struc = iBmFormStrucService.getOne(new QueryWrapper<BmFormStruc>().eq("form_type", form_type));
|
||||
HashMap result = MapOf.of("has_child",form_struc.getHas_child(),"form_type", form_struc.getForm_type(), "form_name", form_struc.getForm_name(), "form_desc", form_struc.getForm_desc());
|
||||
JSONObject form_param = form_struc.getForm_param();
|
||||
form_param.putAll(BASE_FORM);
|
||||
form_param.putAll(DictConstantPool.BASE_FORM);
|
||||
List<Map> items = new ArrayList<>();
|
||||
for (String key : form_param.keySet()) {
|
||||
items.add(MapOf.of("lable",form_param.get(key),"value",key));
|
||||
@@ -170,7 +161,7 @@ public class BmFormStrucController {
|
||||
throw new BadRequestException("当前表单配置异常:无子表配置信息");
|
||||
}
|
||||
JSONObject child_param = child_struc.getForm_param();
|
||||
child_param.putAll(BASE_FORM);
|
||||
child_param.putAll(DictConstantPool.BASE_FORM);
|
||||
for (String key : child_param.keySet()) {
|
||||
dtl_items.add(MapOf.of("lable",child_param.get(key),"value",key));
|
||||
}
|
||||
|
||||
@@ -23,6 +23,8 @@ public abstract class Decisioner<T,P> implements InitializingBean {
|
||||
public StStrategyConfig strategyConfig;
|
||||
@Autowired
|
||||
private IStStrategyConfigService iStStrategyConfigService;
|
||||
@Autowired
|
||||
private SpringContextHolder springContextHolder;
|
||||
|
||||
public abstract List<T> handler(List<T> list, P param);
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ import java.util.stream.Stream;
|
||||
* 手动过滤XYZ排信息
|
||||
* {"y":[1,2,3,104,103,102]}
|
||||
*/
|
||||
@Service("passRCL")
|
||||
//@Service("passRCL")
|
||||
@Slf4j
|
||||
public class PassRCLHandler extends Decisioner<StIvtStructattr, JSONObject> {
|
||||
//现场1/4排深位
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
package org.nl.wms.dispatch_manage.task.handler.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.domain.constant.DictConstantPool;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.utils.*;
|
||||
import org.nl.wms.dispatch_manage.task.handler.AbstractTask;
|
||||
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.DecisionHandler;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
|
||||
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
|
||||
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/5/6 14:34
|
||||
* 托盘拣选出库
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class PalletOutStorageTask extends AbstractTask {
|
||||
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private MoveStorageTask moveStorageTask;
|
||||
|
||||
@Autowired
|
||||
private IStIvtStructattrService iStIvtStructattrService;
|
||||
@Autowired
|
||||
private IMdPbVehicleMaterService iMdPbVehicleMaterService;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public JSONObject createTask(JSONObject from) {
|
||||
String vehicle_code = from.getString("vehicle_code");
|
||||
String target_point = from.getString("target_point");
|
||||
//通过全局变量获取目标位置
|
||||
String product_area = from.getString("product_area");
|
||||
if (StringUtils.isNotEmpty(product_area)){
|
||||
String configTarget;
|
||||
if (vehicle_code.contains("T")){
|
||||
configTarget = DictConstantPool.PRODUCT_OUT_POINT_TP.get(product_area);
|
||||
}else {
|
||||
configTarget = DictConstantPool.PRODUCT_OUT_POINT.get(product_area);
|
||||
}
|
||||
if (StringUtils.isEmpty(configTarget)){
|
||||
throw new BadRequestException("创建任务失败:出库点车间点位对应关系配置异常");
|
||||
}
|
||||
target_point=configTarget;
|
||||
}
|
||||
if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(target_point)){
|
||||
throw new BadRequestException("创建任务失败:方法请求参数不能为空");
|
||||
}
|
||||
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
|
||||
.eq("vehicle_code", vehicle_code)
|
||||
.ne("task_type",StatusEnum.IOBILL_TYPE_MOVE.code("移库"))
|
||||
.lt("status", StatusEnum.FORM_STATUS.code("完成")));
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
|
||||
}
|
||||
StIvtStructattr struct = iStIvtStructattrService.getOne(new QueryWrapper<StIvtStructattr>().eq("vehicle_code", vehicle_code));
|
||||
log.info("OutStorgeTask出入分配货位信息:{}",struct.toString());
|
||||
String end_struct_code = struct.getStruct_code();
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setId(IdUtil.getStringId());
|
||||
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.setStatus(StatusEnum.FORM_STATUS.code("生成"));
|
||||
task.setHandle_class(this.getClass().getName());
|
||||
task.setAcs_type(StatusEnum.ACS_TYPE.code("立库"));
|
||||
task.setCreate_time(DateUtil.now());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setTask_type(from.getString("task_type"));
|
||||
task.setVehicle_code(vehicle_code);
|
||||
task.setPoint_code1(end_struct_code);
|
||||
task.setPoint_code2(target_point);
|
||||
taskService.save(task);
|
||||
iMdPbVehicleMaterService.update(new LambdaUpdateWrapper<MdPbVehicleMater>()
|
||||
.set(MdPbVehicleMater::getTask_code,task.getTask_code())
|
||||
.eq(MdPbVehicleMater::getVehicle_code,task.getVehicle_code())
|
||||
.eq(MdPbVehicleMater::getIs_delete,false));
|
||||
//TODO:是否下发
|
||||
Boolean isSend = from.getBoolean("is_send");
|
||||
if (isSend){
|
||||
//参数封装,调acs接口
|
||||
}
|
||||
return (JSONObject)JSON.toJSON(task);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void updateStatus(JSONObject data) {
|
||||
this.updateTask(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finish(JSONObject data) {
|
||||
data.put("status",StatusEnum.FORM_STATUS.code("完成"));
|
||||
this.updateTask(data);
|
||||
SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
|
||||
iStIvtStructattrService.changeStruct(schBaseTask.getPoint_code1(),schBaseTask.getVehicle_code(),schBaseTask.getTask_type(), null,Boolean.FALSE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(JSONObject data) {
|
||||
this.updateTask(data);
|
||||
//更新起点终点状态
|
||||
}
|
||||
|
||||
private static String getZdPoint(int row,String source_code) {
|
||||
if (row == 2 || row == 3) {
|
||||
return source_code;
|
||||
}
|
||||
int blockRow = row == 1 ? 2 : 3;
|
||||
String replace = source_code.replaceFirst("L0" + row, "L0%s");
|
||||
return String.format(replace, blockRow);
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.domain.constant.DictConstantPool;
|
||||
import org.nl.common.domain.entity.PageQuery;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.nl.common.utils.*;
|
||||
@@ -77,8 +78,11 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
|
||||
throw new BadRequestException("当前表单无配置信息" + formMapping.getForm_type());
|
||||
}
|
||||
List<PmFormData> result = new ArrayList<>();
|
||||
Boolean dtlSplit = formMapping.getDtl_split();
|
||||
JSONObject sourceData = JSONObject.parseObject(sourceString).getJSONObject("Model");
|
||||
List<JSONObject> items_arr = mappingParseList(formMapping.getMapping_json(), one, sourceData);
|
||||
|
||||
if (!dtlSplit){
|
||||
List<JSONObject> items_arr = mappingParseList(formMapping.getMapping_json(), one, sourceData);
|
||||
for (int i = 0; i < items_arr.size(); i++) {
|
||||
JSONObject itemTarget = items_arr.get(i);
|
||||
itemTarget.put("id", IdUtil.getStringId());
|
||||
@@ -88,6 +92,38 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
|
||||
PmFormData dtl = itemTarget.toJavaObject(PmFormData.class);
|
||||
result.add(dtl);
|
||||
}
|
||||
}else {
|
||||
JSONObject target = mappingParse(formMapping.getMapping_json(), one, sourceData);
|
||||
Object items = target.remove("item");
|
||||
target.put("id",
|
||||
StringUtils.isEmpty(target.getString("biz_id"))
|
||||
?IdUtil.getStringId():target.getString("biz_id"));
|
||||
target.put("code",
|
||||
StringUtils.isEmpty(target.getString("biz_code"))
|
||||
?CodeUtil.getNewCode(formMapping.getForm_type()):target.getString("biz_code"));
|
||||
target.put("create_time", DateUtil.now());
|
||||
target.put("create_name", SecurityUtils.getCurrentNickName());
|
||||
PmFormData mst = target.toJavaObject(PmFormData.class);
|
||||
result.add(mst);
|
||||
if (items != null) {
|
||||
JSONArray items_arr = (JSONArray) items;
|
||||
for (int i = 0; i < items_arr.size(); i++) {
|
||||
JSONObject itemTarget = items_arr.getJSONObject(i);
|
||||
itemTarget.put("id",
|
||||
StringUtils.isEmpty(itemTarget.getString("biz_id"))
|
||||
?IdUtil.getStringId():itemTarget.getString("biz_id"));
|
||||
if (StringUtils.isNotEmpty(itemTarget.getString("biz_code"))) {
|
||||
itemTarget.getString("biz_code");
|
||||
}
|
||||
itemTarget.put("create_time", DateUtil.now());
|
||||
itemTarget.put("create_name", SecurityUtils.getCurrentNickName());
|
||||
itemTarget.put("parent_id", mst.getId());
|
||||
PmFormData dtl = itemTarget.toJavaObject(PmFormData.class);
|
||||
result.add(dtl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -150,8 +186,15 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
|
||||
formMap.put(item.getString("value"), item);
|
||||
}, HashMap::putAll);
|
||||
//基础字段
|
||||
Set<String> fields = ListOf.ofSet(formStruc.getBiz_code(), formStruc.getBiz_id(), formStruc.getBiz_code(), formStruc.getBiz_status(), formStruc.getMaterial_id(), formStruc.getPcsn(), formStruc.getVehicle_code(), formStruc.getVehicle_id(),formStruc.getUnit_id(), formStruc.getQty());
|
||||
JSONObject data = fieldMapping(fields, fieldMapping, sourceData);
|
||||
JSONObject JFormStruct = (JSONObject)JSONObject.toJSON(formStruc);
|
||||
HashMap<String, String> bizMap = new HashMap<>();
|
||||
for (String key : DictConstantPool.BASE_FORM.keySet()) {
|
||||
String value = JFormStruct.getString(key);
|
||||
if (StringUtils.isNotEmpty(value)){
|
||||
bizMap.put(key,value);
|
||||
}
|
||||
}
|
||||
JSONObject data = fieldMapping(bizMap.keySet(), fieldMapping, sourceData);
|
||||
data.put("form_type",formStruc.getForm_type());
|
||||
JSONObject form_param = formStruc.getForm_param();
|
||||
if (form_param != null) {
|
||||
|
||||
@@ -77,6 +77,10 @@ public class SyncFormMapping implements Serializable {
|
||||
* 修改人
|
||||
*/
|
||||
private String update_name;
|
||||
/**
|
||||
* 明细拆分
|
||||
*/
|
||||
private Boolean dtl_split;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -7,8 +7,8 @@ spring:
|
||||
druid:
|
||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://${DB_HOST:192.168.8.218}:${DB_PORT:3306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||
# url: jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||
# url: jdbc:mysql://${DB_HOST:192.168.8.218}:${DB_PORT:3306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||
url: jdbc:mysql://${DB_HOST:127.0.0.1}:${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:123456}
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
</logger>
|
||||
</springProfile>
|
||||
<springProfile name="prod">
|
||||
<root level="info">
|
||||
<root level="ERROR">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
</root>
|
||||
|
||||
@@ -178,6 +178,7 @@
|
||||
<el-table-column min-width="120" show-overflow-tooltip prop="material_id" label="物料id" align="center" />
|
||||
<el-table-column min-width="120" show-overflow-tooltip prop="pcsn" label="批次" align="center" />
|
||||
<el-table-column min-width="120" show-overflow-tooltip prop="qty" label="数量" align="center" />
|
||||
<el-table-column min-width="120" show-overflow-tooltip prop="unit_id" label="单位" align="center" />
|
||||
<el-table-column min-width="120" show-overflow-tooltip prop="vehicle_code" label="载具" align="center" />
|
||||
<el-table-column min-width="120" show-overflow-tooltip prop="status" label="单据状态" align="center" />
|
||||
<el-table-column v-for="(item, index) in viewMstCols" :key="item.value" min-width="120" show-overflow-tooltip :label="item.lable">
|
||||
|
||||
Reference in New Issue
Block a user