add:设备运行记录
This commit is contained in:
@@ -57,10 +57,10 @@ public class CodeGenerator {
|
|||||||
mpg.setGlobalConfig(gc);
|
mpg.setGlobalConfig(gc);
|
||||||
// 数据源配置
|
// 数据源配置
|
||||||
DataSourceConfig dsc = new DataSourceConfig();
|
DataSourceConfig dsc = new DataSourceConfig();
|
||||||
dsc.setUrl("jdbc:mysql://192.168.46.5:3306/hl_one_mes_test?serverTimezone=GMT&setUnicode=true&characterEncoding=utf8");
|
dsc.setUrl("jdbc:mysql://localhost:3306/hl_one_mes?serverTimezone=GMT&setUnicode=true&characterEncoding=utf8");
|
||||||
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
|
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
|
||||||
dsc.setUsername("root");
|
dsc.setUsername("root");
|
||||||
dsc.setPassword("123456");
|
dsc.setPassword("942464Yy");
|
||||||
mpg.setDataSource(dsc);
|
mpg.setDataSource(dsc);
|
||||||
// 包配置
|
// 包配置
|
||||||
PackageConfig pc = new PackageConfig();
|
PackageConfig pc = new PackageConfig();
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package org.nl.wms.device_manage.service.deviceRecord;
|
||||||
|
|
||||||
|
import org.nl.wms.device_manage.service.deviceRecord.dao.PdmBiDevicerunstatusrecord;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 设备运行状态表 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author generator
|
||||||
|
* @since 2023-08-25
|
||||||
|
*/
|
||||||
|
public interface IPdmBiDevicerunstatusrecordService extends IService<PdmBiDevicerunstatusrecord> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
package org.nl.wms.device_manage.service.deviceRecord.dao;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 设备运行状态表
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author generator
|
||||||
|
* @since 2023-08-25
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@TableName("pdm_bi_devicerunstatusrecord")
|
||||||
|
public class PdmBiDevicerunstatusrecord implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 记录标识
|
||||||
|
*/
|
||||||
|
private Long record_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备标识
|
||||||
|
*/
|
||||||
|
private String device_code;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 故障标识
|
||||||
|
*/
|
||||||
|
private String err_status_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态类型
|
||||||
|
*/
|
||||||
|
private String status_type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开始时间
|
||||||
|
*/
|
||||||
|
private String start_time;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结束时间
|
||||||
|
*/
|
||||||
|
private String end_time;
|
||||||
|
|
||||||
|
@TableId(value = "order_num", type = IdType.AUTO)
|
||||||
|
private Long order_num;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package org.nl.wms.device_manage.service.deviceRecord.dao.mapper;
|
||||||
|
|
||||||
|
import org.nl.wms.device_manage.service.deviceRecord.dao.PdmBiDevicerunstatusrecord;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 设备运行状态表 Mapper 接口
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author generator
|
||||||
|
* @since 2023-08-25
|
||||||
|
*/
|
||||||
|
public interface PdmBiDevicerunstatusrecordMapper extends BaseMapper<PdmBiDevicerunstatusrecord> {
|
||||||
|
|
||||||
|
List<PdmBiDevicerunstatusrecord> allDeviceStatus();
|
||||||
|
|
||||||
|
List<Map> errorTop(String date);
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<?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.device_manage.service.deviceRecord.dao.mapper.PdmBiDevicerunstatusrecordMapper">
|
||||||
|
|
||||||
|
<select id="allDeviceStatus" resultType="org.nl.wms.device_manage.service.deviceRecord.dao.PdmBiDevicerunstatusrecord">
|
||||||
|
select *
|
||||||
|
from
|
||||||
|
(select * from pdm_bi_devicerunstatusrecord order by order_num desc limit 99999999 )
|
||||||
|
as a GROUP BY a.device_code
|
||||||
|
</select>
|
||||||
|
<select id="errorTop"
|
||||||
|
resultType="java.util.Map">
|
||||||
|
select COUNT(device_code) AS err_num,MAX(device_code) AS device_name
|
||||||
|
from pdm_bi_devicerunstatusrecord where start_time > #{date} and status_type = '5' GROUP BY
|
||||||
|
device_code
|
||||||
|
ORDER BY err_num desc
|
||||||
|
LIMIT 10;
|
||||||
|
</select>
|
||||||
|
</mapper>
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package org.nl.wms.device_manage.service.deviceRecord.impl;
|
||||||
|
|
||||||
|
import org.nl.wms.device_manage.service.deviceRecord.dao.PdmBiDevicerunstatusrecord;
|
||||||
|
import org.nl.wms.device_manage.service.deviceRecord.dao.mapper.PdmBiDevicerunstatusrecordMapper;
|
||||||
|
import org.nl.wms.device_manage.service.deviceRecord.IPdmBiDevicerunstatusrecordService;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 设备运行状态表 服务实现类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author generator
|
||||||
|
* @since 2023-08-25
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class PdmBiDevicerunstatusrecordServiceImpl extends ServiceImpl<PdmBiDevicerunstatusrecordMapper, PdmBiDevicerunstatusrecord> implements IPdmBiDevicerunstatusrecordService {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiOperation;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.wms.ext_manage.bigScreen.service.AgvBigScreenService;
|
import org.nl.wms.ext_manage.bigScreen.service.AgvBigScreenService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
@@ -22,7 +23,8 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
public class AgvBigScreenController {
|
public class AgvBigScreenController {
|
||||||
|
|
||||||
private final AgvBigScreenService agvBigScreenService;
|
@Autowired
|
||||||
|
private AgvBigScreenService agvBigScreenService;
|
||||||
|
|
||||||
@PostMapping("/getTask")
|
@PostMapping("/getTask")
|
||||||
//("查询任务")
|
//("查询任务")
|
||||||
|
|||||||
@@ -1,12 +1,8 @@
|
|||||||
package org.nl.wms.ext_manage.bigScreen.rest;
|
package org.nl.wms.ext_manage.bigScreen.rest;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaIgnore;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import io.swagger.annotations.Api;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.nl.wms.ext_manage.bigScreen.service.DeviceScreenService;
|
import org.nl.wms.ext_manage.bigScreen.service.DeviceScreenService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
@@ -14,14 +10,11 @@ import org.springframework.web.bind.annotation.RequestBody;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
//@RestController
|
@RestController
|
||||||
@RequiredArgsConstructor
|
@RequestMapping("/api/deviceScreen")
|
||||||
//@Api(tags = "设备监控大屏")
|
|
||||||
//@RequestMapping("/api/deviceScreen")
|
|
||||||
//@SaIgnore
|
|
||||||
//@Slf4j
|
|
||||||
public class DeviceScreenController {
|
public class DeviceScreenController {
|
||||||
private final DeviceScreenService deviceScreenService;
|
@Autowired
|
||||||
|
private DeviceScreenService deviceScreenService;
|
||||||
|
|
||||||
@PostMapping("/deviceStatus")
|
@PostMapping("/deviceStatus")
|
||||||
//("设备实时状态")
|
//("设备实时状态")
|
||||||
|
|||||||
@@ -22,105 +22,13 @@ public class AgvBigScreenServiceImpl implements AgvBigScreenService {
|
|||||||
@Override
|
@Override
|
||||||
public JSONObject getTask(JSONObject whereJson) {
|
public JSONObject getTask(JSONObject whereJson) {
|
||||||
JSONObject result = new JSONObject();
|
JSONObject result = new JSONObject();
|
||||||
try {
|
|
||||||
JSONObject param = new JSONObject();
|
|
||||||
// 1.获取总任务数
|
|
||||||
String today = DateUtil.today();
|
|
||||||
HashMap<String, String> map = new HashMap<>();
|
|
||||||
map.put("flag", "1");
|
|
||||||
map.put("today", "%"+today+"%");
|
|
||||||
JSONObject jsonAll = WQL.getWO("AGVBIGSCREEN01").addParamMap(map).process().uniqueResult(0);
|
|
||||||
if (ObjectUtil.isNotEmpty(jsonAll)) {
|
|
||||||
param.put("all_task_number",jsonAll.getString("all_task_number"));
|
|
||||||
} else {
|
|
||||||
param.put("all_task_number","0");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2.获取已执行任务数 状态 = 99
|
|
||||||
map.put("flag", "2");
|
|
||||||
JSONObject jsonFinish = WQL.getWO("AGVBIGSCREEN01").addParamMap(map).process().uniqueResult(0);
|
|
||||||
if (ObjectUtil.isNotEmpty(jsonFinish)) {
|
|
||||||
param.put("finish_task_number",jsonFinish.getString("finish_task_number"));
|
|
||||||
} else {
|
|
||||||
param.put("finish_task_number","0");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3.获取取消的任务数 是否删除 = 1
|
|
||||||
map.put("flag", "3");
|
|
||||||
JSONObject jsonCancel = WQL.getWO("AGVBIGSCREEN01").addParamMap(map).process().uniqueResult(0);
|
|
||||||
if (ObjectUtil.isNotEmpty(jsonCancel)) {
|
|
||||||
param.put("cancel_task_number",jsonCancel.getString("cancel_task_number"));
|
|
||||||
} else {
|
|
||||||
param.put("cancel_task_number","0");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 4.获取未执行任务数 状态 <> 99
|
|
||||||
map.put("flag", "4");
|
|
||||||
JSONObject jsonNotFinish = WQL.getWO("AGVBIGSCREEN01").addParamMap(map).process().uniqueResult(0);
|
|
||||||
if (ObjectUtil.isNotEmpty(jsonNotFinish)) {
|
|
||||||
param.put("not_finish_task_number",jsonNotFinish.getString("not_finish_task_number"));
|
|
||||||
} else {
|
|
||||||
param.put("not_finish_task_number","0");
|
|
||||||
}
|
|
||||||
|
|
||||||
result.put("code", "1");
|
|
||||||
result.put("desc", "查询成功");
|
|
||||||
result.put("srb", param);
|
|
||||||
} catch (Exception e) {
|
|
||||||
result.put("code", "0");
|
|
||||||
result.put("desc", "查询失败:"+e.getMessage());
|
|
||||||
}
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject getAgvMsg(JSONObject whereJson) {
|
public JSONObject getAgvMsg(JSONObject whereJson) {
|
||||||
JSONObject result = new JSONObject();
|
JSONObject result = new JSONObject();
|
||||||
try {
|
|
||||||
WQLObject agvTab = WQLObject.getWQLObject("DS_AGV_AgvStatus");
|
|
||||||
JSONObject srb = new JSONObject();
|
|
||||||
JSONArray errorArr = new JSONArray();
|
|
||||||
|
|
||||||
JSONArray agv_info = new JSONArray();
|
|
||||||
for (int i = 1; i <= 7; i++) {
|
|
||||||
JSONObject json = new JSONObject();
|
|
||||||
String agv_code = String.valueOf(i);
|
|
||||||
JSONObject jsonAgv = agvTab.query("agv_code = '" + agv_code + "'").uniqueResult(0);
|
|
||||||
// 1.车号
|
|
||||||
json.put("agv_code", agv_code);
|
|
||||||
// 2.任务: 0为无任务、1为有任务
|
|
||||||
json.put("agv_statetype", jsonAgv.getString("agv_statetype"));
|
|
||||||
// 3.电量
|
|
||||||
json.put("agv_power", jsonAgv.getString("agv_power"));
|
|
||||||
// 4.预警: 0为正常,1为报警
|
|
||||||
String error_status = jsonAgv.getString("error_status");
|
|
||||||
if (StrUtil.equals(error_status,"1")) {
|
|
||||||
// 只要有一辆车有报警信息 状态则为1
|
|
||||||
srb.put("error_status", "1");
|
|
||||||
// 5.预警信息
|
|
||||||
errorArr.add(jsonAgv.getString("error_info"));
|
|
||||||
}
|
|
||||||
// 6.agv名称
|
|
||||||
json.put("agv_name", jsonAgv.getString("agv_name"));
|
|
||||||
// 7.x坐标
|
|
||||||
json.put("x_coordinate", jsonAgv.getString("x_coordinate"));
|
|
||||||
// 8.y坐标
|
|
||||||
json.put("y_coordinate", jsonAgv.getString("y_coordinate"));
|
|
||||||
// 9.方向类型
|
|
||||||
json.put("direction_type", jsonAgv.getString("direction_type"));
|
|
||||||
|
|
||||||
agv_info.add(json);
|
|
||||||
}
|
|
||||||
srb.put("agv_info_arr", agv_info);
|
|
||||||
srb.put("agv_error_arr", errorArr);
|
|
||||||
|
|
||||||
result.put("srb", srb);
|
|
||||||
result.put("code", "1");
|
|
||||||
result.put("desc", "查询成功");
|
|
||||||
} catch (Exception e) {
|
|
||||||
result.put("code", "0");
|
|
||||||
result.put("desc", "查询失败:"+e.getMessage());
|
|
||||||
}
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,71 +7,65 @@ import cn.hutool.core.util.ObjectUtil;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import lombok.RequiredArgsConstructor;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nl.common.enums.StatusEnum;
|
||||||
|
import org.nl.common.enums.WorkerOrderEnum;
|
||||||
|
import org.nl.common.utils.MapOf;
|
||||||
import org.nl.modules.wql.WQL;
|
import org.nl.modules.wql.WQL;
|
||||||
import org.nl.modules.wql.core.bean.WQLObject;
|
import org.nl.modules.wql.core.bean.WQLObject;
|
||||||
|
import org.nl.wms.device_manage.service.deviceRecord.dao.PdmBiDevicerunstatusrecord;
|
||||||
|
import org.nl.wms.device_manage.service.deviceRecord.dao.mapper.PdmBiDevicerunstatusrecordMapper;
|
||||||
import org.nl.wms.ext_manage.bigScreen.DeviceUtils;
|
import org.nl.wms.ext_manage.bigScreen.DeviceUtils;
|
||||||
import org.nl.wms.ext_manage.bigScreen.SwitchOnOff;
|
import org.nl.wms.ext_manage.bigScreen.SwitchOnOff;
|
||||||
import org.nl.wms.ext_manage.bigScreen.service.DeviceScreenService;
|
import org.nl.wms.ext_manage.bigScreen.service.DeviceScreenService;
|
||||||
|
|
||||||
|
|
||||||
|
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||||
|
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
||||||
|
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
|
||||||
|
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class DeviceScreenServiceImpl implements DeviceScreenService {
|
public class DeviceScreenServiceImpl implements DeviceScreenService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IPdmBiDeviceService pdmBiDeviceService;
|
||||||
|
@Autowired
|
||||||
|
private IPdmProduceWorkorderService workorderService;
|
||||||
|
@Resource
|
||||||
|
private PdmBiDevicerunstatusrecordMapper devicerunstatusrecordMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject deviceStatus(JSONObject param) {
|
public JSONObject deviceStatus(JSONObject param) {
|
||||||
if (SwitchOnOff.type == 1) {
|
if (SwitchOnOff.type == 1) {
|
||||||
return DeviceUtils.deviceStatus(param);
|
return DeviceUtils.deviceStatus(param);
|
||||||
}
|
}
|
||||||
//正常运行:有工单正在工作的;暂未生产:有工单没有在工作的;空闲设备:没有工单的,没故障的;故障设备:状态为故障的
|
//正常运行:有工单正在工作的;暂未生产:有工单没有在工作的;空闲设备:没有工单的,没故障的;故障设备:状态为故障的
|
||||||
JSONArray device_rows = WQLObject.getWQLObject("PDM_BI_Device").query("is_active = '1' AND is_delete = '0'").getResultJSONArray(0);
|
List<PdmBiDevice> device_rows = pdmBiDeviceService.list(new QueryWrapper<PdmBiDevice>().eq("is_delete", false).eq("is_used", true));
|
||||||
int total_num = device_rows.size();
|
int total_num = device_rows.size();
|
||||||
|
List<PdmBiDevicerunstatusrecord> list = devicerunstatusrecordMapper.allDeviceStatus();
|
||||||
//查询故障设备
|
Map<String, List<PdmBiDevicerunstatusrecord>> collect = list.stream().collect(Collectors.groupingBy(PdmBiDevicerunstatusrecord::getStatus_type));
|
||||||
JSONArray err_rows = WQL.getWO("QDEVICE_SCREEN").addParam("flag", "7").process().getResultJSONArray(0);
|
List<PdmProduceWorkorder> runningWorkOrder = workorderService.list(new QueryWrapper<PdmProduceWorkorder>()
|
||||||
int err_device = err_rows.size();
|
.eq("workorder_status", WorkerOrderEnum.PRODUCTING.getCode()));
|
||||||
|
|
||||||
//查询运行设备
|
|
||||||
JSONArray run_rows = WQL.getWO("QDEVICE_SCREEN").addParam("flag", "8").process().getResultJSONArray(0);
|
|
||||||
int run_device = run_rows.size();
|
|
||||||
|
|
||||||
//查询有工单,没有故障的设备
|
|
||||||
JSONArray task_rows = WQL.getWO("QDEVICE_SCREEN").addParam("flag", "9").process().getResultJSONArray(0);
|
|
||||||
//查询暂未生产设备
|
|
||||||
int prepare_device = task_rows.size() - run_device;
|
|
||||||
|
|
||||||
if (prepare_device < 0) {
|
|
||||||
prepare_device = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//空闲设备
|
|
||||||
int free_device = total_num - task_rows.size() - err_device;
|
|
||||||
|
|
||||||
|
|
||||||
JSONArray result = new JSONArray();
|
JSONArray result = new JSONArray();
|
||||||
JSONObject run = new JSONObject();
|
result.add(MapOf.of("name", "正常运行","value", collect.get(StatusEnum.DEVICE_STATUS_RUNING.getCode()).size()));
|
||||||
run.put("name", "正常运行");
|
result.add(MapOf.of("name", "暂未生产","value", (runningWorkOrder.size() - collect.get(StatusEnum.DEVICE_STATUS_RUNING.getCode()).size())<0?0:(runningWorkOrder.size() - collect.get(StatusEnum.DEVICE_STATUS_RUNING.getCode()).size())));
|
||||||
run.put("value", run_device);
|
result.add(MapOf.of("name", "空闲设备","value", total_num - runningWorkOrder.size() - collect.get(StatusEnum.DEVICE_STATUS_ERROR.getCode()).size()));
|
||||||
result.add(run);
|
result.add(MapOf.of("name", "故障设备","value", collect.get(StatusEnum.DEVICE_STATUS_ERROR.getCode()).size()));
|
||||||
JSONObject pre = new JSONObject();
|
|
||||||
pre.put("name", "暂未生产");
|
|
||||||
pre.put("value", prepare_device);
|
|
||||||
result.add(pre);
|
|
||||||
JSONObject free = new JSONObject();
|
|
||||||
free.put("name", "空闲设备");
|
|
||||||
free.put("value", free_device);
|
|
||||||
result.add(free);
|
|
||||||
JSONObject err = new JSONObject();
|
|
||||||
err.put("name", "故障设备");
|
|
||||||
err.put("value", err_device);
|
|
||||||
result.add(err);
|
|
||||||
JSONObject jo = new JSONObject();
|
JSONObject jo = new JSONObject();
|
||||||
jo.put("ja", result);
|
jo.put("ja", result);
|
||||||
jo.put("total_num", total_num);
|
jo.put("total_num", total_num);
|
||||||
@@ -86,7 +80,6 @@ public class DeviceScreenServiceImpl implements DeviceScreenService {
|
|||||||
public JSONObject oeeAndTeep(JSONObject param) {
|
public JSONObject oeeAndTeep(JSONObject param) {
|
||||||
JSONObject oee = new JSONObject();
|
JSONObject oee = new JSONObject();
|
||||||
JSONObject teep = new JSONObject();
|
JSONObject teep = new JSONObject();
|
||||||
|
|
||||||
//value1:过去一个月;value2:目标;value3:实际
|
//value1:过去一个月;value2:目标;value3:实际
|
||||||
oee.put("value1", "78.0");
|
oee.put("value1", "78.0");
|
||||||
oee.put("value2", "76.0");
|
oee.put("value2", "76.0");
|
||||||
@@ -106,7 +99,8 @@ public class DeviceScreenServiceImpl implements DeviceScreenService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject queryDeviceByWork(JSONObject param) {
|
public JSONObject queryDeviceByWork(JSONObject param) {
|
||||||
JSONArray result = WQL.getWO("QDEVICE_SCREEN").addParam("flag", "1").process().getResultJSONArray(0);
|
//WQL.getWO("QDEVICE_SCREEN").addParam("flag", "1").process().getResultJSONArray(0)
|
||||||
|
JSONArray result = new JSONArray();
|
||||||
JSONObject returnjo = new JSONObject();
|
JSONObject returnjo = new JSONObject();
|
||||||
returnjo.put("code", "1");
|
returnjo.put("code", "1");
|
||||||
returnjo.put("desc", "查询成功!");
|
returnjo.put("desc", "查询成功!");
|
||||||
@@ -119,12 +113,10 @@ public class DeviceScreenServiceImpl implements DeviceScreenService {
|
|||||||
if (SwitchOnOff.type == 1) {
|
if (SwitchOnOff.type == 1) {
|
||||||
return DeviceUtils.deviceErrorNum(param);
|
return DeviceUtils.deviceErrorNum(param);
|
||||||
}
|
}
|
||||||
String today = DateUtil.today() + "%";
|
|
||||||
JSONArray result = WQL.getWO("QDEVICE_SCREEN").addParam("flag", "2").addParam("today", today).process().getResultJSONArray(0);
|
|
||||||
JSONObject returnjo = new JSONObject();
|
JSONObject returnjo = new JSONObject();
|
||||||
returnjo.put("code", "1");
|
returnjo.put("code", "1");
|
||||||
returnjo.put("desc", "查询成功!");
|
returnjo.put("desc", "查询成功!");
|
||||||
returnjo.put("result", result);
|
returnjo.put("result", devicerunstatusrecordMapper.errorTop(DateUtil.today()));
|
||||||
return returnjo;
|
return returnjo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,17 +5,19 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import cn.hutool.poi.excel.ExcelReader;
|
import cn.hutool.poi.excel.ExcelReader;
|
||||||
import cn.hutool.poi.excel.ExcelUtil;
|
import cn.hutool.poi.excel.ExcelUtil;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.modules.common.exception.BadRequestException;
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
|
|
||||||
import org.nl.modules.wql.core.bean.WQLObject;
|
|
||||||
import org.nl.wms.ext_manage.bigScreen.DeviceUtils;
|
import org.nl.wms.ext_manage.bigScreen.DeviceUtils;
|
||||||
import org.nl.wms.ext_manage.bigScreen.OrderDto;
|
import org.nl.wms.ext_manage.bigScreen.OrderDto;
|
||||||
import org.nl.wms.ext_manage.bigScreen.SwitchOnOff;
|
import org.nl.wms.ext_manage.bigScreen.SwitchOnOff;
|
||||||
import org.nl.wms.ext_manage.bigScreen.WordOrderUtils;
|
import org.nl.wms.ext_manage.bigScreen.WordOrderUtils;
|
||||||
import org.nl.wms.ext_manage.bigScreen.test.service.BigTestService;
|
import org.nl.wms.ext_manage.bigScreen.test.service.BigTestService;
|
||||||
|
|
||||||
|
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
||||||
|
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
@@ -29,9 +31,12 @@ import java.util.List;
|
|||||||
* @createDate: 2023/1/10
|
* @createDate: 2023/1/10
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class BigTestServiceImpl implements BigTestService {
|
public class BigTestServiceImpl implements BigTestService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IMdMeMaterialbaseService materialbaseService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void save(JSONObject jsonObject) {
|
public void save(JSONObject jsonObject) {
|
||||||
JSONObject oneInfo = jsonObject.getJSONObject("oneInfo");
|
JSONObject oneInfo = jsonObject.getJSONObject("oneInfo");
|
||||||
@@ -698,7 +703,6 @@ public class BigTestServiceImpl implements BigTestService {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
//物料表
|
//物料表
|
||||||
WQLObject wo_material = WQLObject.getWQLObject("md_me_materialbase");
|
|
||||||
// 调用用 hutool 方法读取数据 调用第一个sheet白班数据
|
// 调用用 hutool 方法读取数据 调用第一个sheet白班数据
|
||||||
ExcelReader excelReader = ExcelUtil.getReader(inputStream, 0);
|
ExcelReader excelReader = ExcelUtil.getReader(inputStream, 0);
|
||||||
// 从第1行开始获取数据 excelReader.read的结果是一个2纬的list,外层是行,内层是行对应的所有列
|
// 从第1行开始获取数据 excelReader.read的结果是一个2纬的list,外层是行,内层是行对应的所有列
|
||||||
@@ -719,8 +723,11 @@ public class BigTestServiceImpl implements BigTestService {
|
|||||||
if (j == 1) {
|
if (j == 1) {
|
||||||
String material_code = String.valueOf(list.get(j));
|
String material_code = String.valueOf(list.get(j));
|
||||||
orderDto.setMaterial_code(material_code);
|
orderDto.setMaterial_code(material_code);
|
||||||
JSONObject jsonObject = wo_material.query("material_code = '" + material_code + "'").uniqueResult(0);
|
MdMeMaterialbase one = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_code", material_code));
|
||||||
orderDto.setMaterial_spec(jsonObject.getString("material_spec"));
|
if (one==null){
|
||||||
|
throw new BadRequestException("当前物料编码不存在:"+material_code);
|
||||||
|
}
|
||||||
|
orderDto.setMaterial_spec(one.getMaterial_spec());
|
||||||
}
|
}
|
||||||
if (j == 2) {
|
if (j == 2) {
|
||||||
Integer plan_qty = 0;
|
Integer plan_qty = 0;
|
||||||
|
|||||||
@@ -1,109 +0,0 @@
|
|||||||
[交易说明]
|
|
||||||
交易名: AGV监控中心查询
|
|
||||||
所属模块:
|
|
||||||
功能简述:
|
|
||||||
版权所有:
|
|
||||||
表引用:
|
|
||||||
版本经历:
|
|
||||||
|
|
||||||
[数据库]
|
|
||||||
--指定数据库,为空采用默认值,默认为db.properties中列出的第一个库
|
|
||||||
|
|
||||||
[IO定义]
|
|
||||||
#################################################
|
|
||||||
## 表字段对应输入参数
|
|
||||||
#################################################
|
|
||||||
输入.flag TYPEAS s_string
|
|
||||||
输入.today TYPEAS s_string
|
|
||||||
|
|
||||||
[临时表]
|
|
||||||
--这边列出来的临时表就会在运行期动态创建
|
|
||||||
|
|
||||||
[临时变量]
|
|
||||||
--所有中间过程变量均可在此处定义
|
|
||||||
|
|
||||||
[业务过程]
|
|
||||||
|
|
||||||
##########################################
|
|
||||||
# 1、输入输出检查 #
|
|
||||||
##########################################
|
|
||||||
|
|
||||||
|
|
||||||
##########################################
|
|
||||||
# 2、主过程前处理 #
|
|
||||||
##########################################
|
|
||||||
|
|
||||||
|
|
||||||
##########################################
|
|
||||||
# 3、业务主过程 #
|
|
||||||
##########################################
|
|
||||||
|
|
||||||
IF 输入.flag = "1"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
count(task.task_id) AS all_task_number
|
|
||||||
FROM
|
|
||||||
SCH_BASE_Task task
|
|
||||||
WHERE
|
|
||||||
1 = 1
|
|
||||||
|
|
||||||
OPTION 输入.today <> ""
|
|
||||||
task.create_time like 输入.today
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
IF 输入.flag = "2"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
count(task.task_id) AS finish_task_number
|
|
||||||
FROM
|
|
||||||
SCH_BASE_Task task
|
|
||||||
WHERE
|
|
||||||
task.task_status = '99'
|
|
||||||
|
|
||||||
OPTION 输入.today <> ""
|
|
||||||
task.create_time like 输入.today
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
IF 输入.flag = "3"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
count(task.task_id) AS cancel_task_number
|
|
||||||
FROM
|
|
||||||
SCH_BASE_Task task
|
|
||||||
WHERE
|
|
||||||
task.is_delete = '1'
|
|
||||||
|
|
||||||
OPTION 输入.today <> ""
|
|
||||||
task.create_time like 输入.today
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
IF 输入.flag = "4"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
count(task.task_id) AS not_finish_task_number
|
|
||||||
FROM
|
|
||||||
SCH_BASE_Task task
|
|
||||||
WHERE
|
|
||||||
task.task_status <> '99'
|
|
||||||
|
|
||||||
OPTION 输入.today <> ""
|
|
||||||
task.create_time like 输入.today
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,383 +0,0 @@
|
|||||||
[交易说明]
|
|
||||||
交易名: bom查询
|
|
||||||
所属模块:
|
|
||||||
功能简述:
|
|
||||||
版权所有:
|
|
||||||
表引用:
|
|
||||||
版本经历:
|
|
||||||
|
|
||||||
[数据库]
|
|
||||||
--指定数据库,为空采用默认值,默认为db.properties中列出的第一个库
|
|
||||||
|
|
||||||
[IO定义]
|
|
||||||
#################################################
|
|
||||||
## 表字段对应输入参数
|
|
||||||
#################################################
|
|
||||||
输入.flag TYPEAS s_string
|
|
||||||
输入.workprocedure TYPEAS s_string
|
|
||||||
输入.begin_time TYPEAS s_string
|
|
||||||
输入.end_time TYPEAS s_string
|
|
||||||
输入.now_time TYPEAS s_string
|
|
||||||
输入.produce_date TYPEAS s_string
|
|
||||||
输入.end_produce_date TYPEAS s_string
|
|
||||||
输入.begin_produce_date TYPEAS s_string
|
|
||||||
输入.worksection_type_scode TYPEAS s_string
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[临时表]
|
|
||||||
--这边列出来的临时表就会在运行期动态创建
|
|
||||||
|
|
||||||
[临时变量]
|
|
||||||
--所有中间过程变量均可在此处定义
|
|
||||||
|
|
||||||
[业务过程]
|
|
||||||
|
|
||||||
##########################################
|
|
||||||
# 1、输入输出检查 #
|
|
||||||
##########################################
|
|
||||||
|
|
||||||
|
|
||||||
##########################################
|
|
||||||
# 2、主过程前处理 #
|
|
||||||
##########################################
|
|
||||||
|
|
||||||
|
|
||||||
##########################################
|
|
||||||
# 3、业务主过程 #
|
|
||||||
##########################################
|
|
||||||
|
|
||||||
IF 输入.flag = "1"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
|
|
||||||
sum( shiftorder.real_qty ) AS real_qty,
|
|
||||||
sum( shiftorder.plan_qty ) AS plan_qty ,
|
|
||||||
convert(sum( shiftorder.real_qty )/sum( shiftorder.plan_qty ),DECIMAL(10,2))*100 as finish_rate
|
|
||||||
FROM
|
|
||||||
mps_bd_produceshiftorder shiftorder
|
|
||||||
LEFT JOIN pdm_bi_workprocedure workprocedure ON shiftorder.workprocedure_id = workprocedure.workprocedure_id
|
|
||||||
LEFT JOIN sys_dict_detail sys ON sys.VALUE= workprocedure.worksection_type_scode AND sys.dict_id = '87'
|
|
||||||
where
|
|
||||||
|
|
||||||
shiftorder.is_delete='0'
|
|
||||||
and shiftorder.order_status<>'00'
|
|
||||||
OPTION 输入.worksection_type_scode <> ""
|
|
||||||
workprocedure.worksection_type_scode = 输入.worksection_type_scode
|
|
||||||
ENDOPTION
|
|
||||||
OPTION 输入.produce_date <> ""
|
|
||||||
shiftorder.produce_date = 输入.produce_date
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
IF 输入.flag = "2"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
shiftorder.produceorder_code,
|
|
||||||
shiftorder.plan_qty,
|
|
||||||
shiftorder.real_qty,
|
|
||||||
(shiftorder.plan_qty - shiftorder.real_qty) AS gap_qty,
|
|
||||||
material.material_code,
|
|
||||||
material.material_name,
|
|
||||||
material.material_spec,
|
|
||||||
CONVERT ( ( shiftorder.real_qty / shiftorder.plan_qty ), DECIMAL ( 10, 3 ) ) * 100 AS finish_rate
|
|
||||||
FROM
|
|
||||||
mps_bd_produceshiftorder shiftorder
|
|
||||||
left join md_me_materialbase material on material.material_id =shiftorder.material_id
|
|
||||||
where
|
|
||||||
shiftorder.is_delete='0'
|
|
||||||
OPTION 输入.produce_date <> ""
|
|
||||||
shiftorder.produce_date = 输入.produce_date
|
|
||||||
ENDOPTION
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
IF 输入.flag = "3"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
sum( shiftorder.real_qty ) AS real_qty,
|
|
||||||
sum( shiftorder.plan_qty ) AS plan_qty,
|
|
||||||
CONVERT ( sum( shiftorder.real_qty ) / sum( shiftorder.plan_qty ), DECIMAL ( 10, 3 ) ) * 100 AS finish_rate
|
|
||||||
FROM
|
|
||||||
mps_bd_produceshiftorder shiftorder
|
|
||||||
RIGHT JOIN (
|
|
||||||
SELECT
|
|
||||||
route.material_id,
|
|
||||||
dtl.workprocedure_id
|
|
||||||
FROM
|
|
||||||
PDM_BI_ProductProcessRoute route
|
|
||||||
LEFT JOIN PDM_BI_ProductProcessRouteDtl dtl ON route.productprocess_id = dtl.productprocess_id
|
|
||||||
WHERE
|
|
||||||
route.material_id IN ( SELECT DISTINCT shiftorder.material_id FROM mps_bd_produceshiftorder shiftorder )
|
|
||||||
AND dtl.nextworkprocedure_id = '1535144552481034240'
|
|
||||||
) a ON a.material_id = shiftorder.material_id
|
|
||||||
AND a.workprocedure_id = shiftorder.workprocedure_id
|
|
||||||
where
|
|
||||||
1=1
|
|
||||||
OPTION 输入.produce_date <> ""
|
|
||||||
shiftorder.produce_date = 输入.produce_date
|
|
||||||
ENDOPTION
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
IF 输入.flag = "4"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
count(*) as count
|
|
||||||
FROM
|
|
||||||
mps_bd_produceshiftorder shiftorder
|
|
||||||
where
|
|
||||||
shiftorder.is_delete='0'
|
|
||||||
and shiftorder.order_status<>'00'
|
|
||||||
OPTION 输入.produce_date <> ""
|
|
||||||
shiftorder.produce_date = 输入.produce_date
|
|
||||||
ENDOPTION
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
IF 输入.flag = "5"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
count(*) as count
|
|
||||||
FROM
|
|
||||||
mps_bd_produceshiftorder shiftorder
|
|
||||||
where
|
|
||||||
shiftorder.realproduceend_date > shiftorder.planproduceend_date
|
|
||||||
and shiftorder.order_status<>'00'
|
|
||||||
OPTION 输入.produce_date <> ""
|
|
||||||
shiftorder.produce_date = 输入.produce_date
|
|
||||||
ENDOPTION
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
|
|
||||||
IF 输入.flag = "7"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
sum( real_qty ) AS real_qty,
|
|
||||||
sum( plan_qty ) AS plan_qty,
|
|
||||||
CONVERT ( sum( shiftorder.real_qty ) / sum( shiftorder.plan_qty ), DECIMAL ( 10, 3 ) ) * 100 AS finish_rate
|
|
||||||
FROM
|
|
||||||
mps_bd_produceshiftorder shiftorder
|
|
||||||
LEFT JOIN pdm_bi_workprocedure workprocedure ON workprocedure.workprocedure_id = shiftorder.workprocedure_id
|
|
||||||
WHERE
|
|
||||||
shiftorder.is_delete='0'
|
|
||||||
and shiftorder.order_status<>'00'
|
|
||||||
and workprocedure.workprocedure_code IN ( '07', '06', '02' )
|
|
||||||
OPTION 输入.produce_date <> ""
|
|
||||||
shiftorder.produce_date = 输入.produce_date
|
|
||||||
ENDOPTION
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
|
|
||||||
IF 输入.flag = "8"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
workprocedure.worksection_type_scode,
|
|
||||||
sum( real_qty ) AS real_qty,
|
|
||||||
sum( plan_qty ) AS plan_qty,
|
|
||||||
shiftorder.produce_date as date,
|
|
||||||
CONVERT ( sum( shiftorder.real_qty ) / sum( shiftorder.plan_qty ), DECIMAL ( 10, 3 ) ) * 100 AS finish_rate
|
|
||||||
FROM
|
|
||||||
mps_bd_produceshiftorder shiftorder
|
|
||||||
LEFT JOIN pdm_bi_workprocedure workprocedure ON shiftorder.workprocedure_id = workprocedure.workprocedure_id
|
|
||||||
LEFT JOIN sys_dict_detail sys ON sys.VALUE= workprocedure.worksection_type_scode AND sys.dict_id = '87'
|
|
||||||
WHERE
|
|
||||||
shiftorder.is_delete='0'
|
|
||||||
OPTION 输入.produce_date <> ""
|
|
||||||
shiftorder.produce_date = 输入.produce_date
|
|
||||||
ENDOPTION
|
|
||||||
GROUP BY worksection_type_scode,shiftorder.produce_date
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
IF 输入.flag = "9"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
sum( real_qty ) AS real_qty
|
|
||||||
FROM
|
|
||||||
mps_bd_produceshiftorder shiftorder
|
|
||||||
LEFT JOIN pdm_bi_workprocedure workprocedure ON shiftorder.workprocedure_id = workprocedure.workprocedure_id
|
|
||||||
LEFT JOIN sys_dict_detail sys ON sys.VALUE= workprocedure.worksection_type_scode AND sys.dict_id = '87'
|
|
||||||
WHERE
|
|
||||||
shiftorder.is_delete='0'
|
|
||||||
and workprocedure.workprocedure_code IN ( '07', '06', '02' )
|
|
||||||
OPTION 输入.produce_date <> ""
|
|
||||||
shiftorder.produce_date = 输入.produce_date
|
|
||||||
ENDOPTION
|
|
||||||
GROUP BY worksection_type_scode
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
IF 输入.flag = "10"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
shiftorder.material_id,
|
|
||||||
material.material_code,
|
|
||||||
material.material_name,
|
|
||||||
material.material_spec,
|
|
||||||
sum( real_qty ) AS real_qty
|
|
||||||
FROM
|
|
||||||
mps_bd_produceshiftorder shiftorder
|
|
||||||
LEFT JOIN pdm_bi_workprocedure workprocedure ON shiftorder.workprocedure_id = workprocedure.workprocedure_id
|
|
||||||
left join md_me_materialbase material on material.material_id =shiftorder.material_id
|
|
||||||
WHERE
|
|
||||||
shiftorder.is_delete='0'
|
|
||||||
OPTION 输入.produce_date <> ""
|
|
||||||
shiftorder.produce_date = 输入.produce_date
|
|
||||||
ENDOPTION
|
|
||||||
GROUP BY
|
|
||||||
shiftorder.material_id,
|
|
||||||
material.material_code,
|
|
||||||
material.material_name,
|
|
||||||
material.material_spec
|
|
||||||
ORDER BY real_qty desc
|
|
||||||
LIMIT 0,10
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
|
|
||||||
IF 输入.flag = "11"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
shiftorder.produceorder_code,
|
|
||||||
shiftorder.material_id,
|
|
||||||
material.material_code,
|
|
||||||
material.material_name,
|
|
||||||
material.material_spec,
|
|
||||||
shiftorder. real_qty,
|
|
||||||
shiftorder.plan_qty,
|
|
||||||
shiftorder.plan_qty -shiftorder. real_qty as gap_qty,
|
|
||||||
shiftorder.produce_date as date
|
|
||||||
FROM
|
|
||||||
mps_bd_produceshiftorder shiftorder
|
|
||||||
LEFT JOIN pdm_bi_workprocedure workprocedure ON shiftorder.workprocedure_id = workprocedure.workprocedure_id
|
|
||||||
LEFT JOIN sys_dict_detail sys ON sys.VALUE= workprocedure.worksection_type_scode AND sys.dict_id = '87'
|
|
||||||
left join md_me_materialbase material on material.material_id =shiftorder.material_id
|
|
||||||
WHERE
|
|
||||||
shiftorder.is_delete='0'
|
|
||||||
and shiftorder.order_status<>'00'
|
|
||||||
and workprocedure.workprocedure_code IN ( '07', '06', '02' )
|
|
||||||
and shiftorder. real_qty < shiftorder.plan_qty
|
|
||||||
OPTION 输入.produce_date <> ""
|
|
||||||
shiftorder.produce_date = 输入.produce_date
|
|
||||||
ENDOPTION
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
|
|
||||||
IF 输入.flag = "12"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
shiftorder.material_id,
|
|
||||||
material.material_code,
|
|
||||||
material.material_name,
|
|
||||||
material.material_spec,
|
|
||||||
sum( real_qty ) AS real_qty
|
|
||||||
FROM
|
|
||||||
mps_bd_produceshiftorder shiftorder
|
|
||||||
LEFT JOIN pdm_bi_workprocedure workprocedure ON shiftorder.workprocedure_id = workprocedure.workprocedure_id
|
|
||||||
left join md_me_materialbase material on material.material_id =shiftorder.material_id
|
|
||||||
WHERE
|
|
||||||
shiftorder.is_delete='0'
|
|
||||||
OPTION 输入.end_produce_date <> ""
|
|
||||||
shiftorder.produce_date <= 输入.end_produce_date
|
|
||||||
ENDOPTION
|
|
||||||
OPTION 输入.begin_produce_date <> ""
|
|
||||||
shiftorder.produce_date >= 输入.begin_produce_date
|
|
||||||
ENDOPTION
|
|
||||||
GROUP BY
|
|
||||||
shiftorder.material_id,
|
|
||||||
material.material_code,
|
|
||||||
material.material_spec,
|
|
||||||
material.material_name
|
|
||||||
ORDER BY real_qty desc
|
|
||||||
LIMIT 0,9
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
IF 输入.flag = "13"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
sum( real_qty ) AS real_qty
|
|
||||||
FROM
|
|
||||||
mps_bd_produceshiftorder shiftorder
|
|
||||||
LEFT JOIN pdm_bi_workprocedure workprocedure ON shiftorder.workprocedure_id = workprocedure.workprocedure_id
|
|
||||||
left join md_me_materialbase material on material.material_id =shiftorder.material_id
|
|
||||||
WHERE
|
|
||||||
shiftorder.is_delete='0'
|
|
||||||
OPTION 输入.end_produce_date <> ""
|
|
||||||
shiftorder.produce_date <= 输入.end_produce_date
|
|
||||||
ENDOPTION
|
|
||||||
OPTION 输入.begin_produce_date <> ""
|
|
||||||
shiftorder.produce_date >= 输入.begin_produce_date
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
IF 输入.flag = "14"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
|
|
||||||
sum( shiftorder.real_qty ) AS real_qty,
|
|
||||||
sum( shiftorder.plan_qty ) AS plan_qty ,
|
|
||||||
convert(sum( shiftorder.real_qty )/sum( shiftorder.plan_qty ),DECIMAL(10,2))*100 as finish_rate
|
|
||||||
FROM
|
|
||||||
mps_bd_produceshiftorder shiftorder
|
|
||||||
LEFT JOIN pdm_bi_workprocedure workprocedure ON shiftorder.workprocedure_id = workprocedure.workprocedure_id
|
|
||||||
LEFT JOIN sys_dict_detail sys ON sys.VALUE= workprocedure.worksection_type_scode AND sys.dict_id = '87'
|
|
||||||
where
|
|
||||||
shiftorder.is_delete='0'
|
|
||||||
OPTION 输入.worksection_type_scode <> ""
|
|
||||||
workprocedure.worksection_type_scode = 输入.worksection_type_scode
|
|
||||||
ENDOPTION
|
|
||||||
OPTION 输入.end_produce_date <> ""
|
|
||||||
shiftorder.produce_date <= 输入.end_produce_date
|
|
||||||
ENDOPTION
|
|
||||||
OPTION 输入.begin_produce_date <> ""
|
|
||||||
shiftorder.produce_date >= 输入.begin_produce_date
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
IF 输入.flag = "15"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
sum( real_qty ) AS real_qty,
|
|
||||||
sum( plan_qty ) AS plan_qty,
|
|
||||||
CONVERT ( sum( shiftorder.real_qty ) / sum( shiftorder.plan_qty ), DECIMAL ( 10, 3 ) ) * 100 AS finish_rate
|
|
||||||
FROM
|
|
||||||
mps_bd_produceshiftorder shiftorder
|
|
||||||
LEFT JOIN pdm_bi_workprocedure workprocedure ON shiftorder.workprocedure_id = workprocedure.workprocedure_id
|
|
||||||
LEFT JOIN sys_dict_detail sys ON sys.VALUE= workprocedure.worksection_type_scode AND sys.dict_id = '87'
|
|
||||||
WHERE
|
|
||||||
shiftorder.is_delete='0'
|
|
||||||
OPTION 输入.produce_date <> ""
|
|
||||||
shiftorder.produce_date = 输入.produce_date
|
|
||||||
ENDOPTION
|
|
||||||
OPTION 输入.worksection_type_scode <> ""
|
|
||||||
workprocedure.worksection_type_scode = 输入.worksection_type_scode
|
|
||||||
ENDOPTION
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
Binary file not shown.
@@ -38,7 +38,6 @@ import java.util.Map;
|
|||||||
public class ProduceshiftorderController{
|
public class ProduceshiftorderController{
|
||||||
private final ProduceshiftorderService produceshiftorderService;
|
private final ProduceshiftorderService produceshiftorderService;
|
||||||
private final IPdmProduceWorkorderService iPdmProduceWorkorderService;
|
private final IPdmProduceWorkorderService iPdmProduceWorkorderService;
|
||||||
private final IPdmBiDeviceService pdmBiDeviceService;
|
|
||||||
|
|
||||||
|
|
||||||
@PostMapping("/getDevice")
|
@PostMapping("/getDevice")
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -64,18 +65,21 @@ public class EngraveCallService {
|
|||||||
if (param.size()==0){
|
if (param.size()==0){
|
||||||
throw new BadRequestException("请求参数不能为空");
|
throw new BadRequestException("请求参数不能为空");
|
||||||
}
|
}
|
||||||
String struct_code = null;
|
StIvtStructivtBcp stIvtStructivt = iStIvtStructivtBcpService.getOne(new QueryWrapper<StIvtStructivtBcp>()
|
||||||
|
.eq("struct_code", param.getJSONObject(0).getString("struct_code")));
|
||||||
|
BigDecimal unit_weight = stIvtStructivt.getUnit_weight();
|
||||||
|
if (unit_weight==null){
|
||||||
|
throw new BadRequestException("当前半成品货位库存没有物料单重");
|
||||||
|
}
|
||||||
List<String> kzDevice= new ArrayList<>();
|
List<String> kzDevice= new ArrayList<>();
|
||||||
Map<String, String> map = new HashMap<>();
|
Map<String, String> map = new HashMap<>();
|
||||||
for (Object o : param) {
|
for (Object o : param) {
|
||||||
JSONObject item = JSONObject.parseObject(JSON.toJSONString(o));
|
JSONObject item = JSONObject.parseObject(JSON.toJSONString(o));
|
||||||
struct_code = item.getString("struct_code");//货位;
|
|
||||||
kzDevice.add(item.getString("device_code"));
|
kzDevice.add(item.getString("device_code"));
|
||||||
map.put(item.getString("device_code"),item.getString("weight"));
|
map.put(item.getString("device_code"),String.valueOf(item.getBigDecimal("qty").multiply(unit_weight).intValue()));
|
||||||
}
|
}
|
||||||
kzDevice.remove("A1_KZ_14");
|
kzDevice.remove("A1_KZ_14");
|
||||||
StIvtStructivtBcp stIvtStructivt = iStIvtStructivtBcpService.getOne(new QueryWrapper<StIvtStructivtBcp>()
|
|
||||||
.eq("struct_code", struct_code));
|
|
||||||
// if (!CollectionUtils.isEmpty(kzDevice)){
|
// if (!CollectionUtils.isEmpty(kzDevice)){
|
||||||
// List<PdmProduceWorkorder> workorders = workorderService.list(new QueryWrapper<PdmProduceWorkorder>()
|
// List<PdmProduceWorkorder> workorders = workorderService.list(new QueryWrapper<PdmProduceWorkorder>()
|
||||||
// .eq("workprocedure_id", ENGRAVE_WORKPRODURE)
|
// .eq("workprocedure_id", ENGRAVE_WORKPRODURE)
|
||||||
|
|||||||
Reference in New Issue
Block a user