From 807fada3651530d15fe244d812e7b18bf40bdd78 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期一, 08 一月 2024 16:24:52 +0800
Subject: [PATCH] #
---
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocDetlServiceImpl.java | 6 +
zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/task/ReportApiScheduler.java | 28 ++++
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocDetlService.java | 3
zy-asrs-openapi/src/main/webapp/views/md/reportStock.md | 48 ++++++++
zy-asrs-common/src/main/resources/mapper/wms/LocDetlMapper.xml | 6 +
zy-asrs-openapi/src/main/webapp/views/reportStock.html | 223 +++++++++++++++++++++++++++++++++++++
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/LocDetlMapper.java | 3
zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/ReportStockDto.java | 17 ++
8 files changed, 334 insertions(+), 0 deletions(-)
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/ReportStockDto.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/ReportStockDto.java
new file mode 100644
index 0000000..aaa6479
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/ReportStockDto.java
@@ -0,0 +1,17 @@
+package com.zy.asrs.common.domain.dto;
+
+import lombok.Data;
+
+@Data
+public class ReportStockDto {
+
+ //鐗╂枡鍙�
+ private String matnr;
+
+ //鎵瑰彿
+ private String batch;
+
+ //鎬婚噺
+ private Double anfme;
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/LocDetlMapper.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/LocDetlMapper.java
index d918738..935fb7c 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/LocDetlMapper.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/LocDetlMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zy.asrs.common.domain.dto.QueryStockPreDo;
+import com.zy.asrs.common.domain.dto.ReportStockDto;
import com.zy.asrs.common.wms.entity.LocDetl;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@@ -36,4 +37,6 @@
IPage<LocDetl> getStockOutPage(IPage<LocDetl> page, Map<String, Object> map);
+ List<ReportStockDto> getReportStockDto(Long hostId);
+
}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocDetlService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocDetlService.java
index b697c8f..6fe9f29 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocDetlService.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocDetlService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.asrs.common.domain.dto.ReportStockDto;
import com.zy.asrs.common.wms.entity.LocDetl;
import java.util.List;
@@ -27,4 +28,6 @@
IPage<LocDetl> getStockOut(Integer curr, Integer limit, Map<String, Object> param);
+ List<ReportStockDto> getReportStockDto(Long hostId);
+
}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocDetlServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocDetlServiceImpl.java
index 001bc8b..6fbf6c4 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocDetlServiceImpl.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocDetlServiceImpl.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zy.asrs.common.domain.dto.QueryStockPreDo;
+import com.zy.asrs.common.domain.dto.ReportStockDto;
import com.zy.asrs.common.wms.mapper.LocDetlMapper;
import com.zy.asrs.common.wms.entity.LocDetl;
import com.zy.asrs.common.wms.service.LocDetlService;
@@ -67,4 +68,9 @@
Page<LocDetl> page = new Page<>(curr, limit);
return this.baseMapper.getStockOutPage(page, param);
}
+
+ @Override
+ public List<ReportStockDto> getReportStockDto(Long hostId) {
+ return this.baseMapper.getReportStockDto(hostId);
+ }
}
diff --git a/zy-asrs-common/src/main/resources/mapper/wms/LocDetlMapper.xml b/zy-asrs-common/src/main/resources/mapper/wms/LocDetlMapper.xml
index 73e0dc8..39be9f2 100644
--- a/zy-asrs-common/src/main/resources/mapper/wms/LocDetlMapper.xml
+++ b/zy-asrs-common/src/main/resources/mapper/wms/LocDetlMapper.xml
@@ -173,4 +173,10 @@
<include refid="stockOutCondition"></include>
</select>
+ <select id="getReportStockDto" resultType="com.zy.asrs.common.domain.dto.ReportStockDto">
+ select matnr,batch,sum(anfme) anfme from wms_loc_detl
+ where host_id = #{hostId}
+ group by matnr,batch
+ </select>
+
</mapper>
diff --git a/zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/task/ReportApiScheduler.java b/zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/task/ReportApiScheduler.java
index 147f4bf..7df4a01 100644
--- a/zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/task/ReportApiScheduler.java
+++ b/zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/task/ReportApiScheduler.java
@@ -2,7 +2,10 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.common.domain.dto.ReportStockDto;
import com.zy.asrs.common.domain.enums.ApiType;
import com.zy.asrs.common.domain.enums.OrderSettleType;
import com.zy.asrs.common.openapi.entity.ApiList;
@@ -12,6 +15,7 @@
import com.zy.asrs.common.utils.HttpHandler;
import com.zy.asrs.common.wms.entity.Order;
import com.zy.asrs.common.wms.entity.OrderDetl;
+import com.zy.asrs.common.wms.service.LocDetlService;
import com.zy.asrs.common.wms.service.OrderDetlService;
import com.zy.asrs.common.wms.service.OrderService;
import org.apache.commons.codec.digest.DigestUtils;
@@ -35,6 +39,8 @@
private OrderDetlService orderDetlService;
@Autowired
private HostKeyService hostKeyService;
+ @Autowired
+ private LocDetlService locDetlService;
@Scheduled(cron = "0/3 * * * * ? ")
public void orderComplete() {
@@ -138,7 +144,29 @@
.eq(ApiList::getType, ApiType.REPORT_STOCK.type)
.eq(ApiList::getStatus, 1));
for (ApiList apiList : list) {
+ List<ReportStockDto> reportStockDto = locDetlService.getReportStockDto(apiList.getHostId());
+ //灏佽鏁版嵁
+ HashMap<String, Object> data = new HashMap<>();
+ data.put("stock", reportStockDto);
+ getSign(data, apiList.getHostId());//鑾峰彇绛惧悕
+ //淇濈暀null鍊�
+ FastJsonConfig fastJsonConfig = new FastJsonConfig();
+ fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteNullStringAsEmpty);
+ String paramData = JSON.toJSONString(data, fastJsonConfig.getSerializeConfig(), fastJsonConfig.getSerializerFeatures());
+ try {
+ String response = new HttpHandler.Builder()
+ .setUri(apiList.getUrl())
+ .setJson(JSON.toJSONString(paramData))
+ .build()
+ .doPost();
+ JSONObject result = JSON.parseObject(response);
+ if (result.getOrDefault("code", 0).equals(200)) {
+
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
}
diff --git a/zy-asrs-openapi/src/main/webapp/views/md/reportStock.md b/zy-asrs-openapi/src/main/webapp/views/md/reportStock.md
new file mode 100644
index 0000000..5b20a51
--- /dev/null
+++ b/zy-asrs-openapi/src/main/webapp/views/md/reportStock.md
@@ -0,0 +1,48 @@
+
+## 搴撳瓨涓婃姤
+- **鎺ュ彛璇存槑锛�** 搴撳瓨涓婃姤
+
+涓婃姤绀轰緥锛�
+
+```
+{
+ "sign": "cb727b1cfaac0c1b15d6f20408678b24",
+ "stock": [
+ {
+ "anfme": 5,
+ "batch": "",
+ "matnr": "LSH90152025"
+ },
+ {
+ "anfme": 10,
+ "batch": "",
+ "matnr": "LSH90152050"
+ }
+ ]
+}
+```
+
+
+#### 杩斿洖缁撴灉
+绯荤粺涓婃姤鍚庯紝璇锋眰鏂瑰繀椤婚┈涓婅繑鍥炰互涓嬬粨鏋滈泦锛屽惁鍒欒涓轰笂鎶ュけ璐ャ��
+
+鍙傛暟鍚嶇О |绫诲瀷 |鍑虹幇瑕佹眰 |鎻忚堪
+:---- |:--- |:------ |:---
+code |int |R |鍝嶅簲鐮侊紝浠g爜瀹氫箟璇疯鈥滈檮褰旳 鍝嶅簲鍚楄鏄庘��
+msg |string |R |
+
+绀轰緥锛�
+
+```
+{
+ "code":200,
+ "msg":"success",
+}
+```
+
+## 闄勫綍A 鍝嶅簲鐮佽鏄�
+
+鍝嶅簲鐮� |璇存槑
+:---- |:---
+200 |澶勭悊鎴愬姛
+500 |绯荤粺鍐呴儴閿欒
diff --git a/zy-asrs-openapi/src/main/webapp/views/reportStock.html b/zy-asrs-openapi/src/main/webapp/views/reportStock.html
new file mode 100644
index 0000000..81a239d
--- /dev/null
+++ b/zy-asrs-openapi/src/main/webapp/views/reportStock.html
@@ -0,0 +1,223 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>API寮�鏀惧钩鍙�</title>
+ <link rel="stylesheet" href="../static/css/element.css">
+ <link rel="stylesheet" href="../static/css/common.css">
+ <script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script>
+ <script type="text/javascript" src="../static/js/vue.min.js"></script>
+ <script type="text/javascript" src="../static/js/showdown.min.js"></script>
+ <script type="text/javascript" src="../static/js/common.js"></script>
+ <script type="text/javascript" src="../static/js/element.js"></script>
+</head>
+<body>
+ <div id="app">
+ <div id="content"></div>
+ <div class="slider">
+ <div><el-button type="text" @click="switchPage('index.html')">瑙勮寖璇存槑</el-button></div>
+ <el-divider></el-divider>
+ <div><el-button type="text" @click="switchPage('reportCompleted.html')">璁㈠崟瀹屾垚涓婃姤</el-button></div>
+ <div><el-button type="text" @click="switchPage('reportCancel.html')">璁㈠崟鍙栨秷涓婃姤</el-button></div>
+ <div><el-button type="text" @click="switchPage('reportStock.html')">搴撳瓨涓婃姤</el-button></div>
+ <div><el-button type="text" @click="switchPage('reportApiManage.html')">涓婃姤API绠$悊</el-button></div>
+ <el-divider></el-divider>
+ <div><el-button type="text" @click="switchPage('getOrderType.html')">鑾峰彇璁㈠崟绫诲瀷</el-button></div>
+ <div><el-button type="text" @click="switchPage('getOrderStatus.html')">鑾峰彇璁㈠崟鐘舵�佸垪琛�</el-button></div>
+ <div><el-button type="text" @click="switchPage('getOrderList.html')">鑾峰彇璁㈠崟鍒楄〃</el-button></div>
+ <div><el-button type="text" @click="switchPage('generateOrderPakIn.html')">鐢熸垚鍏ュ簱璁㈠崟</el-button></div>
+ <div><el-button type="text" @click="switchPage('generateOrderPakOut.html')">鐢熸垚鍑哄簱璁㈠崟</el-button></div>
+ <div><el-button type="text" @click="switchPage('createMat.html')">娣诲姞鐗╂枡淇℃伅</el-button></div>
+ <el-divider></el-divider>
+ <div><el-button type="text" @click="keyList()">瀵嗛挜绠$悊</el-button></div>
+ </div>
+
+ <el-dialog title="瀵嗛挜绠$悊" :visible.sync="keyTableVisible">
+ <el-table :data="keyTableData" v-loading="loading">
+ <el-table-column property="hostId$" label="浠撳簱"></el-table-column>
+ <el-table-column property="signKey" label="绛惧悕瀵嗛挜" width="150"></el-table-column>
+ <el-table-column property="appKey" label="鎺ュ彛璇锋眰瀵嗛挜" width="250"></el-table-column>
+ <el-table-column property="createTime$" label="鏃堕棿" width="200"></el-table-column>
+ <el-table-column label="鎿嶄綔" width="400">
+ <template slot-scope="scope">
+ <el-button size="mini" @click="generateSignKey(scope.row.hostId)">绛惧悕瀵嗛挜</el-button>
+ <el-button size="mini" @click="generateAppKey(scope.row.hostId)">鎺ュ彛瀵嗛挜</el-button>
+ <el-switch
+ v-model="scope.row.signStatus"
+ @change="switchChange(scope.row.hostId,scope.row.signStatus)"
+ active-text="寮�鍚鍚�"
+ inactive-text="鍏抽棴绛惧悕">
+ </el-switch>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-dialog>
+ </div>
+
+ <script>
+ showdown.setOption('tables', true);
+ var converter = new showdown.Converter()
+
+ var app = new Vue({
+ el: '#app',
+ data: {
+ keyTableVisible: false,
+ keyTableData: [],
+ loading: true
+ },
+ created() {
+ this.init()
+ },
+ methods: {
+ init() {
+ this.introduceClick()
+ },
+ introduceClick() {
+ $.ajax({
+ url: "md/reportStock.md",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'GET',
+ success: function (res) {
+ // $("#content").html(marked.parse(res))
+ // console.log(converter.makeHtml(res))
+ $("#content").html(converter.makeHtml(res))
+ }
+ });
+ },
+ keyList() {
+ let that = this
+ this.keyTableVisible = true
+ $.ajax({
+ url: baseUrl + "/hostKey/list/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: {},
+ dataType:'json',
+ contentType:'application/json;charset=UTF-8',
+ method: 'POST',
+ success: function (res) {
+ let tmp = []
+ res.data.forEach((item, index) => {
+ item.signStatus = item.signStatus == 1 ? true : false;
+ tmp.push(item)
+ });
+ that.keyTableData = tmp
+ that.loading = false
+ }
+ });
+ },
+ generateSignKey(hostId) {
+ let that = this
+ this.$confirm('姝ゆ搷浣滃皢瑕嗙洊鍘熺鍚嶅瘑閽�, 鏄惁缁х画?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ $.ajax({
+ url: baseUrl + "/hostKey/generateSignKey/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: {
+ hostId: hostId
+ },
+ dataType: 'json',
+ contentType: 'application/json;charset=UTF-8',
+ method: 'GET',
+ success: function (res) {
+ if (res.code === 200) {
+ that.$message({
+ type: 'success',
+ message: '鐢熸垚鎴愬姛'
+ });
+
+ that.keyTableData.forEach((item, index) => {
+ if (item.hostId == hostId) {
+ item.signKey = res.data.signKey
+ }
+ });
+ } else {
+ that.$message({
+ type: 'error',
+ message: res.msg
+ });
+ }
+ }
+ });
+ }).catch(() => {
+ //鍙栨秷
+ });
+ },
+ generateAppKey(hostId) {
+ let that = this
+ this.$confirm('姝ゆ搷浣滃皢瑕嗙洊鍘熸帴鍙e瘑閽�, 鏄惁缁х画?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ $.ajax({
+ url: baseUrl + "/hostKey/generateAppKey/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: {
+ hostId: hostId
+ },
+ dataType: 'json',
+ contentType: 'application/json;charset=UTF-8',
+ method: 'GET',
+ success: function (res) {
+ if (res.code === 200) {
+ that.$message({
+ type: 'success',
+ message: '鐢熸垚鎴愬姛'
+ });
+
+ that.keyTableData.forEach((item, index) => {
+ if (item.hostId == hostId) {
+ item.appKey = res.data.appKey
+ }
+ });
+ } else {
+ that.$message({
+ type: 'error',
+ message: res.msg
+ });
+ }
+ }
+ });
+ }).catch(() => {
+ //鍙栨秷
+ });
+ },
+ switchChange(hostId, signStatus) {
+ let that = this
+ //绛惧悕鏍¢獙寮�鍏�
+ $.ajax({
+ url: baseUrl + "/hostKey/switchSign/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: {
+ hostId: hostId,
+ signStatus: signStatus ? 1 : 0,
+ },
+ dataType: 'json',
+ contentType: 'application/json;charset=UTF-8',
+ method: 'GET',
+ success: function (res) {
+ if (res.code === 200) {
+ that.$message({
+ type: 'success',
+ message: '鍒囨崲鎴愬姛'
+ });
+ } else {
+ that.$message({
+ type: 'error',
+ message: res.msg
+ });
+ }
+ }
+ });
+ },
+ switchPage(url) {
+ location.href = url
+ }
+ }
+ })
+ </script>
+</body>
+</html>
\ No newline at end of file
--
Gitblit v1.9.1