fix 指令多次生成和用户管理功能
This commit is contained in:
@@ -26,6 +26,7 @@ import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.start.auto.run.NDCSocketConnectionAutoRun;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -36,10 +37,12 @@ import java.util.Map;
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class NDCAgvServiceImpl implements NDCAgvService {
|
||||
|
||||
private final DeviceAppService deviceAppService;
|
||||
private final ParamService acsConfigService;
|
||||
private final AcsToWmsService acsToWmsService;
|
||||
@Autowired
|
||||
DeviceAppService deviceAppService;
|
||||
@Autowired
|
||||
ParamService acsConfigService;
|
||||
@Autowired
|
||||
AcsToWmsService acsToWmsService;
|
||||
|
||||
private final DeviceExecuteLogService logServer;
|
||||
|
||||
|
||||
@@ -5,6 +5,6 @@ public class HeartbeatConfig {
|
||||
/**
|
||||
* 最大心跳时常
|
||||
*/
|
||||
public static Integer max_alive_time_millions = 1000 * 30;
|
||||
public static Integer max_alive_time_millions = 1000;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package org.nl.acs.opc;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import eu.bitwalker.useragentutils.DeviceType;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@@ -4,6 +4,7 @@ package org.nl.acs.order.rest;
|
||||
import org.nl.acs.order.service.ProduceshiftorderService;
|
||||
import org.nl.acs.order.service.dto.ProduceshiftorderDto;
|
||||
import org.nl.modules.logging.annotation.Log;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.http.HttpStatus;
|
||||
@@ -26,8 +27,8 @@ import lombok.extern.slf4j.Slf4j;
|
||||
@RequestMapping("/api/produceshiftorder")
|
||||
@Slf4j
|
||||
public class ProduceshiftorderController {
|
||||
|
||||
private final ProduceshiftorderService produceshiftorderService;
|
||||
@Autowired
|
||||
ProduceshiftorderService produceshiftorderService;
|
||||
|
||||
@GetMapping
|
||||
@Log("查询工单信息")
|
||||
|
||||
@@ -83,6 +83,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
|
||||
private DeviceAppService deviceAppService;
|
||||
@Autowired
|
||||
private RouteLineService routelineserver;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private AcsToWmsService acstowmsService;
|
||||
@Autowired
|
||||
@@ -155,7 +156,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryAllByCache(Map whereJson, Pageable page) {
|
||||
this.reload();
|
||||
// this.reload();
|
||||
String task_code = (String) whereJson.get("task_code");
|
||||
String vehicle_code = (String) whereJson.get("vehicle_code");
|
||||
String material_type = (String) whereJson.get("material_type");
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.nl.modules.logicflow.service.impl;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@@ -331,6 +331,7 @@ public class AutoCreateInst {
|
||||
try {
|
||||
instructionService.create(instdto);
|
||||
} catch (Exception e) {
|
||||
log.error("agv创建指令异常", e);
|
||||
acsTask.setRemark(e.getMessage());
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
continue;
|
||||
|
||||
@@ -109,7 +109,7 @@ public class UserController {
|
||||
public ResponseEntity<Object> create(@Validated @RequestBody User resources){
|
||||
checkLevel(resources);
|
||||
// 默认密码 123456
|
||||
resources.setPassword(SaSecureUtil.md5BySalt("123456", "salt"));
|
||||
resources.setPassword(SaSecureUtil.md5BySalt(resources.getPassword(), "salt"));
|
||||
userService.create(resources);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package org.nl.modules.system.service.impl;
|
||||
|
||||
import cn.dev33.satoken.secure.SaSecureUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.nl.modules.common.config.FileProperties;
|
||||
@@ -135,6 +136,7 @@ public class UserServiceImpl implements UserService {
|
||||
clone.setPhone(resources.getPhone());
|
||||
clone.setNickName(resources.getNickName());
|
||||
clone.setGender(resources.getGender());
|
||||
clone.setPassword(SaSecureUtil.md5BySalt(resources.getPassword(), "salt"));
|
||||
|
||||
userRepository.save(clone);
|
||||
// 清除缓存
|
||||
@@ -169,7 +171,7 @@ public class UserServiceImpl implements UserService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Cacheable(key = "'username:' + #p0")
|
||||
// @Cacheable(key = "'username:' + #p0")
|
||||
public UserDto findByName(String userName) {
|
||||
User user = userRepository.findByUsername(userName);
|
||||
if (user == null) {
|
||||
|
||||
@@ -68,7 +68,8 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
ParamService paramService;
|
||||
@Autowired
|
||||
AutoRunService autoRunService;
|
||||
|
||||
@Autowired
|
||||
AcsToWmsService acsToWmsService;
|
||||
|
||||
public NDCSocketConnectionAutoRun() {
|
||||
this.recordTime = new Date((new Date()).getTime() - (long) this.recordTimeOut);
|
||||
@@ -86,10 +87,10 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
System.out.println("1楼NDCAgv链接开始");
|
||||
ParamService ParamService = SpringContextHolder.getBean(ParamServiceImpl.class);
|
||||
InstructionService instructionService = SpringContextHolder.getBean(InstructionServiceImpl.class);
|
||||
AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class);
|
||||
// AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsService.class);
|
||||
NDCAgvService NDCAgvService = SpringContextHolder.getBean(NDCAgvService.class);
|
||||
DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class);
|
||||
DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class);
|
||||
// DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class);
|
||||
DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class);
|
||||
ip = paramService.findByCode(org.nl.acs.AcsConfig.AGVURL).getValue();
|
||||
port = Integer.parseInt(paramService.findByCode(AcsConfig.AGVPORT).getValue());
|
||||
|
||||
@@ -73,8 +73,35 @@ https://juejin.cn/post/6844903775631572999
|
||||
<springProfile name="dev">
|
||||
<root level="info">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</root>
|
||||
<logger name="jdbc" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.springframework" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.hibernate" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.quartz" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="com.google" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.redisson" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.nl.modules.wql" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.springframework.data" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.jinterop" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
</springProfile>
|
||||
<!--测试环境:打印控制台-->
|
||||
<springProfile name="test">
|
||||
@@ -93,5 +120,32 @@ https://juejin.cn/post/6844903775631572999
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</root>
|
||||
<logger name="jdbc" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.springframework" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.hibernate" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.quartz" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="com.google" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.redisson" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.nl.modules.wql" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.springframework.data" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.jinterop" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
</springProfile>
|
||||
</configuration>
|
||||
|
||||
@@ -159,68 +159,6 @@
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card class="box-card" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<span class="role-span">交互相关:</span>
|
||||
</div>
|
||||
<div class="crud-opts2" style="margin-bottom: 5px;">
|
||||
<span class="crud-opts-right2">
|
||||
<!--左侧插槽-->
|
||||
<slot name="left" />
|
||||
<el-button
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="insertdtl()"
|
||||
>
|
||||
新增一行
|
||||
</el-button>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
<div class="app-container">
|
||||
<el-table :data="modeform.tableData" border fit highlight-current-row style="width: 100%;" class="tb-edit">
|
||||
<el-table-column label="mode" prop="模式" width="180">
|
||||
<template scope="scope">
|
||||
<el-input-number value="3" :min="3" v-model="scope.row.mode" size="mini" />
|
||||
<span v-show="scope.row.edit">{{ scope.row.mode }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="request" prop="请求方法" width="500">
|
||||
<template scope="scope">
|
||||
<el-select
|
||||
v-model="scope.row.request"
|
||||
filterable
|
||||
clearable
|
||||
placeholder="请选择"
|
||||
style="width: 450px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in requestMethodList"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code"
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="操作" width="170" >
|
||||
<template scope="scope">
|
||||
<el-button
|
||||
type="danger"
|
||||
class="filter-item"
|
||||
size="mini"
|
||||
icon="el-icon-delete"
|
||||
@click.native.prevent="deleteRow(scope.$index, modeform.tableData)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-card class="box-card" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<span class="role-span">PLC读取字段:</span>
|
||||
@@ -356,61 +294,8 @@ export default {
|
||||
dataOpcservers: [],
|
||||
dataOpcPlcs: [],
|
||||
deviceList: [],
|
||||
requestMethodList: [],
|
||||
data1: [],
|
||||
data2: [],
|
||||
modeform: {
|
||||
tableData: [
|
||||
{
|
||||
mode: '3',
|
||||
request: 'order_verify'
|
||||
},
|
||||
{
|
||||
mode: '4',
|
||||
request: 'order_finish'
|
||||
},
|
||||
{
|
||||
mode: '5',
|
||||
request: 'apply_put_full_vehicle'
|
||||
},
|
||||
{
|
||||
mode: '6',
|
||||
request: 'apply_put_empty_vehicle'
|
||||
},
|
||||
{
|
||||
mode: '7',
|
||||
request: 'apply_take_empty_vehicle'
|
||||
},
|
||||
{
|
||||
mode: '8',
|
||||
request: 'apply_take_full_vehicle'
|
||||
},
|
||||
{
|
||||
mode: '9',
|
||||
request: 'apply_force_take_full_vehicle'
|
||||
},
|
||||
{
|
||||
mode: '10',
|
||||
request: 'apply_force_take_full_vehicle_in_storage'
|
||||
},
|
||||
{
|
||||
mode: '11',
|
||||
request: 'barcode_success_apply'
|
||||
},
|
||||
{
|
||||
mode: '12',
|
||||
request: 'get_vehicle_info'
|
||||
},
|
||||
{
|
||||
mode: '13',
|
||||
request: 'force_no_package'
|
||||
},
|
||||
{
|
||||
mode: '14',
|
||||
request: 'apply_labelling'
|
||||
}
|
||||
]
|
||||
},
|
||||
form: {
|
||||
inspect_in_stocck: true,
|
||||
ignore_pickup_check: true,
|
||||
@@ -451,13 +336,6 @@ export default {
|
||||
}
|
||||
this.data1 = data.rs
|
||||
this.data2 = data.ws
|
||||
if (data.modeform) {
|
||||
const arr = Object.keys(data.modeform)
|
||||
// 不为空
|
||||
if (arr.length > 0) {
|
||||
this.modeform.tableData = data.modeform
|
||||
}
|
||||
}
|
||||
this.sliceItem()
|
||||
})
|
||||
selectPlcList().then(data => {
|
||||
@@ -471,19 +349,9 @@ export default {
|
||||
deviceCrud.selectDeviceList().then(data => {
|
||||
this.deviceList = data
|
||||
})
|
||||
deviceCrud.selectRequestMethodList().then(data => {
|
||||
this.requestMethodList = data
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
insertdtl() {
|
||||
this.modeform.tableData.push({mode: '', request: '' })
|
||||
},
|
||||
deleteRow(index, rows) {
|
||||
debugger
|
||||
rows.splice(index, 1)
|
||||
},
|
||||
finishReadEdit(data) {
|
||||
// 编辑的是code列,并且值包含mode
|
||||
if (data.code.indexOf('mode') !== -1) {
|
||||
@@ -572,53 +440,20 @@ export default {
|
||||
if (this.data2[val].code.indexOf('to_material_code') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.STRING58.50'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_brick_code') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.STRING112.50'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_formula') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.STRING164.50'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_product_code') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.W216'
|
||||
this.data2[val].db = beforeStr + '.W108'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_AlongSide') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.W218'
|
||||
this.data2[val].db = beforeStr + '.W110'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_BshortSide') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.W220'
|
||||
this.data2[val].db = beforeStr + '.W112'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_Htrapezoidal') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.W222'
|
||||
this.data2[val].db = beforeStr + '.W114'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_Wthickness') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.W224'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_size_error') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.REAL228'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_single_weight') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.REAL232'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_drawing_address') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.REAL236'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_standard_weight') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.REAL240'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_detection_error') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.REAL244'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_standard_size_height1') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.REAL248'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_standard_size_height2') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.REAL252'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_standard_size_height3') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.REAL256'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_standard_size_height4') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.REAL260'
|
||||
this.data2[val].db = beforeStr + '.W116'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -683,7 +518,7 @@ export default {
|
||||
parentForm.is_route = true
|
||||
parentForm.plc_id = this.plc_id
|
||||
parentForm.opc_id = this.opc_id
|
||||
updateConfig(parentForm, this.form, this.modeform, this.data1, this.data2).then(res => {
|
||||
updateConfig(parentForm, this.form, this.data1, this.data2).then(res => {
|
||||
this.notify('保存成功', 'success')
|
||||
this.configLoading = false
|
||||
}).catch(err => {
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
</div>
|
||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||
<crudOperation :permission="permission">
|
||||
<el-button
|
||||
<!-- <el-button
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
size="mini"
|
||||
@@ -79,7 +79,7 @@
|
||||
@click="reload"
|
||||
>
|
||||
同步
|
||||
</el-button>
|
||||
</el-button> -->
|
||||
</crudOperation>
|
||||
<!--表单组件-->
|
||||
<el-dialog
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
<!-- <el-button
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
size="mini"
|
||||
@@ -77,7 +77,7 @@
|
||||
@click="reload"
|
||||
>
|
||||
同步
|
||||
</el-button>
|
||||
</el-button> -->
|
||||
</crudOperation>
|
||||
<!--表单组件-->
|
||||
<el-dialog :close-on-click-modal="false" :visible.sync="formDia" :title="crud.status.title" width="500px">
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<!-- <el-table-column v-if="false" prop="id" label="id"/>-->
|
||||
<el-table-column prop="operate" width="50" label="操作" />
|
||||
<el-table-column prop="device_code" label="设备号" min-width="130" show-overflow-tooltip />
|
||||
<!-- <el-table-column prop="trace_id" label="链路追踪" /> -->
|
||||
<el-table-column prop="trace_id" label="链路追踪" />
|
||||
<el-table-column prop="task_code" label="任务编号" />
|
||||
<el-table-column prop="instruct_code" label="指令编号" />
|
||||
<el-table-column prop="method" label="方法" />
|
||||
|
||||
@@ -96,6 +96,9 @@
|
||||
<el-radio label="女">女</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="密码" prop="password">
|
||||
<el-input v-model="form.password" style="width: 200px;" show-password auto-complete="new-password" />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态">
|
||||
<el-radio-group v-model="form.enabled" :disabled="form.id === user.id">
|
||||
<el-radio
|
||||
@@ -256,7 +259,7 @@ export default {
|
||||
])
|
||||
},
|
||||
created() {
|
||||
this.crud.msg.add = '新增成功,默认密码:123456'
|
||||
this.crud.msg.add = '新增成功'
|
||||
},
|
||||
mounted: function() {
|
||||
const that = this
|
||||
|
||||
Reference in New Issue
Block a user