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.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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user