代码更新

This commit is contained in:
2022-10-20 21:14:06 +08:00
parent 910adcfd5b
commit 42e40b2f48
14 changed files with 363 additions and 40 deletions

View File

@@ -16,9 +16,13 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import java.io.IOException;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletResponse;
/**
* @author Liuxy
* @date 2021-12-28
@@ -123,4 +127,10 @@ public class PerformancemstController {
public ResponseEntity<Object> getHeader(){
return new ResponseEntity<>(performancemstService.getHeader(),HttpStatus.OK);
}
@ApiOperation("导出数据")
@GetMapping(value = "/download")
public void download(HttpServletResponse response, @RequestParam Map whereJson) throws IOException {
performancemstService.download(whereJson, response);
}
}

View File

@@ -94,4 +94,7 @@ public interface PerformancemstService {
* 获取工作量统计表表头
*/
JSONArray getHeader();
void download(Map whereJson, HttpServletResponse response) throws IOException;
}

View File

@@ -16,6 +16,7 @@ import lombok.extern.slf4j.Slf4j;
import org.nl.exception.BadRequestException;
import org.nl.modules.security.service.dto.JwtUserDto;
import org.nl.modules.system.util.CodeUtil;
import org.nl.utils.FileUtil;
import org.nl.utils.SecurityUtils;
import org.nl.wms.pa.Enum.TestStatusEnum;
import org.nl.wms.pa.service.PerformancemstService;
@@ -27,10 +28,10 @@ import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* @author Liuxy
@@ -245,23 +246,6 @@ public class PerformancemstServiceImpl implements PerformancemstService {
JSONObject jsonObject = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "mst.assessor_date asc");
JSONArray re = jsonObject.getJSONArray("content");
// ===== 2.根据日期查出当天日期所有人员及分数
/* for (int i = 0; i < re.size(); i++) {
JSONObject json = re.getJSONObject(i);
JSONArray arr = WQLObject.getWQLObject("QL_TEST_PerformanceMst").query("assessor_date = '" + json.getString("assessor_date") + "'").getResultJSONArray(0);
double total = 0; //总分
double average = 0; //平均分
for (int j = 0; j < arr.size(); j++) {
JSONObject json2 = arr.getJSONObject(j);
json.put(String.valueOf(json2.getString("assessor_id")), json2.getString("total_score"));
total = total + json2.getDoubleValue("total_score");
average = NumberUtil.div(total, arr.size());
}
//查询出有多少个员工 要用到它们的个数
JSONArray jsonArr = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParam("flag", "5").process().getResultJSONArray(0);
json.put(String.valueOf(jsonArr.size() + 2), total);
json.put(String.valueOf(jsonArr.size() + 1), average);
are.add(json);
}*/
for (int i = 0; i < re.size(); i++) {
JSONObject json = re.getJSONObject(i);
JSONArray userArr = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParam("flag", "7").addParam("assessor_date", json.getString("assessor_date")).process().getResultJSONArray(0);
@@ -317,4 +301,66 @@ public class PerformancemstServiceImpl implements PerformancemstService {
return jsonArrResult;
}
@Override
public void download(Map whereJson, HttpServletResponse response) throws IOException {
String begin_time = (String) whereJson.get("begin_time");
String end_time = (String) whereJson.get("end_time");
String assessor_id = (String) whereJson.get("assessor_id");
HashMap<Object, Object> map = new HashMap<>();
map.put("flag", "8");
map.put("begin_time", begin_time);
map.put("end_time", end_time);
map.put("assessor_id", assessor_id);
// ===== 1.查出所有不相同的日期(唯一日期)
JSONArray are = new JSONArray();
JSONArray re = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map).process().getResultJSONArray(0);
// ===== 2.根据日期查出当天日期所有人员及分数
for (int i = 0; i < re.size(); i++) {
JSONObject json = re.getJSONObject(i);
JSONArray userArr = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParam("flag", "7").addParam("assessor_date", json.getString("assessor_date")).process().getResultJSONArray(0);
double total = 0; //总分
double average = 0; //平均分
for (int j = 0; j < userArr.size(); j++) {
JSONObject json2 = userArr.getJSONObject(j);
json.put(String.valueOf(json2.getString("assessor_id")), json2.getString("total_score"));
total = total + json2.getDoubleValue("total_score");
average = NumberUtil.div(total, userArr.size());
}
//查询出有多少个员工 要用到它们的个数
JSONArray jsonArr = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParam("flag", "5").process().getResultJSONArray(0);
json.put(String.valueOf(jsonArr.size() + 2), total);
json.put(String.valueOf(jsonArr.size() + 1), average);
are.add(json);
}
List<Map<String, Object>> list = new ArrayList<>();
for (int i = 0; i < are.size(); i++) {
JSONObject json = are.getJSONObject(i);
Map<String, Object> map_dtl = new LinkedHashMap<>();
map_dtl.put("日期",json.getString("assessor_date"));
JSONArray jsonArr = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParam("flag", "5").process().getResultJSONArray(0);
for (int j = 0; j < jsonArr.size(); j++) {
JSONObject jsonObject = jsonArr.getJSONObject(j);
JSONObject jsonUser = WQLObject.getWQLObject("sys_user").query("user_id = '" + (String) jsonObject.getString("assessor_id") + "'").uniqueResult(0);
map_dtl.put(jsonUser.getString("nick_name"),"");
String assessor_id1 = jsonObject.getString("assessor_id");
if (ObjectUtil.isNotEmpty(json.getString(assessor_id1))) {
map_dtl.put(jsonUser.getString("nick_name"),json.getString(assessor_id1));
}
}
map_dtl.put("平均分",json.getString(String.valueOf(jsonArr.size() + 1)));
map_dtl.put("总分",json.getString(String.valueOf(jsonArr.size() + 2)));
list.add(map_dtl);
}
FileUtil.downloadExcel(list, response);
}
}

View File

@@ -181,5 +181,37 @@
ENDPAGEQUERY
ENDIF
IF 输入.flag = "8"
QUERY
SELECT
mst.assessor_date,count(mst.assessor_date)
FROM
QL_TEST_PerformanceMst mst
LEFT JOIN sys_user user ON mst.assessor_id = user.user_id
WHERE
mst.status = '30'
AND mst.is_delete = '0'
OPTION 输入.begin_time <> ""
mst.assessor_date >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
mst.assessor_date <= 输入.end_time
ENDOPTION
OPTION 输入.assessor_id <> ""
user.nick_name = 输入.assessor_id
ENDOPTION
GROUP BY mst.assessor_date
ORDER BY mst.assessor_date asc
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -50,7 +50,7 @@
SELECT
oder.id,
oder.id AS source_billdtl_id,
oder.vbillcode AS source_bill_code,
oder.vbillcode,
mater.material_id,
unit.measure_unit_id AS qty_unit_id,
oder.input_time,

View File

@@ -14,6 +14,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
/**
@@ -41,4 +43,10 @@ public class PowderOrderQueryController {
public ResponseEntity<Object> getHeader() {
return new ResponseEntity<>(powderOrderQueryService.getHeader(), HttpStatus.OK);
}
@ApiOperation("导出数据")
@GetMapping(value = "/download")
public void download(HttpServletResponse response, @RequestParam Map whereJson) throws IOException {
powderOrderQueryService.download(whereJson, response);
}
}

View File

@@ -3,6 +3,8 @@ package org.nl.wms.statistics.service;
import com.alibaba.fastjson.JSONArray;
import org.springframework.data.domain.Pageable;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
public interface PowderOrderQueryService {
@@ -19,4 +21,7 @@ public interface PowderOrderQueryService {
* 获取表头
*/
JSONArray getHeader();
void download(Map whereJson, HttpServletResponse response) throws IOException;
}

View File

@@ -7,6 +7,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.nl.utils.FileUtil;
import org.nl.wms.basedata.master.constant.MaterOptTypeEnum;
import org.nl.wms.basedata.master.service.ClassstandardService;
import org.nl.wms.statistics.service.PowderOrderQueryService;
@@ -16,8 +17,9 @@ import org.nl.wql.util.WqlUtil;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
@Service
@RequiredArgsConstructor
@@ -112,10 +114,6 @@ public class PowderOrderQueryServiceImpl implements PowderOrderQueryService {
jsonResult4.put("prop",json.getString("material_id"));
jsonResult4.put("label","物料" + NumberUtil.add(String.valueOf(i), "1") + "");
jsonResultArr.add(jsonResult4);
// JSONObject jsonResult5 = new JSONObject();
// jsonResult5.put("prop",json.getString("material_code")+"");
// jsonResult5.put("label","物料编码");
// jsonResultArr.add(jsonResult5);
JSONObject jsonResult6 = new JSONObject();
jsonResult6.put("prop",json.getString("material_id")+"pcsn");
jsonResult6.put("label","批次");
@@ -149,4 +147,112 @@ public class PowderOrderQueryServiceImpl implements PowderOrderQueryService {
return jsonResultArr;
}
@Override
public void download(Map whereJson, HttpServletResponse response) throws IOException {
String pcsn = MapUtil.getStr(whereJson, "pcsn");
String material_code = MapUtil.getStr(whereJson, "material_code");
HashMap<String, String> map = new HashMap<>();
map.put("flag", "4");
map.put("begin_time", MapUtil.getStr(whereJson, "begin_time"));
map.put("end_time", MapUtil.getStr(whereJson, "end_time"));
map.put("status", MapUtil.getStr(whereJson, "status"));
if (ObjectUtil.isNotEmpty(pcsn)) map.put("pcsn", "%"+pcsn+"%");
if (ObjectUtil.isNotEmpty(material_code)) map.put("material_code", "%"+material_code+"%");
JSONArray contentArr = WQL.getWO("QP_POWDERORDERQUERY01").addParamMap(map).process().getResultJSONArray(0);
JSONArray jsonResultArr = new JSONArray();
for (int i = 0; i < contentArr.size(); i++) {
JSONObject json = contentArr.getJSONObject(i);
JSONObject jsonResult = new JSONObject();
jsonResult.put("0", json.getString("create_time"));
jsonResult.put("1", json.getString("material_code"));
jsonResult.put("2", json.getString("pcsn"));
String formula_id = json.getString("formula_id");
// 根据配方主表id查找明细
JSONArray dtlArr = WQL.getWO("QP_POWDERORDERQUERY01").addParam("flag", "3").addParam("formula_id", formula_id).process().getResultJSONArray(0);
for (int j = 0; j < dtlArr.size(); j++) {
JSONObject jsonDtl = dtlArr.getJSONObject(j);
JSONArray arr = WQLObject.getWQLObject("PDM_BI_FormulaDtl").query("formula_id ='" + formula_id + "' and material_id ='" + jsonDtl.getString("material_id") + "'").getResultJSONArray(0);
jsonResult.put(jsonDtl.getString("material_id")+"",jsonDtl.getString("material_name"));
jsonResult.put(jsonDtl.getString("material_code")+"",jsonDtl.getString("material_code"));
if (arr.size() > 1) {
String resPcsn = "";
String formula_qty = "";
for (int k = 0; k < arr.size(); k++) {
JSONObject jsonObject = arr.getJSONObject(k);
resPcsn = resPcsn + jsonObject.getString("pcsn") + "+";
formula_qty = formula_qty + jsonObject.getString("formula_qty") + "+";
}
jsonResult.put(jsonDtl.getString("material_id")+"pcsn",resPcsn);
jsonResult.put(jsonDtl.getString("material_id") +"formula_qty",formula_qty);
} else {
jsonResult.put(jsonDtl.getString("material_id")+"pcsn",jsonDtl.getString("pcsn"));
jsonResult.put(jsonDtl.getString("material_id") +"formula_qty",jsonDtl.getString("formula_qty"));
}
}
// 碳平衡
jsonResult.put("3", json.getString("c_balance"));
// 时间
jsonResult.put("4", json.getString("ball_time"));
// 球料比
jsonResult.put("5", json.getString("ball_rate"));
// 液料比
jsonResult.put("6", json.getString("liquid_rate"));
// 球磨机号
HashMap<String, String> map1 = new HashMap<>();
map1.put("flag", "3");
map1.put("product_series_id", json.getString("product_series_id"));
map1.put("workprocedure_id", "1472449856613257216");
JSONObject jsonDevice1 = WQL.getWO("QPF_POINTCARD01").addParamMap(map1).process().uniqueResult(0);
map1.put("flag", "4");
JSONObject jsonDevice2= WQL.getWO("QPF_POINTCARD01").addParamMap(map1).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonDevice1) && ObjectUtil.isNotEmpty(jsonDevice2)) {
String device_code_1 = jsonDevice1.getString("device_code").substring(4, 6);
String device_code_2 = jsonDevice2.getString("device_code").substring(4, 6);
jsonResult.put("7", device_code_1 + "-" + device_code_2);
}
jsonResultArr.add(jsonResult);
}
String classIds = classstandardService.getAllChildIdStr(MaterOptTypeEnum.YL_AND_FL.getClass_idStr());
String RF = classstandardService.getAllChildIdStr(MaterOptTypeEnum.RF.getClass_idStr());
List<Map<String, Object>> list = new ArrayList<>();
for (int k = 0; k < jsonResultArr.size(); k++) {
JSONObject json = jsonResultArr.getJSONObject(k);
Map<String, Object> map_dtl = new LinkedHashMap<>();
map_dtl.put("日期", json.getString("0"));
map_dtl.put("产品编码", json.getString("1"));
map_dtl.put("批号", json.getString("2"));
JSONArray resultJSONArray = WQL.getWO("QP_POWDERORDERQUERY01").addParam("flag", "2").addParam("classIds", classIds).addParam("rf", RF).process().getResultJSONArray(0);
for (int t = 0; t < resultJSONArray.size(); t++) {
JSONObject jsonObject = resultJSONArray.getJSONObject(t);
map_dtl.put("物料"+NumberUtil.add(String.valueOf(t), "1")+ "","");
map_dtl.put("批次"+NumberUtil.add(String.valueOf(t), "1")+ "","");
map_dtl.put("重量"+NumberUtil.add(String.valueOf(t), "1")+ "","");
String material_id = jsonObject.getString("material_id");
if (ObjectUtil.isNotEmpty(json.getString(material_id))) {
map_dtl.put("物料"+NumberUtil.add(String.valueOf(t), "1")+ "",json.getString(material_id));
map_dtl.put("批次"+NumberUtil.add(String.valueOf(t), "1"),json.getString(material_id+"pcsn"));
map_dtl.put("重量"+NumberUtil.add(String.valueOf(t), "1"),json.getString(material_id+"formula_qty"));
}
}
map_dtl.put("碳平衡(%)", json.getString("3"));
map_dtl.put("时间(h)", json.getString("4"));
map_dtl.put("球料比", json.getString("5"));
map_dtl.put("液料比", json.getString("6"));
map_dtl.put("球磨机号", json.getString("7"));
list.add(map_dtl);
}
FileUtil.downloadExcel(list, response);
}
}

View File

@@ -150,4 +150,54 @@
ENDSELECT
ENDQUERY
ENDIF
ENDIF
IF 输入.flag = "4"
QUERY
SELECT
work.create_time,
mater.material_code,
work.pcsn,
mst.formula_id,
mst.ball_time,
mst.product_series_id,
ext.c_balance,
ext.ball_rate,
ext.liquid_rate
FROM
PDM_BI_WorkOrder work
LEFT JOIN PDM_BI_Formula mst ON mst.workorder_id = work.workorder_id
LEFT JOIN md_me_materialbase mater ON mater.material_id = work.material_id
LEFT JOIN MD_ME_ProducMaterialExt ext ON mater.material_id = ext.material_id
WHERE
mst.is_delete= '0'
AND work.is_delete= '0'
AND mst.bucket_type = '01'
OPTION 输入.begin_time <> ""
work.create_time >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
work.create_time <= 输入.end_time
ENDOPTION
OPTION 输入.pcsn <> ""
work.pcsn like 输入.pcsn
ENDOPTION
OPTION 输入.status <> ""
work.status = 输入.status
ENDOPTION
OPTION 输入.material_code <> ""
(mater.material_code like 输入.material_code or
mater.material_name like 输入.material_code)
ENDOPTION
order by work.create_time ASC
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -9,9 +9,9 @@ erp:
password: 123456
sqlserver:
enabled: false
jdbcurl: jdbc:sqlserver://47.97.157.227:1433;DatabaseName=testdb-lx
username: sa
password: Nl@123
jdbcurl: jdbc:sqlserver://124.222.26.218:1433;DatabaseName=wcs-xr
username: mes
password: 123456
#配置数据源
spring:
@@ -19,12 +19,14 @@ spring:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
# url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:whxr_test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:whxr}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:whxr_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
# url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:whxr_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:whxr_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
username: ${DB_USER:root}
password: ${DB_PWD:P@ssw0rd}
# password: ${DB_PWD:P@ssw0rd}
# password: ${DB_PWD:Root.123456}
# username: ${DB_USER:root}
# password: ${DB_PWD:root}
password: ${DB_PWD:root}
# 初始连接数
initial-size: 5
# 最小连接数
@@ -70,8 +72,8 @@ spring:
multi-statement-allow: true
redis:
#数据库索引
database: ${REDIS_DB:14}
host: ${REDIS_HOST:47.111.78.178}
database: ${REDIS_DB:1}
host: ${REDIS_HOST:127.0.0.1}
port: ${REDIS_PORT:6379}
password: ${REDIS_PWD:}
#连接超时时间

View File

@@ -38,7 +38,18 @@
</el-form>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" />
<crudOperation :permission="permission">
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-check"
size="mini"
@click="downdtl"
>
导出Excel
</el-button>
</crudOperation>
<!--表格渲染-->
<el-table
ref="table"
@@ -68,6 +79,8 @@ import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import DateRangePicker from '@/components/DateRangePicker'
import {download} from "@/api/data";
import {downloadFile} from "@/utils";
export default {
name: 'Performancemst',
@@ -106,6 +119,22 @@ export default {
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
return true
},
downdtl() {
if (this.currentRow !== null) {
crud.downloadLoading = true
const data = {
'begin_time': this.crud.query.createTime[0],
'end_time': this.crud.query.createTime[1],
'assessor_id': this.crud.query.assessor_id
}
download('/api/performancemst/download', data).then(result => {
downloadFile(result, '工作量统计', 'xlsx')
crud.downloadLoading = false
}).catch(() => {
crud.downloadLoading = false
})
}
}
}
}

View File

@@ -345,6 +345,7 @@ export default {
}
},
tableChanged(rows) {
debugger
const tablemap = new Map()
rows.forEach((item) => {
if (this.form.tableData.length !== 0) {

View File

@@ -45,7 +45,7 @@
<el-table-column type="selection" width="55" />
<el-table-column prop="supp_name" label="供应商" min-width="220" show-overflow-tooltip />
<el-table-column show-overflow-tooltip prop="input_time" min-width="140px" label="订单日期" />
<el-table-column show-overflow-tooltip prop="source_bill_code" label="单据编号" min-width="140" />
<el-table-column show-overflow-tooltip prop="vbillcode" label="单据编号" min-width="140" />
<el-table-column show-overflow-tooltip prop="crowno" label="明细行号" />
<el-table-column show-overflow-tooltip prop="material_code" min-width="130" label="物料编号" />
<el-table-column show-overflow-tooltip min-width="130" prop="material_name" label="物料名称" />

View File

@@ -64,7 +64,18 @@
</el-form>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" />
<crudOperation :permission="permission">
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-check"
size="mini"
@click="downdtl"
>
导出Excel
</el-button>
</crudOperation>
<!--表格渲染-->
<el-table
ref="table"
@@ -97,6 +108,8 @@ import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import DateRangePicker from '@/components/DateRangePicker'
import {download} from "@/api/data";
import {downloadFile} from "@/utils";
export default {
name: 'Powderorder',
@@ -141,6 +154,24 @@ export default {
},
hand(value) {
this.crud.toQuery()
},
downdtl() {
if (this.currentRow !== null) {
crud.downloadLoading = true
const data = {
'begin_time': this.crud.query.createTime[0],
'end_time': this.crud.query.createTime[1],
'status': this.crud.query.status,
'pcsn': this.crud.query.pcsn,
'material_code': this.crud.query.material_code
}
download('/api/powderOrderQuery/download', data).then(result => {
downloadFile(result, '粉料开单记录', 'xlsx')
crud.downloadLoading = false
}).catch(() => {
crud.downloadLoading = false
})
}
}
}
}