opt:物料查询接口优化,工作量计划表优化
This commit is contained in:
@@ -10,6 +10,7 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.exception.BadRequestException;
|
import org.nl.exception.BadRequestException;
|
||||||
@@ -20,6 +21,7 @@ import org.nl.wms.basedata.master.service.ClassstandardService;
|
|||||||
import org.nl.wms.basedata.master.service.MaterialbaseService;
|
import org.nl.wms.basedata.master.service.MaterialbaseService;
|
||||||
import org.nl.wms.basedata.master.service.dto.MaterialbaseDto;
|
import org.nl.wms.basedata.master.service.dto.MaterialbaseDto;
|
||||||
import org.nl.wql.WQL;
|
import org.nl.wql.WQL;
|
||||||
|
import org.nl.wql.core.bean.ResultBean;
|
||||||
import org.nl.wql.core.bean.WQLObject;
|
import org.nl.wql.core.bean.WQLObject;
|
||||||
import org.nl.wql.util.WqlUtil;
|
import org.nl.wql.util.WqlUtil;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
@@ -30,6 +32,8 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author zhouz
|
* @author zhouz
|
||||||
@@ -95,9 +99,19 @@ public class MaterialbaseServiceImpl implements MaterialbaseService {
|
|||||||
} else {
|
} else {
|
||||||
map.put("idssql", "1=1");
|
map.put("idssql", "1=1");
|
||||||
}
|
}
|
||||||
|
map.put("flag", "2");
|
||||||
JSONObject jo = WQL.getWO("QMD_ME_MATERIAL").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "material_id");
|
JSONObject allmaterialIds = WQL.getWO("QMD_ME_MATERIAL").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "material_id");
|
||||||
return jo;
|
JSONArray array = allmaterialIds.getJSONArray("content");
|
||||||
|
String allmaterialId = " ";
|
||||||
|
if (ObjectUtil.isNotEmpty(array)){
|
||||||
|
allmaterialId = "(\""+array.stream().map(o -> ((JSONObject) o).getString("material_id")).collect(Collectors.joining("\",\""))+"\")";
|
||||||
|
}
|
||||||
|
Map<String, String> query = Maps.newHashMap();
|
||||||
|
query.put("flag", "3");
|
||||||
|
query.put("materialIds", allmaterialId);
|
||||||
|
JSONArray currentArray = WQL.getWO("QMD_ME_MATERIAL").addParamMap(query).process().getResultJSONArray(0);
|
||||||
|
allmaterialIds.put("content",currentArray);
|
||||||
|
return allmaterialIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
输入.class_code TYPEAS s_string
|
输入.class_code TYPEAS s_string
|
||||||
输入.idssql TYPEAS f_string
|
输入.idssql TYPEAS f_string
|
||||||
输入.classIds TYPEAS f_string
|
输入.classIds TYPEAS f_string
|
||||||
|
输入.materialIds TYPEAS f_string
|
||||||
|
|
||||||
[临时表]
|
[临时表]
|
||||||
--这边列出来的临时表就会在运行期动态创建
|
--这边列出来的临时表就会在运行期动态创建
|
||||||
@@ -87,5 +88,67 @@
|
|||||||
ENDPAGEQUERY
|
ENDPAGEQUERY
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "2"
|
||||||
|
PAGEQUERY
|
||||||
|
SELECT
|
||||||
|
mb.material_id
|
||||||
|
FROM
|
||||||
|
md_me_materialbase mb
|
||||||
|
LEFT JOIN MD_PB_ClassStandard class ON class.class_id = mb.material_type_id
|
||||||
|
WHERE
|
||||||
|
mb.is_delete = '0'
|
||||||
|
and 输入.idssql
|
||||||
|
OPTION 输入.search <> ""
|
||||||
|
(
|
||||||
|
mb.material_code like 输入.search
|
||||||
|
OR
|
||||||
|
mb.material_name like 输入.search
|
||||||
|
)
|
||||||
|
ENDOPTION
|
||||||
|
OPTION 输入.class_code <> ""
|
||||||
|
class.class_code like 输入.class_code
|
||||||
|
ENDOPTION
|
||||||
|
OPTION 输入.classIds <> ""
|
||||||
|
class.class_id in 输入.classIds
|
||||||
|
ENDOPTION
|
||||||
|
ENDSELECT
|
||||||
|
ENDPAGEQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "3"
|
||||||
|
PAGEQUERY
|
||||||
|
SELECT
|
||||||
|
mb.material_id,
|
||||||
|
mb.material_code,
|
||||||
|
mb.material_name,
|
||||||
|
mb.material_spec,
|
||||||
|
mb.material_model,
|
||||||
|
mb.is_used,
|
||||||
|
mb.update_optname,
|
||||||
|
mb.update_time,
|
||||||
|
mb.base_unit_id,
|
||||||
|
mb.ass_unit_id,
|
||||||
|
class.class_code,
|
||||||
|
class.class_name,
|
||||||
|
unit_name,
|
||||||
|
mb.ext_id,
|
||||||
|
producmaterialext.standard_weight,
|
||||||
|
unit_name as base_unit_id_name,
|
||||||
|
producmaterialext.product_series,
|
||||||
|
producmaterialext.standard_weight_pft
|
||||||
|
FROM
|
||||||
|
md_me_materialbase mb
|
||||||
|
LEFT JOIN MD_PB_ClassStandard class ON class.class_id = mb.material_type_id
|
||||||
|
LEFT JOIN md_pb_measureunit unit ON unit.measure_unit_id = mb.base_unit_id
|
||||||
|
LEFT JOIN md_me_producmaterialext producmaterialext ON producmaterialext.material_id = mb.material_id
|
||||||
|
WHERE
|
||||||
|
mb.is_delete = '0'
|
||||||
|
OPTION 输入.materialIds <> ""
|
||||||
|
mb.material_id in 输入.materialIds
|
||||||
|
ENDOPTION
|
||||||
|
ENDSELECT
|
||||||
|
ENDPAGEQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -288,9 +288,14 @@ public class PerformancemstServiceImpl implements PerformancemstService {
|
|||||||
totalQ.put("begin_time", begin_time);
|
totalQ.put("begin_time", begin_time);
|
||||||
totalQ.put("end_time", end_time);
|
totalQ.put("end_time", end_time);
|
||||||
JSONArray a2llPersonTimeArr = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(totalQ).process().getResultJSONArray(0);
|
JSONArray a2llPersonTimeArr = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(totalQ).process().getResultJSONArray(0);
|
||||||
|
totalQ.put("flag", "10");
|
||||||
|
JSONArray allPersonTotalArr = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(totalQ).process().getResultJSONArray(0);
|
||||||
|
|
||||||
double allPersonTime = 0;
|
double allPersonTime = 0;
|
||||||
|
double allPersonTotal = 0;
|
||||||
Map<String,List<Object>> allassessorMap = null;
|
Map<String,List<Object>> allassessorMap = null;
|
||||||
|
Map<String,List<Object>> allPersonTotalMap = null;
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(a2llPersonTimeArr)){
|
if (ObjectUtil.isNotEmpty(a2llPersonTimeArr)){
|
||||||
allPersonTime = a2llPersonTimeArr.stream().mapToDouble(value -> ((JSONObject) value).getDoubleValue("num")).sum();
|
allPersonTime = a2llPersonTimeArr.stream().mapToDouble(value -> ((JSONObject) value).getDoubleValue("num")).sum();
|
||||||
allassessorMap = a2llPersonTimeArr.stream().collect(Collectors.groupingBy(a -> {
|
allassessorMap = a2llPersonTimeArr.stream().collect(Collectors.groupingBy(a -> {
|
||||||
@@ -298,6 +303,15 @@ public class PerformancemstServiceImpl implements PerformancemstService {
|
|||||||
return object.getString("assessor_id");
|
return object.getString("assessor_id");
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
if (ObjectUtil.isNotEmpty(allPersonTotalArr)){
|
||||||
|
allPersonTotal = allPersonTotalArr.stream().mapToDouble(value -> ((JSONObject) value).getDoubleValue("num")).sum();
|
||||||
|
allPersonTotalMap = allPersonTotalArr.stream().collect(Collectors.groupingBy(a -> {
|
||||||
|
JSONObject object = (JSONObject) a;
|
||||||
|
return object.getString("assessor_id");
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for (int i = 0; i < re.size(); i++) {
|
for (int i = 0; i < re.size(); i++) {
|
||||||
JSONObject json = re.getJSONObject(i);
|
JSONObject json = re.getJSONObject(i);
|
||||||
@@ -312,26 +326,36 @@ public class PerformancemstServiceImpl implements PerformancemstService {
|
|||||||
total = total + json2.getDoubleValue("total_score");
|
total = total + json2.getDoubleValue("total_score");
|
||||||
average = NumberUtil.div(total, userArr.size());
|
average = NumberUtil.div(total, userArr.size());
|
||||||
|
|
||||||
JSONObject map1 = new JSONObject();
|
// JSONObject map1 = new JSONObject();
|
||||||
map1.put("flag", "9");
|
// map1.put("flag", "9");
|
||||||
map1.put("begin_time", begin_time);
|
// map1.put("begin_time", begin_time);
|
||||||
map1.put("end_time", end_time);
|
// map1.put("end_time", end_time);
|
||||||
map1.put("assessor_id", json2.getString("assessor_id"));
|
// map1.put("assessor_id", json2.getString("assessor_id"));
|
||||||
|
|
||||||
// 计算总出勤时间
|
// 计算总出勤时间
|
||||||
// JSONObject jsonAllTimeNum = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map1).process().uniqueResult(0);
|
// JSONObject jsonAllTimeNum = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map1).process().uniqueResult(0);
|
||||||
|
List<Object> assessorInfo = allassessorMap.get(json2.getString("assessor_id"));
|
||||||
JSONObject jsonAllTimeNum = (JSONObject)allassessorMap.get(json2.getString("assessor_id")).get(0);
|
String assessorNum = "0";
|
||||||
jsonAllTime.put(json2.getString("assessor_id"),jsonAllTimeNum.getString("num"));
|
if (ObjectUtil.isNotEmpty(assessorInfo)){
|
||||||
|
assessorNum = ((JSONObject) assessorInfo.get(0)).getString("num");
|
||||||
|
}
|
||||||
|
jsonAllTime.put(json2.getString("assessor_id"), assessorNum);
|
||||||
// 计算总积分
|
// 计算总积分
|
||||||
map1.put("flag", "10");
|
// map1.put("flag", "10");
|
||||||
JSONObject jsonAllTotalNum = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map1).process().uniqueResult(0);
|
// JSONObject jsonAllTotalNum = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map1).process().uniqueResult(0);
|
||||||
jsonAllTotal.put(json2.getString("assessor_id"),jsonAllTotalNum.getString("num"));
|
// jsonAllTotal.put(json2.getString("assessor_id"),jsonAllTotalNum.getString("num"));
|
||||||
|
//
|
||||||
|
List<Object> assessorTotal = allPersonTotalMap.get(json2.getString("assessor_id"));
|
||||||
|
String assessoTotal = "0";
|
||||||
|
if (ObjectUtil.isNotEmpty(assessorTotal)){
|
||||||
|
assessoTotal = ((JSONObject) assessorTotal.get(0)).getString("num");
|
||||||
|
}
|
||||||
|
jsonAllTotal.put(json2.getString("assessor_id"),assessoTotal);
|
||||||
|
|
||||||
String eta = "0";
|
String eta = "0";
|
||||||
// 计算工时效率:总积分 / 总出勤时间
|
// 计算工时效率:总积分 / 总出勤时间
|
||||||
try {
|
try {
|
||||||
eta = NumberUtil.div(jsonAllTotalNum.getString("num"), jsonAllTimeNum.getString("num")).toString();
|
eta = NumberUtil.div(assessoTotal, assessorNum).toString();
|
||||||
jsonEta.put(json2.getString("assessor_id"),NumberUtil.round(eta, 2));
|
jsonEta.put(json2.getString("assessor_id"),NumberUtil.round(eta, 2));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
jsonEta.put(json2.getString("assessor_id"),"0");
|
jsonEta.put(json2.getString("assessor_id"),"0");
|
||||||
@@ -339,10 +363,8 @@ public class PerformancemstServiceImpl implements PerformancemstService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 计算与班组平均对比:个人工时效率 - 所有人总积分 / 所有人总出勤时间
|
// 计算与班组平均对比:个人工时效率 - 所有人总积分 / 所有人总出勤时间
|
||||||
map1.put("flag", "9");
|
// map1.put("flag", "9");
|
||||||
map1.put("assessor_id", "");
|
// map1.put("assessor_id", "");
|
||||||
double allPersonTotal = 0; // 所有人总积分
|
|
||||||
// double allPersonTime = 0; // 所有人总出勤时间
|
|
||||||
|
|
||||||
//放外层查询:根据assessor_id获取
|
//放外层查询:根据assessor_id获取
|
||||||
// JSONArray allPersonTimeArr = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map1).process().getResultJSONArray(0);
|
// JSONArray allPersonTimeArr = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map1).process().getResultJSONArray(0);
|
||||||
@@ -350,12 +372,12 @@ public class PerformancemstServiceImpl implements PerformancemstService {
|
|||||||
// JSONObject jsonObject1 = allPersonTimeArr.getJSONObject(k);
|
// JSONObject jsonObject1 = allPersonTimeArr.getJSONObject(k);
|
||||||
// allPersonTime = NumberUtil.add(allPersonTime,jsonObject1.getDoubleValue("num"));
|
// allPersonTime = NumberUtil.add(allPersonTime,jsonObject1.getDoubleValue("num"));
|
||||||
// }
|
// }
|
||||||
map1.put("flag", "10");
|
// map1.put("flag", "10");
|
||||||
JSONArray allPersonTotalArr = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map1).process().getResultJSONArray(0);
|
// JSONArray allPersonTotalArr = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map1).process().getResultJSONArray(0);
|
||||||
for (int k = 0; k < allPersonTotalArr.size(); k++) {
|
// for (int k = 0; k < allPersonTotalArr.size(); k++) {
|
||||||
JSONObject jsonObject1 = allPersonTotalArr.getJSONObject(k);
|
// JSONObject jsonObject1 = allPersonTotalArr.getJSONObject(k);
|
||||||
allPersonTotal = NumberUtil.add(allPersonTotal,jsonObject1.getDoubleValue("num"));
|
// allPersonTotal = NumberUtil.add(allPersonTotal,jsonObject1.getDoubleValue("num"));
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 与班组平均对比计算结果
|
// 与班组平均对比计算结果
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -249,7 +249,8 @@
|
|||||||
IF 输入.flag = "10"
|
IF 输入.flag = "10"
|
||||||
QUERY
|
QUERY
|
||||||
SELECT
|
SELECT
|
||||||
sum (mst.total_score) AS num
|
sum (mst.total_score) AS num,
|
||||||
|
assessor_id
|
||||||
FROM
|
FROM
|
||||||
QL_TEST_PerformanceMst mst
|
QL_TEST_PerformanceMst mst
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user