opt:物料查询接口优化,工作量计划表优化

This commit is contained in:
zhangzhiqiang
2022-11-18 15:53:32 +08:00
parent 26cb3fd3a7
commit d4c949cdeb
4 changed files with 127 additions and 27 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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 {

View File

@@ -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