fix: 任务、物料、mes对接
This commit is contained in:
@@ -32,6 +32,12 @@
|
|||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.microsoft.sqlserver</groupId>
|
||||||
|
<artifactId>mssql-jdbc</artifactId>
|
||||||
|
<version>6.4.0.jre8</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.dev33</groupId>
|
<groupId>cn.dev33</groupId>
|
||||||
<artifactId>sa-token-dao-redis</artifactId>
|
<artifactId>sa-token-dao-redis</artifactId>
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
package org.nl;
|
package org.nl;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaIgnore;
|
import cn.dev33.satoken.annotation.SaIgnore;
|
||||||
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.alicp.jetcache.anno.config.EnableCreateCacheAnnotation;
|
import com.alicp.jetcache.anno.config.EnableCreateCacheAnnotation;
|
||||||
import com.alicp.jetcache.anno.config.EnableMethodCache;
|
import com.alicp.jetcache.anno.config.EnableMethodCache;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
|
import org.nl.modules.wql.core.bean.WQLObject;
|
||||||
import org.nl.modules.wql.util.SpringContextHolder;
|
import org.nl.modules.wql.util.SpringContextHolder;
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
@@ -63,6 +66,50 @@ public class AppRun {
|
|||||||
@GetMapping("/")
|
@GetMapping("/")
|
||||||
@SaIgnore
|
@SaIgnore
|
||||||
public String index() {
|
public String index() {
|
||||||
|
// WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point");
|
||||||
|
// int block = 6;
|
||||||
|
// int row = 4; // 排
|
||||||
|
// int col = 8;
|
||||||
|
// String regionCode = "YSQB01";
|
||||||
|
// String regionId = "1663803432005406720";
|
||||||
|
// String regionName = "养生区B";
|
||||||
|
// for (int i = 5; i <= block; i++) {
|
||||||
|
// for (int j = 1; j <= row; j++) {
|
||||||
|
// for (int k = 1; k <= col; k++) {
|
||||||
|
// String pointCode = "1";
|
||||||
|
// // 块
|
||||||
|
// pointCode = pointCode + i;
|
||||||
|
// // 排
|
||||||
|
// if (j < 10) pointCode = pointCode + "0" + j + "-";
|
||||||
|
// else pointCode = pointCode + j + "-";
|
||||||
|
// // 列
|
||||||
|
// if (k < 10) pointCode = pointCode + "0" + k + "-" + "01";
|
||||||
|
// else pointCode = pointCode + k + "-" + "01";
|
||||||
|
// String name = j + "排" + k + "列" + "1层";
|
||||||
|
// String pointStatus = "1";
|
||||||
|
// String can_vehicle_type = "3";
|
||||||
|
// JSONObject po = new JSONObject();
|
||||||
|
// po.put("point_id", IdUtil.getSnowflake(1,1).nextIdStr());
|
||||||
|
// po.put("point_code", pointCode);
|
||||||
|
// po.put("point_name", name);
|
||||||
|
// po.put("point_status", pointStatus);
|
||||||
|
// po.put("can_vehicle_type", can_vehicle_type);
|
||||||
|
// po.put("region_id", regionId);
|
||||||
|
// po.put("region_code", regionCode);
|
||||||
|
// po.put("region_name", regionName);
|
||||||
|
// po.put("block_num", i);
|
||||||
|
// po.put("row_num", j);
|
||||||
|
// po.put("col_num", k);
|
||||||
|
// po.put("layer_num", 1);
|
||||||
|
// po.put("in_order_seq", col - k + 1);
|
||||||
|
// po.put("out_order_seq", k);
|
||||||
|
// po.put("in_empty_seq", col - k + 1);
|
||||||
|
// po.put("out_empty_seq", k);
|
||||||
|
// pointTab.insert(po);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
return "Backend service started successfully";
|
return "Backend service started successfully";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,33 @@
|
|||||||
package org.nl.config;
|
package org.nl.config;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.alibaba.druid.pool.DruidDataSource;
|
import com.alibaba.druid.pool.DruidDataSource;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nl.modules.mnt.util.DataTypeEnum;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.context.annotation.Primary;
|
import org.springframework.context.annotation.Primary;
|
||||||
|
|
||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class DataBaseConfig {
|
public class DataBaseConfig {
|
||||||
|
|
||||||
|
@Value("${mes.sqlserver.enabled}")
|
||||||
|
private boolean sqlserverIsConnect;
|
||||||
|
@Value("${mes.sqlserver.jdbcurl}")
|
||||||
|
private String sqlserverJdbcUrl;
|
||||||
|
@Value("${mes.sqlserver.username}")
|
||||||
|
private String sqlserverUserName;
|
||||||
|
@Value("${mes.sqlserver.password}")
|
||||||
|
private String sqlserverPassword;
|
||||||
|
|
||||||
@Primary
|
@Primary
|
||||||
@Bean(name = "dataSource")
|
@Bean(name = "dataSource")
|
||||||
@ConfigurationProperties(prefix = "spring.datasource.druid")
|
@ConfigurationProperties(prefix = "spring.datasource.druid")
|
||||||
@@ -20,4 +35,52 @@ public class DataBaseConfig {
|
|||||||
return new DruidDataSource();
|
return new DruidDataSource();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean("dataSource1")
|
||||||
|
@ConditionalOnExpression("${mes.sqlserver.enabled:true}")
|
||||||
|
public DataSource dataSource1() {
|
||||||
|
log.info("是否连接Sqlserver" + sqlserverIsConnect);
|
||||||
|
String jdbcUrl = sqlserverJdbcUrl;
|
||||||
|
String userName = sqlserverUserName;
|
||||||
|
String password = sqlserverPassword;
|
||||||
|
DruidDataSource druidDataSource = new DruidDataSource();
|
||||||
|
String className;
|
||||||
|
try {
|
||||||
|
className = DriverManager.getDriver(jdbcUrl.trim()).getClass().getName();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new RuntimeException("Get class name error: =" + jdbcUrl);
|
||||||
}
|
}
|
||||||
|
if (StrUtil.isEmpty(className)) {
|
||||||
|
DataTypeEnum dataTypeEnum = DataTypeEnum.urlOf(jdbcUrl);
|
||||||
|
if (null == dataTypeEnum) {
|
||||||
|
throw new RuntimeException("Not supported data type: jdbcUrl=" + jdbcUrl);
|
||||||
|
}
|
||||||
|
druidDataSource.setDriverClassName(dataTypeEnum.getDriver());
|
||||||
|
} else {
|
||||||
|
druidDataSource.setDriverClassName(className);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
druidDataSource.setUrl(jdbcUrl);
|
||||||
|
druidDataSource.setUsername(userName);
|
||||||
|
druidDataSource.setPassword(password);
|
||||||
|
// 配置获取连接等待超时的时间
|
||||||
|
druidDataSource.setMaxWait(3000);
|
||||||
|
// 配置初始化大小、最小、最大
|
||||||
|
druidDataSource.setInitialSize(5);
|
||||||
|
druidDataSource.setMinIdle(5);
|
||||||
|
druidDataSource.setMaxActive(10);
|
||||||
|
|
||||||
|
// 如果链接出现异常则直接判定为失败而不是一直重试
|
||||||
|
druidDataSource.setBreakAfterAcquireFailure(true);
|
||||||
|
try {
|
||||||
|
druidDataSource.init();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
log.error("Exception during pool initialization", e);
|
||||||
|
throw new RuntimeException(e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
return druidDataSource;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import com.alibaba.fastjson.JSONArray;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nl.config.MapOf;
|
||||||
import org.nl.modules.common.exception.BadRequestException;
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
import org.nl.modules.common.utils.SecurityUtils;
|
import org.nl.modules.common.utils.SecurityUtils;
|
||||||
import org.nl.modules.wql.WQL;
|
import org.nl.modules.wql.WQL;
|
||||||
@@ -21,6 +22,7 @@ import org.nl.wms.basedata.eum.MaterOptTypeEnum;
|
|||||||
import org.nl.wms.basedata.service.ClassstandardService;
|
import org.nl.wms.basedata.service.ClassstandardService;
|
||||||
import org.nl.wms.basedata.service.MaterialbaseService;
|
import org.nl.wms.basedata.service.MaterialbaseService;
|
||||||
import org.nl.wms.basedata.service.dto.MaterialbaseDto;
|
import org.nl.wms.basedata.service.dto.MaterialbaseDto;
|
||||||
|
import org.slf4j.MDC;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -138,8 +140,10 @@ public class MaterialbaseServiceImpl implements MaterialbaseService {
|
|||||||
String nickName = SecurityUtils.getCurrentNickName();
|
String nickName = SecurityUtils.getCurrentNickName();
|
||||||
String now = DateUtil.now();
|
String now = DateUtil.now();
|
||||||
WQLObject wo = WQLObject.getWQLObject("md_me_materialbase");
|
WQLObject wo = WQLObject.getWQLObject("md_me_materialbase");
|
||||||
JSONObject jsonObject = wo.query("material_code = '" + dto.getMaterial_code() + "'").uniqueResult(0);
|
JSONObject jsonObject = wo.query("material_code = '" + dto.getMaterial_code() + "' " +
|
||||||
if (ObjectUtil.isNotEmpty(jsonObject)) {
|
"AND is_delete = '0'").uniqueResult(0);
|
||||||
|
if (ObjectUtil.isNotEmpty(jsonObject)
|
||||||
|
&& !jsonObject.getString("material_id").equals(dto.getMaterial_id())) {
|
||||||
throw new BadRequestException("物料柜号不能重复");
|
throw new BadRequestException("物料柜号不能重复");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -178,19 +182,9 @@ public class MaterialbaseServiceImpl implements MaterialbaseService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void deleteAll(Long[] ids) {
|
public void deleteAll(Long[] ids) {
|
||||||
Long currentUserId = SecurityUtils.getCurrentUserId();
|
|
||||||
String nickName = SecurityUtils.getCurrentNickName();
|
|
||||||
String now = DateUtil.now();
|
|
||||||
|
|
||||||
WQLObject wo = WQLObject.getWQLObject("md_me_materialbase");
|
WQLObject wo = WQLObject.getWQLObject("md_me_materialbase");
|
||||||
for (Long material_id : ids) {
|
for (Long material_id : ids) {
|
||||||
JSONObject param = new JSONObject();
|
wo.delete("material_id = '" + material_id + "'");
|
||||||
param.put("material_id", String.valueOf(material_id));
|
|
||||||
param.put("is_delete", "1");
|
|
||||||
param.put("update_optid", currentUserId);
|
|
||||||
param.put("update_optname", nickName);
|
|
||||||
param.put("update_time", now);
|
|
||||||
wo.update(param);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,9 +213,48 @@ public class MaterialbaseServiceImpl implements MaterialbaseService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public void synchronize(Map whereJson) {
|
public void synchronize(Map whereJson) {
|
||||||
/* wmsToErpService.getClassInfo(null);
|
MDC.put("log_file_type", "MES物料同步");
|
||||||
wmsToErpService.getMaterialInfo(null);*/
|
// 查找物料表最近更新的数据
|
||||||
|
WQLObject mdMeMaterialbaseTab = WQLObject.getWQLObject("md_me_materialbase");
|
||||||
|
JSONObject jsonObject = mdMeMaterialbaseTab
|
||||||
|
.query("ext_id <> '' AND ext_id IS NOT NULL", "update_time desc")
|
||||||
|
.uniqueResult(0);
|
||||||
|
String time = ObjectUtil.isNotEmpty(jsonObject) ? jsonObject.getString("update_time") : "";
|
||||||
|
// 查找mes的数据
|
||||||
|
JSONArray array = WQL.getWO("DATA_FOR_MES")
|
||||||
|
.setDbname("dataSource1")
|
||||||
|
.addParamMap(MapOf.of("flag", "1", "time", time))
|
||||||
|
.process()
|
||||||
|
.getResultJSONArray(0);
|
||||||
|
log.info("从mes获取的数据:{}", array);
|
||||||
|
if (ObjectUtil.isEmpty(array)) {
|
||||||
|
throw new BadRequestException("同步失败");
|
||||||
|
}
|
||||||
|
for (int i = 0; i < array.size(); i++) {
|
||||||
|
JSONObject materialObj = array.getJSONObject(i);
|
||||||
|
// 判断是否存在
|
||||||
|
JSONObject extObj = mdMeMaterialbaseTab
|
||||||
|
.query("ext_id = '" + materialObj.getString("ext_id") + "'")
|
||||||
|
.uniqueResult(0);
|
||||||
|
materialObj.put("create_id", "3");
|
||||||
|
materialObj.put("create_name", "MES系统");
|
||||||
|
materialObj.put("update_optid", "3");
|
||||||
|
materialObj.put("update_optname", "MES系统");
|
||||||
|
materialObj.put("is_used", "1");
|
||||||
|
materialObj.put("is_delete", "0");
|
||||||
|
if (ObjectUtil.isEmpty(extObj)) {
|
||||||
|
// 插入
|
||||||
|
materialObj.put("material_id", IdUtil.getSnowflake(1,1).nextIdStr());
|
||||||
|
mdMeMaterialbaseTab.insert(materialObj);
|
||||||
|
} else {
|
||||||
|
mdMeMaterialbaseTab.update(materialObj,
|
||||||
|
"material_id = '" + extObj.getString("material_id") + "'"); // 修改
|
||||||
|
}
|
||||||
|
log.info("物料:" + i + " : " + materialObj);
|
||||||
|
}
|
||||||
|
MDC.remove("log_file_type");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -0,0 +1,60 @@
|
|||||||
|
[交易说明]
|
||||||
|
交易名: 从mes获取物料信息
|
||||||
|
所属模块:
|
||||||
|
功能简述:
|
||||||
|
版权所有:
|
||||||
|
表引用:
|
||||||
|
版本经历:
|
||||||
|
|
||||||
|
[数据库]
|
||||||
|
--指定数据库,为空采用默认值,默认为db.properties中列出的第一个库
|
||||||
|
|
||||||
|
[IO定义]
|
||||||
|
#################################################
|
||||||
|
## 表字段对应输入参数
|
||||||
|
#################################################
|
||||||
|
输入.flag TYPEAS s_string
|
||||||
|
输入.time TYPEAS s_string
|
||||||
|
|
||||||
|
[临时表]
|
||||||
|
--这边列出来的临时表就会在运行期动态创建
|
||||||
|
|
||||||
|
[临时变量]
|
||||||
|
--所有中间过程变量均可在此处定义
|
||||||
|
|
||||||
|
[业务过程]
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# 1、输入输出检查 #
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# 2、主过程前处理 #
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# 3、业务主过程 #
|
||||||
|
##########################################
|
||||||
|
IF 输入.flag = "1"
|
||||||
|
PAGEQUERY
|
||||||
|
SELECT
|
||||||
|
FbasicDataId046 AS ext_id,
|
||||||
|
Fnumber046 AS material_code,
|
||||||
|
Fname046 AS material_name,
|
||||||
|
Fmodel004 AS material_spec,
|
||||||
|
FaddTime046 AS create_time,
|
||||||
|
FeditTime046 AS update_time,
|
||||||
|
Fparentid046name AS material_model
|
||||||
|
FROM
|
||||||
|
dbo.v_BS_GOODS_INTERFACE
|
||||||
|
WHERE
|
||||||
|
1 = 1
|
||||||
|
OPTION 输入.time <> ""
|
||||||
|
FeditTime046 >= 输入.time
|
||||||
|
ENDOPTION
|
||||||
|
ORDER BY FeditTime046 DESC
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
@@ -42,25 +42,71 @@ public class MesToWmsServiceImpl implements MesToWmsService {
|
|||||||
log.info("mes传来工单信息:" + param);
|
log.info("mes传来工单信息:" + param);
|
||||||
WQLObject workOrderTab = WQLObject.getWQLObject("pdm_bd_workorder");
|
WQLObject workOrderTab = WQLObject.getWQLObject("pdm_bd_workorder");
|
||||||
WQLObject deviceTab = WQLObject.getWQLObject("pdm_bi_device");
|
WQLObject deviceTab = WQLObject.getWQLObject("pdm_bi_device");
|
||||||
|
WQLObject materialTab = WQLObject.getWQLObject("md_me_materialbase");
|
||||||
if (ObjectUtil.isEmpty(param)) {
|
if (ObjectUtil.isEmpty(param)) {
|
||||||
throw new BadRequestException("工单不能为空");
|
throw new BadRequestException("工单不能为空");
|
||||||
}
|
}
|
||||||
MaterialbaseDto materialCode = materialbaseService.findByCode(param.getString("material_code"));
|
JSONObject materialCode = materialTab.query("material_code = '" + param.getString("material_code") + "'").uniqueResult(0);
|
||||||
JSONObject deviceCode = deviceTab.query("extend_code = '" + param.getString("device_code") + "'").uniqueResult(0);
|
JSONObject deviceCode = deviceTab.query("extend_code = '" + param.getString("device_code") + "'").uniqueResult(0);
|
||||||
if (ObjectUtil.isEmpty(deviceCode)) {
|
if (ObjectUtil.isEmpty(deviceCode)) {
|
||||||
throw new BadRequestException("设备编码错误!");
|
throw new BadRequestException("设备编码错误!");
|
||||||
}
|
}
|
||||||
param.put("workorder_id", IdUtil.getSnowflake(1,1).nextIdStr());
|
|
||||||
param.put("plan_qty", param.getString("qty"));
|
param.put("plan_qty", param.getString("qty"));
|
||||||
param.put("order_status", param.getString("workorder_status"));
|
param.put("order_status", "3");
|
||||||
param.put("material_id", materialCode.getMaterial_id());
|
param.put("material_id", materialCode.getString("material_id"));
|
||||||
param.put("device_id", deviceCode.getString("device_id"));
|
|
||||||
param.put("device_code", deviceCode.getString("device_code"));
|
|
||||||
param.put("produce_date", DateUtil.format(new Date(), "yyyy-MM-dd"));
|
param.put("produce_date", DateUtil.format(new Date(), "yyyy-MM-dd"));
|
||||||
|
param.put("realproducestart_date", DateUtil.now());
|
||||||
param.put("create_id", "3");
|
param.put("create_id", "3");
|
||||||
param.put("create_name", "MES系统");
|
param.put("create_name", "MES系统");
|
||||||
param.put("create_time", param.getString("create_time"));
|
param.put("create_time", param.getString("create_time"));
|
||||||
|
if (param.getString("device_code").equals("C007")) { // 油漆线
|
||||||
|
// 分物料上料位与下料位两个工单
|
||||||
|
String deviceCodeWS = deviceCode.getString("device_code") + "WS";
|
||||||
|
String deviceCodeKX = deviceCode.getString("device_code") + "KX";
|
||||||
|
// 如果未完成,就把工单完成并插入
|
||||||
|
JSONObject orderWS = workOrderTab.query("device_code = '" + deviceCodeWS + "' AND order_status <> '5'").uniqueResult(0);
|
||||||
|
JSONObject orderKX = workOrderTab.query("device_code = '" + deviceCodeKX + "' AND order_status <> '5'").uniqueResult(0);
|
||||||
|
if (ObjectUtil.isNotEmpty(orderWS)) { // 存在,就关闭
|
||||||
|
orderWS.put("order_status", "5");
|
||||||
|
orderWS.put("update_time", DateUtil.now());
|
||||||
|
orderWS.put("realproduceend_date", DateUtil.now());
|
||||||
|
workOrderTab.update(orderWS);
|
||||||
|
}
|
||||||
|
if (ObjectUtil.isNotEmpty(orderKX)) {
|
||||||
|
orderKX.put("order_status", "5");
|
||||||
|
orderKX.put("update_time", DateUtil.now());
|
||||||
|
orderKX.put("realproduceend_date", DateUtil.now());
|
||||||
|
workOrderTab.update(orderKX);
|
||||||
|
}
|
||||||
|
param.put("workorder_id", IdUtil.getSnowflake(1,1).nextIdStr());
|
||||||
|
param.put("device_id", "1607915464833503232");
|
||||||
|
param.put("device_code", deviceCodeWS);
|
||||||
workOrderTab.insert(param);
|
workOrderTab.insert(param);
|
||||||
|
param.put("workorder_id", IdUtil.getSnowflake(1,1).nextIdStr());
|
||||||
|
param.put("device_id", "1654663217064054784");
|
||||||
|
param.put("device_code", deviceCodeKX);
|
||||||
|
workOrderTab.insert(param);
|
||||||
|
String deviceCodeWX = deviceCode.getString("device_code") + "WX";
|
||||||
|
String deviceCodeKS = deviceCode.getString("device_code") + "KS";
|
||||||
|
JSONObject deviceCodeWXOrder = workOrderTab
|
||||||
|
.query("device_code = '" + deviceCodeWX + "' AND order_status <> '5'")
|
||||||
|
.uniqueResult(0);
|
||||||
|
if (ObjectUtil.isEmpty(deviceCodeWXOrder)) { // 如果物料下没有执行中的工单,就设置新的工单
|
||||||
|
param.put("workorder_id", IdUtil.getSnowflake(1,1).nextIdStr());
|
||||||
|
param.put("device_id", "1607915553220071424");
|
||||||
|
param.put("device_code", deviceCodeWX);
|
||||||
|
workOrderTab.insert(param);
|
||||||
|
param.put("workorder_id", IdUtil.getSnowflake(1,1).nextIdStr());
|
||||||
|
param.put("device_id", "1654663328972279808");
|
||||||
|
param.put("device_code", deviceCodeKS);
|
||||||
|
workOrderTab.insert(param);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
param.put("workorder_id", IdUtil.getSnowflake(1,1).nextIdStr());
|
||||||
|
param.put("device_id", deviceCode.getString("device_id"));
|
||||||
|
param.put("device_code", deviceCode.getString("device_code"));
|
||||||
|
workOrderTab.insert(param);
|
||||||
|
}
|
||||||
JSONObject result = new JSONObject();
|
JSONObject result = new JSONObject();
|
||||||
result.put("status", 200);
|
result.put("status", 200);
|
||||||
result.put("message", "操作成功");
|
result.put("message", "操作成功");
|
||||||
@@ -69,6 +115,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public JSONObject feedbackWorkOrderToMes(JSONObject param) {
|
public JSONObject feedbackWorkOrderToMes(JSONObject param) {
|
||||||
log.info("mes传来工单信息:", param);
|
log.info("mes传来工单信息:", param);
|
||||||
WQLObject workOrderTab = WQLObject.getWQLObject("pdm_bd_workorder");
|
WQLObject workOrderTab = WQLObject.getWQLObject("pdm_bd_workorder");
|
||||||
@@ -78,12 +125,66 @@ public class MesToWmsServiceImpl implements MesToWmsService {
|
|||||||
JSONObject jsonObject = workOrderTab
|
JSONObject jsonObject = workOrderTab
|
||||||
.query("workorder_code = '" + param.getString("workorder_code") + "'")
|
.query("workorder_code = '" + param.getString("workorder_code") + "'")
|
||||||
.uniqueResult(0);
|
.uniqueResult(0);
|
||||||
jsonObject.put("order_status", param.getString("workorder_status"));
|
String deviceCode = jsonObject.getString("device_code");
|
||||||
|
// 判断是不是油漆线
|
||||||
|
if (deviceCode.startsWith("YQX01")) {
|
||||||
|
String deviceCodeWS = "YQX01WS";
|
||||||
|
String deviceCodeKX = "YQX01KX";
|
||||||
|
String deviceCodeWX = "YQX01WX";
|
||||||
|
String deviceCodeKS = "YQX01KS";
|
||||||
|
JSONObject orderWX = workOrderTab.query("device_code = '" + deviceCodeWX + "' AND order_status <> '5'").uniqueResult(0);
|
||||||
|
JSONObject orderKS = workOrderTab.query("device_code = '" + deviceCodeKS + "' AND order_status <> '5'").uniqueResult(0);
|
||||||
|
JSONObject orderWS = workOrderTab.query("device_code = '" + deviceCodeWS + "' AND order_status <> '5'").uniqueResult(0);
|
||||||
|
JSONObject orderKX = workOrderTab.query("device_code = '" + deviceCodeKX + "' AND order_status <> '5'").uniqueResult(0);
|
||||||
|
// 物下空上完成
|
||||||
|
orderWX.put("order_status", "5");
|
||||||
|
orderWX.put("update_optid", "3");
|
||||||
|
orderWX.put("update_optname", "MES系统");
|
||||||
|
workOrderTab.update(orderWX);
|
||||||
|
orderKS.put("update_optid", "3");
|
||||||
|
orderKS.put("update_optname", "MES系统");
|
||||||
|
orderKS.put("order_status", "5");
|
||||||
|
workOrderTab.update(orderKS);
|
||||||
|
// 查看物上与物下是否相同,相同就完成,物下新增与物上一样的工单
|
||||||
|
if (!orderWS.getString("workorder_code").equals(orderWX.getString("workorder_code"))) {
|
||||||
|
// 不相同:物下空上新增
|
||||||
|
JSONObject workorder = new JSONObject();
|
||||||
|
workorder.put("workorder_id", IdUtil.getSnowflake(1,1).nextIdStr());
|
||||||
|
workorder.put("device_id", "1607915553220071424");
|
||||||
|
workorder.put("device_code", deviceCodeWX);
|
||||||
|
workorder.put("workorder_code", orderWS.getString("workorder_code"));
|
||||||
|
workorder.put("plan_qty", orderWS.getString("plan_qty"));
|
||||||
|
workorder.put("order_status", "3");
|
||||||
|
workorder.put("material_id", orderWS.getString("material_id"));
|
||||||
|
workorder.put("produce_date", DateUtil.format(new Date(), "yyyy-MM-dd"));
|
||||||
|
workorder.put("realproducestart_date", DateUtil.now());
|
||||||
|
workorder.put("create_id", "3");
|
||||||
|
workorder.put("create_name", "LMS系统");
|
||||||
|
workorder.put("create_time", DateUtil.now());
|
||||||
|
workOrderTab.insert(workorder);
|
||||||
|
workorder.put("workorder_id", IdUtil.getSnowflake(1,1).nextIdStr());
|
||||||
|
workorder.put("device_id", "1654663328972279808");
|
||||||
|
workorder.put("device_code", deviceCodeKS);
|
||||||
|
workOrderTab.insert(workorder);
|
||||||
|
} else {
|
||||||
|
// 物上空下完成
|
||||||
|
orderWS.put("order_status", "5");
|
||||||
|
orderWS.put("update_optid", "3");
|
||||||
|
orderWS.put("update_optname", "MES系统");
|
||||||
|
workOrderTab.update(orderWS);
|
||||||
|
orderKX.put("order_status", "5");
|
||||||
|
orderKX.put("update_optid", "3");
|
||||||
|
orderKX.put("update_optname", "MES系统");
|
||||||
|
workOrderTab.update(orderKX);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
jsonObject.put("order_status", "5");
|
||||||
jsonObject.put("update_optid", "3");
|
jsonObject.put("update_optid", "3");
|
||||||
jsonObject.put("update_optname", "MES系统");
|
jsonObject.put("update_optname", "MES系统");
|
||||||
jsonObject.put("update_time", DateUtil.now());
|
jsonObject.put("update_time", DateUtil.now());
|
||||||
jsonObject.put("realproduceend_date", DateUtil.now());
|
jsonObject.put("realproduceend_date", DateUtil.now());
|
||||||
workOrderTab.update(jsonObject);
|
workOrderTab.update(jsonObject);
|
||||||
|
}
|
||||||
JSONObject result = new JSONObject();
|
JSONObject result = new JSONObject();
|
||||||
result.put("status", 200);
|
result.put("status", 200);
|
||||||
result.put("message", "操作成功");
|
result.put("message", "操作成功");
|
||||||
|
|||||||
@@ -26,13 +26,14 @@ public class SSXSendMaterialServiceImpl implements SSXSendMaterialService {
|
|||||||
@Override
|
@Override
|
||||||
public JSONObject queryMaterial() {
|
public JSONObject queryMaterial() {
|
||||||
JSONObject result = new JSONObject();
|
JSONObject result = new JSONObject();
|
||||||
JSONArray mdMeMaterialbase = WQLObject.getWQLObject("md_me_materialbase").query("is_used = '1' and is_delete = '0'").getResultJSONArray(0);
|
JSONArray mdMeMaterialbase = WQLObject.getWQLObject("md_me_materialbase")
|
||||||
|
.query("is_used = '1' and is_delete = '0'", "create_time desc")
|
||||||
|
.getResultJSONArray(0);
|
||||||
result.put("result", mdMeMaterialbase);
|
result.put("result", mdMeMaterialbase);
|
||||||
result.put("code", "1");
|
result.put("code", "1");
|
||||||
result.put("desc", "查询成功");
|
result.put("desc", "查询成功");
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public JSONObject confirm(JSONObject param) {
|
public JSONObject confirm(JSONObject param) {
|
||||||
@@ -63,12 +64,13 @@ public class SSXSendMaterialServiceImpl implements SSXSendMaterialService {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject queryVehicle() {
|
public JSONObject queryVehicle() {
|
||||||
JSONObject result = new JSONObject();
|
JSONObject result = new JSONObject();
|
||||||
WQLObject dictTab = WQLObject.getWQLObject("sys_dict_detail");
|
WQLObject dictTab = WQLObject.getWQLObject("sys_dict_detail");
|
||||||
JSONArray dictSort = dictTab.query("name = 'vehicle_type' and value in ('4','5','6')", "dict_sort").getResultJSONArray(0);
|
JSONArray dictSort = dictTab
|
||||||
|
.query("name = 'vehicle_type' and value in ('4','5','6')", "dict_sort")
|
||||||
|
.getResultJSONArray(0);
|
||||||
result.put("result", dictSort);
|
result.put("result", dictSort);
|
||||||
result.put("code", "1");
|
result.put("code", "1");
|
||||||
result.put("desc", "操作成功");
|
result.put("desc", "操作成功");
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
|||||||
taskTab.update(taskObj);
|
taskTab.update(taskObj);
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(material_point)) return;
|
if (ObjectUtil.isEmpty(material_point)) return;
|
||||||
|
|
||||||
// 点位解锁
|
// 点位解锁
|
||||||
material_point.put("lock_type", "1");
|
material_point.put("lock_type", "1");
|
||||||
pointTab.update(material_point);
|
pointTab.update(material_point);
|
||||||
@@ -73,10 +74,6 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
|||||||
taskObj.put("update_time", DateUtil.now());
|
taskObj.put("update_time", DateUtil.now());
|
||||||
taskObj.put("car_no", taskObj.getString("car_no"));
|
taskObj.put("car_no", taskObj.getString("car_no"));
|
||||||
taskTab.update(taskObj);
|
taskTab.update(taskObj);
|
||||||
// 通知mes
|
|
||||||
feedback.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
|
||||||
feedback.put("struct_code", taskObj.getString("point_code1"));
|
|
||||||
wmsToMesService.taskFeedback(feedback);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StrUtil.equals(status, "2")) {
|
if (StrUtil.equals(status, "2")) {
|
||||||
@@ -95,14 +92,15 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
|||||||
taskObj.put("remark", "任务完成");
|
taskObj.put("remark", "任务完成");
|
||||||
taskTab.update(taskObj);
|
taskTab.update(taskObj);
|
||||||
|
|
||||||
// 通知mes
|
|
||||||
feedback.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
|
||||||
feedback.put("struct_code", taskObj.getString("point_code1"));
|
|
||||||
wmsToMesService.taskFeedback(feedback);
|
|
||||||
|
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(material_point)) return;
|
if (ObjectUtil.isEmpty(material_point)) return;
|
||||||
|
|
||||||
|
// 通知mes
|
||||||
|
feedback.put("fscanserialid001", taskObj.getString("task_code"));
|
||||||
|
feedback.put("flocationid979number", taskObj.getString("point_code1"));
|
||||||
|
feedback.put("flpn979", taskObj.getString("vehicle_code"));
|
||||||
|
feedback.put("fstoragequantity979", taskObj.getString("material_qty"));
|
||||||
|
wmsToMesService.taskFeedback(feedback);
|
||||||
|
|
||||||
//区域出入表【st_ivt_regionIO】
|
//区域出入表【st_ivt_regionIO】
|
||||||
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
|
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
|
||||||
JSONObject regionIoObj = new JSONObject();
|
JSONObject regionIoObj = new JSONObject();
|
||||||
@@ -328,6 +326,7 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
|||||||
String pointCode = materialPoint.getString("point_code");
|
String pointCode = materialPoint.getString("point_code");
|
||||||
// 修改任务
|
// 修改任务
|
||||||
hcTask.put("point_code1", pointCode);
|
hcTask.put("point_code1", pointCode);
|
||||||
|
hcTask.put("material_qty", materialPoint.getString("ivt_qty"));
|
||||||
hcTask.put("remark", "养生A区:" + pointCode);
|
hcTask.put("remark", "养生A区:" + pointCode);
|
||||||
taskTab.update(hcTask);
|
taskTab.update(hcTask);
|
||||||
// 锁住点位
|
// 锁住点位
|
||||||
|
|||||||
@@ -81,10 +81,6 @@ public class CpOutTask extends AbstractAcsTask {
|
|||||||
taskObj.put("update_time", DateUtil.now());
|
taskObj.put("update_time", DateUtil.now());
|
||||||
taskObj.put("car_no", taskObj.getString("car_no"));
|
taskObj.put("car_no", taskObj.getString("car_no"));
|
||||||
taskTab.update(taskObj);
|
taskTab.update(taskObj);
|
||||||
// 通知mes
|
|
||||||
feedback.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
|
||||||
feedback.put("struct_code", taskObj.getString("point_code2"));
|
|
||||||
wmsToMesService.taskFeedback(feedback);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StrUtil.equals(status, "2")) {
|
if (StrUtil.equals(status, "2")) {
|
||||||
@@ -94,8 +90,9 @@ public class CpOutTask extends AbstractAcsTask {
|
|||||||
taskTab.update(taskObj);
|
taskTab.update(taskObj);
|
||||||
|
|
||||||
// 通知mes
|
// 通知mes
|
||||||
feedback.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
feedback.put("fserialid054", taskObj.getString("task_code"));
|
||||||
feedback.put("struct_code", taskObj.getString("point_code2"));
|
feedback.put("fsonumber186", taskObj.getString("point_code2"));
|
||||||
|
feedback.put("flocationid081number", requestParam.getString("out_store_order"));
|
||||||
wmsToMesService.taskFeedback(feedback);
|
wmsToMesService.taskFeedback(feedback);
|
||||||
|
|
||||||
// 任务表的点位1:成品库区点
|
// 任务表的点位1:成品库区点
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
|||||||
|
|
||||||
String point_code2 = taskObj.getString("point_code2");
|
String point_code2 = taskObj.getString("point_code2");
|
||||||
if (ObjectUtil.isEmpty(point_code2)) return;
|
if (ObjectUtil.isEmpty(point_code2)) return;
|
||||||
|
|
||||||
JSONObject object = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
JSONObject object = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
||||||
object.put("lock_type", "1");
|
object.put("lock_type", "1");
|
||||||
object.put("update_time", DateUtil.now());
|
object.put("update_time", DateUtil.now());
|
||||||
@@ -83,10 +84,6 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
|||||||
taskObj.put("update_time", DateUtil.now());
|
taskObj.put("update_time", DateUtil.now());
|
||||||
taskObj.put("car_no", taskObj.getString("car_no"));
|
taskObj.put("car_no", taskObj.getString("car_no"));
|
||||||
taskTab.update(taskObj);
|
taskTab.update(taskObj);
|
||||||
// 通知mes
|
|
||||||
feedback.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
|
||||||
feedback.put("struct_code", taskObj.getString("point_code2"));
|
|
||||||
wmsToMesService.taskFeedback(feedback);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StrUtil.equals(status, "2")) {
|
if (StrUtil.equals(status, "2")) {
|
||||||
@@ -130,8 +127,9 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
|||||||
taskTab.update(taskObj);
|
taskTab.update(taskObj);
|
||||||
|
|
||||||
// 通知mes
|
// 通知mes
|
||||||
feedback.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
feedback.put("fsn502", taskObj.getString("task_code"));
|
||||||
feedback.put("struct_code", taskObj.getString("point_code2"));
|
feedback.put("flpn979", taskObj.getString("vehicle_code"));
|
||||||
|
feedback.put("flocationid979number", taskObj.getString("point_code2"));
|
||||||
wmsToMesService.taskFeedback(feedback);
|
wmsToMesService.taskFeedback(feedback);
|
||||||
|
|
||||||
//区域出入表【st_ivt_regionIO】
|
//区域出入表【st_ivt_regionIO】
|
||||||
@@ -266,7 +264,7 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
|||||||
param2.put("flag", "2");
|
param2.put("flag", "2");
|
||||||
param2.put("region_code", "YSQA01");
|
param2.put("region_code", "YSQA01");
|
||||||
param2.put("vehicle_type",vehicle_type);
|
param2.put("vehicle_type",vehicle_type);
|
||||||
//1、查找整列为空的货位
|
//1、查找整排为空的货位
|
||||||
JSONObject json2 = WQL.getWO("QSCH_gjxSendMaterial_01").addParamMap(param2).process().uniqueResult(0);
|
JSONObject json2 = WQL.getWO("QSCH_gjxSendMaterial_01").addParamMap(param2).process().uniqueResult(0);
|
||||||
if (ObjectUtil.isEmpty(json2)) {
|
if (ObjectUtil.isEmpty(json2)) {
|
||||||
taskObj.put("remark", ObjectUtil.isNotEmpty(reminder) ? reminder : "养生A区无可用货位");
|
taskObj.put("remark", ObjectUtil.isNotEmpty(reminder) ? reminder : "养生A区无可用货位");
|
||||||
@@ -328,7 +326,6 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
|||||||
public String createTask(JSONObject whereJson) {
|
public String createTask(JSONObject whereJson) {
|
||||||
String point_code1 = whereJson.getString("point_code1");
|
String point_code1 = whereJson.getString("point_code1");
|
||||||
String vehicle_code = whereJson.getString("vehicle_code");
|
String vehicle_code = whereJson.getString("vehicle_code");
|
||||||
String vehicle_type = whereJson.getString("vehicle_type");
|
|
||||||
String qty = whereJson.getString("qty");
|
String qty = whereJson.getString("qty");
|
||||||
String task_code = CodeUtil.getNewCode("TASK_CODE");
|
String task_code = CodeUtil.getNewCode("TASK_CODE");
|
||||||
if (ObjectUtil.isNotEmpty(whereJson.getString("task_code"))) {
|
if (ObjectUtil.isNotEmpty(whereJson.getString("task_code"))) {
|
||||||
@@ -363,7 +360,7 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
|||||||
.material_qty(qty)
|
.material_qty(qty)
|
||||||
.material_info_id(workOrderObj.getLong("workorder_id"))
|
.material_info_id(workOrderObj.getLong("workorder_id"))
|
||||||
.material_id(workOrderObj.getLong("material_id"))
|
.material_id(workOrderObj.getLong("material_id"))
|
||||||
.vehicle_type(vehicle_type)
|
.vehicle_type(workOrderObj.getString("vehicle_type"))
|
||||||
.handle_class(THIS_CLASS)
|
.handle_class(THIS_CLASS)
|
||||||
.create_time(DateUtil.now())
|
.create_time(DateUtil.now())
|
||||||
.request_param(whereJson.toJSONString())
|
.request_param(whereJson.toJSONString())
|
||||||
|
|||||||
@@ -73,10 +73,6 @@ public class HkxSendMaterialTask extends AbstractAcsTask {
|
|||||||
taskObj.put("update_time", DateUtil.now());
|
taskObj.put("update_time", DateUtil.now());
|
||||||
taskObj.put("car_no", taskObj.getString("car_no"));
|
taskObj.put("car_no", taskObj.getString("car_no"));
|
||||||
taskTab.update(taskObj);
|
taskTab.update(taskObj);
|
||||||
// 通知mes
|
|
||||||
feedback.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
|
||||||
feedback.put("struct_code", taskObj.getString("point_code2"));
|
|
||||||
wmsToMesService.taskFeedback(feedback);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StrUtil.equals(status, "2")) {
|
if (StrUtil.equals(status, "2")) {
|
||||||
@@ -86,8 +82,9 @@ public class HkxSendMaterialTask extends AbstractAcsTask {
|
|||||||
taskTab.update(taskObj);
|
taskTab.update(taskObj);
|
||||||
|
|
||||||
// 通知mes
|
// 通知mes
|
||||||
feedback.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
feedback.put("fpacknumberpl695", taskObj.getString("task_code"));
|
||||||
feedback.put("struct_code", taskObj.getString("point_code2"));
|
feedback.put("flpn979", taskObj.getString("vehicle_code"));
|
||||||
|
feedback.put("flocationid979number", taskObj.getString("point_code2"));
|
||||||
wmsToMesService.taskFeedback(feedback);
|
wmsToMesService.taskFeedback(feedback);
|
||||||
|
|
||||||
String point_code2 = taskObj.getString("point_code2");
|
String point_code2 = taskObj.getString("point_code2");
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ spring:
|
|||||||
druid:
|
druid:
|
||||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||||
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
||||||
url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:yongyu_lms2}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
# url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:yy-lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||||||
# url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:yongyu_lms2}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:yongyu_lms2}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||||||
username: ${DB_USER:root}
|
username: ${DB_USER:root}
|
||||||
password: ${DB_PWD:P@ssw0rd}
|
# password: ${DB_PWD:P@ssw0rd}
|
||||||
# password: ${DB_PWD:12356}
|
password: ${DB_PWD:12356}
|
||||||
# 初始连接数
|
# 初始连接数
|
||||||
initial-size: 5
|
initial-size: 5
|
||||||
# 最小连接数
|
# 最小连接数
|
||||||
@@ -58,6 +58,16 @@ redis:
|
|||||||
host: ${REDIS_HOST:127.0.0.1}
|
host: ${REDIS_HOST:127.0.0.1}
|
||||||
port: ${REDIS_PORT:6379}
|
port: ${REDIS_PORT:6379}
|
||||||
password: ${REDIS_PWD:}
|
password: ${REDIS_PWD:}
|
||||||
|
redisson:
|
||||||
|
config: |
|
||||||
|
threads: 4
|
||||||
|
nettyThreads: 4
|
||||||
|
singleServerConfig:
|
||||||
|
connectionMinimumIdleSize: 8
|
||||||
|
connectionPoolSize: 8
|
||||||
|
address: redis://127.0.0.1:6379
|
||||||
|
idleConnectionTimeout: 10000
|
||||||
|
timeout: 3000
|
||||||
|
|
||||||
# 登录相关配置
|
# 登录相关配置
|
||||||
login:
|
login:
|
||||||
@@ -154,3 +164,9 @@ sa-token:
|
|||||||
loki:
|
loki:
|
||||||
url: http://localhost:3100/loki/api/v1
|
url: http://localhost:3100/loki/api/v1
|
||||||
systemName: acs
|
systemName: acs
|
||||||
|
mes:
|
||||||
|
sqlserver:
|
||||||
|
enabled: false
|
||||||
|
jdbcurl: jdbc:sqlserver://192.168.81.80:1433;DatabaseName=hllg;
|
||||||
|
username: sa
|
||||||
|
password: P@ssw0rd
|
||||||
|
|||||||
@@ -173,3 +173,10 @@ sa-token:
|
|||||||
loki:
|
loki:
|
||||||
url: http://localhost:3100/loki/api/v1
|
url: http://localhost:3100/loki/api/v1
|
||||||
systemName: lms
|
systemName: lms
|
||||||
|
#mes
|
||||||
|
mes:
|
||||||
|
sqlserver:
|
||||||
|
enabled: true
|
||||||
|
jdbcurl: jdbc:sqlserver://192.168.4.113:1433;DatabaseName=Timely4100_15_yoyu;
|
||||||
|
username: timely
|
||||||
|
password: timely**2023
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ https://juejin.cn/post/6844903775631572999
|
|||||||
|
|
||||||
<!--开发环境:打印控制台-->
|
<!--开发环境:打印控制台-->
|
||||||
<springProfile name="dev">
|
<springProfile name="dev">
|
||||||
<root level="off">
|
<root level="debugger">
|
||||||
<appender-ref ref="CONSOLE"/>
|
<appender-ref ref="CONSOLE"/>
|
||||||
<appender-ref ref="lokiAppender" />
|
<appender-ref ref="lokiAppender" />
|
||||||
</root>
|
</root>
|
||||||
@@ -122,7 +122,7 @@ https://juejin.cn/post/6844903775631572999
|
|||||||
|
|
||||||
<!--生产环境:打印控制台和输出到文件-->
|
<!--生产环境:打印控制台和输出到文件-->
|
||||||
<springProfile name="prod">
|
<springProfile name="prod">
|
||||||
<root level="debug">
|
<root level="debugger">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
<appender-ref ref="lokiAppender"/>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2,39 +2,26 @@
|
|||||||
<div v-loading.fullscreen.lock="fullscreenLoading" class="app-container">
|
<div v-loading.fullscreen.lock="fullscreenLoading" class="app-container">
|
||||||
<!--工具栏-->
|
<!--工具栏-->
|
||||||
<div class="head-container">
|
<div class="head-container">
|
||||||
<el-row>
|
<div v-if="crud.props.searchToggle">
|
||||||
<el-col :span="8">
|
<el-form
|
||||||
<el-row>
|
:inline="true"
|
||||||
<el-col :span="7">
|
class="demo-form-inline"
|
||||||
<span style="line-height:36px;text-align: center">物料类别:</span>
|
label-position="right"
|
||||||
</el-col>
|
label-width="80px"
|
||||||
<el-col :span="12">
|
label-suffix=":"
|
||||||
<treeselect
|
>
|
||||||
v-model="query.material_type_id"
|
<el-form-item label="模糊搜索">
|
||||||
:load-options="loadChildNodes"
|
|
||||||
:options="classes1"
|
|
||||||
style="width: 200px;"
|
|
||||||
placeholder="请选择"
|
|
||||||
/>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="8">
|
|
||||||
模糊查询:
|
|
||||||
<el-input
|
<el-input
|
||||||
v-model="query.search"
|
v-model="query.search"
|
||||||
clearable
|
clearable
|
||||||
style="width: 200px"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
placeholder="输入物料编码或名称"
|
placeholder="编码、名称"
|
||||||
prefix-icon="el-icon-search"
|
@keyup.enter.native="crud.toQuery"
|
||||||
class="filter-item"
|
|
||||||
/>
|
/>
|
||||||
</el-col>
|
</el-form-item>
|
||||||
<el-col :span="8">
|
|
||||||
<rrOperation />
|
<rrOperation />
|
||||||
</el-col>
|
</el-form>
|
||||||
</el-row>
|
</div>
|
||||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||||
<crudOperation :permission="permission">
|
<crudOperation :permission="permission">
|
||||||
<el-button
|
<el-button
|
||||||
@@ -83,55 +70,66 @@
|
|||||||
<el-input v-model="form.material_model" style="width: 200px;" />
|
<el-input v-model="form.material_model" style="width: 200px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="外部标识" prop="ext_id">
|
|
||||||
<el-input v-model="form.ext_id" style="width: 200px;" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="物料分类" prop="material_type_id">
|
|
||||||
<treeselect
|
|
||||||
v-model="form.material_type_id"
|
|
||||||
:load-options="loadChildNodes"
|
|
||||||
:options="classes2"
|
|
||||||
style="width: 200px;"
|
|
||||||
placeholder="请选择"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="产品系列">
|
|
||||||
<treeselect
|
|
||||||
v-model="form.product_series"
|
|
||||||
:options="classes3"
|
|
||||||
:auto-load-root-options="false"
|
|
||||||
:load-options="loadChildNodes"
|
|
||||||
style="width: 200px;"
|
|
||||||
placeholder="请选择"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="静置时间" prop="standing_time">
|
|
||||||
<el-input-number v-model="form.standing_time" :controls="false" :min="0" label="分钟" style="width: 200px;" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="是否启用" prop="is_used">
|
<el-form-item label="是否启用" prop="is_used">
|
||||||
<el-radio v-model="form.is_used" label="0">否</el-radio>
|
<el-radio v-model="form.is_used" label="0">否</el-radio>
|
||||||
<el-radio v-model="form.is_used" label="1">是</el-radio>
|
<el-radio v-model="form.is_used" label="1">是</el-radio>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="物料数量" prop="standing_time">
|
<el-form-item label="物料数量" prop="standing_time">
|
||||||
<el-input-number v-model="form.material_qty" :controls="false" :min="0" style="width: 200px;" />
|
<el-input-number v-model="form.material_qty" :controls="false" :min="0" style="width: 200px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<!-- <el-col :span="8">-->
|
||||||
|
<!-- <el-form-item label="外部标识" prop="ext_id">-->
|
||||||
|
<!-- <el-input v-model="form.ext_id" style="width: 200px;" />-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<!-- </el-col>-->
|
||||||
|
<!-- <el-col :span="8">-->
|
||||||
|
<!-- <el-form-item label="物料分类" prop="material_type_id">-->
|
||||||
|
<!-- <treeselect-->
|
||||||
|
<!-- v-model="form.material_type_id"-->
|
||||||
|
<!-- :load-options="loadChildNodes"-->
|
||||||
|
<!-- :options="classes2"-->
|
||||||
|
<!-- style="width: 200px;"-->
|
||||||
|
<!-- placeholder="请选择"-->
|
||||||
|
<!-- />-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<!-- </el-col>-->
|
||||||
</el-row>
|
</el-row>
|
||||||
|
<!-- <el-row>-->
|
||||||
|
<!-- <el-col :span="8">-->
|
||||||
|
<!-- <el-form-item label="产品系列">-->
|
||||||
|
<!-- <treeselect-->
|
||||||
|
<!-- v-model="form.product_series"-->
|
||||||
|
<!-- :options="classes3"-->
|
||||||
|
<!-- :auto-load-root-options="false"-->
|
||||||
|
<!-- :load-options="loadChildNodes"-->
|
||||||
|
<!-- style="width: 200px;"-->
|
||||||
|
<!-- placeholder="请选择"-->
|
||||||
|
<!-- />-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<!-- </el-col>-->
|
||||||
|
<!-- <el-col :span="8">-->
|
||||||
|
<!-- <el-form-item label="静置时间" prop="standing_time">-->
|
||||||
|
<!-- <el-input-number v-model="form.standing_time" :controls="false" :min="0" label="分钟" style="width: 200px;" />-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<!-- </el-col>-->
|
||||||
|
<!-- <el-col :span="8">-->
|
||||||
|
<!-- <el-form-item label="是否启用" prop="is_used">-->
|
||||||
|
<!-- <el-radio v-model="form.is_used" label="0">否</el-radio>-->
|
||||||
|
<!-- <el-radio v-model="form.is_used" label="1">是</el-radio>-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<!-- </el-col>-->
|
||||||
|
<!-- </el-row>-->
|
||||||
|
<!-- <el-row>-->
|
||||||
|
<!-- <el-col :span="8">-->
|
||||||
|
<!-- <el-form-item label="物料数量" prop="standing_time">-->
|
||||||
|
<!-- <el-input-number v-model="form.material_qty" :controls="false" :min="0" style="width: 200px;" />-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<!-- </el-col>-->
|
||||||
|
<!-- </el-row>-->
|
||||||
</el-form>
|
</el-form>
|
||||||
<div slot="footer" class="dialog-footer">
|
<div slot="footer" class="dialog-footer">
|
||||||
<el-button type="text" @click="crud.cancelCU">取消</el-button>
|
<el-button type="text" @click="crud.cancelCU">取消</el-button>
|
||||||
@@ -147,16 +145,16 @@
|
|||||||
style="width: 100%;"
|
style="width: 100%;"
|
||||||
@selection-change="crud.selectionChangeHandler"
|
@selection-change="crud.selectionChangeHandler"
|
||||||
>
|
>
|
||||||
<el-table-column prop="material_code" label="物料柜号" width="160" />
|
<el-table-column prop="material_code" label="物料编码" width="160" />
|
||||||
<el-table-column prop="material_name" label="物料名称" width="180" show-overflow-tooltip />
|
<el-table-column prop="material_name" label="物料名称" show-overflow-tooltip />
|
||||||
<el-table-column prop="material_spec" label="物料规格" width="140" />
|
<el-table-column prop="material_spec" label="物料规格" width="140" />
|
||||||
<el-table-column prop="material_qty" label="物料数量" width="100" />
|
<!-- <el-table-column prop="material_qty" label="物料数量" />-->
|
||||||
<el-table-column prop="material_model" label="物料型号" />
|
<el-table-column prop="material_model" label="物料型号" />
|
||||||
<el-table-column prop="class_name" label="物料分类" width="140" />
|
<!-- <el-table-column prop="class_name" label="物料分类" width="140" />-->
|
||||||
<el-table-column prop="unit_name" label="计量单位" />
|
<!-- <el-table-column prop="unit_name" label="计量单位" />-->
|
||||||
<el-table-column prop="standing_time" label="静置时间(分钟)" width="130px" />
|
<!-- <el-table-column prop="standing_time" label="静置时间(分钟)" width="130px" />-->
|
||||||
<el-table-column prop="product_series_name" label="系列" />
|
<!-- <el-table-column prop="product_series_name" label="系列" />-->
|
||||||
<el-table-column label="启用" align="center" prop="is_used">
|
<el-table-column label="启用" align="center" prop="is_used" width="80">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-switch
|
<el-switch
|
||||||
v-model="scope.row.is_used"
|
v-model="scope.row.is_used"
|
||||||
@@ -169,7 +167,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="update_optname" label="修改人" />
|
<el-table-column prop="update_optname" label="修改人" />
|
||||||
<el-table-column prop="update_time" label="修改时间" width="135" />
|
<el-table-column prop="update_time" label="修改时间"/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
v-permission="['admin','Materialbase:edit','Materialbase:del']"
|
v-permission="['admin','Materialbase:edit','Materialbase:del']"
|
||||||
fixed="right"
|
fixed="right"
|
||||||
|
|||||||
@@ -15,15 +15,6 @@
|
|||||||
label-width="80px"
|
label-width="80px"
|
||||||
label-suffix=":"
|
label-suffix=":"
|
||||||
>
|
>
|
||||||
<el-form-item label="物料类别">
|
|
||||||
<treeselect
|
|
||||||
v-model="query.material_type_id"
|
|
||||||
:load-options="loadClass"
|
|
||||||
:options="classes"
|
|
||||||
style="width: 200px;"
|
|
||||||
placeholder="选择物料类别"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="模糊搜索">
|
<el-form-item label="模糊搜索">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="query.search"
|
v-model="query.search"
|
||||||
@@ -131,15 +122,15 @@ export default {
|
|||||||
return this.dict.label.product_series[row.product_series]
|
return this.dict.label.product_series[row.product_series]
|
||||||
},
|
},
|
||||||
open() {
|
open() {
|
||||||
const param = {
|
// const param = {
|
||||||
'materOpt_code': this.materOptCode
|
// 'materOpt_code': this.materOptCode
|
||||||
}
|
// }
|
||||||
crudMaterialbase.getMaterOptType(param).then(res => {
|
// crudMaterialbase.getMaterOptType(param).then(res => {
|
||||||
this.class_idStr = res.class_idStr
|
// this.class_idStr = res.class_idStr
|
||||||
this.crud.query.class_idStr = res.class_idStr
|
// this.crud.query.class_idStr = res.class_idStr
|
||||||
this.crud.toQuery()
|
// this.crud.toQuery()
|
||||||
this.queryClassId()
|
// this.queryClassId()
|
||||||
})
|
// })
|
||||||
},
|
},
|
||||||
queryClassId() {
|
queryClassId() {
|
||||||
const param = {
|
const param = {
|
||||||
|
|||||||
Reference in New Issue
Block a user