载具出入库优化、大屏添加配方、批次字段
This commit is contained in:
@@ -16,7 +16,6 @@
|
|||||||
<jjwt.version>0.11.1</jjwt.version>
|
<jjwt.version>0.11.1</jjwt.version>
|
||||||
<!-- oshi监控需要指定jna版本, 问题详见 https://github.com/oshi/oshi/issues/1040 -->
|
<!-- oshi监控需要指定jna版本, 问题详见 https://github.com/oshi/oshi/issues/1040 -->
|
||||||
<jna.version>5.5.0</jna.version>
|
<jna.version>5.5.0</jna.version>
|
||||||
<elasticsearch.version>7.6.1</elasticsearch.version>
|
|
||||||
</properties>
|
</properties>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
@@ -38,37 +37,17 @@
|
|||||||
<version>0.9.10</version>
|
<version>0.9.10</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
|
|
||||||
<exclusions>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.elasticsearch</groupId>
|
|
||||||
<artifactId>jna</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
</exclusions>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.squareup.okhttp3</groupId>
|
<groupId>com.squareup.okhttp3</groupId>
|
||||||
<artifactId>okhttp</artifactId>
|
<artifactId>okhttp</artifactId>
|
||||||
<version>4.8.1</version>
|
<version>4.8.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!--lucene相关-->
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.lucene</groupId>
|
<groupId>net.sf.json-lib</groupId>
|
||||||
<artifactId>lucene-core</artifactId>
|
<artifactId>json-lib</artifactId>
|
||||||
<version>8.4.0</version>
|
<version>2.4</version>
|
||||||
</dependency>
|
<classifier>jdk15</classifier>
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.lucene</groupId>
|
|
||||||
<artifactId>lucene-analyzers-common</artifactId>
|
|
||||||
<version>8.4.0</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.lucene</groupId>
|
|
||||||
<artifactId>lucene-analyzers-smartcn</artifactId>
|
|
||||||
<version>8.4.0</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 导入Excel相关-->
|
<!-- 导入Excel相关-->
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
package org.nl.modules.es.config;
|
|
||||||
|
|
||||||
import org.apache.http.HttpHost;
|
|
||||||
import org.elasticsearch.client.RestClient;
|
|
||||||
import org.elasticsearch.client.RestHighLevelClient;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
public class ElasticsearchClientConfig {
|
|
||||||
@Bean
|
|
||||||
public RestHighLevelClient restHighLevelClient() {
|
|
||||||
RestHighLevelClient client = new RestHighLevelClient(
|
|
||||||
RestClient.builder(
|
|
||||||
new HttpHost("192.168.81.155", 9200, "http")));
|
|
||||||
return client;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
package org.nl.modules.es.rest;
|
|
||||||
|
|
||||||
import org.nl.modules.es.service.ContentService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@RestController
|
|
||||||
public class ContentController {
|
|
||||||
@Autowired
|
|
||||||
private ContentService contentService;
|
|
||||||
|
|
||||||
@GetMapping("/parse/{keyword}")
|
|
||||||
public Boolean parse(@PathVariable("keyword") String keyword) throws
|
|
||||||
Exception {
|
|
||||||
return contentService.parseContent(keyword);
|
|
||||||
}
|
|
||||||
|
|
||||||
//http://localhost:9090/search/java/1/10
|
|
||||||
@GetMapping("/search/{keyword}/{pageNo}/{pageSize}")
|
|
||||||
public List<Map<String, Object>> search(@PathVariable("keyword") String
|
|
||||||
keyword,
|
|
||||||
@PathVariable("pageNo") int pageNo,
|
|
||||||
@PathVariable("pageSize") int pageSize) throws
|
|
||||||
Exception {
|
|
||||||
return contentService.searchContentPage(keyword, pageNo, pageSize);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
package org.nl.modules.es.service;
|
|
||||||
|
|
||||||
import cn.hutool.core.util.IdUtil;
|
|
||||||
import net.sf.json.JSONObject;
|
|
||||||
import org.apache.http.HttpHost;
|
|
||||||
import org.elasticsearch.action.bulk.BulkRequest;
|
|
||||||
import org.elasticsearch.action.bulk.BulkResponse;
|
|
||||||
import org.elasticsearch.action.index.IndexRequest;
|
|
||||||
import org.elasticsearch.action.search.SearchRequest;
|
|
||||||
import org.elasticsearch.action.search.SearchResponse;
|
|
||||||
import org.elasticsearch.client.RequestOptions;
|
|
||||||
import org.elasticsearch.client.RestClient;
|
|
||||||
import org.elasticsearch.client.RestHighLevelClient;
|
|
||||||
import org.elasticsearch.common.unit.TimeValue;
|
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
|
||||||
import org.elasticsearch.index.query.QueryBuilders;
|
|
||||||
import org.elasticsearch.index.query.TermQueryBuilder;
|
|
||||||
import org.elasticsearch.search.SearchHit;
|
|
||||||
import org.elasticsearch.search.builder.SearchSourceBuilder;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.boot.autoconfigure.web.ResourceProperties;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class ContentService {
|
|
||||||
@Autowired
|
|
||||||
private RestHighLevelClient restHighLevelClient;
|
|
||||||
|
|
||||||
// 1、解析数据存入es
|
|
||||||
public Boolean parseContent(String keywords) throws Exception {
|
|
||||||
// 解析查询出来的数据
|
|
||||||
// List<ResourceProperties.Content> contents = new HtmlParseUtil().parseJD(keywords);
|
|
||||||
List<ResourceProperties.Content> contents = null;
|
|
||||||
// 封装数据到索引库中!
|
|
||||||
BulkRequest bulkRequest = new BulkRequest();
|
|
||||||
bulkRequest.timeout(TimeValue.timeValueMinutes(2));
|
|
||||||
bulkRequest.timeout("2m");
|
|
||||||
JSONObject json=new JSONObject();
|
|
||||||
json.put("id", IdUtil.simpleUUID());
|
|
||||||
json.put("name","123");
|
|
||||||
|
|
||||||
/* for (int i = 0; i < contents.size(); i++) {
|
|
||||||
bulkRequest
|
|
||||||
.add(new IndexRequest("jd_goods")
|
|
||||||
|
|
||||||
.source(json, XContentType.JSON));
|
|
||||||
}*/
|
|
||||||
bulkRequest
|
|
||||||
.add(new IndexRequest("jd_goods")
|
|
||||||
|
|
||||||
.source(json, XContentType.JSON));
|
|
||||||
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(
|
|
||||||
RestClient.builder(
|
|
||||||
new HttpHost("192.168.81.155", 9200, "http")));
|
|
||||||
BulkResponse bulkResponse =
|
|
||||||
restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
|
|
||||||
return !bulkResponse.hasFailures();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2、实现搜索功能,带分页处理
|
|
||||||
public List<Map<String, Object>> searchContentPage(String keyword, int
|
|
||||||
pageNo, int pageSize) throws IOException {
|
|
||||||
// 基本的参数判断!
|
|
||||||
if (pageNo <= 1) {
|
|
||||||
pageNo = 1;
|
|
||||||
}
|
|
||||||
// 基本的条件搜索
|
|
||||||
SearchRequest searchRequest = new SearchRequest("jd_goods");
|
|
||||||
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
|
|
||||||
// 分页
|
|
||||||
sourceBuilder.from(pageNo);
|
|
||||||
sourceBuilder.size(pageSize);
|
|
||||||
// 精准匹配 QueryBuilders 根据自己要求配置查询条件即可!
|
|
||||||
|
|
||||||
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("title",
|
|
||||||
keyword);
|
|
||||||
sourceBuilder.query(termQueryBuilder);
|
|
||||||
sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
|
|
||||||
// 搜索
|
|
||||||
searchRequest.source(sourceBuilder);
|
|
||||||
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(
|
|
||||||
RestClient.builder(
|
|
||||||
new HttpHost("192.168.81.155", 9200, "http")));
|
|
||||||
SearchResponse response = restHighLevelClient.search(searchRequest,
|
|
||||||
RequestOptions.DEFAULT);
|
|
||||||
// 解析结果!
|
|
||||||
List<Map<String, Object>> list = new ArrayList<>();
|
|
||||||
for (SearchHit documentFields : response.getHits().getHits()) {
|
|
||||||
list.add(documentFields.getSourceAsMap());
|
|
||||||
}
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -12,7 +12,6 @@ import org.nl.modules.system.service.dto.UserDto;
|
|||||||
import org.nl.utils.RsaUtils;
|
import org.nl.utils.RsaUtils;
|
||||||
import org.nl.wms.ext.dp.service.BigScreenService;
|
import org.nl.wms.ext.dp.service.BigScreenService;
|
||||||
import org.nl.wql.WQL;
|
import org.nl.wql.WQL;
|
||||||
import org.springframework.http.HttpStatus;
|
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -190,6 +189,8 @@ public class BigScreenServiceImpl implements BigScreenService {
|
|||||||
JSONObject outjo = allrows.getJSONObject(i);
|
JSONObject outjo = allrows.getJSONObject(i);
|
||||||
String out_material_code = outjo.optString("label_code");
|
String out_material_code = outjo.optString("label_code");
|
||||||
if (out_material_code.equals(label_code)) {
|
if (out_material_code.equals(label_code)) {
|
||||||
|
materijo.put("formula", outjo.optString("formula"));
|
||||||
|
materijo.put("pcsn", outjo.optString("pcsn"));
|
||||||
materijo.put("label_code", outjo.optString("label_code"));
|
materijo.put("label_code", outjo.optString("label_code"));
|
||||||
materijo.put("sewting_quantity", outjo.optString("sewting_quantity"));
|
materijo.put("sewting_quantity", outjo.optString("sewting_quantity"));
|
||||||
}
|
}
|
||||||
@@ -198,6 +199,8 @@ public class BigScreenServiceImpl implements BigScreenService {
|
|||||||
JSONObject injo = allrows2.getJSONObject(i);
|
JSONObject injo = allrows2.getJSONObject(i);
|
||||||
String in_material_code = injo.optString("label_code");
|
String in_material_code = injo.optString("label_code");
|
||||||
if (in_material_code.equals(label_code)) {
|
if (in_material_code.equals(label_code)) {
|
||||||
|
materijo.put("formula", injo.optString("formula"));
|
||||||
|
materijo.put("pcsn", injo.optString("pcsn"));
|
||||||
materijo.put("label_code", injo.optString("label_code"));
|
materijo.put("label_code", injo.optString("label_code"));
|
||||||
materijo.put("finished_quantity", injo.optString("finished_quantity"));
|
materijo.put("finished_quantity", injo.optString("finished_quantity"));
|
||||||
}
|
}
|
||||||
@@ -220,6 +223,8 @@ public class BigScreenServiceImpl implements BigScreenService {
|
|||||||
String material_code = label_code.substring(label_code.length() - 4);
|
String material_code = label_code.substring(label_code.length() - 4);
|
||||||
resultrow.put("material_name", material_name);
|
resultrow.put("material_name", material_name);
|
||||||
resultrow.put("material_code", material_code);
|
resultrow.put("material_code", material_code);
|
||||||
|
resultrow.put("pcsn", resultrow.optString("pcsn"));
|
||||||
|
resultrow.put("formula", resultrow.optString("formula"));
|
||||||
rows.add(resultrow);
|
rows.add(resultrow);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -335,6 +340,8 @@ public class BigScreenServiceImpl implements BigScreenService {
|
|||||||
String material_code = flag;
|
String material_code = flag;
|
||||||
jo.put("material_name", material_name);
|
jo.put("material_name", material_name);
|
||||||
jo.put("material_code", material_code);
|
jo.put("material_code", material_code);
|
||||||
|
jo.put("formula", jo.optString("formula"));
|
||||||
|
jo.put("pcsn", jo.optString("pcsn"));
|
||||||
rows.add(jo);
|
rows.add(jo);
|
||||||
}
|
}
|
||||||
return rows;
|
return rows;
|
||||||
|
|||||||
@@ -43,7 +43,9 @@
|
|||||||
QUERY
|
QUERY
|
||||||
SELECT
|
SELECT
|
||||||
task.create_time,
|
task.create_time,
|
||||||
materi.material_name AS processmaterial_name,
|
labelmst.material_name AS processmaterial_name,
|
||||||
|
labelmst.pcsn,
|
||||||
|
labelmst.formula,
|
||||||
"入库" AS business_type_name,
|
"入库" AS business_type_name,
|
||||||
"1" AS business_type,
|
"1" AS business_type,
|
||||||
round ( dis.realassign_qty, 0 ) AS quantity,
|
round ( dis.realassign_qty, 0 ) AS quantity,
|
||||||
@@ -52,14 +54,17 @@
|
|||||||
sch_base_task task
|
sch_base_task task
|
||||||
LEFT JOIN sch_base_point point ON task.next_point_code = point.point_code
|
LEFT JOIN sch_base_point point ON task.next_point_code = point.point_code
|
||||||
LEFT JOIN st_buss_iostoredis dis ON dis.task_uuid = task.task_uuid
|
LEFT JOIN st_buss_iostoredis dis ON dis.task_uuid = task.task_uuid
|
||||||
LEFT JOIN md_base_material materi ON dis.material_uuid = materi.material_uuid
|
LEFT JOIN md_base_materiallabelmst labelmst ON labelmst.label_uuid = dis.label_uuid
|
||||||
WHERE
|
WHERE
|
||||||
task.task_type = '01'
|
task.task_type = '01'
|
||||||
AND point.area_type IN ( '01', '02' )
|
AND point.area_type IN ( '01', '02' )
|
||||||
AND task.task_status IN ( '04', '05' ) UNION
|
AND task.task_status IN ( '04', '05' )
|
||||||
|
UNION
|
||||||
SELECT
|
SELECT
|
||||||
task.create_time,
|
task.create_time,
|
||||||
labelmst.material_name AS processmaterial_name,
|
labelmst.material_name AS processmaterial_name,
|
||||||
|
labelmst.pcsn,
|
||||||
|
formula,
|
||||||
"转储" AS business_type_name,
|
"转储" AS business_type_name,
|
||||||
"1" AS business_type,
|
"1" AS business_type,
|
||||||
"1" AS quantity,
|
"1" AS quantity,
|
||||||
@@ -162,25 +167,26 @@ IF 输入.flag = "3"
|
|||||||
SELECT
|
SELECT
|
||||||
material.material_name,
|
material.material_name,
|
||||||
material.material_code,
|
material.material_code,
|
||||||
|
material.pcsn,
|
||||||
|
material.formula,
|
||||||
point.point_code AS struct_code,
|
point.point_code AS struct_code,
|
||||||
ivt.label_code,
|
ivt.label_code,
|
||||||
CASE
|
CASE
|
||||||
|
|
||||||
WHEN point.is_active = '0' THEN
|
WHEN point.is_active = '0' THEN
|
||||||
'2'
|
'2'
|
||||||
WHEN TIMESTAMPDIFF( HOUR, ivt.instorage_time, now() ) < ivt.stand_hour THEN
|
WHEN TIMESTAMPDIFF( HOUR, ivt.instorage_time, now() ) < ivt.stand_hour THEN '1' WHEN TIMESTAMPDIFF( HOUR, ivt.instorage_time, now() ) >= ivt.stand_hour THEN
|
||||||
'1'
|
|
||||||
WHEN TIMESTAMPDIFF( HOUR, ivt.instorage_time, now() ) >= ivt.stand_hour THEN
|
|
||||||
'3' ELSE '5'
|
'3' ELSE '5'
|
||||||
END AS struct_type,
|
END AS struct_type,
|
||||||
point.vehicle_code AS storagevehicle_code,
|
point.vehicle_code AS storagevehicle_code,
|
||||||
round (ivt.canuse_qty,0) as quantity,
|
round ( ivt.canuse_qty, 0 ) AS quantity,
|
||||||
"" AS pcsn,
|
"" AS pcsn,
|
||||||
'在库' AS STATUS,
|
'在库' AS STATUS,
|
||||||
ivt.instorage_time,
|
ivt.instorage_time,
|
||||||
TIMESTAMPDIFF( HOUR, ivt.instorage_time, now() ) AS standing_time,
|
TIMESTAMPDIFF( HOUR, ivt.instorage_time, now() ) AS standing_time,
|
||||||
ivt.stand_hour,
|
ivt.stand_hour,
|
||||||
CASE
|
CASE
|
||||||
|
|
||||||
WHEN TIMESTAMPDIFF( HOUR, ivt.instorage_time, now() ) > ivt.stand_hour THEN
|
WHEN TIMESTAMPDIFF( HOUR, ivt.instorage_time, now() ) > ivt.stand_hour THEN
|
||||||
'静置完成'
|
'静置完成'
|
||||||
WHEN TIMESTAMPDIFF( HOUR, ivt.instorage_time, now() ) < ivt.stand_hour THEN
|
WHEN TIMESTAMPDIFF( HOUR, ivt.instorage_time, now() ) < ivt.stand_hour THEN
|
||||||
@@ -189,7 +195,7 @@ IF 输入.flag = "3"
|
|||||||
FROM
|
FROM
|
||||||
sch_base_point point
|
sch_base_point point
|
||||||
LEFT JOIN st_ivt_structivt ivt ON ivt.struct_uuid = point.point_uuid
|
LEFT JOIN st_ivt_structivt ivt ON ivt.struct_uuid = point.point_uuid
|
||||||
LEFT JOIN md_base_material material ON material.material_uuid = ivt.material_uuid
|
LEFT JOIN md_base_materialLabelMst material ON material.label_uuid = ivt.label_uuid
|
||||||
WHERE
|
WHERE
|
||||||
point.area_type IN ('01','02' )
|
point.area_type IN ('01','02' )
|
||||||
ENDSELECT
|
ENDSELECT
|
||||||
@@ -201,6 +207,8 @@ IF 输入.flag = "3"
|
|||||||
SELECT
|
SELECT
|
||||||
task.create_time,
|
task.create_time,
|
||||||
labelmst.material_name AS processmaterial_name,
|
labelmst.material_name AS processmaterial_name,
|
||||||
|
labelmst.pcsn,
|
||||||
|
labelmst.formula,
|
||||||
"出库" AS business_type_name,
|
"出库" AS business_type_name,
|
||||||
"2" AS business_type,
|
"2" AS business_type,
|
||||||
round ( dis.realassign_qty, 0 ) AS quantity,
|
round ( dis.realassign_qty, 0 ) AS quantity,
|
||||||
@@ -217,6 +225,8 @@ IF 输入.flag = "3"
|
|||||||
SELECT
|
SELECT
|
||||||
task.create_time,
|
task.create_time,
|
||||||
labelmst.material_name AS processmaterial_name,
|
labelmst.material_name AS processmaterial_name,
|
||||||
|
labelmst.pcsn,
|
||||||
|
labelmst.formula,
|
||||||
"转储" AS business_type_name,
|
"转储" AS business_type_name,
|
||||||
"1" AS business_type,
|
"1" AS business_type,
|
||||||
"1" AS quantity,
|
"1" AS quantity,
|
||||||
@@ -233,6 +243,8 @@ IF 输入.flag = "3"
|
|||||||
SELECT
|
SELECT
|
||||||
task.create_time,
|
task.create_time,
|
||||||
"" AS processmaterial_name,
|
"" AS processmaterial_name,
|
||||||
|
"" AS pcsn,
|
||||||
|
"" AS formula,
|
||||||
"余料回库" AS business_type_name,
|
"余料回库" AS business_type_name,
|
||||||
"1" AS business_type,
|
"1" AS business_type,
|
||||||
"1" AS quantity,
|
"1" AS quantity,
|
||||||
@@ -244,7 +256,6 @@ IF 输入.flag = "3"
|
|||||||
task.task_type = '07'
|
task.task_type = '07'
|
||||||
AND point.area_type IN ( '03' )
|
AND point.area_type IN ( '03' )
|
||||||
AND task.task_status IN ( '04', '05' )
|
AND task.task_status IN ( '04', '05' )
|
||||||
|
|
||||||
ORDER BY
|
ORDER BY
|
||||||
create_time DESC
|
create_time DESC
|
||||||
ENDSELECT
|
ENDSELECT
|
||||||
@@ -311,14 +322,18 @@ IF 输入.flag = "8"
|
|||||||
QUERY
|
QUERY
|
||||||
SELECT
|
SELECT
|
||||||
max( ivt.label_code ) AS label_code,
|
max( ivt.label_code ) AS label_code,
|
||||||
round( sum( ivt.canuse_qty ), 0 ) AS total_quantity
|
round( sum( ivt.canuse_qty ), 0 ) AS total_quantity,
|
||||||
|
mst.formula,
|
||||||
|
mst.pcsn
|
||||||
FROM
|
FROM
|
||||||
st_ivt_structivt ivt
|
st_ivt_structivt ivt
|
||||||
LEFT JOIN sch_base_point point ON point.point_uuid = ivt.struct_uuid
|
LEFT JOIN sch_base_point point ON point.point_uuid = ivt.struct_uuid
|
||||||
|
LEFT JOIN md_base_materialLabelMst mst ON ivt.label_uuid = ivt.label_uuid
|
||||||
WHERE
|
WHERE
|
||||||
point.area_type IN ( 03 )
|
point.area_type IN ( 03 )
|
||||||
GROUP BY
|
GROUP BY
|
||||||
ivt.label_code
|
mst.formula,
|
||||||
|
mst.pcsn ,ivt.label_code
|
||||||
ENDSELECT
|
ENDSELECT
|
||||||
ENDQUERY
|
ENDQUERY
|
||||||
ENDIF
|
ENDIF
|
||||||
@@ -328,6 +343,8 @@ IF 输入.flag = "8"
|
|||||||
SELECT
|
SELECT
|
||||||
material.material_name,
|
material.material_name,
|
||||||
material.material_code,
|
material.material_code,
|
||||||
|
material.pcsn,
|
||||||
|
material.formula,
|
||||||
point.point_code AS struct_code,
|
point.point_code AS struct_code,
|
||||||
ivt.label_code,
|
ivt.label_code,
|
||||||
CASE
|
CASE
|
||||||
@@ -340,14 +357,14 @@ IF 输入.flag = "8"
|
|||||||
'3' ELSE '4'
|
'3' ELSE '4'
|
||||||
END AS struct_type,
|
END AS struct_type,
|
||||||
point.vehicle_code AS storagevehicle_code,
|
point.vehicle_code AS storagevehicle_code,
|
||||||
round(ivt.canuse_qty ,0)as quantity,
|
round( ivt.canuse_qty, 0 ) AS quantity,
|
||||||
"" AS pcsn,
|
"" AS pcsn,
|
||||||
ivt.instorage_time,
|
ivt.instorage_time,
|
||||||
"" as status_name
|
"" AS status_name
|
||||||
FROM
|
FROM
|
||||||
sch_base_point point
|
sch_base_point point
|
||||||
LEFT JOIN st_ivt_structivt ivt ON ivt.struct_uuid = point.point_uuid
|
LEFT JOIN st_ivt_structivt ivt ON ivt.struct_uuid = point.point_uuid
|
||||||
LEFT JOIN md_base_material material ON material.material_uuid = ivt.material_uuid
|
LEFT JOIN md_base_materialLabelMst material ON material.label_uuid = ivt.label_uuid
|
||||||
WHERE
|
WHERE
|
||||||
point.area_type IN ('03' )
|
point.area_type IN ('03' )
|
||||||
ENDSELECT
|
ENDSELECT
|
||||||
@@ -359,15 +376,18 @@ IF 输入.flag = "8"
|
|||||||
QUERY
|
QUERY
|
||||||
SELECT
|
SELECT
|
||||||
round ( sum( ivt.canuse_qty ), 0 ) AS sewting_quantity,
|
round ( sum( ivt.canuse_qty ), 0 ) AS sewting_quantity,
|
||||||
ivt.label_code
|
ivt.label_code,
|
||||||
|
mst.formula,
|
||||||
|
mst.pcsn
|
||||||
FROM
|
FROM
|
||||||
st_ivt_structivt ivt
|
st_ivt_structivt ivt
|
||||||
LEFT JOIN sch_base_point point ON point.point_uuid = ivt.struct_uuid
|
LEFT JOIN sch_base_point point ON point.point_uuid = ivt.struct_uuid
|
||||||
|
LEFT JOIN md_base_materialLabelMst mst ON ivt.label_uuid = ivt.label_uuid
|
||||||
WHERE
|
WHERE
|
||||||
TIMESTAMPDIFF( HOUR, ivt.instorage_time, now( ) ) < ivt.stand_hour
|
TIMESTAMPDIFF( HOUR, ivt.instorage_time, now( ) ) < ivt.stand_hour
|
||||||
AND point.area_type IN ( '01', '02' )
|
AND point.area_type IN ( '01', '02' )
|
||||||
GROUP BY
|
GROUP BY
|
||||||
ivt.label_code
|
mst.formula, mst.pcsn,ivt.label_code
|
||||||
ENDSELECT
|
ENDSELECT
|
||||||
ENDQUERY
|
ENDQUERY
|
||||||
ENDIF
|
ENDIF
|
||||||
@@ -376,15 +396,18 @@ IF 输入.flag = "8"
|
|||||||
QUERY
|
QUERY
|
||||||
SELECT
|
SELECT
|
||||||
round ( sum( ivt.canuse_qty ), 0 ) AS finished_quantity,
|
round ( sum( ivt.canuse_qty ), 0 ) AS finished_quantity,
|
||||||
ivt.label_code
|
ivt.label_code,
|
||||||
|
mst.formula,
|
||||||
|
mst.pcsn
|
||||||
FROM
|
FROM
|
||||||
st_ivt_structivt ivt
|
st_ivt_structivt ivt
|
||||||
LEFT JOIN sch_base_point point ON point.point_uuid = ivt.struct_uuid
|
LEFT JOIN sch_base_point point ON point.point_uuid = ivt.struct_uuid
|
||||||
|
LEFT JOIN md_base_materialLabelMst mst ON ivt.label_uuid = ivt.label_uuid
|
||||||
WHERE
|
WHERE
|
||||||
TIMESTAMPDIFF( HOUR, ivt.instorage_time, now( ) ) >= ivt.stand_hour
|
TIMESTAMPDIFF( HOUR, ivt.instorage_time, now( ) ) >= ivt.stand_hour
|
||||||
AND point.area_type IN ( '01', '02' )
|
AND point.area_type IN ( '01', '02' )
|
||||||
GROUP BY
|
GROUP BY
|
||||||
ivt.label_code
|
mst.formula,mst.pcsn,ivt.label_code
|
||||||
ENDSELECT
|
ENDSELECT
|
||||||
ENDQUERY
|
ENDQUERY
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|||||||
@@ -203,5 +203,12 @@ public class ProduceTaskController {
|
|||||||
produceTaskService.forceFinish(JSONObject.fromObject(map));
|
produceTaskService.forceFinish(JSONObject.fromObject(map));
|
||||||
return new ResponseEntity<>(HttpStatus.OK);
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
@ApiOperation("根据排程查询库存")
|
||||||
|
@PostMapping("/queryIvtByPscn")
|
||||||
|
//@PreAuthorize("@el.check('storage:add')")
|
||||||
|
public ResponseEntity<Object> queryIvtByPscn(@RequestBody Map map) {
|
||||||
|
String result=produceTaskService.queryIvtByPscn(JSONObject.fromObject(map));
|
||||||
|
return new ResponseEntity<>(result,HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -166,5 +166,11 @@ public interface ProduceTaskService {
|
|||||||
*/
|
*/
|
||||||
void forceFinish(JSONObject row);
|
void forceFinish(JSONObject row);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据批次查询库存数
|
||||||
|
* @param data
|
||||||
|
*/
|
||||||
|
String queryIvtByPscn(JSONObject data);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -559,4 +559,22 @@ public class ProduceTaskServiceImpl implements ProduceTaskService {
|
|||||||
taskObj.put("update_time", now);
|
taskObj.put("update_time", now);
|
||||||
taskTab.update(taskObj);
|
taskTab.update(taskObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String queryIvtByPscn(JSONObject data) {
|
||||||
|
String formula = data.getString("formula");
|
||||||
|
String pcsn = data.getString("pcsn");
|
||||||
|
//物料标签主表【md_base_materialLabelMst】
|
||||||
|
JSONObject labelObj = WQLObject.getWQLObject("md_base_materialLabelMst").query("formula = '" + formula + "' and pcsn = '" + pcsn + "'").uniqueResult(0);
|
||||||
|
if (ObjectUtil.isEmpty(labelObj)) return "0";
|
||||||
|
|
||||||
|
//标签标识
|
||||||
|
String label_uuid = labelObj.getString("label_uuid");
|
||||||
|
HashMap param = new HashMap();
|
||||||
|
param.put("flag","1");
|
||||||
|
param.put("label_uuid",label_uuid);
|
||||||
|
JSONObject jsonObject = WQL.getWO("QPDM_PRODUCETASK_005").addParamMap(param).process().uniqueResult(0);
|
||||||
|
if (ObjectUtil.isNotEmpty(jsonObject))return jsonObject.getString("ivt_qty");
|
||||||
|
return "0";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package org.nl.wms.sch.tasks;
|
|||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.map.MapUtil;
|
import cn.hutool.core.map.MapUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import net.sf.json.JSONArray;
|
import net.sf.json.JSONArray;
|
||||||
import net.sf.json.JSONObject;
|
import net.sf.json.JSONObject;
|
||||||
@@ -14,8 +15,6 @@ import org.nl.wms.st.core.enu.EmptyVehicleBillStatusEnum;
|
|||||||
import org.nl.wql.WQL;
|
import org.nl.wql.WQL;
|
||||||
import org.nl.wql.core.bean.WQLObject;
|
import org.nl.wql.core.bean.WQLObject;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 入空载具
|
* 入空载具
|
||||||
*/
|
*/
|
||||||
@@ -87,8 +86,15 @@ public class InEmptyVehicleTask extends AbstractAcsTask {
|
|||||||
JSONArray taskArry = taskTab.query("task_type='" + TaskTypeEnum.IN_EMPTY_VEHICLE_TASK.getCode() + "' AND task_status='" + TaskStatusEnum.SURE_START.getCode() + "' AND is_active='1' AND is_delete='0'").getResultJSONArray(0);
|
JSONArray taskArry = taskTab.query("task_type='" + TaskTypeEnum.IN_EMPTY_VEHICLE_TASK.getCode() + "' AND task_status='" + TaskStatusEnum.SURE_START.getCode() + "' AND is_active='1' AND is_delete='0'").getResultJSONArray(0);
|
||||||
for (int i = 0; i < taskArry.size(); i++) {
|
for (int i = 0; i < taskArry.size(); i++) {
|
||||||
JSONObject jsonTask = taskArry.getJSONObject(i);
|
JSONObject jsonTask = taskArry.getJSONObject(i);
|
||||||
|
//空卷轴存储区找
|
||||||
JSONObject jsonPoint = WQL.getWO("QSCH_EMPTYVEHICLE01").addParam("flag", "3").addParam("area_type", "04").process().uniqueResult(0);
|
JSONObject jsonPoint = WQL.getWO("QSCH_EMPTYVEHICLE01").addParam("flag", "3").addParam("area_type", "04").process().uniqueResult(0);
|
||||||
|
|
||||||
|
//空卷轴存储区找不到可以使用的位置去 恒温存储区(空载具只能去2层以上)
|
||||||
|
if (ObjectUtil.isEmpty(jsonPoint))
|
||||||
|
jsonPoint = WQL.getWO("QSCH_EMPTYVEHICLE01").addParam("flag", "4").process().uniqueResult(0);
|
||||||
|
// 均找不到
|
||||||
if (MapUtil.isEmpty(jsonPoint)) continue;
|
if (MapUtil.isEmpty(jsonPoint)) continue;
|
||||||
|
|
||||||
String next_point_code = jsonPoint.optString("point_code");
|
String next_point_code = jsonPoint.optString("point_code");
|
||||||
jsonTask.put("next_point_code", next_point_code);
|
jsonTask.put("next_point_code", next_point_code);
|
||||||
jsonTask.put("update_by", SecurityUtils.getCurrentUsername());
|
jsonTask.put("update_by", SecurityUtils.getCurrentUsername());
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package org.nl.wms.sch.tasks;
|
package org.nl.wms.sch.tasks;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.map.MapUtil;
|
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
@@ -18,8 +17,6 @@ import org.nl.wms.st.core.enu.EmptyVehicleBillStatusEnum;
|
|||||||
import org.nl.wql.WQL;
|
import org.nl.wql.WQL;
|
||||||
import org.nl.wql.core.bean.WQLObject;
|
import org.nl.wql.core.bean.WQLObject;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 出空载具
|
* 出空载具
|
||||||
*/
|
*/
|
||||||
@@ -88,10 +85,14 @@ public class OutEmptyVehicleTask extends AbstractAcsTask {
|
|||||||
JSONArray taskArry = taskTab.query("task_type='" + TaskTypeEnum.OUT_EMPTY_VEHICLE_TASK.getCode() + "' AND task_status='" + TaskStatusEnum.SURE_END.getCode() + "' AND is_active='1' AND is_delete='0'").getResultJSONArray(0);
|
JSONArray taskArry = taskTab.query("task_type='" + TaskTypeEnum.OUT_EMPTY_VEHICLE_TASK.getCode() + "' AND task_status='" + TaskStatusEnum.SURE_END.getCode() + "' AND is_active='1' AND is_delete='0'").getResultJSONArray(0);
|
||||||
for (int i = 0; i < taskArry.size(); i++) {
|
for (int i = 0; i < taskArry.size(); i++) {
|
||||||
JSONObject jsonTask = taskArry.getJSONObject(i);
|
JSONObject jsonTask = taskArry.getJSONObject(i);
|
||||||
JSONObject jsonPoint = WQL.getWO("QSCH_EMPTYVEHICLE01").addParam("flag", "2").addParam("area_type", "04").process().uniqueResult(0);
|
|
||||||
|
//优先出恒温存储区 空托盘
|
||||||
|
JSONObject jsonPoint = WQL.getWO("QSCH_EMPTYVEHICLE01").addParam("flag", "2").addParam("area_type", "03").process().uniqueResult(0);
|
||||||
|
//再空卷轴存储区 出空托盘
|
||||||
if (ObjectUtil.isEmpty(jsonPoint)) {
|
if (ObjectUtil.isEmpty(jsonPoint)) {
|
||||||
continue;
|
jsonPoint = WQL.getWO("QSCH_EMPTYVEHICLE01").addParam("flag", "2").addParam("area_type", "04").process().uniqueResult(0);
|
||||||
}
|
}
|
||||||
|
if (ObjectUtil.isEmpty(jsonPoint))continue;
|
||||||
|
|
||||||
String start_point_code = jsonPoint.optString("point_code");
|
String start_point_code = jsonPoint.optString("point_code");
|
||||||
jsonTask.put("start_point_code", start_point_code);
|
jsonTask.put("start_point_code", start_point_code);
|
||||||
|
|||||||
@@ -104,3 +104,21 @@
|
|||||||
ENDQUERY
|
ENDQUERY
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "4"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
point.point_uuid,
|
||||||
|
point_code,
|
||||||
|
vehicle_code
|
||||||
|
FROM
|
||||||
|
sch_base_point point
|
||||||
|
WHERE
|
||||||
|
point.lock_type = '00'
|
||||||
|
AND point.is_active = '1'
|
||||||
|
AND point.point_status = '00'
|
||||||
|
AND is_delete = '0'
|
||||||
|
AND area_type = '03'
|
||||||
|
AND SUBSTRING( point_code,- 1 )>1
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|||||||
@@ -1,51 +0,0 @@
|
|||||||
package es;
|
|
||||||
|
|
||||||
import cn.hutool.core.util.IdUtil;
|
|
||||||
import net.sf.json.JSONObject;
|
|
||||||
import org.apache.http.HttpHost;
|
|
||||||
import org.elasticsearch.action.bulk.BulkRequest;
|
|
||||||
import org.elasticsearch.action.bulk.BulkResponse;
|
|
||||||
import org.elasticsearch.action.index.IndexRequest;
|
|
||||||
import org.elasticsearch.client.RequestOptions;
|
|
||||||
import org.elasticsearch.client.RestClient;
|
|
||||||
import org.elasticsearch.client.RestHighLevelClient;
|
|
||||||
import org.elasticsearch.common.unit.TimeValue;
|
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
|
||||||
import org.springframework.boot.autoconfigure.web.ResourceProperties;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class Test {
|
|
||||||
public static void main(String[] args) throws IOException {
|
|
||||||
// 解析查询出来的数据
|
|
||||||
// List<ResourceProperties.Content> contents = new HtmlParseUtil().parseJD(keywords);
|
|
||||||
List<ResourceProperties.Content> contents = null;
|
|
||||||
// 封装数据到索引库中!
|
|
||||||
BulkRequest bulkRequest = new BulkRequest();
|
|
||||||
bulkRequest.timeout(TimeValue.timeValueMinutes(2));
|
|
||||||
bulkRequest.timeout("2m");
|
|
||||||
JSONObject json = new JSONObject();
|
|
||||||
json.put("id", IdUtil.simpleUUID());
|
|
||||||
json.put("name", "123");
|
|
||||||
|
|
||||||
/* for (int i = 0; i < contents.size(); i++) {
|
|
||||||
bulkRequest
|
|
||||||
.add(new IndexRequest("jd_goods")
|
|
||||||
|
|
||||||
.source(json, XContentType.JSON));
|
|
||||||
}*/
|
|
||||||
bulkRequest
|
|
||||||
.add(new IndexRequest("jd_goods")
|
|
||||||
|
|
||||||
.source(json, XContentType.JSON));
|
|
||||||
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(
|
|
||||||
RestClient.builder(
|
|
||||||
new HttpHost("192.168.81.155", 9200, "http")));
|
|
||||||
BulkResponse bulkResponse =
|
|
||||||
restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
|
|
||||||
|
|
||||||
boolean b = bulkResponse.hasFailures();
|
|
||||||
System.out.println(b);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -127,9 +127,16 @@ export function forceFinish(data) {
|
|||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
export function queryIvtByPscn(data) {
|
||||||
|
return request({
|
||||||
|
url: 'api/produceTask/queryIvtByPscn',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
add, edit, del, getDevice, getMaterial,
|
add, edit, del, getDevice, getMaterial,
|
||||||
getProduceStatus, importExcel, queryTask, querAllTask,
|
getProduceStatus, importExcel, queryTask, querAllTask,
|
||||||
callMaterial, finish, queryIdDevice, popSeek, queryOne, saveOrder, forceFinish, materialBack
|
callMaterial, finish, queryIdDevice, popSeek, queryOne, saveOrder, forceFinish, materialBack, queryIvtByPscn
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -146,6 +146,9 @@
|
|||||||
@change="handleChange"
|
@change="handleChange"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="库存数" prop="ivt_qty">
|
||||||
|
<el-input v-model="form.ivt_qty" style="width: 370px;" readonly />
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="加工托数" prop="produce_qty">
|
<el-form-item label="加工托数" prop="produce_qty">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="form.produce_qty"
|
v-model="form.produce_qty"
|
||||||
@@ -337,6 +340,7 @@ const defaultForm = {
|
|||||||
produce_code: null,
|
produce_code: null,
|
||||||
pcsn: null,
|
pcsn: null,
|
||||||
formula: null,
|
formula: null,
|
||||||
|
ivt_qty: null,
|
||||||
produce_status: null,
|
produce_status: null,
|
||||||
device_code: null,
|
device_code: null,
|
||||||
produce_qty: null,
|
produce_qty: null,
|
||||||
@@ -450,6 +454,13 @@ export default {
|
|||||||
handleChange(value) {
|
handleChange(value) {
|
||||||
this.form.formula = value[0]
|
this.form.formula = value[0]
|
||||||
this.form.pcsn = value[1]
|
this.form.pcsn = value[1]
|
||||||
|
const data = {
|
||||||
|
formula: value[0],
|
||||||
|
pcsn: value[1]
|
||||||
|
}
|
||||||
|
crudProduceTask.queryIvtByPscn(data).then(res => {
|
||||||
|
this.form.ivt_qty = res
|
||||||
|
})
|
||||||
},
|
},
|
||||||
forceFinish(row) {
|
forceFinish(row) {
|
||||||
crudProduceTask.forceFinish(row).then(res => {
|
crudProduceTask.forceFinish(row).then(res => {
|
||||||
|
|||||||
Reference in New Issue
Block a user