Merge remote-tracking branch 'origin/master'

master
zpl 3 years ago
commit c7dd200877

@ -17,7 +17,7 @@ public interface ReportMapper {
List<IntegrationLogDto> findIntegrationLog(@Param("site")String site, @Param("param") Map<String,Object> map);
List<Map<String, Object>> partsManufacturing(@Param("site")String site,@Param("locale")String locale, @Param("param") Map<String,Object> map);
List<Map<String, Object>> partsManufacturing(@Param("param") Map<String,Object> map);
List<Map<String,Object>> surplusReturnTable(@Param("site")String site, @Param("locale")String locale,
@Param("item")String item, @Param("itemDescription")String itemDescription);

@ -66,13 +66,20 @@ public class ReportServiceImpl implements ReportService {
public List<Map<String, Object>> partsManufacturing(Map<String,Object> map) {
String site = CommonMethods.getSite();
String locale = LocaleContextHolder.getLocale().getLanguage();
String shopOrder = (String)map.get("shopOrder");
if(StringUtils.notBlank(shopOrder)){
//查询这个物料下面的所有组件
List<ShopOrder> bomCommentByShopOrder = shopOrderMapper.findBomCommentByShopOrder(site, shopOrder);
map.put("bomComponentShopOrder",bomCommentByShopOrder);
map.put("site",site);
map.put("locale",locale);
List<Map<String, Object>> maps = reportMapper.partsManufacturing(map);
for(Map<String,Object> m: maps){
//判断子件是否全部已经完工,如果有一个没有完工,则全部都没有完工,设置为否
String isComplete = (String)m.get("ZI_JIAN");
if("否".equals(isComplete)){
for(Map<String,Object> m2: maps){
map.put("ZI_JIAN","否");
}
break;
}
}
return reportMapper.partsManufacturing(site,locale,map);
return maps;
}
/**

@ -39,97 +39,127 @@
ORDER BY REQUEST_DATE_TIME DESC
</select>
<select id="partsManufacturing" resultType="Map">
SELECT CF.VALUE ITEM_NUMBER,ZSD.SHOP_ORDER SHOP_ORDER,I.ITEM ITEM,IT.DESCRIPTION ITEM_DESCRIPTION,
SO.QTY_TO_BUILD SHOP_ORDER_QTY , ZSD.OPERATION ,OT.DESCRIPTION OPERATION_DESCRIPTION,
ZNU.FULL_NAME OPERATION_USER,ZSD.SFC SFC,
CASE WHEN S2.STATUS = '405' THEN '是' ELSE '否' END DISPATCH_STATUS,
ZSD.EARLIEST_START_DATE EARLIEST_START_DATE,ZSD.LATEST_END_DATE LATEST_END_DATE,
ZSD.ACTUAL_START_DATE ACTUAL_START_DATE,ZSD.ACTUAL_COMPLETE_DATE ACTUAL_COMPLETE_DATE,
CF2.VALUE WORK_ORDER,OT2.DESCRIPTION CURRENT_OPERATION_DESCRIPTION,O2.OPERATION CURRENT_OPERATION,
CASE WHEN zsd.DISPATCH_STATUS = 'NEW' THEN '新建'
<select id="partsManufacturing" parameterType="java.util.HashMap" resultType="java.util.HashMap">
SELECT cf.VALUE WORK_ORDER,zsd.SHOP_ORDER FINISHED_SHOP_ORDER,i.ITEM FINISHED_ITEM,it.DESCRIPTION FINISHED_ITEM_DESCRIPTION,zsd.SFC FINISHED_SFC,
CASE WHEN o.OPERATION IS NOT NULL THEN
CASE WHEN zsd.DISPATCH_STATUS = 'NEW'THEN '新建'
WHEN zsd.DISPATCH_STATUS = 'RELEASE' THEN '发布'
WHEN zsd.DISPATCH_STATUS = 'PAUSE' THEN '暂挂'
WHEN zsd.DISPATCH_STATUS = 'START' ThEN '已开始'
WHEN zsd.DISPATCH_STATUS = 'START'THEN '已开始'
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' THEN '已完成'
WHEN zsd.DISPATCH_STATUS = 'CANCEL' THEN '已取消'
ELSE ''
END OPERATION_STATUS
FROM SFC S
LEFT JOIN SFC_ROUTING SR ON SR.SFC_BO = S.HANDLE
LEFT JOIN SFC_ROUTER ST ON ST.SFC_ROUTING_BO = SR.HANDLE AND ST.IN_USE = 'true'
LEFT JOIN SFC_STEP SS ON SS.SFC_ROUTER_BO = ST.HANDLE AND (SS.QTY_IN_QUEUE > 0 OR SS.QTY_IN_WORK > 0)
INNER JOIN SHOP_ORDER SO ON SO.HANDLE = S.SHOP_ORDER_BO
INNER JOIN ITEM I ON I.HANDLE = SO.ITEM_BO
LEFT JOIN ITEM_T IT ON IT.ITEM_BO = I.HANDLE AND IT.LOCALE = #{locale}
INNER JOIN Z_SFC_DISPATCH ZSD ON S.SFC = ZSD.SFC AND S.SITE = ZSD.SITE
LEFT JOIN OPERATION O ON O.OPERATION = ZSD.OPERATION AND O.SITE = S.SITE AND O.CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T OT ON OT.OPERATION_BO = O.HANDLE AND OT.LOCALE = #{locale}
LEFT JOIN OPERATION O2 ON O2.OPERATION = SUBSTR(SS.OPERATION_BO,INSTR(SS.OPERATION_BO,',',1,1)+1,INSTR(SS.OPERATION_BO,',',1,2) - INSTR(SS.OPERATION_BO,',') -1)
AND O2.SITE = S.SITE AND O2.CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T OT2 ON OT2.OPERATION_BO = O2.HANDLE AND OT2.LOCALE = #{locale}
LEFT JOIN Z_NWA_USER ZNU ON ZNU.USER_NAME = ZSD.EMPLOYEE AND ZSD.DISPATCH_SEQ = (
SELECT MAX(ZSD2.DISPATCH_SEQ) FROM Z_SFC_DISPATCH ZSD2 WHERE S.SFC = ZSD2.SFC AND S.SITE = ZSD2.SITE
ELSE '' END ELSE '' END FINISHED_OPERATION_STATUS,
o.OPERATION FINISHED_OPERATION,
CASE WHEN zsd4.HANDLE IS NOT NULL THEN '否' ELSE '是' END ZI_JIAN,
cf3.VALUE ITEM_NUMBER,so2.SHOP_ORDER,i2.ITEM,it2.DESCRIPTION ITEM_DESCRIPTION,
so2.QTY_TO_BUILD SHOP_ORDER_QTY,s2.SFC,o2.OPERATION,ot2.DESCRIPTION OPERATION_DESCRIPTION,zsd3.STEP_ID STEP_ID,
CASE WHEN zsd3.DISPATCH_STATUS = 'NEW'THEN '新建'
WHEN zsd3.DISPATCH_STATUS = 'RELEASE' THEN '发布'
WHEN zsd3.DISPATCH_STATUS = 'PAUSE' THEN '暂挂'
WHEN zsd3.DISPATCH_STATUS = 'START'THEN '已开始'
WHEN zsd3.DISPATCH_STATUS = 'COMPLETE' THEN '已完成'
WHEN zsd3.DISPATCH_STATUS = 'CANCEL' THEN '已取消'
ELSE '' END OPERATION_STATUS,o3.OPERATION CURRENT_OPERATION,ot3.DESCRIPTION CURRENT_OPERATION_DESCRIPTION,
CASE WHEN st2.STATUS = '405' THEN '是' ELSE '否' END DISPATCH_STATUS,
znu2.FULL_NAME OPERATION_USER,zsd3.PLANNED_START_DATE,zsd3.PLANNED_COMP_DATE,zsd3.ACTUAL_START_DATE,zsd3.ACTUAL_COMPLETE_DATE,
zsd3.BLANKING_SIZE
FROM Z_SFC_DISPATCH zsd
-- INNER JOIN (
-- SELECT zsd.SFC,min(zsd.STEP_ID) STEP_ID,SITE FROM Z_SFC_DISPATCH zsd GROUP BY zsd.sfc,SITE
-- ) zsd2 ON zsd2.SFC = zsd.sfc AND zsd2.STEP_ID = zsd.STEP_ID AND zsd2.SITE = zsd.SITE /*因为不根据stepID选所以选最小的一个stepID*/
INNER JOIN SHOP_ORDER so ON so.SHOP_ORDER = zsd.SHOP_ORDER AND so.SITE = zsd.SITE
INNER JOIN ITEM i ON i.HANDLE = so.ITEM_BO
LEFT JOIN ITEM_T it ON it.ITEM_BO = i.HANDLE AND it.LOCALE = 'zh'
INNER JOIN OPERATION o ON o.OPERATION = zsd.OPERATION AND o.SITE = zsd.SITE AND o.CURRENT_REVISION = 'true' AND o.OPERATION IN ('HJ_6106HJH1','HJ_6106HJH2','HJ_6106HJH3')
LEFT JOIN OPERATION_T ot ON ot.OPERATION_BO = o.HANDLE
LEFT JOIN CUSTOM_FIELDS cf ON cf.HANDLE = so.HANDLE AND cf."ATTRIBUTE" = 'WORK_ORDER'
/*从上面往下边开始查找子件*/
LEFT JOIN Z_SFC_DISPATCH zsd3 ON zsd3.HANDLE IN (
SELECT zsd2.HANDLE FROM
BOM_COMPONENT bc
INNER JOIN ITEM i ON i.HANDLE = bc.COMPONENT_GBO
INNER JOIN SHOP_ORDER so2 ON so2.ITEM_BO = i.HANDLE
INNER JOIN CUSTOM_FIELDS cf2 ON cf2.HANDLE = so2.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER' AND cf2.VALUE = cf.VALUE
INNER JOIN Z_SFC_DISPATCH zsd2 ON zsd2.SHOP_ORDER = so2.SHOP_ORDER AND zsd2.SITE = zsd.SITE
WHERE cf2.VALUE IS NOT NULL AND bc.BOM_BO = so.BOM_BO
)
LEFT JOIN CUSTOM_FIELDS CF ON CF.HANDLE = S.SHOP_ORDER_BO AND CF."ATTRIBUTE" = 'ITEM_NUMBER'
LEFT JOIN CUSTOM_FIELDS CF2 ON CF2.HANDLE = S.SHOP_ORDER_BO AND CF2."ATTRIBUTE" = 'WORK_ORDER'
INNER JOIN STATUS S2 ON S2.HANDLE = S.STATUS_BO
INNER JOIN SHOP_ORDER so2 ON so2.SHOP_ORDER = zsd3.SHOP_ORDER AND so2.SITE = zsd.SITE
INNER JOIN ITEM i2 ON i2.HANDLE = so2.ITEM_BO
LEFT JOIN ITEM_T it2 ON it2.ITEM_BO = i2.HANDLE AND it2.LOCALE = 'zh'
INNER JOIN SFC s2 ON s2.SFC = zsd3.SFC AND s2.SITE = zsd.SITE
LEFT JOIN SFC_ROUTING sr ON sr.SFC_BO = s2.HANDLE
LEFT JOIN SFC_ROUTER st ON st.SFC_ROUTING_BO = sr.HANDLE AND st.IN_USE = 'true'
LEFT JOIN SFC_STEP ss ON ss.SFC_ROUTER_BO = st.HANDLE AND (ss.QTY_IN_QUEUE > 0 OR ss.QTY_IN_WORK > 0)
INNER JOIN OPERATION o2 ON o2.OPERATION = zsd3.OPERATION AND o2.SITE = zsd.SITE AND o2.CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T ot2 ON ot2.OPERATION_BO = o2.HANDLE AND ot2.LOCALE = 'zh'
LEFT JOIN OPERATION o3 ON o3.OPERATION = SUBSTR(SS.OPERATION_BO,INSTR(SS.OPERATION_BO,',',1,1)+1,INSTR(SS.OPERATION_BO,',',1,2) - INSTR(SS.OPERATION_BO,',') -1) AND o3.SITE = zsd.SITE AND o3.CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T ot3 ON ot3.OPERATION_BO = o3.HANDLE AND ot3.LOCALE = 'zh'
LEFT JOIN Z_NWA_USER znu2 ON znu2.USER_NAME = zsd3.EMPLOYEE AND zsd3.DISPATCH_SEQ = (
SELECT MAX(zsd4.DISPATCH_SEQ)
FROM Z_SFC_DISPATCH zsd4
WHERE zsd4.SFC = zsd3.SFC AND zsd.SITE = zsd4.SITE )
LEFT JOIN CUSTOM_FIELDS cf3
ON so2.HANDLE = cf3.HANDLE AND cf3."ATTRIBUTE" = 'ITEM_NUMBER'
LEFT JOIN CUSTOM_FIELDS cf4
ON so2.HANDLE = cf4.HANDLE AND cf4."ATTRIBUTE" = 'WORK_ORDER'
INNER JOIN STATUS st2
ON st2.HANDLE = s2.STATUS_BO
LEFT JOIN Z_SFC_DISPATCH zsd4 ON zsd4.HANDLE = zsd3.HANDLE AND zsd4.DISPATCH_STATUS != 'COMPLETE' AND zsd4.DISPATCH_STATUS != 'CANCEL'
<!-- LEFT JOIN Z_SFC_DISPATCH zsd4 ON zsd4.HANDLE-->
<!-- = (-->
<!-- SELECT zsd2.HANDLE FROM Z_SFC_DISPATCH zsd2-->
<!-- WHERE zsd2.DISPATCH_STATUS != 'COMPLETE' AND zsd4.DISPATCH_STATUS != 'CANCEL' AND zsd2.HANDLE = zsd3.HANDLE AND ROWNUM < 2-->
<!-- )-->
<where>
S.SITE = #{site}
<if test="param != null">
<if test="param.itemNumber != null and param.itemNumber != ''">
AND CF.VALUE LIKE '%${param.itemNumber}%'
</if>
<if test="param.shopOrder != null and param.shopOrder != ''">
AND (ZSD.SHOP_ORDER = #{param.shopOrder}
<if test="param.bomComponentShopOrder.size() > 0">
OR ZSD.SHOP_ORDER IN
<foreach item="item" index="index" collection="param.bomComponentShopOrder" separator="," open="("
close=")">
#{item.shopOrder}
</foreach>
</if>)
</if>
<if test="param.item != null and param.item != ''">
AND (I.ITEM = #{param.item} OR IT.DESCRIPTION = #{param.item})
</if>
<if test="param.currentOperation != null and param.currentOperation != ''">
AND (OT2.DESCRIPTION LIKE '%${param.currentOperation}%' OR
O2.OPERATION LIKE '%${param.currentOperation}%')
</if>
<!-- <if test="param.itemDescription != null and param.itemDescription != ''">-->
<!-- AND IT.DESCRIPTION LIKE '%${param.itemDescription}%'-->
<!-- </if>-->
<if test="param.operation != null and param.operation != ''">
AND (O.OPERATION LIKE '%${param.operation}%'
OR OT.DESCRIPTION LIKE '%${param.operation}%')
</if>
<if test="param.workOrder != null and param.workOrder != ''">
AND CF2.VALUE = #{param.workOrder}
</if>
<if test="param.status != null and param.status != ''">
<if test="param.status == 'Y'.toString()">
AND S2.STATUS = '405'
</if>
<if test="param.status == 'N'.toString()">
AND S2.STATUS != '405'
</if>
</if>
<if test="param.startDateTime != null and param.startDateTime != ''">
AND ZSD.ACTUAL_START_DATE &gt;= TO_DATE(#{param.startDateTime}, 'YYYY-MM-DD') - 8/24
</if>
<if test="param.endDateTime != null and param.endDateTime != ''">
AND ZSD.ACTUAL_START_DATE &lt;= TO_DATE(#{param.endDateTime}|| '15:59:59', 'YYYY-MM-DD HH24:MI:SS')
</if>
<if test="param.completeStartDateTime != null and param.completeStartDateTime != ''">
AND ZSD.ACTUAL_COMPLETE_DATE &gt;= TO_DATE(#{param.completeStartDateTime}, 'YYYY-MM-DD') - 8/24
zsd.SITE = #{param.site} AND cf.VALUE = #{param.workOrder}
<if test="param.itemNumber != null and param.itemNumber != ''">
AND CF3.VALUE LIKE '%${param.itemNumber}%'
</if>
<if test="param.shopOrder != null and param.shopOrder != ''">
AND (zsd.SHOP_ORDER = #{param.shopOrder} OR zsd3.SHOP_ORDER = #{param.shopOrder})
</if>
<if test="param.item != null and param.item != ''">
AND (i.ITEM = #{param.item} OR it.DESCRIPTION = #{param.item} OR i2.ITEM = #{param.item} OR it2.DESCRIPTION = #{param.item})
</if>
<if test="param.currentOperation != null and param.currentOperation != ''">
AND (ot3.DESCRIPTION LIKE '%${param.currentOperation}%' OR
o3.OPERATION LIKE '%${param.currentOperation}%')
</if>
<if test="param.operation != null and param.operation != ''">
AND (O.OPERATION LIKE '%${param.operation}%'
OR OT.DESCRIPTION LIKE '%${param.operation}%'
OR o2.OPERATION LIKE '%${param.operation}'
OR ot2.DESCRIPTION LIKE '%${param.operation}'
)
</if>
<if test="param.status != null and param.status != ''">
<if test="param.status == 'Y'.toString()">
AND st2.STATUS = '405'
</if>
<if test="param.completeEndDateTime != null and param.completeEndDateTime != ''">
AND ZSD.ACTUAL_COMPLETE_DATE &lt;= TO_DATE(#{param.completeEndDateTime}|| '15:59:59', 'YYYY-MM-DD HH24:MI:SS')
<if test="param.status == 'N'.toString()">
AND st2.STATUS != '405'
</if>
</if>
<if test="param.startDateTime != null and param.startDateTime != ''">
AND ZSD3.ACTUAL_START_DATE &gt;= TO_DATE(#{param.startDateTime}, 'YYYY-MM-DD') - 8/24
</if>
<if test="param.endDateTime != null and param.endDateTime != ''">
AND ZSD3.ACTUAL_START_DATE &lt;= TO_DATE(#{param.endDateTime}|| '15:59:59', 'YYYY-MM-DD HH24:MI:SS')
</if>
<if test="param.completeStartDateTime != null and param.completeStartDateTime != ''">
AND ZSD3.ACTUAL_COMPLETE_DATE &gt;= TO_DATE(#{param.completeStartDateTime}, 'YYYY-MM-DD') - 8/24
</if>
<if test="param.completeEndDateTime != null and param.completeEndDateTime != ''">
AND ZSD3.ACTUAL_COMPLETE_DATE &lt;= TO_DATE(#{param.completeEndDateTime}|| '15:59:59', 'YYYY-MM-DD HH24:MI:SS')
</if>
<if test="param.finishedStatus != null and param.finishedStatus != ''">
AND zsd.DISPATCH_STATUS = #{param.finishedStatus}
</if>
<if test="param.partsStatus != null and param.partsStatus != ''">
AND zsd3.DISPATCH_STATUS = #{param.partsStatus}
</if>
</where>
order by S.SFC DESC
ORDER BY zsd.SFC,zsd.OPERATION,zsd3.SFC,zsd3.OPERATION
</select>
<select id="surplusReturnTable" resultType="java.util.HashMap">

Loading…
Cancel
Save