19 changed files with 539 additions and 574 deletions
@ -0,0 +1,50 @@ |
|||||
|
package org.nl.wms.basedata.master.faultdevice.service; |
||||
|
|
||||
|
import com.alibaba.fastjson.JSONObject; |
||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||
|
import org.nl.common.domain.query.PageQuery; |
||||
|
import org.nl.wms.basedata.master.faultdevice.service.dao.FaultDevice; |
||||
|
import org.nl.wms.basedata.master.faultdevice.service.dto.FaultQuery; |
||||
|
import org.nl.wms.basedata.master.service.dto.CustomerbaseDto; |
||||
|
import org.springframework.data.domain.Pageable; |
||||
|
|
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
/** |
||||
|
* @author liuxy |
||||
|
* @description 服务接口 |
||||
|
* @date 2023-04-20 |
||||
|
**/ |
||||
|
public interface FaultDeviceService extends IService<FaultDevice> { |
||||
|
|
||||
|
/** |
||||
|
* 查询数据分页 |
||||
|
* |
||||
|
* @param whereJson 条件 |
||||
|
* @param page 分页参数 |
||||
|
* @return Map<String, Object> |
||||
|
*/ |
||||
|
IPage<FaultDevice> queryAll(FaultQuery whereJson, PageQuery page); |
||||
|
|
||||
|
/** |
||||
|
* 查询数据分页 |
||||
|
* |
||||
|
* @param whereJson 条件 |
||||
|
* @param page 分页参数 |
||||
|
* @return Map<String, Object> |
||||
|
*/ |
||||
|
Map<String, Object> queryDeviceAll(Map whereJson, Pageable page); |
||||
|
/** |
||||
|
* 编辑 |
||||
|
* |
||||
|
* @param whereJson / |
||||
|
*/ |
||||
|
void update(FaultDevice whereJson); |
||||
|
|
||||
|
/** |
||||
|
* 同步信息 |
||||
|
*/ |
||||
|
void syncInfo(); |
||||
|
} |
@ -0,0 +1,45 @@ |
|||||
|
package org.nl.wms.basedata.master.faultdevice.service.dao; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.IdType; |
||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
import java.io.Serializable; |
||||
|
|
||||
|
/** |
||||
|
* @author: zds |
||||
|
* @date: 2024-09-27 |
||||
|
* @description: |
||||
|
*/ |
||||
|
@Data |
||||
|
@EqualsAndHashCode(callSuper = false) |
||||
|
@TableName("em_bi_faultdisposedevice") |
||||
|
public class FaultDevice implements Serializable { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
@TableId(value = "fault_id", type = IdType.NONE) |
||||
|
private String fault_id; |
||||
|
|
||||
|
private String fault_code; |
||||
|
|
||||
|
private String fault_info; |
||||
|
|
||||
|
private String fault_type; |
||||
|
|
||||
|
private String solve_mode; |
||||
|
|
||||
|
private String create_id; |
||||
|
|
||||
|
private String create_name; |
||||
|
|
||||
|
private String create_time; |
||||
|
|
||||
|
private String update_id; |
||||
|
|
||||
|
private String update_name; |
||||
|
|
||||
|
private String update_time; |
||||
|
|
||||
|
} |
@ -0,0 +1,52 @@ |
|||||
|
package org.nl.wms.basedata.master.faultdevice.service.dao; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.IdType; |
||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
|
||||
|
/** |
||||
|
* @author: zds |
||||
|
* @date: 2024-09-29 |
||||
|
* @description: |
||||
|
*/ |
||||
|
@Data |
||||
|
@EqualsAndHashCode(callSuper = false) |
||||
|
@TableName("em_bi_monitordevice") |
||||
|
public class MonitorDevice implements Serializable { |
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
@TableId(value = "device_id", type = IdType.NONE) |
||||
|
private String device_id; |
||||
|
|
||||
|
private String device_code; |
||||
|
|
||||
|
private String device_name; |
||||
|
|
||||
|
private String product_area; |
||||
|
|
||||
|
private String region_code; |
||||
|
|
||||
|
private String parent_node; |
||||
|
|
||||
|
private String fault_type; |
||||
|
|
||||
|
private String is_crux; |
||||
|
|
||||
|
private String create_id; |
||||
|
|
||||
|
private String create_name; |
||||
|
|
||||
|
private String create_time; |
||||
|
|
||||
|
private String update_id; |
||||
|
|
||||
|
private String update_name; |
||||
|
|
||||
|
private String update_time; |
||||
|
|
||||
|
private String send_szls; |
||||
|
} |
@ -0,0 +1,13 @@ |
|||||
|
package org.nl.wms.basedata.master.faultdevice.service.dao.mapper; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
|
import org.nl.wms.basedata.master.faultdevice.service.dao.FaultDevice; |
||||
|
|
||||
|
/** |
||||
|
* @author: zds |
||||
|
* @date: 2024-09-27 |
||||
|
* @description: |
||||
|
*/ |
||||
|
public interface FaultDeviceMapper extends BaseMapper<FaultDevice> { |
||||
|
|
||||
|
} |
@ -0,0 +1,5 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
|
<mapper namespace="org.nl.wms.basedata.master.faultdevice.service.dao.mapper.FaultDeviceMapper"> |
||||
|
|
||||
|
</mapper> |
@ -0,0 +1,9 @@ |
|||||
|
package org.nl.wms.basedata.master.faultdevice.service.dao.mapper; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
|
import org.nl.wms.basedata.master.faultdevice.service.dao.MonitorDevice; |
||||
|
|
||||
|
public interface MonitorDeviceMapper extends BaseMapper<MonitorDevice> { |
||||
|
|
||||
|
String getDeviceStrs(); |
||||
|
} |
@ -0,0 +1,14 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
|
<mapper namespace="org.nl.wms.basedata.master.faultdevice.service.dao.mapper.MonitorDeviceMapper"> |
||||
|
|
||||
|
<select id="getDeviceStrs" resultType="java.lang.String"> |
||||
|
SELECT |
||||
|
GROUP_CONCAT(device_code) AS str |
||||
|
FROM |
||||
|
EM_BI_MonitorDevice |
||||
|
WHERE |
||||
|
is_crux = '1' |
||||
|
</select> |
||||
|
|
||||
|
</mapper> |
@ -0,0 +1,25 @@ |
|||||
|
package org.nl.wms.basedata.master.faultdevice.service.dto; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
import java.io.Serializable; |
||||
|
|
||||
|
/** |
||||
|
* @author: zds |
||||
|
* @date: 2024-09-27 |
||||
|
* @description: |
||||
|
*/ |
||||
|
@Data |
||||
|
public class FaultQuery implements Serializable { |
||||
|
//托盘号
|
||||
|
private String fault_code; |
||||
|
//物料条码号
|
||||
|
private String fault_type; |
||||
|
//物料名称
|
||||
|
private String device_code; |
||||
|
//供应商编码
|
||||
|
private String is_fault; |
||||
|
//供应商编码
|
||||
|
private String region_code; |
||||
|
//供应商名称
|
||||
|
private String plant_code; |
||||
|
} |
@ -0,0 +1,56 @@ |
|||||
|
package org.nl.wms.basedata.master.faultdevice.service.dto; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.IdType; |
||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
|
||||
|
/** |
||||
|
* @author: zds |
||||
|
* @date: 2024-09-29 |
||||
|
* @description: |
||||
|
*/ |
||||
|
@Data |
||||
|
public class MonitorDeviceDto implements Serializable { |
||||
|
|
||||
|
private String device_id; |
||||
|
|
||||
|
private String device_code; |
||||
|
|
||||
|
private String device_name; |
||||
|
|
||||
|
private String product_area; |
||||
|
|
||||
|
private String region_code; |
||||
|
|
||||
|
private String parent_node; |
||||
|
|
||||
|
private String fault_type; |
||||
|
|
||||
|
private String is_crux; |
||||
|
|
||||
|
private String create_id; |
||||
|
|
||||
|
private String create_name; |
||||
|
|
||||
|
private String create_time; |
||||
|
|
||||
|
private String update_id; |
||||
|
|
||||
|
private String update_name; |
||||
|
|
||||
|
private String update_time; |
||||
|
|
||||
|
private String send_szls; |
||||
|
|
||||
|
private String fault_code; |
||||
|
|
||||
|
private String fault_info; |
||||
|
|
||||
|
private String solve_mode; |
||||
|
|
||||
|
private String is_fault; |
||||
|
} |
@ -0,0 +1,246 @@ |
|||||
|
package org.nl.wms.basedata.master.faultdevice.service.impl; |
||||
|
|
||||
|
|
||||
|
import cn.hutool.core.date.DateUtil; |
||||
|
import cn.hutool.core.map.MapUtil; |
||||
|
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 com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.nl.common.domain.query.PageQuery; |
||||
|
import org.nl.common.utils.SecurityUtils; |
||||
|
import org.nl.modules.common.exception.BadRequestException; |
||||
|
import org.nl.wms.basedata.master.faultdevice.service.FaultDeviceService; |
||||
|
import org.nl.wms.basedata.master.faultdevice.service.dao.FaultDevice; |
||||
|
import org.nl.wms.basedata.master.faultdevice.service.dao.MonitorDevice; |
||||
|
import org.nl.wms.basedata.master.faultdevice.service.dao.mapper.FaultDeviceMapper; |
||||
|
import org.nl.wms.basedata.master.faultdevice.service.dao.mapper.MonitorDeviceMapper; |
||||
|
import org.nl.wms.basedata.master.faultdevice.service.dto.FaultQuery; |
||||
|
import org.nl.wms.basedata.master.faultdevice.service.dto.MonitorDeviceDto; |
||||
|
import org.nl.wms.ext.acs.service.WmsToAcsService; |
||||
|
import org.springframework.beans.BeanUtils; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.data.domain.Pageable; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.springframework.transaction.annotation.Transactional; |
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
/** |
||||
|
* @author liuxy |
||||
|
* @description 服务实现 |
||||
|
* @date 2023-04-20 |
||||
|
**/ |
||||
|
@Service |
||||
|
@Slf4j |
||||
|
public class FaultDeviceServiceImpl extends ServiceImpl<FaultDeviceMapper, FaultDevice> implements FaultDeviceService { |
||||
|
|
||||
|
@Autowired |
||||
|
private FaultDeviceMapper faultDeviceMapper; |
||||
|
@Autowired |
||||
|
private MonitorDeviceMapper monitorDeviceMapper; |
||||
|
@Autowired |
||||
|
private WmsToAcsService wmsToAcsService; |
||||
|
|
||||
|
@Override |
||||
|
public IPage<FaultDevice> queryAll(FaultQuery whereJson, PageQuery page) { |
||||
|
|
||||
|
IPage<FaultDevice> pages = new Page<>(page.getPage() + 1, page.getSize()); |
||||
|
LambdaQueryWrapper<FaultDevice> lam = new LambdaQueryWrapper<FaultDevice>(); |
||||
|
lam.eq(ObjectUtil.isNotEmpty(whereJson.getFault_code()), FaultDevice::getFault_code, whereJson.getFault_code()) |
||||
|
.eq(ObjectUtil.isNotEmpty(whereJson.getFault_type()), FaultDevice::getFault_type, whereJson.getFault_type()) |
||||
|
.orderByAsc(FaultDevice::getCreate_time); |
||||
|
faultDeviceMapper.selectPage(pages, lam); |
||||
|
return pages; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public Map<String, Object> queryDeviceAll(Map whereJson, Pageable page) { |
||||
|
|
||||
|
String query_device_code = MapUtil.getStr(whereJson, "device_code"); |
||||
|
String query_is_fault = MapUtil.getStr(whereJson, "is_fault"); |
||||
|
String query_region_code = MapUtil.getStr(whereJson, "region_code"); |
||||
|
String query_product_area = MapUtil.getStr(whereJson, "plant_code"); |
||||
|
if (StrUtil.isEmpty(query_product_area)) { |
||||
|
throw new BadRequestException("输入的区域不能为空!"); |
||||
|
} |
||||
|
JSONObject param = new JSONObject(); |
||||
|
if (ObjectUtil.isNotEmpty(query_device_code)) { |
||||
|
LambdaQueryWrapper<MonitorDevice> lam = new LambdaQueryWrapper<MonitorDevice>(); |
||||
|
lam.eq(MonitorDevice::getDevice_code,query_device_code); |
||||
|
List<MonitorDevice> monitorDeviceList = monitorDeviceMapper.selectList(lam); |
||||
|
if(monitorDeviceList.size()>0){ |
||||
|
param.put("device_code", query_device_code); |
||||
|
param.put("product_area", monitorDeviceList.get(0).getProduct_area()); |
||||
|
} |
||||
|
} else { |
||||
|
// 为空则只需要查询专机设备
|
||||
|
String str = monitorDeviceMapper.getDeviceStrs(); |
||||
|
param.put("device_code", str); |
||||
|
param.put("product_area", query_product_area); |
||||
|
} |
||||
|
// LMS查看ACS实时报警信息
|
||||
|
JSONObject result = wmsToAcsService.realTimefaultInfo(param); |
||||
|
JSONArray data = result.getJSONArray("data"); |
||||
|
|
||||
|
// 查看AVG车辆信息
|
||||
|
JSONObject result2 = wmsToAcsService.queryDeviceInfo(param); |
||||
|
JSONArray rows = result2.getJSONArray("data"); |
||||
|
|
||||
|
for (int i = 0; i < rows.size(); i++) { |
||||
|
JSONObject jsonObject = rows.getJSONObject(i); |
||||
|
double electricity = jsonObject.getDoubleValue("electricity"); |
||||
|
if (electricity <= 30) { |
||||
|
// 新增一条agv报警信息
|
||||
|
JSONObject json = new JSONObject(); |
||||
|
String car_no = jsonObject.getString("car_no"); |
||||
|
if (StrUtil.equals(car_no, "1")) { |
||||
|
json.put("device_name", "一楼1号AGV"); |
||||
|
} else if (StrUtil.equals(car_no, "2")) { |
||||
|
json.put("device_name", "二楼1号AGV"); |
||||
|
} else if (StrUtil.equals(car_no, "3")) { |
||||
|
json.put("device_name", "二楼2号AGV"); |
||||
|
} |
||||
|
json.put("device_code", jsonObject.getString("car_no")); |
||||
|
json.put("fault_code", "99"); |
||||
|
json.put("fault_info", "电量不足"); |
||||
|
json.put("fault_type", "agv_error_type"); |
||||
|
data.add(json); |
||||
|
} |
||||
|
} |
||||
|
// 根据入参处理对应数据
|
||||
|
JSONArray objects = new JSONArray(); |
||||
|
for (int i = 0; i < data.size(); i++) { |
||||
|
JSONObject json = data.getJSONObject(i); |
||||
|
JSONObject map = new JSONObject(); |
||||
|
map.put("flag", "2"); |
||||
|
map.put("region_code", query_region_code); |
||||
|
map.put("product_area", query_product_area); |
||||
|
map.put("device_code", json.getString("device_code")); |
||||
|
|
||||
|
LambdaQueryWrapper<MonitorDevice> queryWrapper = new LambdaQueryWrapper<MonitorDevice>(); |
||||
|
queryWrapper.eq(ObjectUtil.isNotEmpty(json.getString("device_code")),MonitorDevice::getDevice_code,json.getString("device_code")); |
||||
|
queryWrapper.eq(ObjectUtil.isNotEmpty(query_product_area),MonitorDevice::getProduct_area,query_product_area); |
||||
|
queryWrapper.eq(ObjectUtil.isNotEmpty(query_region_code),MonitorDevice::getRegion_code,query_region_code); |
||||
|
List<MonitorDevice> monitorDeviceList = monitorDeviceMapper.selectList(queryWrapper); |
||||
|
|
||||
|
if (ObjectUtil.isEmpty(monitorDeviceList)) { |
||||
|
continue; |
||||
|
} |
||||
|
MonitorDevice jsonDeviceOld = monitorDeviceList.get(0); |
||||
|
|
||||
|
MonitorDeviceDto jsonDevice = new MonitorDeviceDto(); |
||||
|
|
||||
|
BeanUtils.copyProperties(jsonDeviceOld, jsonDevice); |
||||
|
// 单独处理agv报警
|
||||
|
if (StrUtil.equals(json.getString("fault_type"), "agv_error_type")) { |
||||
|
String[] fault_codes = json.getString("fault_code").split(","); |
||||
|
if (fault_codes.length > 1) { |
||||
|
// 根据每个报警码找找对应解决信息
|
||||
|
StringBuilder stringBuilder = new StringBuilder(); |
||||
|
for (int j = 0; j < fault_codes.length; j++) { |
||||
|
// 获取报警码
|
||||
|
LambdaQueryWrapper<FaultDevice> lam = new LambdaQueryWrapper<FaultDevice>(); |
||||
|
lam.eq(FaultDevice::getFault_code,fault_codes[j]); |
||||
|
lam.eq(FaultDevice::getFault_type,json.getString("fault_type")); |
||||
|
FaultDevice jsonFault = faultDeviceMapper.selectOne(lam); |
||||
|
|
||||
|
stringBuilder.append(jsonFault.getSolve_mode()); |
||||
|
if (fault_codes.length - 1 > j) { |
||||
|
stringBuilder.append(","); |
||||
|
} |
||||
|
} |
||||
|
jsonDevice.setFault_code("1"); |
||||
|
jsonDevice.setFault_info(json.getString("fault_info")); |
||||
|
jsonDevice.setFault_type(json.getString("fault_type")); |
||||
|
jsonDevice.setSolve_mode(stringBuilder.toString()); |
||||
|
} |
||||
|
} |
||||
|
// 获取报警码
|
||||
|
LambdaQueryWrapper<FaultDevice> lam = new LambdaQueryWrapper<FaultDevice>(); |
||||
|
lam.eq(FaultDevice::getFault_code,json.getString("fault_code")); |
||||
|
lam.eq(FaultDevice::getFault_type,json.getString("fault_type")); |
||||
|
FaultDevice jsonFault = faultDeviceMapper.selectOne(lam); |
||||
|
if (ObjectUtil.isNotEmpty(jsonFault)) { |
||||
|
jsonDevice.setFault_code(jsonFault.getFault_code()); |
||||
|
jsonDevice.setFault_info(jsonFault.getFault_info()); |
||||
|
jsonDevice.setFault_type(jsonFault.getFault_type()); |
||||
|
jsonDevice.setSolve_mode(jsonFault.getSolve_mode()); |
||||
|
} |
||||
|
// 判断是否异常
|
||||
|
if (!StrUtil.equals(json.getString("fault_code"), "0")) { |
||||
|
jsonDevice.setIs_fault("1"); |
||||
|
} else { |
||||
|
jsonDevice.setIs_fault("0"); |
||||
|
} |
||||
|
//根据查询条件,筛选设备数据
|
||||
|
if (StrUtil.equals(query_is_fault, "1")) { |
||||
|
if (!StrUtil.equals(json.getString("fault_code"), "0")) { |
||||
|
objects.add(jsonDevice); |
||||
|
} |
||||
|
} else if (StrUtil.equals(query_is_fault, "0")) { |
||||
|
if (StrUtil.equals(json.getString("fault_code"), "0")) { |
||||
|
objects.add(jsonDevice); |
||||
|
} |
||||
|
} else { |
||||
|
objects.add(jsonDevice); |
||||
|
} |
||||
|
} |
||||
|
JSONObject json = new JSONObject(); |
||||
|
json.put("content", objects); |
||||
|
return json; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
@Transactional(rollbackFor = Exception.class) |
||||
|
public void update(FaultDevice whereJson) { |
||||
|
String currentUserId = SecurityUtils.getCurrentUserId(); |
||||
|
String nickName = SecurityUtils.getCurrentNickName(); |
||||
|
|
||||
|
whereJson.setUpdate_time(DateUtil.now()); |
||||
|
whereJson.setUpdate_id(currentUserId); |
||||
|
whereJson.setUpdate_name(nickName); |
||||
|
faultDeviceMapper.updateById(whereJson); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
@Transactional(rollbackFor = Exception.class) |
||||
|
public void syncInfo() { |
||||
|
String currentUserId = SecurityUtils.getCurrentUserId(); |
||||
|
String nickName = SecurityUtils.getCurrentNickName(); |
||||
|
// 调用acs接口获取信息
|
||||
|
JSONObject json = wmsToAcsService.syncfaultInfo(); |
||||
|
JSONArray data = json.getJSONArray("data"); |
||||
|
|
||||
|
for (int i = 0; i < data.size(); i++) { |
||||
|
JSONObject jsonDtl = data.getJSONObject(i); |
||||
|
LambdaQueryWrapper<FaultDevice> lam = new LambdaQueryWrapper<FaultDevice>(); |
||||
|
lam.eq(FaultDevice::getFault_code,jsonDtl.getString("fault_code")); |
||||
|
lam.eq(FaultDevice::getFault_type,jsonDtl.getString("fault_type")); |
||||
|
FaultDevice faultDevice = faultDeviceMapper.selectOne(lam); |
||||
|
if (ObjectUtil.isNotEmpty(faultDevice)) { |
||||
|
faultDevice.setFault_info(jsonDtl.getString("fault_info")); |
||||
|
faultDevice.setUpdate_name(nickName); |
||||
|
faultDevice.setUpdate_id(currentUserId); |
||||
|
faultDevice.setUpdate_time(DateUtil.now()); |
||||
|
faultDeviceMapper.updateById(faultDevice); |
||||
|
} else { |
||||
|
jsonDtl.put("fault_id", IdUtil.getSnowflake(1, 1).nextId()); |
||||
|
jsonDtl.put("create_id", currentUserId); |
||||
|
jsonDtl.put("create_name", nickName); |
||||
|
jsonDtl.put("create_time", DateUtil.now()); |
||||
|
jsonDtl.put("update_id", currentUserId); |
||||
|
jsonDtl.put("update_name", nickName); |
||||
|
jsonDtl.put("update_time", DateUtil.now()); |
||||
|
BeanUtils.copyProperties(jsonDtl, faultDevice); |
||||
|
faultDeviceMapper.insert(faultDevice); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
@ -1,85 +0,0 @@ |
|||||
package org.nl.wms.basedata.master.service; |
|
||||
|
|
||||
import com.alibaba.fastjson.JSONObject; |
|
||||
import org.nl.wms.basedata.master.service.dto.CustomerbaseDto; |
|
||||
import org.springframework.data.domain.Pageable; |
|
||||
|
|
||||
import java.util.List; |
|
||||
import java.util.Map; |
|
||||
|
|
||||
/** |
|
||||
* @author liuxy |
|
||||
* @description 服务接口 |
|
||||
* @date 2023-04-20 |
|
||||
**/ |
|
||||
public interface FaultDeviceService { |
|
||||
|
|
||||
/** |
|
||||
* 查询数据分页 |
|
||||
* |
|
||||
* @param whereJson 条件 |
|
||||
* @param page 分页参数 |
|
||||
* @return Map<String, Object> |
|
||||
*/ |
|
||||
Map<String, Object> queryAll(Map whereJson, Pageable page); |
|
||||
|
|
||||
/** |
|
||||
* 查询数据分页 |
|
||||
* |
|
||||
* @param whereJson 条件 |
|
||||
* @param page 分页参数 |
|
||||
* @return Map<String, Object> |
|
||||
*/ |
|
||||
Map<String, Object> queryDeviceAll(Map whereJson, Pageable page); |
|
||||
|
|
||||
/** |
|
||||
* 查询所有数据不分页 |
|
||||
* |
|
||||
* @param whereJson 条件参数 |
|
||||
* @return List<CustomerbaseDto> |
|
||||
*/ |
|
||||
List<CustomerbaseDto> queryAll(Map whereJson); |
|
||||
|
|
||||
/** |
|
||||
* 根据ID查询 |
|
||||
* |
|
||||
* @param cust_id ID |
|
||||
* @return Customerbase |
|
||||
*/ |
|
||||
CustomerbaseDto findById(Long cust_id); |
|
||||
|
|
||||
/** |
|
||||
* 根据编码查询 |
|
||||
* |
|
||||
* @param code code |
|
||||
* @return Customerbase |
|
||||
*/ |
|
||||
CustomerbaseDto findByCode(String code); |
|
||||
|
|
||||
|
|
||||
/** |
|
||||
* 创建 |
|
||||
* |
|
||||
* @param dto / |
|
||||
*/ |
|
||||
void create(CustomerbaseDto dto); |
|
||||
|
|
||||
/** |
|
||||
* 编辑 |
|
||||
* |
|
||||
* @param whereJson / |
|
||||
*/ |
|
||||
void update(JSONObject whereJson); |
|
||||
|
|
||||
/** |
|
||||
* 多选删除 |
|
||||
* |
|
||||
* @param ids / |
|
||||
*/ |
|
||||
void deleteAll(Long[] ids); |
|
||||
|
|
||||
/** |
|
||||
* 同步信息 |
|
||||
*/ |
|
||||
void syncInfo(); |
|
||||
} |
|
@ -1,318 +0,0 @@ |
|||||
package org.nl.wms.basedata.master.service.impl; |
|
||||
|
|
||||
|
|
||||
import cn.hutool.core.date.DateUtil; |
|
||||
import cn.hutool.core.map.MapUtil; |
|
||||
import cn.hutool.core.util.IdUtil; |
|
||||
import cn.hutool.core.util.ObjectUtil; |
|
||||
import cn.hutool.core.util.StrUtil; |
|
||||
import com.alibaba.fastjson.JSON; |
|
||||
import com.alibaba.fastjson.JSONArray; |
|
||||
import com.alibaba.fastjson.JSONObject; |
|
||||
import lombok.RequiredArgsConstructor; |
|
||||
import lombok.extern.slf4j.Slf4j; |
|
||||
import org.nl.common.utils.SecurityUtils; |
|
||||
import org.nl.modules.common.exception.BadRequestException; |
|
||||
import org.nl.modules.wql.WQL; |
|
||||
import org.nl.modules.wql.core.bean.WQLObject; |
|
||||
import org.nl.modules.wql.util.SpringContextHolder; |
|
||||
import org.nl.modules.wql.util.WqlUtil; |
|
||||
import org.nl.wms.basedata.master.service.FaultDeviceService; |
|
||||
import org.nl.wms.basedata.master.service.dto.CustomerbaseDto; |
|
||||
import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl; |
|
||||
import org.springframework.data.domain.Pageable; |
|
||||
import org.springframework.stereotype.Service; |
|
||||
import org.springframework.transaction.annotation.Transactional; |
|
||||
|
|
||||
import java.util.List; |
|
||||
import java.util.Map; |
|
||||
|
|
||||
/** |
|
||||
* @author liuxy |
|
||||
* @description 服务实现 |
|
||||
* @date 2023-04-20 |
|
||||
**/ |
|
||||
@Service |
|
||||
@RequiredArgsConstructor |
|
||||
@Slf4j |
|
||||
public class FaultDeviceServiceImpl implements FaultDeviceService { |
|
||||
|
|
||||
@Override |
|
||||
public Map<String, Object> queryAll(Map whereJson, Pageable page) { |
|
||||
String fault_code = MapUtil.getStr(whereJson, "fault_code"); |
|
||||
String fault_type = MapUtil.getStr(whereJson, "fault_type"); |
|
||||
|
|
||||
JSONObject map = new JSONObject(); |
|
||||
map.put("flag", "1"); |
|
||||
map.put("fault_code", fault_code); |
|
||||
map.put("fault_type", fault_type); |
|
||||
|
|
||||
JSONObject json = WQL.getWO("QMD_BI_FAULT").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "update_time DESC"); |
|
||||
|
|
||||
return json; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public Map<String, Object> queryDeviceAll(Map whereJson, Pageable page) { |
|
||||
WQLObject faultTab = WQLObject.getWQLObject("EM_BI_FaultDisposeDevice"); |
|
||||
|
|
||||
String device_code = MapUtil.getStr(whereJson, "device_code"); |
|
||||
String is_fault = MapUtil.getStr(whereJson, "is_fault"); |
|
||||
String region_code = MapUtil.getStr(whereJson, "region_code"); |
|
||||
String product_area = MapUtil.getStr(whereJson, "plant_code"); |
|
||||
if (StrUtil.isEmpty(product_area)) { |
|
||||
throw new BadRequestException("输入的区域不能为空!"); |
|
||||
} |
|
||||
|
|
||||
JSONObject param = new JSONObject(); |
|
||||
if (ObjectUtil.isNotEmpty(device_code)) { |
|
||||
JSONObject device_jo = WQLObject.getWQLObject("EM_BI_MonitorDevice").query("device_code = '" + device_code + "'").uniqueResult(0); |
|
||||
param.put("device_code", device_code); |
|
||||
param.put("product_area", device_jo.getString("product_area")); |
|
||||
} else { |
|
||||
// 不为空则只需要查询专机设备
|
|
||||
JSONObject jsonStr = WQL.getWO("QMD_BI_FAULT").addParam("flag", "3").process().uniqueResult(0); |
|
||||
String str = jsonStr.getString("str"); |
|
||||
param.put("device_code", str); |
|
||||
param.put("product_area", product_area); |
|
||||
} |
|
||||
|
|
||||
// 调用acs接口获取设备
|
|
||||
JSONObject result = SpringContextHolder.getBean(WmsToAcsServiceImpl.class).realTimefaultInfo(param); |
|
||||
JSONArray data = result.getJSONArray("data"); |
|
||||
|
|
||||
JSONObject result2 = SpringContextHolder.getBean(WmsToAcsServiceImpl.class).queryDeviceInfo(param); |
|
||||
JSONArray rows = result2.getJSONArray("data"); |
|
||||
|
|
||||
for (int i = 0; i < rows.size(); i++) { |
|
||||
JSONObject jsonObject = rows.getJSONObject(i); |
|
||||
double electricity = jsonObject.getDoubleValue("electricity"); |
|
||||
|
|
||||
if (electricity <= 30) { |
|
||||
// 新增一条agv报警信息
|
|
||||
JSONObject json = new JSONObject(); |
|
||||
String car_no = jsonObject.getString("car_no"); |
|
||||
|
|
||||
if (StrUtil.equals(car_no, "1")) { |
|
||||
json.put("device_name", "一楼1号AGV"); |
|
||||
} else if (StrUtil.equals(car_no, "2")) { |
|
||||
json.put("device_name", "二楼1号AGV"); |
|
||||
} else if (StrUtil.equals(car_no, "3")) { |
|
||||
json.put("device_name", "二楼2号AGV"); |
|
||||
} |
|
||||
json.put("device_code", jsonObject.getString("car_no")); |
|
||||
json.put("fault_code", "99"); |
|
||||
json.put("fault_info", "电量不足"); |
|
||||
json.put("fault_type", "agv_error_type"); |
|
||||
data.add(json); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
// 根据入参处理对应数据
|
|
||||
JSONArray objects = new JSONArray(); |
|
||||
|
|
||||
for (int i = 0; i < data.size(); i++) { |
|
||||
JSONObject json = data.getJSONObject(i); |
|
||||
|
|
||||
JSONObject map = new JSONObject(); |
|
||||
map.put("flag", "2"); |
|
||||
map.put("region_code", region_code); |
|
||||
map.put("product_area", product_area); |
|
||||
map.put("device_code", json.getString("device_code")); |
|
||||
|
|
||||
JSONObject jsonDevice = WQL.getWO("QMD_BI_FAULT").addParamMap(map).process().uniqueResult(0); |
|
||||
|
|
||||
if (ObjectUtil.isEmpty(jsonDevice)) { |
|
||||
continue; |
|
||||
} |
|
||||
|
|
||||
// 单独处理agv报警
|
|
||||
if (StrUtil.equals(json.getString("fault_type"), "agv_error_type")) { |
|
||||
|
|
||||
String[] fault_codes = json.getString("fault_code").split(","); |
|
||||
|
|
||||
if (fault_codes.length > 1) { |
|
||||
// 根据每个报警码找找对应解决信息
|
|
||||
StringBuilder stringBuilder = new StringBuilder(); |
|
||||
|
|
||||
for (int j = 0; j < fault_codes.length; j++) { |
|
||||
JSONObject jsonFault = faultTab.query("fault_type = '" + json.getString("fault_type") + "' and fault_code = '" + fault_codes[j] + "'").uniqueResult(0); |
|
||||
|
|
||||
stringBuilder.append(jsonFault.getString("solve_mode")); |
|
||||
|
|
||||
if (fault_codes.length - 1 > j) { |
|
||||
stringBuilder.append(","); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
jsonDevice.put("fault_code", "1"); |
|
||||
jsonDevice.put("fault_info", json.getString("fault_info")); |
|
||||
jsonDevice.put("fault_type", json.getString("fault_type")); |
|
||||
jsonDevice.put("solve_mode", stringBuilder); |
|
||||
} |
|
||||
|
|
||||
|
|
||||
} |
|
||||
|
|
||||
// 获取报警码
|
|
||||
JSONObject jsonFault = faultTab.query("fault_type = '" + json.getString("fault_type") + "' and fault_code = '" + json.getString("fault_code") + "'").uniqueResult(0); |
|
||||
|
|
||||
if (ObjectUtil.isNotEmpty(jsonFault)) { |
|
||||
jsonDevice.put("fault_code", jsonFault.getString("fault_code")); |
|
||||
jsonDevice.put("fault_info", jsonFault.getString("fault_info")); |
|
||||
jsonDevice.put("fault_type", jsonFault.getString("fault_type")); |
|
||||
jsonDevice.put("solve_mode", jsonFault.getString("solve_mode")); |
|
||||
} |
|
||||
|
|
||||
// 判断是否异常
|
|
||||
if (!StrUtil.equals(json.getString("fault_code"), "0")) { |
|
||||
jsonDevice.put("is_fault", "1"); |
|
||||
} else { |
|
||||
jsonDevice.put("is_fault", "0"); |
|
||||
} |
|
||||
|
|
||||
if (StrUtil.equals(is_fault, "1")) { |
|
||||
if (!StrUtil.equals(json.getString("fault_code"), "0")) { |
|
||||
objects.add(jsonDevice); |
|
||||
} |
|
||||
} else if (StrUtil.equals(is_fault, "0")) { |
|
||||
if (StrUtil.equals(json.getString("fault_code"), "0")) { |
|
||||
objects.add(jsonDevice); |
|
||||
} |
|
||||
} else { |
|
||||
objects.add(jsonDevice); |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
JSONObject json = new JSONObject(); |
|
||||
json.put("content", objects); |
|
||||
return json; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public List<CustomerbaseDto> queryAll(Map whereJson) { |
|
||||
WQLObject wo = WQLObject.getWQLObject("md_cs_customerbase"); |
|
||||
JSONArray arr = wo.query().getResultJSONArray(0); |
|
||||
List<CustomerbaseDto> list = arr.toJavaList(CustomerbaseDto.class); |
|
||||
return list; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public CustomerbaseDto findById(Long cust_id) { |
|
||||
WQLObject wo = WQLObject.getWQLObject("md_cs_customerbase"); |
|
||||
JSONObject json = wo.query("cust_id =" + cust_id + "").uniqueResult(0); |
|
||||
if (ObjectUtil.isEmpty(json)) { |
|
||||
return null; |
|
||||
} |
|
||||
final CustomerbaseDto obj = json.toJavaObject(CustomerbaseDto.class); |
|
||||
return obj; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public CustomerbaseDto findByCode(String code) { |
|
||||
WQLObject wo = WQLObject.getWQLObject("md_cs_customerbase"); |
|
||||
JSONObject json = wo.query("cust_code ='" + code + "'").uniqueResult(0); |
|
||||
if (ObjectUtil.isEmpty(json)) { |
|
||||
return null; |
|
||||
} |
|
||||
final CustomerbaseDto obj = json.toJavaObject(CustomerbaseDto.class); |
|
||||
return obj; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
@Transactional(rollbackFor = Exception.class) |
|
||||
public void create(CustomerbaseDto dto) { |
|
||||
String cust_code = dto.getCust_code(); |
|
||||
CustomerbaseDto customerbaseDto = this.findByCode(cust_code); |
|
||||
if (customerbaseDto != null && "0".equals(customerbaseDto.getIs_delete())) { |
|
||||
throw new BadRequestException("存在相同的客户编号"); |
|
||||
} |
|
||||
|
|
||||
String currentUserId = SecurityUtils.getCurrentUserId(); |
|
||||
String nickName = SecurityUtils.getCurrentNickName(); |
|
||||
String now = DateUtil.now(); |
|
||||
|
|
||||
dto.setCust_id(IdUtil.getSnowflake(1, 1).nextId()); |
|
||||
dto.setCreate_id(currentUserId); |
|
||||
dto.setCreate_name(nickName); |
|
||||
dto.setUpdate_optid(currentUserId); |
|
||||
dto.setUpdate_optname(nickName); |
|
||||
dto.setUpdate_time(now); |
|
||||
dto.setCreate_time(now); |
|
||||
|
|
||||
WQLObject wo = WQLObject.getWQLObject("md_cs_customerbase"); |
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); |
|
||||
wo.insert(json); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
@Transactional(rollbackFor = Exception.class) |
|
||||
public void update(JSONObject whereJson) { |
|
||||
WQLObject faultTab = WQLObject.getWQLObject("EM_BI_FaultDisposeDevice"); |
|
||||
|
|
||||
String currentUserId = SecurityUtils.getCurrentUserId(); |
|
||||
String nickName = SecurityUtils.getCurrentNickName(); |
|
||||
|
|
||||
whereJson.put("update_id", currentUserId); |
|
||||
whereJson.put("update_name", nickName); |
|
||||
whereJson.put("update_time", DateUtil.now()); |
|
||||
faultTab.update(whereJson); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
@Transactional(rollbackFor = Exception.class) |
|
||||
public void deleteAll(Long[] ids) { |
|
||||
String currentUserId = SecurityUtils.getCurrentUserId(); |
|
||||
String nickName = SecurityUtils.getCurrentNickName(); |
|
||||
String now = DateUtil.now(); |
|
||||
|
|
||||
WQLObject wo = WQLObject.getWQLObject("md_cs_customerbase"); |
|
||||
for (Long cust_id : ids) { |
|
||||
JSONObject param = new JSONObject(); |
|
||||
param.put("cust_id", String.valueOf(cust_id)); |
|
||||
param.put("is_delete", "1"); |
|
||||
param.put("update_optid", currentUserId); |
|
||||
param.put("update_optname", nickName); |
|
||||
param.put("update_time", now); |
|
||||
wo.update(param); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
@Transactional(rollbackFor = Exception.class) |
|
||||
public void syncInfo() { |
|
||||
WQLObject faultTab = WQLObject.getWQLObject("EM_BI_FaultDisposeDevice"); |
|
||||
String currentUserId = SecurityUtils.getCurrentUserId(); |
|
||||
String nickName = SecurityUtils.getCurrentNickName(); |
|
||||
|
|
||||
// 调用acs接口获取信息
|
|
||||
JSONObject json = SpringContextHolder.getBean(WmsToAcsServiceImpl.class).syncfaultInfo(); |
|
||||
|
|
||||
JSONArray data = json.getJSONArray("data"); |
|
||||
|
|
||||
for (int i = 0; i < data.size(); i++) { |
|
||||
JSONObject jsonDtl = data.getJSONObject(i); |
|
||||
|
|
||||
JSONObject jsonFault = faultTab.query("fault_code = '" + jsonDtl.getString("fault_code") + "' and fault_type = '" + jsonDtl.getString("fault_type") + "'").uniqueResult(0); |
|
||||
if (ObjectUtil.isNotEmpty(jsonFault)) { |
|
||||
jsonFault.put("fault_info", jsonDtl.getString("fault_info")); |
|
||||
jsonFault.put("create_id", currentUserId); |
|
||||
jsonFault.put("create_name", nickName); |
|
||||
jsonFault.put("create_time", DateUtil.now()); |
|
||||
jsonFault.put("update_id", currentUserId); |
|
||||
jsonFault.put("update_name", nickName); |
|
||||
jsonFault.put("update_time", DateUtil.now()); |
|
||||
faultTab.update(jsonFault); |
|
||||
} else { |
|
||||
jsonDtl.put("fault_id", IdUtil.getSnowflake(1, 1).nextId()); |
|
||||
jsonDtl.put("create_id", currentUserId); |
|
||||
jsonDtl.put("create_name", nickName); |
|
||||
jsonDtl.put("create_time", DateUtil.now()); |
|
||||
jsonDtl.put("update_id", currentUserId); |
|
||||
jsonDtl.put("update_name", nickName); |
|
||||
jsonDtl.put("update_time", DateUtil.now()); |
|
||||
faultTab.insert(jsonDtl); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
@ -1,105 +0,0 @@ |
|||||
[交易说明] |
|
||||
交易名: 故障分页查询 |
|
||||
所属模块: |
|
||||
功能简述: |
|
||||
版权所有: |
|
||||
表引用: |
|
||||
版本经历: |
|
||||
|
|
||||
[数据库] |
|
||||
--指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 |
|
||||
|
|
||||
[IO定义] |
|
||||
################################################# |
|
||||
## 表字段对应输入参数 |
|
||||
################################################# |
|
||||
输入.flag TYPEAS s_string |
|
||||
输入.fault_code TYPEAS s_string |
|
||||
输入.fault_type TYPEAS s_string |
|
||||
输入.region_code TYPEAS s_string |
|
||||
输入.product_area TYPEAS s_string |
|
||||
输入.device_code TYPEAS s_string |
|
||||
|
|
||||
[临时表] |
|
||||
--这边列出来的临时表就会在运行期动态创建 |
|
||||
|
|
||||
[临时变量] |
|
||||
--所有中间过程变量均可在此处定义 |
|
||||
|
|
||||
[业务过程] |
|
||||
|
|
||||
########################################## |
|
||||
# 1、输入输出检查 # |
|
||||
########################################## |
|
||||
|
|
||||
|
|
||||
########################################## |
|
||||
# 2、主过程前处理 # |
|
||||
########################################## |
|
||||
|
|
||||
|
|
||||
########################################## |
|
||||
# 3、业务主过程 # |
|
||||
########################################## |
|
||||
|
|
||||
IF 输入.flag = "1" |
|
||||
PAGEQUERY |
|
||||
SELECT |
|
||||
* |
|
||||
FROM |
|
||||
EM_BI_FaultDisposeDevice |
|
||||
WHERE |
|
||||
1 = 1 |
|
||||
|
|
||||
OPTION 输入.fault_code <> "" |
|
||||
fault_code = 输入.fault_code |
|
||||
ENDOPTION |
|
||||
|
|
||||
OPTION 输入.fault_type <> "" |
|
||||
fault_type = 输入.fault_type |
|
||||
ENDOPTION |
|
||||
|
|
||||
ENDSELECT |
|
||||
ENDPAGEQUERY |
|
||||
ENDIF |
|
||||
|
|
||||
IF 输入.flag = "2" |
|
||||
QUERY |
|
||||
SELECT |
|
||||
* |
|
||||
FROM |
|
||||
EM_BI_MonitorDevice |
|
||||
WHERE |
|
||||
is_crux = '1' |
|
||||
|
|
||||
OPTION 输入.region_code <> "" |
|
||||
region_code = 输入.region_code |
|
||||
ENDOPTION |
|
||||
|
|
||||
OPTION 输入.product_area <> "" |
|
||||
product_area = 输入.product_area |
|
||||
ENDOPTION |
|
||||
|
|
||||
OPTION 输入.device_code <> "" |
|
||||
device_code = 输入.device_code |
|
||||
ENDOPTION |
|
||||
|
|
||||
ENDSELECT |
|
||||
ENDQUERY |
|
||||
ENDIF |
|
||||
|
|
||||
IF 输入.flag = "3" |
|
||||
QUERY |
|
||||
SELECT |
|
||||
GROUP_CONCAT(device_code) AS str |
|
||||
FROM |
|
||||
EM_BI_MonitorDevice |
|
||||
WHERE |
|
||||
is_crux = '1' |
|
||||
|
|
||||
ENDSELECT |
|
||||
ENDQUERY |
|
||||
ENDIF |
|
||||
|
|
||||
|
|
||||
|
|
Loading…
Reference in new issue