rev:修改

This commit is contained in:
2026-03-17 17:35:30 +08:00
parent 50b357b6f9
commit 5a8916bebf
14 changed files with 198 additions and 135 deletions

View File

@@ -6,7 +6,7 @@
<select id="queryConsumeReport" resultType="org.nl.wms.biBoard.consumptionReport.dto.ConsumeReportDto">
SELECT
@rownum := @rownum + 1 AS rowNum,
bom.create_id AS groupCode,
u.username AS groupCode,
bom.create_name AS groupName,
mater.material_code AS materialCode,
mater.material_name AS materialName,
@@ -18,12 +18,14 @@
bom.qty_unit_name AS qtyUnitName
FROM
pdm_bom_callmaterial bom
LEFT JOIN sys_user u ON bom.create_id = u.user_id
INNER JOIN md_me_materialbase mater ON mater.material_id = bom.material_id,
(SELECT @rownum := 0) r
<where>
1 = 1
<if test="param.groupCode != null and param.groupCode != ''">
AND bom.create_id = #{param.groupCode}
AND (u.username LIKE #{param.groupCode} or
u.person_name LIKE #{param.groupCode})
</if>
<if test="param.materialCode != null and param.materialCode != ''">
AND (mater.material_code LIKE CONCAT('%', #{param.materialCode}, '%')
@@ -76,7 +78,7 @@
<!-- 班组焊材消耗报表全部数据(用于导出) -->
<select id="queryConsumeReportAll" resultType="org.nl.wms.biBoard.consumptionReport.dto.ConsumeReportDto">
SELECT
bom.create_id AS groupCode,
u.username AS groupCode,
bom.create_name AS groupName,
mater.material_code AS materialCode,
mater.material_name AS materialName,
@@ -89,10 +91,12 @@
FROM
pdm_bom_callmaterial bom
INNER JOIN md_me_materialbase mater ON mater.material_id = bom.material_id
LEFT JOIN sys_user u ON bom.create_id = u.user_id
<where>
1 = 1
<if test="param.groupCode != null and param.groupCode != ''">
AND bom.create_id = #{param.groupCode}
AND (u.username LIKE #{param.groupCode} or
u.person_name LIKE #{param.groupCode})
</if>
<if test="param.materialCode != null and param.materialCode != ''">
AND (mater.material_code LIKE CONCAT('%', #{param.materialCode}, '%')

View File

@@ -89,7 +89,7 @@ public class ConsumeReportServiceImpl implements IConsumeReportService {
// 创建标题行
Row headerRow = sheet.createRow(0);
String[] headers = {"序号", "班组编码", "班组名称", "物料编码", "物料名称", "规格型号", "批次", "领料重量", "退料重量", "消耗重量", "单位"};
String[] headers = {"序号", "班组编码", "班组名称", "物料编码", "物料名称", "规格型号", "工单编码", "领料重量", "退料重量", "消耗重量", "单位"};
for (int i = 0; i < headers.length; i++) {
Cell cell = headerRow.createCell(i);
cell.setCellValue(headers[i]);

View File

@@ -7,8 +7,8 @@
SELECT
@rownum := @rownum + 1 AS rowNum,
DATE_FORMAT(inv.confirm_time, '%Y-%m-%d %H:%i:%s') AS confirmTime,
inv.confirm_optid AS groupCode,
inv.confirm_optname AS groupName,
u.username AS groupCode,
u.person_name AS groupName,
CASE inv.bill_type
WHEN '1001' THEN '领料'
WHEN '0002' THEN '退料'
@@ -17,19 +17,23 @@
mater.material_code AS materialCode,
mater.material_name AS materialName,
mater.material_spec AS materialSpec,
dtl.pcsn AS batchNo,
dtl.real_qty AS weight,
dtl.qty_unit_name AS qtyUnitName
dis.pcsn AS batchNo,
dis.real_qty AS weight,
dis.qty_unit_name AS qtyUnitName
FROM
st_ivt_iostorinv inv
INNER JOIN st_ivt_iostorinvdtl dtl ON inv.iostorinv_id = dtl.iostorinv_id
INNER JOIN md_me_materialbase mater ON mater.material_id = dtl.material_id,
st_ivt_iostorinvdis dis
INNER JOIN st_ivt_iostorinvdtl dtl ON dtl.iostorinv_id = dis.iostorinv_id
INNER JOIN st_ivt_iostorinv inv ON inv.iostorinv_id = dtl.iostorinv_id
INNER JOIN sys_user u ON u.user_id = inv.input_optid
INNER JOIN md_me_materialbase mater ON mater.material_id = dis.material_id,
(SELECT @rownum := 0) r
<where>
inv.bill_status = '99'
AND inv.is_delete = '0'
AND inv.bill_type IN ('1001', '0002')
<if test="param.groupCode != null and param.groupCode != ''">
AND inv.confirm_optid = #{param.groupCode}
AND (u.username LIKE #{param.groupCode} or
u.person_name LIKE #{param.groupCode})
</if>
<if test="param.materialCode != null and param.materialCode != ''">
AND (mater.material_code LIKE CONCAT('%', #{param.materialCode}, '%')
@@ -83,28 +87,32 @@
<select id="queryIosReportAll" resultType="org.nl.wms.biBoard.materialRequisition.dto.IosReportDto">
SELECT
DATE_FORMAT(inv.confirm_time, '%Y-%m-%d %H:%i:%s') AS confirmTime,
inv.confirm_optid AS groupCode,
inv.confirm_optname AS groupName,
u.username AS groupCode,
u.person_name AS groupName,
CASE inv.bill_type
WHEN '1001' THEN '领料'
WHEN '0002' THEN '退料'
ELSE ''
WHEN '1001' THEN '领料'
WHEN '0002' THEN '退料'
ELSE ''
END AS iosType,
mater.material_code AS materialCode,
mater.material_name AS materialName,
mater.material_spec AS materialSpec,
dtl.pcsn AS batchNo,
dtl.real_qty AS weight,
dtl.qty_unit_name AS qtyUnitName
FROM
st_ivt_iostorinv inv
INNER JOIN st_ivt_iostorinvdtl dtl ON inv.iostorinv_id = dtl.iostorinv_id
INNER JOIN md_me_materialbase mater ON mater.material_id = dtl.material_id
dis.pcsn AS batchNo,
dis.real_qty AS weight,
dis.qty_unit_name AS qtyUnitName
FROM
st_ivt_iostorinvdis dis
INNER JOIN st_ivt_iostorinvdtl dtl ON dtl.iostorinv_id = dis.iostorinv_id
INNER JOIN st_ivt_iostorinv inv ON inv.iostorinv_id = dtl.iostorinv_id
INNER JOIN sys_user u ON u.user_id = inv.input_optid
INNER JOIN md_me_materialbase mater ON mater.material_id = dis.material_id
<where>
inv.bill_status = '99'
AND inv.is_delete = '0'
AND inv.bill_type IN ('1001', '0002')
<if test="param.groupCode != null and param.groupCode != ''">
AND inv.confirm_optid = #{param.groupCode}
AND (u.username LIKE #{param.groupCode} or
u.person_name LIKE #{param.groupCode})
</if>
<if test="param.materialCode != null and param.materialCode != ''">
AND (mater.material_code LIKE CONCAT('%', #{param.materialCode}, '%')

View File

@@ -1,23 +1,18 @@
package org.nl.wms.biBoard.run;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.wms.biBoard.screen.service.dto.AgvStatus;
import org.nl.wms.biBoard.temp.service.IBiTempRecordService;
import org.nl.wms.biBoard.temp.service.dao.BiTempRecord;
import org.nl.wms.ext.service.WmsToAcsService;
import org.nl.wms.ext.service.util.AcsResponse;
import org.nl.wms.ext.service.util.AgvResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@@ -33,9 +28,10 @@ import java.util.Map;
@Component
@Order(value = 1)
public class AutoSyncAgvStatus {
public static Map<String, AgvStatus> AGV_STATUS= new HashMap<>();
public static Map<String, AgvStatus> AGV_STATUS = new HashMap<>();
@Autowired
private WmsToAcsService wmsToAcsService;
@SneakyThrows
public void run() {
System.out.println("------AutoSyncAgvStatus-------");
@@ -47,20 +43,23 @@ public class AutoSyncAgvStatus {
*/
private void doExecute() {
try {
AcsResponse agvStatus = wmsToAcsService.getAgvStatus();
if (agvStatus.getStatus() == HttpStatus.HTTP_OK){
final JSONObject resultData = agvStatus.getResultData();
if (!CollectionUtils.isEmpty(resultData)){
for (String carId : resultData.keySet()) {
JSONObject object = resultData.getJSONObject(carId);
if (object!=null){
AgvStatus agvStatusDto = object.toJavaObject(AgvStatus.class);
AGV_STATUS.put(carId,agvStatusDto);
}
AgvResponse agvStatus = wmsToAcsService.getAgvStatus();
if (agvStatus.getStatus() == HttpStatus.HTTP_OK) {
JSONArray resultData = agvStatus.getResultData();
if (!CollectionUtils.isEmpty(resultData)) {
for (int i = 0; i < resultData.size(); i++) {
JSONObject json = resultData.getJSONObject(i);
AgvStatus agvStatusDto = json.toJavaObject(AgvStatus.class);
String carId = json.getString("carId");
if (carId.equals("11752")) {
agvStatusDto.setIcon("料箱式AGV.png");
}
AGV_STATUS.put(carId, agvStatusDto);
}
}
}
}catch (Exception ex){
} catch (Exception ex) {
log.error(ex.getMessage());
}
}

View File

@@ -18,11 +18,11 @@ public class AgvStatus {
/**
* 车辆图标:对应前端images中在料箱式AGV.png/潜伏式AGV.png
*/
private String icon = "料箱式AGV.png";
private String icon = "潜伏式AGV.png";
/**
* 当前执行任务号
*/
private String taskCode;
private String task_code;
/**
* 电量单位%
*/

View File

@@ -3,6 +3,7 @@ package org.nl.wms.ext.service;
import com.alibaba.fastjson.JSONObject;
import org.nl.wms.ext.service.util.AcsResponse;
import org.nl.wms.ext.service.util.AgvResponse;
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
import java.util.List;
@@ -31,7 +32,7 @@ public interface WmsToAcsService {
*/
AcsResponse getWeighAcs(JSONObject whereJson);
AcsResponse getTempHumAcs();
AcsResponse getAgvStatus();
AgvResponse getAgvStatus();
/**
* 确认取放货

View File

@@ -2,17 +2,15 @@ package org.nl.wms.ext.service.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.wms.biBoard.screen.service.dto.AgvStatus;
import org.nl.wms.ext.enums.EXTConstant;
import org.nl.wms.ext.service.WmsToAcsService;
import org.nl.wms.ext.service.util.AcsResponse;
import org.nl.wms.ext.service.util.AgvResponse;
import org.nl.wms.ext.util.AcsUtil;
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
@@ -45,82 +43,15 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
@Override
public AcsResponse getTempHumAcs() {
JSONObject object = new JSONObject();
//"temp": 25.6, 温度
// "hum": 60.2 适度
// object.put("temp","25.6");
// object.put("hum","60.2");
// return AcsResponse.requestOk(object);
JSONObject whereJson = object;
whereJson.put("device_code","WSD1");
whereJson.put("device_code", "WSD1");
return AcsUtil.notifyAcs(EXTConstant.GET_TEMPHUM_ACS_API, whereJson);
}
@Override
public AcsResponse getAgvStatus() {
// Map<String, Object> agvStatusMap = new HashMap<>();
// agvStatusMap.put("1",AgvStatus.builder()
// .status("1")
// .carId("2")
// .icon("潜伏式AGV.png")
// .carType("潜伏式AGV").power("66").taskCode("123123").build());
// agvStatusMap.put("1",AgvStatus.builder()
// .status("1")
// .carId("1")
// .carType("CTU料箱AGV")
// .icon("料箱式AGV.png")
// .power("77")
// .taskCode("33322")
// .build());
// agvStatusMap.put("2",AgvStatus.builder()
// .status("1")
// .carId("2")
// .carType("CTU料箱AGV")
// .icon("料箱式AGV.png")
// .power("77")
// .taskCode("33322")
// .build());
// agvStatusMap.put("3",AgvStatus.builder()
// .status("1")
// .carId("3")
// .carType("CTU料箱AGV")
// .icon("料箱式AGV.png")
// .power("77")
// .taskCode("33322")
// .build());
// agvStatusMap.put("5",AgvStatus.builder()
// .status("1")
// .carId("5")
// .carType("CTU料箱AGV")
// .icon("料箱式AGV.png")
// .power("77")
// .taskCode("33322")
// .build());
// agvStatusMap.put("4",AgvStatus.builder()
// .status("1")
// .carId("4")
// .carType("CTU料箱AGV")
// .icon("料箱式AGV.png")
// .power("77")
// .taskCode("33322")
// .build());
// agvStatusMap.put("6",AgvStatus.builder()
// .status("1")
// .carId("6")
// .carType("CTU料箱AGV")
// .icon("料箱式AGV.png")
// .power("77")
// .taskCode("33322")
// .build());
// agvStatusMap.put("7",AgvStatus.builder()
// .status("1")
// .carId("7")
// .carType("CTU料箱AGV")
// .icon("料箱式AGV.png")
// .power("77")
// .taskCode("33322")
// .build());
// return AcsResponse.requestOk(new JSONObject(agvStatusMap));
return AcsUtil.notifyAcs(EXTConstant.GET_AGVSTATUS_ACS_API,new JSONObject());
public AgvResponse getAgvStatus() {
JSONObject whereJson = new JSONObject();
return AcsUtil.notifyAcsAgv(EXTConstant.GET_AGVSTATUS_ACS_API, whereJson);
}
}

View File

@@ -0,0 +1,71 @@
package org.nl.wms.ext.service.util;
import cn.hutool.core.date.DateUtil;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONArray;
import lombok.Data;
import org.nl.wms.ext.util.BaseResponse;
/**
* @Author: Liuxy
* @Description: 下发acs的反馈数据*new
* @Date: 2025/05/19
*/
@Data
public class AgvResponse extends BaseResponse {
private JSONArray errArr = new JSONArray();
private JSONArray resultData = new JSONArray();
/**
* 请求失败
*
* @param message 错误信息
* @return AcsResponse
*/
public static AgvResponse requestError(String message) {
AgvResponse result = new AgvResponse();
result.setStatus(HttpStatus.HTTP_BAD_REQUEST);
result.setMessage(message);
result.setResponseDate(DateUtil.now());
return result;
}
/**
* 请求成功带信息
*
* @param message 信息
* @return AcsResponse
*/
public static AgvResponse requestOkMessage(String message) {
AgvResponse result = new AgvResponse();
result.setStatus(HttpStatus.HTTP_OK);
result.setMessage(message);
result.setResponseDate(DateUtil.now());
return result;
}
/**
* 请求成功
*
* @return AcsResponse
*/
public static AgvResponse requestOk() {
AgvResponse result = new AgvResponse();
result.setStatus(HttpStatus.HTTP_OK);
result.setMessage("请求成功");
result.setResponseDate(DateUtil.now());
return result;
}
public static AgvResponse requestOk(JSONArray resultData) {
AgvResponse result = new AgvResponse();
result.setStatus(HttpStatus.HTTP_OK);
result.setMessage("请求成功");
result.setResultData(resultData);
result.setResponseDate(DateUtil.now());
return result;
}
}

View File

@@ -11,6 +11,7 @@ import org.nl.system.enums.SysParamConstant;
import org.nl.system.service.param.dao.Param;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.ext.service.util.AcsResponse;
import org.nl.wms.ext.service.util.AgvResponse;
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.springframework.stereotype.Component;
@@ -31,7 +32,8 @@ public class AcsUtil {
/**
* 下发任务
* @param api acs地址
*
* @param api acs地址
* @param list 下发参数
* @return AcsResponse
*/
@@ -82,12 +84,13 @@ public class AcsUtil {
/**
* 调用acs
* @param api acs地址
*
* @param api acs地址
* @param param 下发参数
* @return AcsResponse
*/
public static AcsResponse notifyAcs(String api, JSONObject param) {
log.info("下发acs接口"+api+"的输入参数为:-------------------" + param.toString());
log.info("下发acs接口" + api + "的输入参数为:-------------------" + param.toString());
// 返回参数
AcsResponse resultAcs;
@@ -127,4 +130,52 @@ public class AcsUtil {
return resultAcs;
}
/**
* 调用acs
*
* @param api acs地址
* @param param 下发参数
* @return AcsResponse
*/
public static AgvResponse notifyAcsAgv(String api, JSONObject param) {
log.info("下发acs接口" + api + "的输入参数为:-------------------" + param.toString());
// 返回参数
AgvResponse resultAcs;
// 系统参数类
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
//判断是否连接ACS系统
Param isConnectAcs = sysParamService.findByCode(SysParamConstant.IS_CONNECT_ACS);
if (ObjectUtil.isEmpty(isConnectAcs)) {
return AgvResponse.requestError("系统参数表中:" + SysParamConstant.IS_CONNECT_ACS + "不存在");
}
if (isConnectAcs.getValue().equals(IOSConstant.IS_DELETE_NO)) {
return AgvResponse.requestOkMessage("下发成功未连接ACS系统!");
}
//ACS地址
Param acsUrlParam = sysParamService.findByCode(SysParamConstant.ACS_URL);
if (ObjectUtil.isEmpty(acsUrlParam)) {
return AgvResponse.requestError("系统参数表中:" + SysParamConstant.ACS_URL + "不存在");
}
String url = acsUrlParam.getValue() + api;
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.execute().body();
// 格式转换
JSONObject result = JSONObject.parseObject(resultMsg);
resultAcs = JSONObject.toJavaObject(result, AgvResponse.class);
log.info("下发ACS任务的输出参数为-------------------" + resultMsg);
} catch (Exception e) {
//网络不通
String msg = e.getMessage();
log.error("连接失败:{}", msg);
return AgvResponse.requestError("网络不通,操作失败!");
}
return resultAcs;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -27,11 +27,11 @@
style="width: 200px"
/>
</el-form-item>
<el-form-item label="批次号">
<el-form-item label="工单编码">
<el-input
v-model="query.batchNo"
clearable
placeholder="请输入批次号"
placeholder="请输入工单编码"
style="width: 200px"
/>
</el-form-item>
@@ -75,13 +75,12 @@
<!--表格渲染-->
<el-table ref="table" border v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55" />
<el-table-column prop="rowNum" label="序号" width="80" align="center" />
<el-table-column prop="groupCode" label="班组编码" width="120" />
<el-table-column prop="groupName" label="班组名称" width="120" />
<el-table-column prop="materialCode" label="物料编码" width="150" />
<el-table-column prop="materialName" label="物料名称" />
<el-table-column prop="materialSpec" label="规格型号" />
<el-table-column prop="batchNo" label="批次" width="150" />
<el-table-column prop="batchNo" label="工单编码" width="150" />
<el-table-column prop="receiveQty" label="领料重量" width="100" align="right" />
<el-table-column prop="returnQty" label="退料重量" width="100" align="right" />
<el-table-column prop="consumeQty" label="消耗重量" width="100" align="right" />

View File

@@ -75,7 +75,6 @@
<!--表格渲染-->
<el-table ref="table" border v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55" />
<el-table-column prop="rowNum" label="序号" width="80" align="center" />
<el-table-column prop="confirmTime" label="领退时间" width="180" />
<el-table-column prop="groupCode" label="班组编码" width="120" />
<el-table-column prop="groupName" label="班组名称" width="120" />

View File

@@ -3,7 +3,7 @@
<!-- 头部标题 -->
<div class="screen-header">
<div class="header-logo">
<img src="@/assets/images/logo.png" alt="logo" class="logo-img">
<img src="@/assets/images/1.png" alt="logo" class="logo-img">
</div>
<div class="header-title">
哈电汽轮机镇江有限责任公司数字化焊材库智慧大屏
@@ -67,7 +67,7 @@
<div class="agv-status" :class="getAgvStatusClass(agv.status)">
{{ getAgvStatusText(agv.status) }}
</div>
<div class="agv-task">当前任务{{ agv.taskCode || '无' }}</div>
<div class="agv-task">当前任务{{ agv.task_code || '无' }}</div>
<div class="agv-battery">电量{{ agv.power || 0 }}%</div>
</div>
</div>