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.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
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.dto.MaterialbaseDto;
import org.nl.wql.WQL;
import org.nl.wql.core.bean.ResultBean;
import org.nl.wql.core.bean.WQLObject;
import org.nl.wql.util.WqlUtil;
import org.springframework.data.domain.Pageable;
@@ -30,6 +32,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author zhouz
@@ -95,9 +99,19 @@ public class MaterialbaseServiceImpl implements MaterialbaseService {
} else {
map.put("idssql", "1=1");
}
JSONObject jo = WQL.getWO("QMD_ME_MATERIAL").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "material_id");
return jo;
map.put("flag", "2");
JSONObject allmaterialIds = WQL.getWO("QMD_ME_MATERIAL").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "material_id");
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

View File

@@ -18,6 +18,7 @@
输入.class_code TYPEAS s_string
输入.idssql TYPEAS f_string
输入.classIds TYPEAS f_string
输入.materialIds TYPEAS f_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
@@ -87,5 +88,67 @@
ENDPAGEQUERY
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("end_time", end_time);
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 allPersonTotal = 0;
Map<String,List<Object>> allassessorMap = null;
Map<String,List<Object>> allPersonTotalMap = null;
if (ObjectUtil.isNotEmpty(a2llPersonTimeArr)){
allPersonTime = a2llPersonTimeArr.stream().mapToDouble(value -> ((JSONObject) value).getDoubleValue("num")).sum();
allassessorMap = a2llPersonTimeArr.stream().collect(Collectors.groupingBy(a -> {
@@ -298,6 +303,15 @@ public class PerformancemstServiceImpl implements PerformancemstService {
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++) {
JSONObject json = re.getJSONObject(i);
@@ -312,26 +326,36 @@ public class PerformancemstServiceImpl implements PerformancemstService {
total = total + json2.getDoubleValue("total_score");
average = NumberUtil.div(total, userArr.size());
JSONObject map1 = new JSONObject();
map1.put("flag", "9");
map1.put("begin_time", begin_time);
map1.put("end_time", end_time);
map1.put("assessor_id", json2.getString("assessor_id"));
// JSONObject map1 = new JSONObject();
// map1.put("flag", "9");
// map1.put("begin_time", begin_time);
// map1.put("end_time", end_time);
// map1.put("assessor_id", json2.getString("assessor_id"));
// 计算总出勤时间
// JSONObject jsonAllTimeNum = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map1).process().uniqueResult(0);
JSONObject jsonAllTimeNum = (JSONObject)allassessorMap.get(json2.getString("assessor_id")).get(0);
jsonAllTime.put(json2.getString("assessor_id"),jsonAllTimeNum.getString("num"));
List<Object> assessorInfo = allassessorMap.get(json2.getString("assessor_id"));
String assessorNum = "0";
if (ObjectUtil.isNotEmpty(assessorInfo)){
assessorNum = ((JSONObject) assessorInfo.get(0)).getString("num");
}
jsonAllTime.put(json2.getString("assessor_id"), assessorNum);
// 计算总积分
map1.put("flag", "10");
JSONObject jsonAllTotalNum = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map1).process().uniqueResult(0);
jsonAllTotal.put(json2.getString("assessor_id"),jsonAllTotalNum.getString("num"));
// map1.put("flag", "10");
// JSONObject jsonAllTotalNum = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map1).process().uniqueResult(0);
// 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";
// 计算工时效率:总积分 / 总出勤时间
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));
} catch (Exception e) {
jsonEta.put(json2.getString("assessor_id"),"0");
@@ -339,10 +363,8 @@ public class PerformancemstServiceImpl implements PerformancemstService {
}
// 计算与班组平均对比:个人工时效率 - 所有人总积分 / 所有人总出勤时间
map1.put("flag", "9");
map1.put("assessor_id", "");
double allPersonTotal = 0; // 所有人总积分
// double allPersonTime = 0; // 所有人总出勤时间
// map1.put("flag", "9");
// map1.put("assessor_id", "");
//放外层查询:根据assessor_id获取
// 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);
// allPersonTime = NumberUtil.add(allPersonTime,jsonObject1.getDoubleValue("num"));
// }
map1.put("flag", "10");
JSONArray allPersonTotalArr = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map1).process().getResultJSONArray(0);
for (int k = 0; k < allPersonTotalArr.size(); k++) {
JSONObject jsonObject1 = allPersonTotalArr.getJSONObject(k);
allPersonTotal = NumberUtil.add(allPersonTotal,jsonObject1.getDoubleValue("num"));
}
// map1.put("flag", "10");
// JSONArray allPersonTotalArr = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map1).process().getResultJSONArray(0);
// for (int k = 0; k < allPersonTotalArr.size(); k++) {
// JSONObject jsonObject1 = allPersonTotalArr.getJSONObject(k);
// allPersonTotal = NumberUtil.add(allPersonTotal,jsonObject1.getDoubleValue("num"));
// }
// 与班组平均对比计算结果
try {

View File

@@ -249,7 +249,8 @@
IF 输入.flag = "10"
QUERY
SELECT
sum (mst.total_score) AS num
sum (mst.total_score) AS num,
assessor_id
FROM
QL_TEST_PerformanceMst mst