Merge remote-tracking branch 'origin/master'

master
wangh 3 years ago
commit d59e13b2e1

@ -300,6 +300,88 @@ public class ReportController {
return R.failed(e.getMessage());
}
}
/**
* ()
* @param paramMap
* @return
*/
@GetMapping("/weekDeliveryRateReport")
public R weekDeliveryRateReport(@RequestParam(required = false) Map paramMap){
try{
return R.ok(reportService.weekDeliveryRateReport(paramMap));
}catch (Exception e){
return R.failed(e.getMessage());
}
}
/**
* ()
* @param paramMap
* @return
*/
@GetMapping("/monthDeliveryRateReport")
public R monthDeliveryRateReport(@RequestParam(required = false) Map paramMap){
try{
return R.ok(reportService.monthDeliveryRateReport(paramMap));
}catch (Exception e){
return R.failed(e.getMessage());
}
}
/**
*
* @param paramMap
* @return
*/
@GetMapping("/itemProductProgressReport")
public R itemProductProgressReport(@RequestParam(required = false) Map paramMap){
try{
return R.ok(reportService.itemProductProgressReport(paramMap));
}catch (Exception e){
return R.failed(e.getMessage());
}
}
/**
*
* @param paramMap
* @return
*/
@GetMapping("/qualityInspectionResponseReport")
public R qualityInspectionResponseReport(@RequestParam(required = false) Map paramMap){
try{
return R.ok(reportService.qualityInspectionResponseReport(paramMap));
}catch (Exception e){
return R.failed(e.getMessage());
}
}
/**
*
* @param
* @return
*/
@GetMapping("/projectPlanningProgress")
public R projectPlanningProgress(String user){
try {
return R.ok(reportService.projectPlanningProgress(user));
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
/**
*
* @param
* @return
*/
@GetMapping("/capacityLoad")
public R capacityLoad(String user){
try {
return R.ok(reportService.capacityLoad(user));
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
}

@ -105,6 +105,8 @@ public interface ReportMapper {
List<Map<String, String>> projectScheduleShow(@Param("user") String user);
List<Map<String, String>> projectPlanningProgress(@Param("user") String user);
/**
*
* @param paramMap
@ -117,7 +119,7 @@ public interface ReportMapper {
* @param paramMap
* @return
*/
List<Map<String, Object>> weekLoadRateReport(Map paramMap);
List<Map<String, String>> weekLoadRateReport(Map paramMap);
/**
* ()
@ -125,4 +127,35 @@ public interface ReportMapper {
* @return
*/
List<Map<String, Object>> monthLoadRateReport(Map paramMap);
/**
* ()
* @param paramMap
* @return
*/
List<Map<String, Object>> weekDeliveryRateReport(Map paramMap);
/**
* ()
* @param paramMap
* @return
*/
List<Map<String, Object>> monthDeliveryRateReport(Map paramMap);
List<Map<String, Object>> itemProductProgressReport(Map paramMap);
/**
*
* @param paramMap
* @return
*/
List<Map<String, Object>> qualityInspectionResponseReport(Map paramMap);
/**
*
* @param workCenter
* @return
*/
List<Map<String, String>> capacityLoad(String workCenter);
}

@ -123,7 +123,7 @@ public interface ReportService {
* @param paramMap
* @return
*/
List<Map<String, Object>> weekLoadRateReport(Map paramMap);
List<Map<String, String>> weekLoadRateReport(Map paramMap);
/**
* ()
@ -131,4 +131,46 @@ public interface ReportService {
* @return
*/
List<Map<String, Object>> monthLoadRateReport(Map paramMap);
/**
* ()
* @param paramMap
* @return
*/
List<Map<String, Object>> weekDeliveryRateReport(Map paramMap);
/**
* ()
* @param paramMap
* @return
*/
List<Map<String, Object>> monthDeliveryRateReport(Map paramMap);
/**
*
* @param paramMap
* @return
*/
List<Map<String, Object>> itemProductProgressReport(Map paramMap);
/**
*
* @param paramMap
* @return
*/
List<Map<String, Object>> qualityInspectionResponseReport(Map paramMap);
/**
*
* @param userGroup
* @return
*/
Map<String, Object> projectPlanningProgress(String userGroup);
/**
*
* @param workCenter
* @return
*/
Map<String, Object> capacityLoad(String workCenter);
}

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.foreverwin.mesnac.anomaly.dto.IntegrationLogDto;
import com.foreverwin.mesnac.anomaly.mapper.ReportMapper;
import com.foreverwin.mesnac.anomaly.service.ReportService;
import com.foreverwin.mesnac.anomaly.utils.DateReportUtils;
import com.foreverwin.mesnac.common.enums.HandleEnum;
import com.foreverwin.mesnac.common.util.DateUtil;
import com.foreverwin.mesnac.meapi.mapper.DataFieldListMapper;
@ -21,6 +22,10 @@ import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@ -510,10 +515,22 @@ public class ReportServiceImpl implements ReportService {
* @return
*/
@Override
public List<Map<String, Object>> weekLoadRateReport(Map paramMap) {
public List<Map<String, String>> weekLoadRateReport(Map paramMap) {
String site = CommonMethods.getSite();
paramMap.put("site", site);
paramMap.put("locale", LocaleContextHolder.getLocale().getLanguage());
if (!StringUtils.isBlank(String.valueOf(paramMap.get("week")))){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
int dayOfWeek = now.getDayOfWeek().getValue();
LocalDateTime weekStart = now.minusDays(dayOfWeek - 1).with(LocalTime.MIN);
LocalDateTime weekEnd = now.plusDays(7 * 8 - dayOfWeek).with(LocalTime.MAX);
System.out.println("当前周的开始时间:" + weekStart.format(fmt));
System.out.println("当前周的结束时间:" + weekEnd.format(fmt));
List<Map<String, String>> weekOfDate = DateReportUtils.getWeekOfDate3(weekStart.format(fmt), weekEnd.format(fmt));
return weekOfDate;
}
return reportMapper.weekLoadRateReport(paramMap);
}
@ -527,12 +544,260 @@ public class ReportServiceImpl implements ReportService {
String site = CommonMethods.getSite();
paramMap.put("site", site);
paramMap.put("locale", LocaleContextHolder.getLocale().getLanguage());
if (StringUtils.isBlank((String) paramMap.get("month"))){
paramMap.put("month",(Integer)paramMap.get("month"));
if (!StringUtils.isBlank(String.valueOf(paramMap.get("month")))){
paramMap.put("month",Integer.valueOf(String.valueOf(paramMap.get("month"))));
}
return reportMapper.monthLoadRateReport(paramMap);
}
/**
* ()
* @param paramMap
* @return
*/
@Override
public List<Map<String, Object>> weekDeliveryRateReport(Map paramMap) {
String site = CommonMethods.getSite();
paramMap.put("site", site);
paramMap.put("locale", LocaleContextHolder.getLocale().getLanguage());
HashMap<String, List<Map<String, String>>> result = new HashMap<>();
/* QueryWrapper<Object> wrapper = new QueryWrapper<>();
//columnData
ArrayList<Map<String,String>> columnDataList = new ArrayList<>();
HashMap<String, String> columnMap0 = new LinkedHashMap<>();
columnMap0.put("colName","序号");
columnMap0.put("width","30");
columnDataList.add(columnMap0);
HashMap<String, String> columnMap1 = new LinkedHashMap<>();
columnMap1.put("colName","车间描述");
columnDataList.add(columnMap1);
HashMap<String, String> columnMap2 = new LinkedHashMap<>();
columnMap2.put("colName","资源编号");
columnDataList.add(columnMap2);
HashMap<String, String> columnMap3 = new LinkedHashMap<>();
columnMap3.put("colName","工序描述");
columnDataList.add(columnMap3);
HashMap<String, String> columnMap4 = new LinkedHashMap<>();
columnMap4.put("colName","资源描述");
columnDataList.add(columnMap4);
List<Map<String, String>> weekOfDate = DateReportUtils.getWeekOfDate(String.valueOf(paramMap.get("startDate")), String.valueOf(paramMap.get("endDate")));
//rowData
ArrayList<Map<String,String>> rowDataList = new ArrayList<>();
int week = 1;
for (Map<String, String> weekOfDateMap : weekOfDate) {
HashMap<String, String> columnMap5 = new LinkedHashMap<>();
columnMap5.put("colName",week + "计划数量");
columnDataList.add(columnMap5);
HashMap<String, String> columnMap6 = new LinkedHashMap<>();
columnMap6.put("colName",week + "按期完工数量");
columnDataList.add(columnMap6);
HashMap<String, String> columnMap7 = new LinkedHashMap<>();
columnMap7.put("colName",week + "零件交付及时率");
columnDataList.add(columnMap7);
HashMap<String, String> columnMap8 = new LinkedHashMap<>();
columnMap8.put("colName",week + "工时量");
columnDataList.add(columnMap8);
HashMap<String, String> columnMap9 = new LinkedHashMap<>();
columnMap9.put("colName",week + "按期完工工时");
columnDataList.add(columnMap9);
HashMap<String, String> columnMap10 = new LinkedHashMap<>();
columnMap10.put("colName",week + "工时交付及时率");
columnDataList.add(columnMap10);
paramMap.put("startDate",weekOfDateMap.get("start"));
paramMap.put("endDate",weekOfDateMap.get("end"));
List<Map<String, String>> weekList = reportMapper.weekDeliveryRateReport(paramMap);
int i = 1;
for (Map<String, String> weekResultMap : weekList) {
HashMap<String, String> rowMap = new LinkedHashMap<>();
rowMap.put("序号",String.valueOf(i));
rowMap.put("车间描述",weekResultMap.get("workCenter"));
rowMap.put("资源编号",weekResultMap.get("resrceCode"));
rowMap.put("工序描述",weekResultMap.get("operationDescription"));
rowMap.put("资源描述",weekResultMap.get("resrceDescription"));
rowMap.put(week + "计划数量",weekResultMap.get("sumQTY"));
rowMap.put(week + "按期完工数量",weekResultMap.get("sumDoneQTY"));
rowMap.put(week + "零件交付及时率",weekResultMap.get("QTYrate"));
rowMap.put(week + "工时量",weekResultMap.get("sumHours"));
rowMap.put(week + "按期完工工时",weekResultMap.get("sumDoneHours"));
rowMap.put(week + "工时交付及时率",weekResultMap.get("HOURSrate"));
i++;
rowDataList.add(rowMap);
}
week++;
}
result.put("columnData",columnDataList);
result.put("rowData",rowDataList);*/
return reportMapper.weekDeliveryRateReport(paramMap);
}
/**
* ()
* @param paramMap
* @return
*/
@Override
public List<Map<String, Object>> monthDeliveryRateReport(Map paramMap) {
String site = CommonMethods.getSite();
paramMap.put("site", site);
paramMap.put("locale", LocaleContextHolder.getLocale().getLanguage());
return reportMapper.monthDeliveryRateReport(paramMap);
}
/**
*
* @param paramMap
* @return
*/
@Override
public List<Map<String, Object>> itemProductProgressReport(Map paramMap) {
String site = CommonMethods.getSite();
paramMap.put("site", site);
paramMap.put("locale", LocaleContextHolder.getLocale().getLanguage());
List<Map<String, Object>> mapList = reportMapper.itemProductProgressReport(paramMap);
for (Map<String, Object> objectMap : mapList) {
String workOrder = String.valueOf(objectMap.get("workOrder"));
if (workOrder.indexOf("/") != -1){
if (workOrder.split("/").length > 2){
objectMap.put("career",workOrder.split("/")[1]);
}else {
objectMap.put("career","");
}
}else {
objectMap.put("career","");
}
}
return mapList;
}
/**
*
* @param paramMap
* @return
*/
@Override
public List<Map<String, Object>> qualityInspectionResponseReport(Map paramMap) {
String site = CommonMethods.getSite();
paramMap.put("site", site);
paramMap.put("locale", LocaleContextHolder.getLocale().getLanguage());
return reportMapper.qualityInspectionResponseReport(paramMap);
}
/**
*
* @param userGroup
* @return
*/
@Override
public Map<String, Object> projectPlanningProgress(String userGroup) {
List<Map<String, String>> abnormalQualityList = reportMapper.projectPlanningProgress(userGroup);
Map<String, Object> result = new HashMap<>();
Map<String, List<Map<String, String>>> workOrderMap = abnormalQualityList.stream()
.collect(Collectors.groupingBy(e -> {
String career =e.get("workOrder");
try {
if (career.indexOf("硫化") != -1) {
return "硫化";
}else if (career.indexOf("全钢") != -1) {
return "全钢";
}else if (career.indexOf("半钢") != -1) {
return "半钢";
}else if (career.indexOf("鼓") != -1) {
return "鼓";
}else if (career.indexOf("裁断") != -1) {
return "裁断";
}else if (career.indexOf("检测") != -1) {
return "检测";
}else if (career.indexOf("橡塑") != -1) {
return "橡塑";
} else if (career.indexOf("非公路") != -1) {
return "非公路";
} else if (career.indexOf("塞班") != -1) {
return "塞班";
} else {
return "外部";
}
} catch (Exception exception) {
exception.printStackTrace();
}
return "";
}));
for (String workOrder : workOrderMap.keySet()) {
HashMap<String, Object> resultMap = new HashMap<>();
ArrayList<String> items = new ArrayList<>();
ArrayList<String> shopOrderQTYs = new ArrayList<>();
ArrayList<String> doneQTY = new ArrayList<>();
ArrayList<String> rate = new ArrayList<>();
List<Map<String, String>> maps = workOrderMap.get(workOrder);
maps.forEach(e -> {
items.add(e.get("item"));
shopOrderQTYs.add(e.get("shopOrderQTY"));
doneQTY.add(e.get("doneQTY"));
rate.add(e.get("rate"));
});
resultMap.put("items",items);
resultMap.put("shopOrderQTY",shopOrderQTYs);
resultMap.put("doneQTY",doneQTY);
resultMap.put("rate",rate);
result.put(workOrder,resultMap);
}
return result;
}
/**
*
* @param workCenter
* @return
*/
@Override
public Map<String, Object> capacityLoad(String workCenter) {
List<Map<String, String>> capacityLoadList = reportMapper.capacityLoad(workCenter);
HashMap<String, Object> result = new HashMap<>();
/*Map<String, List<Map<String, String>>> resourceListMap = capacityLoadList.stream().
collect(Collectors.groupingBy(e -> e.get("resourceDescription")));*/
//八个柱状图计划工时list、计划产能、未完成工时、设备描述
/*for (String resource : resourceListMap.keySet()) {
HashMap<String, Object> resourceMap = new HashMap<>();
//计划工时
ArrayList<String> planList = new ArrayList<>();
List<Map<String, String>> mapList = resourceListMap.get(resource);
mapList.forEach(e -> {
e.
});*/
capacityLoadList.forEach(e -> {
HashMap<String, Object> resourceMap = new HashMap<>();
//计划工时
ArrayList<String> planList = new ArrayList<>();
planList.add(e.get("planCapacity1"));
planList.add(e.get("planCapacity2"));
planList.add(e.get("planCapacity3"));
planList.add(e.get("planCapacity4"));
planList.add(e.get("planCapacity5"));
planList.add(e.get("planCapacity6"));
planList.add(e.get("planCapacity7"));
planList.add(e.get("planCapacity8"));
resourceMap.put("planCapacity",planList);
//计划产能
resourceMap.put("standardWeekCapacity",e.get("standardWeekCapacity"));
//未完成工时
resourceMap.put("tardinessWork",e.get("tardinessWork"));
//
});
return null;
}
/**
*

@ -0,0 +1,191 @@
package com.foreverwin.mesnac.anomaly.utils;
import org.apache.commons.lang.time.DateUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @Author YinQ
* @create 2022-08-25 12:40
*/
public class DateReportUtils {
public static final String sdf2 = "yyyy-MM-dd";
public static final String sdf3 = "yyyy.MM.dd";
/**
*
*
* @param start
* @param end
* @return week start end
*/
public static List<Map<String, String>> getWeekOfDate(String start, String end) {
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> map;
Date startDate = stringToDate(start, sdf2);
Date endDate = stringToDate(end, sdf2);
assert endDate != null;
assert startDate != null;
long howLong = howLong("d", startDate, endDate);
int weekNum = Math.toIntExact(howLong / 7);
if (howLong % 7 > 0) {
weekNum++;
}
Calendar cal = Calendar.getInstance();
// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.setTime(startDate);
// 获得当前日期是一个星期的第几天
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
for (int i = 1; i <= weekNum; i++) {
map = new HashMap<>();
map.put("week", String.valueOf(i));
if (i == 1) {//第一周以 start 开始
map.put("start", dateFormat(startDate, sdf2));
}else {
map.put("start",dateFormat(cal.getTime(),sdf2));
}
if (i == weekNum) {//最后一周以 end 结束
map.put("end", dateFormat(endDate, sdf2));
}else {
//设置这周的周日日期1代表周日取值范围1~7设置1~7之外会从周日开始往前后推算负前正后DAY_OF_WEEK的日期变更范围只会是在当前日期的周
cal.set(Calendar.DAY_OF_WEEK,1);
map.put("end",dateFormat(cal.getTime(),sdf2));
}
list.add(map);
//调用 org.apache.commons.lang.time.DateUtils 包下的方法
//新增一天到下一周的开始日期
cal.setTime(DateUtils.addDays(cal.getTime(), 1));
}
return list;
}
public static List<Map<String, String>> getWeekOfDate3(String start, String end) {
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> map;
Date startDate = stringToDate(start, sdf2);
Date endDate = stringToDate(end, sdf2);
assert endDate != null;
assert startDate != null;
long howLong = howLong("d", startDate, endDate);
int weekNum = Math.toIntExact(howLong / 7);
if (howLong % 7 > 0) {
weekNum++;
}
Calendar cal = Calendar.getInstance();
// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.setTime(startDate);
// 获得当前日期是一个星期的第几天
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
for (int i = 1; i <= weekNum; i++) {
map = new HashMap<>();
map.put("week", String.valueOf(i));
if (i == 1) {//第一周以 start 开始
map.put("start", dateFormat(startDate, sdf3));
}else {
map.put("start",dateFormat(cal.getTime(),sdf3));
}
if (i == weekNum) {//最后一周以 end 结束
map.put("end", dateFormat(endDate, sdf3));
}else {
//设置这周的周日日期1代表周日取值范围1~7设置1~7之外会从周日开始往前后推算负前正后DAY_OF_WEEK的日期变更范围只会是在当前日期的周
cal.set(Calendar.DAY_OF_WEEK,1);
map.put("end",dateFormat(cal.getTime(),sdf3));
}
list.add(map);
//调用 org.apache.commons.lang.time.DateUtils 包下的方法
//新增一天到下一周的开始日期
cal.setTime(DateUtils.addDays(cal.getTime(), 1));
}
return list;
}
/**
* dateString
*
* @param date
* @param type
* @return
*/
public static String dateFormat(Date date, String type) {
if (date == null) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat(type);
return sdf.format(date);
}
/**
* Stingdate
*
* @param str
* @param date yyyy-MM-dd HH:mm:ss
* @return
* @throws ParseException
*/
public static Date stringToDate(String str, String date) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(date);
return sdf.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
/**
* (,,)
*
* @param unit s - ,m - ,h - ,d - ,M - y -
* @param begin
* @param end
* @return
*/
public static long howLong(String unit, Date begin, Date end) {
long ltime = begin.getTime() - end.getTime() < 0 ? end.getTime() - begin.getTime()
: begin.getTime() - end.getTime();
if (unit.equals("s")) {
return ltime / 1000;// 返回秒
} else if (unit.equals("m")) {
return ltime / 60000;// 返回分钟
} else if (unit.equals("h")) {
return ltime / 3600000;// 返回小时
} else if (unit.equals("d")) {
return ltime / 86400000;// 返回天数
} else if (unit.equals("y")) {
long res = ltime / 86400000;
return res / 365;
} else if (unit.equals("M")) {
long res = ltime / 86400000;
return res / 30;
} else {
return 0;
}
}
}

@ -1205,6 +1205,7 @@
LEFT JOIN ROUTER r ON zsd.ROUTER_BO = R.HANDLE
LEFT JOIN ROUTER_STEP rs ON rs.ROUTER_BO = r.HANDLE AND rs.STEP_ID = zsd.STEP_ID
WHERE zsd.SITE = '1000'
AND zsd.DISPATCH_STATUS != 'CANCEL'
AND cf.VALUE IS NOT NULL
AND cf2.VALUE IS NOT NULL
GROUP BY zsd.SITE, cf.VALUE, cf2.VALUE, zsd.SHOP_ORDER, zsd.SFC, it.DESCRIPTION, rs.REWORK
@ -1284,7 +1285,7 @@
</select>
<select id="documentInformation" parameterType="java.util.HashMap" resultType="java.util.HashMap">
--近半年单据信息
WITH acc AS (SELECT COUNT(DISPATCH_QTY) QTY
WITH acc AS (SELECT SUM(DISPATCH_QTY) QTY
FROM (SELECT ZSD.SFC, MAX(ZSD.DISPATCH_QTY) DISPATCH_QTY
FROM Z_SFC_DISPATCH ZSD
LEFT JOIN SHOP_ORDER so ON so.SHOP_ORDER = zsd.SHOP_ORDER AND so.SITE = zsd.SITE
@ -1326,6 +1327,7 @@
WHERE DF.DATA_FIELD = 'REASON_CATEGORY'
</select>
<select id="abnormalQuality" parameterType="java.util.HashMap" resultType="java.util.HashMap">
--近半年质量异常情况
SELECT TO_CHAR(zab.CREATED_DATE_TIME,'yyyy-mm') DATE_TIME,
SUM(zab.NC_QTY) NC_QTY
FROM Z_ABNORMAL_BILL zab
@ -1395,6 +1397,38 @@
</where>
ORDER BY WIP."rate" DESC
</select>
<select id="projectPlanningProgress" parameterType="java.util.HashMap" resultType="java.util.HashMap">
SELECT *
FROM (
SELECT OWIP.workOrder "workOrder",
OWIP.item "item",--项目号
SUM(OWIP.shopOrderQTY) "shopOrderQTY",
SUM(OWIP.doneQTY) "doneQTY",
TO_CHAR(SUM(OWIP.doneQTY) / SUM(OWIP.shopOrderQTY) * 100, '99990.99') "rate"
FROM (SELECT cf.VALUE item,--项目号
cf2.VALUE workOrder,--工作令
zsd.SFC,
MAX(zsd.DISPATCH_QTY) shopOrderQTY,--订单数量
MIN(CASE WHEN zsd.DISPATCH_STATUS = 'COMPLETE' THEN zsd.DISPATCH_QTY ELSE 0 END ) doneQTY
FROM Z_SFC_DISPATCH zsd
LEFT JOIN SFC s ON s.SFC = zsd.SFC AND s.SITE = zsd.SITE
LEFT JOIN SHOP_ORDER so ON so.SHOP_ORDER = zsd.SHOP_ORDER AND so.SITE = zsd.SITE
LEFT JOIN CUSTOM_FIELDS cf ON cf.HANDLE = so.HANDLE AND cf."ATTRIBUTE" = 'ITEM_NUMBER'
LEFT JOIN CUSTOM_FIELDS cf2 ON cf2.HANDLE = so.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER'
WHERE zsd.DISPATCH_STATUS != 'CANCEL'
AND cf.VALUE IS NOT NULL
AND cf2.VALUE IS NOT NULL
GROUP BY zsd.SITE, cf.VALUE, cf2.VALUE, zsd.SFC
) OWIP
GROUP BY OWIP.item, OWIP.workOrder
) WIP
<where>
<if test="user != null and user != ''">
AND WIP."workOrder" like '%${user}%'
</if>
</where>
ORDER BY WIP."workOrder" DESC
</select>
<select id="qualityRepairReport" parameterType="java.util.HashMap" resultType="java.util.HashMap">
SELECT * FROM
(SELECT zab.WORK_ORDER "workOrder",
@ -1537,7 +1571,7 @@
LEFT JOIN OPERATION O ON O.OPERATION = ZSD.OPERATION AND O.SITE = ZSD.SITE
LEFT JOIN OPERATION_T OT ON O.HANDLE = OT.OPERATION_BO
CROSS JOIN WEEK
WHERE (ZSD.DISPATCH_STATUS != 'COMPLETE' AND ZSD.DISPATCH_STATUS != 'CANCEL' AND ZSD.DISPATCH_STATUS != 'PAUSE')
WHERE (ZSD.DISPATCH_STATUS != 'CANCEL' AND ZSD.DISPATCH_STATUS != 'PAUSE' AND ZSD.DISPATCH_STATUS != 'COMPLETE')
AND ZSD.PLANNED_COMP_DATE IS NOT NULL
-- AND ZSD.CREATED_DATE_TIME > TO_DATE(TRUNC(TO_DATE(to_char(sysdate,'yyyy-MM-dd'),'yyyy-MM-dd'),'IW') - 8 * 7)
GROUP BY O.OPERATION,OT.DESCRIPTION
@ -1628,8 +1662,9 @@
LEFT JOIN OPERATION O ON O.OPERATION = ZSD.OPERATION AND O.SITE = ZSD.SITE
LEFT JOIN OPERATION_T OT ON O.HANDLE = OT.OPERATION_BO
CROSS JOIN MONTH
WHERE (ZSD.DISPATCH_STATUS != 'COMPLETE' AND ZSD.DISPATCH_STATUS != 'CANCEL' AND ZSD.DISPATCH_STATUS != 'PAUSE')
WHERE (ZSD.DISPATCH_STATUS != 'CANCEL' AND ZSD.DISPATCH_STATUS != 'PAUSE')
AND ZSD.PLANNED_COMP_DATE IS NOT NULL
GROUP BY O.OPERATION,OT.DESCRIPTION
ORDER BY O.OPERATION DESC ) WIP
LEFT JOIN CUSTOM_FIELDS CF ON CF.ATTRIBUTE ='MONTH_CAPACITY' AND CF.HANDLE = 'OperationBO:1000,'|| WIP."operation" || ',1.0'
@ -1643,4 +1678,271 @@
</if>
</where>
</select>
<select id="weekDeliveryRateReport" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT WIP.WORK_CENTER "workCenter",
WIP.RESRCE "resrceCode",
WIP.OPERATION_DESCRIPTION "operationDescription",
WIP.RESRCE_DESCRIPTION "resrceDescription",
WIP.SUM_QTY "sumQTY",
WIP.SUM_DONE_QTY "sumDoneQTY",
TO_CHAR(DECODE(WIP.SUM_QTY,0,0,WIP.SUM_DONE_QTY / WIP.SUM_QTY) * 100, '99990.99') || '%' "QTYrate",
WIP.SUM_HOURS "sumHours",
WIP.SUM_DONE_HOURS "sumDoneHours",
TO_CHAR(DECODE(WIP.SUM_HOURS,0,0,WIP.SUM_DONE_HOURS / WIP.SUM_HOURS) * 100, '99990.99') || '%' "HOURSrate"
FROM
(SELECT wct.DESCRIPTION WORK_CENTER,
r.RESRCE,
OT.DESCRIPTION OPERATION_DESCRIPTION,
r.DESCRIPTION RESRCE_DESCRIPTION,
SUM(zsd.DISPATCH_QTY) SUM_QTY,
SUM(CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' AND SYSDATE > zsd.ACTUAL_COMPLETE_DATE THEN zsd.DISPATCH_QTY
ELSE 0 END) SUM_DONE_QTY,
SUM(zsd.PROD_HOURS) SUM_HOURS,
SUM(CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' AND SYSDATE > zsd.ACTUAL_COMPLETE_DATE THEN zsd.PROD_HOURS
ELSE 0 END) SUM_DONE_HOURS
FROM Z_SFC_DISPATCH zsd
LEFT JOIN WORK_CENTER wc ON zsd.WORK_CENTER = wc.WORK_CENTER
LEFT JOIN WORK_CENTER_T wct ON wc.HANDLE = wct.WORK_CENTER_BO
LEFT JOIN RESRCE r ON r.RESRCE = zsd.RESRCE AND r.SITE = zsd.SITE
LEFT JOIN OPERATION O ON O.OPERATION = ZSD.OPERATION AND O.SITE = ZSD.SITE
LEFT JOIN OPERATION_T OT ON O.HANDLE = OT.OPERATION_BO
WHERE zsd.DISPATCH_STATUS != 'CANCEL'
AND zsd.DISPATCH_STATUS != 'NEW'
AND zsd.RESRCE IS NOT NULL
<if test="workCenter != null and workCenter != ''">
AND wc.WORK_CENTER = #{workCenter}
</if>
<if test="startDate != null and startDate != ''">
AND zsd.PLANNED_COMP_DATE >= TO_DATE(#{startDate},'YYYY-mm-dd')
</if>
<if test="endDate != null and endDate != ''">
AND zsd.PLANNED_COMP_DATE &lt;= TO_DATE(#{endDate},'YYYY-mm-dd')
</if>
GROUP BY wct.DESCRIPTION, r.RESRCE, r.DESCRIPTION, OT.DESCRIPTION) WIP
<where>
1=1
<if test="resrce != null and resrce != ''">
AND WIP.RESRCE = #{resrce}
</if>
<if test="operationDescription != null and operationDescription != ''">
AND WIP.OPERATION_DESCRIPTION = #{operationDescription}
</if>
</where>
ORDER BY WIP.SUM_HOURS DESC
</select>
<select id="monthDeliveryRateReport" parameterType="java.util.HashMap" resultType="java.util.Map" >
SELECT WIP.WORK_CENTER "workCenter",
WIP.RESRCE "resrceCode",
WIP.OPERATION_DESCRIPTION "operationDescription",
WIP.RESRCE_DESCRIPTION "resrceDescription",
WIP.SUM_QTY "sumQTY",
WIP.SUM_DONE_QTY "sumDoneQTY",
TO_CHAR(DECODE(WIP.SUM_QTY,0,0,WIP.SUM_DONE_QTY / WIP.SUM_QTY) * 100, '99990.99') || '%' "QTYrate",
WIP.SUM_HOURS "sumHours",
WIP.SUM_DONE_HOURS "sumDoneHours",
TO_CHAR(DECODE(WIP.SUM_HOURS,0,0,WIP.SUM_DONE_HOURS / WIP.SUM_HOURS) * 100, '99990.99') || '%' "HOURSrate"
FROM
(SELECT wct.DESCRIPTION WORK_CENTER,
r.RESRCE,
OT.DESCRIPTION OPERATION_DESCRIPTION,
r.DESCRIPTION RESRCE_DESCRIPTION,
SUM(zsd.DISPATCH_QTY) SUM_QTY,
SUM(CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' AND SYSDATE > zsd.ACTUAL_COMPLETE_DATE THEN zsd.DISPATCH_QTY
ELSE 0 END) SUM_DONE_QTY,
SUM(zsd.PROD_HOURS) SUM_HOURS,
SUM(CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' AND SYSDATE > zsd.ACTUAL_COMPLETE_DATE THEN zsd.PROD_HOURS
ELSE 0 END) SUM_DONE_HOURS
FROM Z_SFC_DISPATCH zsd
LEFT JOIN WORK_CENTER wc ON zsd.WORK_CENTER = wc.WORK_CENTER
LEFT JOIN WORK_CENTER_T wct ON wc.HANDLE = wct.WORK_CENTER_BO
LEFT JOIN RESRCE r ON r.RESRCE = zsd.RESRCE AND r.SITE = zsd.SITE
LEFT JOIN OPERATION O ON O.OPERATION = ZSD.OPERATION AND O.SITE = ZSD.SITE
LEFT JOIN OPERATION_T OT ON O.HANDLE = OT.OPERATION_BO
WHERE zsd.DISPATCH_STATUS != 'CANCEL'
AND zsd.DISPATCH_STATUS != 'NEW'
AND zsd.RESRCE IS NOT NULL
<if test="workCenter != null and workCenter != ''">
AND wc.WORK_CENTER = #{workCenter}
</if>
<if test="startDate != null and startDate != ''">
AND zsd.PLANNED_COMP_DATE >= TO_DATE(#{startDate},'YYYY-mm')
</if>
<if test="endDate != null and endDate != ''">
AND zsd.PLANNED_COMP_DATE &lt;= TO_DATE(#{endDate},'YYYY-mm')
</if>
GROUP BY wct.DESCRIPTION, r.RESRCE, r.DESCRIPTION, OT.DESCRIPTION) WIP
<where>
1=1
<if test="resrce != null and resrce != ''">
AND WIP.RESRCE = #{resrce}
</if>
<if test="operationDescription != null and operationDescription != ''">
AND WIP.OPERATION_DESCRIPTION = #{operationDescription}
</if>
</where>
ORDER BY WIP.SUM_HOURS DESC
</select>
<select id="itemProductProgressReport" parameterType="java.util.HashMap" resultType="java.util.Map">
SELECT cf.VALUE "projectNo",--项目号
cf2.VALUE "workOrder",--工作令
zsd.SHOP_ORDER "shopOrder",--订单编号
i.ITEM "item", --物料编号
it.DESCRIPTION "itemDescription",--物料描述
MIN(zsd.ACTUAL_START_DATE) "actualStartDate",--最小实际开始时间
MAX(zsd.ACTUAL_COMPLETE_DATE) "actualCompeteDate",--最大实际完成时间
TO_CHAR(MAX(zsd.ACTUAL_COMPLETE_DATE) - MIN(zsd.ACTUAL_START_DATE), '99990.99') "productProgress"
FROM Z_SFC_DISPATCH zsd
LEFT JOIN SFC s ON s.SFC = zsd.SFC AND s.SITE = zsd.SITE
LEFT JOIN SHOP_ORDER so ON so.SHOP_ORDER = zsd.SHOP_ORDER AND so.SITE = zsd.SITE
LEFT JOIN CUSTOM_FIELDS cf ON cf.HANDLE = so.HANDLE AND cf."ATTRIBUTE" = 'ITEM_NUMBER'
LEFT JOIN CUSTOM_FIELDS cf2 ON cf2.HANDLE = so.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER'
LEFT JOIN ITEM i On i.HANDLE = so.ITEM_BO AND I.SITE = SO.SITE
LEFT JOIN ITEM_T it ON it.ITEM_BO = so.ITEM_BO AND it.LOCALE = 'zh'
WHERE zsd.SITE = '1000'
AND ZSD.DISPATCH_STATUS != 'CANCEL'
AND ZSD.DISPATCH_STATUS != 'PAUSE'
AND zsd.ACTUAL_COMPLETE_DATE IS NOT NULL
AND cf.VALUE IS NOT NULL
AND cf2.VALUE IS NOT NULL
<if test="item != null and item != ''">
AND cf.VALUE = #{item}
</if>
<if test="career != null and career != ''">
AND cf2.VALUE LIKE '%${career}%'
</if>
<if test="startFromDate != null and startFromDate != ''">
AND zsd.ACTUAL_START_DATE >= TO_DATE(#{startFromDate},'YYYY-mm-dd')
</if>
<if test="startToDate != null and startToDate != ''">
AND zsd.ACTUAL_START_DATE &lt;= TO_DATE(#{startToDate},'YYYY-mm-dd')
</if>
<if test="completeFromDate != null and completeFromDate != ''">
AND zsd.ACTUAL_COMPLETE_DATE >= TO_DATE(#{completeFromDate},'YYYY-mm-dd')
</if>
<if test="completeToDate != null and completeToDate != ''">
AND zsd.ACTUAL_COMPLETE_DATE &lt;= TO_DATE(#{completeToDate},'YYYY-mm-dd')
</if>
GROUP BY cf.VALUE, cf2.VALUE, zsd.SHOP_ORDER, i.ITEM, it.DESCRIPTION
ORDER BY cf.VALUE DESC
</select>
<select id="qualityInspectionResponseReport" parameterType="java.util.HashMap" resultType="java.util.Map">
--质量检验响应时间报表
SELECT WT.DESCRIPTION "workCenter",
C2.VALUE "projectNo",
C1.VALUE "workOrder",
SO.SHOP_ORDER "shopOrder",
IM.ITEM "item",
IT.DESCRIPTION "itemDescription",
zsd.DISPATCH_QTY "inspectionQTY",
OT.DESCRIPTION "operationDescription",
zsd.EMPLOYEE_DESCRIPTION "declarationUser",
ZT.CREATED_DATE_TIME "declarationTime",
ZT.MODIFIED_DATE_TIME "inspectionDoneTime",
TO_CHAR((ZT.MODIFIED_DATE_TIME - ZT.CREATED_DATE_TIME) * 24,'99990.99') "hoursDiff",
ZNU.FULL_NAME "inspectionUser"
FROM Z_INSPECTION_TASK ZT
LEFT JOIN WORK_CENTER WC ON WC.SITE = ZT.SITE AND WC.WORK_CENTER = ZT.WORK_CENTER
LEFT JOIN WORK_CENTER_T WT ON WT.WORK_CENTER_BO = WC.HANDLE AND WT.LOCALE = 'zh'
INNER JOIN SHOP_ORDER SO ON ZT.SITE = SO.SITE AND ZT.SHOP_ORDER = SO.SHOP_ORDER
LEFT JOIN CUSTOM_FIELDS C1 ON C1.HANDLE = SO.HANDLE AND C1."ATTRIBUTE" = 'WORK_ORDER'
LEFT JOIN CUSTOM_FIELDS C2 ON C2.HANDLE = SO.HANDLE AND C2."ATTRIBUTE" = 'ITEM_NUMBER'
INNER JOIN ITEM IM ON IM.HANDLE = SO.ITEM_BO
LEFT JOIN ITEM_T IT ON IT.ITEM_BO = IM.HANDLE
INNER JOIN OPERATION OP ON OP.SITE = ZT.SITE AND OP.OPERATION = ZT.OPERATION AND OP.CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T OT ON OT.OPERATION_BO = OP.HANDLE
LEFT JOIN Z_NWA_USER ZNU ON ZNU.USER_NAME = ZT.MODIFY_USER
INNER JOIN Z_SFC_DISPATCH zsd ON zsd.HANDLE = ZT.SFC_DISPATCH_BO
WHERE ZT.CREATED_DATE_TIME &lt; ZT.MODIFIED_DATE_TIME
<if test="projectNo != null and projectNo != ''">
AND C2.VALUE = #{projectNo}
</if>
<if test="workCenter != null and workCenter != ''">
AND ZT.WORK_CENTER = #{workCenter}
</if>
<if test="shopOrder != null and shopOrder != ''">
AND SO.SHOP_ORDER = #{shopOrder}
</if>
<if test="item != null and item != ''">
AND IM.ITEM = #{item}
</if>
ORDER BY ZT.MODIFIED_DATE_TIME DESC
</select>
<select id="capacityLoad" resultType="java.util.Map">
--设备产能负荷看板看板接口
SELECT WIP.* FROM (WITH WEEK AS (
SELECT TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') WEEK0,
TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') + 7 * 1 WEEK1,
TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') + 7 * 2 WEEK2,
TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') + 7 * 3 WEEK3,
TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') + 7 * 4 WEEK4,
TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') + 7 * 5 WEEK5,
TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') + 7 * 6 WEEK6,
TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') + 7 * 7 WEEK7,
TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd'), 'IW') + 7 * 8 WEEK8
FROM DUAL)
SELECT wct.DESCRIPTION "descripion",
rt.RESOURCE_TYPE "resourceType",
rt.DESCRIPTION "resourceDescription",
SUM(CASE
WHEN SYSDATE > ZSD.PLANNED_COMP_DATE THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "tardinessWork",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(WEEK.WEEK0) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(WEEK.WEEK1)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "planCapacity1",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(WEEK.WEEK1) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(WEEK.WEEK2)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "planCapacity2",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(WEEK.WEEK2) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(WEEK.WEEK3)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "planCapacity3",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(WEEK.WEEK3) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(WEEK.WEEK4)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "planCapacity4",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(WEEK.WEEK4) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(WEEK.WEEK5)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "planCapacity5",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(WEEK.WEEK5) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(WEEK.WEEK6)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "planCapacity6",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(WEEK.WEEK6) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(WEEK.WEEK7)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "planCapacity7",
SUM(CASE
WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(WEEK.WEEK7) AND ZSD.PLANNED_COMP_DATE &lt;= TO_DATE(WEEK.WEEK8)
THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS
ELSE 0 END) "planCapacity8",
MAX(CF.VALUE) "standardWeekCapacity",
MAX(CF2.VALUE) "standardMonthCapacity"
FROM Z_SFC_DISPATCH ZSD
LEFT JOIN WORK_CENTER wc ON zsd.WORK_CENTER = wc.WORK_CENTER
LEFT JOIN WORK_CENTER_T wct ON wc.HANDLE = wct.WORK_CENTER_BO
LEFT JOIN RESOURCE_TYPE rt ON rt.RESOURCE_TYPE = ZSD.RESOURCE_TYPE
CROSS JOIN WEEK
LEFT JOIN OPERATION O ON O.RESOURCE_TYPE_BO = rt.HANDLE AND O.SITE = rt.SITE
LEFT JOIN CUSTOM_FIELDS CF ON CF.ATTRIBUTE = 'WEEK_CAPACITY'
AND CF.HANDLE = 'OperationBO:1000,' || o.OPERATION || ',1.0'
LEFT JOIN CUSTOM_FIELDS CF2 ON CF2.ATTRIBUTE = 'MONTH_CAPACITY'
AND CF2.HANDLE = 'OperationBO:1000,' || o.OPERATION || ',1.0'
WHERE zsd.DISPATCH_STATUS != 'CANCEL'
AND zsd.DISPATCH_STATUS != 'COMPLETE'
AND CF.VALUE IS NOT NULL
AND CF2.VALUE IS NOT NULL
<if test="workCenter != null and workCenter != ''">
AND wc.WORK_CENTER = #{workCenter}
</if>
GROUP BY wct.DESCRIPTION, rt.RESOURCE_TYPE, rt.DESCRIPTION
ORDER BY "planCapacity1" DESC ) WIP
WHERE 8 >= ROWNUM
</select>
</mapper>
Loading…
Cancel
Save