异常拆分条件查询修改、发送计划处理消息、派工单物料去向

master
yangwl 2 years ago
parent cc15c34912
commit 17f6d253ea

@ -276,6 +276,7 @@ public class AbnormalBill extends Model<AbnormalBill> {
@TableField(exist = false)
private String mapNo;
/**
*
*/

@ -124,7 +124,17 @@ public class AbnormalPlan extends Model<AbnormalPlan> {
private String rtHandle;
public String getRtHandle() {
private String reapirContent;
public String getReapirContent() {
return reapirContent;
}
public void setReapirContent(String reapirContent) {
this.reapirContent = reapirContent;
}
public String getRtHandle() {
return rtHandle;
}

@ -39,5 +39,5 @@ public interface AbnormalPlanService extends IService<AbnormalPlan> {
void processes(List<AbnormalPlan> abnormalPlanList) throws Exception;
void sendMessage(AbnormalBill abnormalBill, AbnormalPlan abnormalPlan);
void sendMessage(List<String> userList,AbnormalBill abnormalBill, AbnormalPlan abnormalPlan);
}

@ -257,8 +257,8 @@ public class AbnormalBillServiceImpl extends ServiceImpl<AbnormalBillMapper, Abn
throw new BaseException("根据SFC找不到StepId");
}
if (StringUtil.notBlank(abnormalBill.getShopOrder())){
ShopOrder shopOrder = shopOrderService.findByShopOrderBo(HandleEnum.SHOP_ORDER.getHandle(site,abnormalBill.getShopOrder()));
if (StringUtil.notBlank(shopOrder.getStatusBo()) && shopOrder.getStatusBo().equals("StatusBO:1000,501") && (abnormalBill.getSfc()==null || abnormalBill.getSfc()==" ") )
ShopOrder shopOrder = shopOrderService.findByShopOrderBo(abnormalBill.getShopOrder());
if (StringUtil.notBlank(shopOrder.getStatusBo()) && shopOrder.getStatusBo().equals("StatusBO:1000,501") && StringUtil.isBlank(abnormalBill.getSfc()) )
{
throw new BaseException("在产订单的异常必须按照SFC来提报");
}
@ -605,7 +605,7 @@ public class AbnormalBillServiceImpl extends ServiceImpl<AbnormalBillMapper, Abn
if(routers == null || routers.size() == 0){
throw BusinessException.build("该返修工艺不存在");
}
}
/**
*
@ -618,7 +618,6 @@ public class AbnormalBillServiceImpl extends ServiceImpl<AbnormalBillMapper, Abn
routerStep=routerStepService.getOne(queryWrapper);
String[] items = abnormalBill.getItemBo().split(",");
String item=items[1];
if (StringUtil.notBlank(routerStep.getDescription())){
String disRouterfirtOperation = routerStep.getDescription().substring(0, routerStep.getDescription().indexOf("_"));
if (StringUtil.notBlank(abnormalBill.getOperation()) && StringUtil.notBlank(abnormalBill.getSfc()) && StringUtil.notBlank(abnormalBill.getStepId())){
@ -649,6 +648,7 @@ public class AbnormalBillServiceImpl extends ServiceImpl<AbnormalBillMapper, Abn
}
}
}
//判断返修工单是否正确
if(!StringUtil.isBlank(abnormalBillDispose.getResolveShopOrder())){
@ -1416,6 +1416,7 @@ public class AbnormalBillServiceImpl extends ServiceImpl<AbnormalBillMapper, Abn
Map<String, String> replaceMessage = abnormalBillMapper.findReplaceMessageByAbnormal(abnormalBill);
if (abnormalBill.getType().equals("S")){
replaceMessage=abnormalBillMapper.findReplaceMessageResrce(abnormalBill);
}

@ -263,7 +263,7 @@ public class AbnormalPlanServiceImpl extends ServiceImpl<AbnormalPlanMapper, Abn
*
*/
if(abnormalPlan.getShopOrder()==null||abnormalPlan.getShopOrder()=="") {
if(abnormalPlan.getAbnormalMethod().equals("P") || abnormalPlan.getAbnormalMethod().equals("F") || abnormalPlan.getAbnormalMethod().equals("FW") || abnormalPlan.getAbnormalMethod().equals("FB")){
if(abnormalPlan.getAbnormalMethod().equals("P") || abnormalPlan.getAbnormalMethod().equals("F") || abnormalPlan.getAbnormalMethod().equals("FB")){
shopOrder.setShopOrder(abnormalBill.getAbnormalNo());
shopOrder.setPlannedItemBo(abnormalBill.getItemBo());
shopOrder.setPlannedBomBo(abnormalBill.getAbnormalNo());
@ -298,9 +298,17 @@ public class AbnormalPlanServiceImpl extends ServiceImpl<AbnormalPlanMapper, Abn
for(int i = 0; i < abnormalBills.size() && i < abnormalPlans.size(); i++) {
String sendUserGroup = abnormalPlans.get(i).getSendUserGroup();
List<String> sendUserGroupList = new ArrayList<>(Arrays.asList(sendUserGroup.split(",")));
for (String userGroup : sendUserGroupList) {
List<String> userList=new ArrayList<>();
abnormalPlans.get(i).setSendUserGroup(userGroup);
this.sendMessage(abnormalBills.get(i),abnormalPlans.get(i));
for (String u : sendUserGroupList){
List<NwaUser> nwaUsers = nwaUserService.checkUserGroup(site,u);
for (NwaUser nwaUser:nwaUsers){
userList.add(nwaUser.getFullName());
}
}
this.sendMessage(userList,abnormalBills.get(i),abnormalPlans.get(i));
}
abnormalPlans.get(i).setSendUserGroup(sendUserGroup);
}
@ -313,7 +321,7 @@ public class AbnormalPlanServiceImpl extends ServiceImpl<AbnormalPlanMapper, Abn
@Override
public void sendMessage(AbnormalBill abnormalBill, AbnormalPlan abnormalPlan) {
public void sendMessage(List<String> userList,AbnormalBill abnormalBill,AbnormalPlan abnormalPlan) {
//创建一个消息记录表
String site = CommonMethods.getSite();
String user = CommonMethods.getUser();
@ -332,6 +340,8 @@ public class AbnormalPlanServiceImpl extends ServiceImpl<AbnormalPlanMapper, Abn
message.setSendUserGroup(abnormalPlan.getSendUserGroup());
//格式化消息内容
String messageContent = abnormalBillService.formatMessage(abnormalBill, message.getMessageType(), site);
NwaUser nwaUser=nwaUserService.findUserByUserName(user);
messageContent=messageContent+"计划人员:"+nwaUser.getFullName()+",返修方案描述:"+abnormalPlan.getReapirContent()+", 发送用户组:"+userList.toString();
message.setContent(messageContent);
message.setResponseDateTime(now);
UserGroup customFieldByGroup = userGroupMapper.getCustomFieldByGroup(site, message.getSendUserGroup());

@ -1054,6 +1054,10 @@
<if test="abnormalBill.productionCategory != null and abnormalBill.productionCategory != ''">
AND zab.PRODUCT_CATEGORY LIKE '%${abnormalBill.productionCategory}'
</if>
<if test="abnormalBill.itemDescription !=null and abnormalBill.itemDescription!=''">
AND IT.DESCRIPTION like '%' ||#{abnormalBill.itemDescription}|| '%'
</if>
<!-- <choose>-->
<!-- <when test="userGroupList != null and userGroupList.size != 0">-->
<!-- AND ZAB.REPORT_SEND_USER_GROUP IN-->
@ -1172,6 +1176,8 @@
AND SFC = #{sfc}
</if>
AND PROGRAM !='true'
</where>
</select>
@ -1296,7 +1302,7 @@
SELECT * FROM Z_ABNORMAL_BILL zab
JOIN sfc s ON zab.SITE=s.SITE AND zab.SFC=s.SFC
JOIN Z_ABNORMAL_BILL_DISPOSE ZABD ON ZABD.ABNORMAL_BILL_BO= ZAB.HANDLE
WHERE zab.SITE=#{site} AND zab.STATUS='G' AND zab."TYPE"='Z' AND s.QTY>1 AND (ZABD.ABNORMAL_METHOD='F' OR ZABD.ABNORMAL_METHOD='C') ORDER BY ZABD.CLOSED_DATE_TIME DESC
WHERE zab.SITE=#{site} AND zab.STATUS IN ('F','J','G') AND zab."TYPE"='Z' AND s.QTY>1 AND (ZABD.ABNORMAL_METHOD='F' OR ZABD.ABNORMAL_METHOD='C') ORDER BY ZABD.CLOSED_DATE_TIME DESC
</select>
<select id="getAbnormalByConditional" resultMap="BaseResultMap">
@ -1326,41 +1332,77 @@
WHERE ZABD.ABNORMAL_METHOD='C' AND ZAB.SFC IS NOT NULL
</select>
<select id="findReplaceMessageByAbnormal" resultType="java.util.HashMap">
SELECT wct.DESCRIPTION WORKCENTER,so.SHOP_ORDER SHOPORDER ,
it.DESCRIPTION ITEM,
/* zab.WORK_ORDER WORK_ORDER,*/
COALESCE(workOrder.VALUE,zab.WORK_ORDER) WORK_ORDER,
COALESCE(item.VALUE,zab.ITEM_NUMBER) PROJECT,
/* zab.ITEM_NUMBER PROJECT,*/
LISTAGG(nct.DESCRIPTION , ',') WITHIN GROUP(ORDER BY zab.ABNORMAL_NO) NC,
r.DESCRIPTION "RESOURCE",r2.DESCRIPTION WORKCENTER_LIN,
CASE WHEN zabd.ABNORMAL_METHOD = 'X' THEN '线下换料'
WHEN zabd.ABNORMAL_METHOD = 'S' THEN '试装'
WHEN zabd.ABNORMAL_METHOD = 'R' THEN '让步放行'
WHEN zabd.ABNORMAL_METHOD = 'C' THEN '报废'
WHEN zabd.ABNORMAL_METHOD = 'P' THEN '配作'
WHEN zabd.ABNORMAL_METHOD = 'F' THEN '返修'
WHEN zabd.ABNORMAL_METHOD = 'FW' THEN '返修(外协)'
WHEN zabd.ABNORMAL_METHOD = 'FB' THEN '返修(不返回原工艺)'
ELSE ''
END METHOD,
zab.ABNORMAL_NO,
zab.CANCEL_REASON CANCEL_REASON,
zab.SFC,
zab.PB_DESCRIPTION
FROM Z_ABNORMAL_BILL zab
WITH TEMP AS (
SELECT
wct.DESCRIPTION WORKCENTER,
so.SHOP_ORDER SHOPORDER,
it.DESCRIPTION ITEM,
i.ITEM ITEM_NO,
/* zab.WORK_ORDER WORK_ORDER,*/
COALESCE( workOrder.VALUE, zab.WORK_ORDER ) WORK_ORDER,
COALESCE( item.VALUE, zab.ITEM_NUMBER ) PROJECT,
/* zab.ITEM_NUMBER PROJECT,*/
LISTAGG ( nct.DESCRIPTION, ',' ) WITHIN GROUP ( ORDER BY zab.ABNORMAL_NO ) NC,
zabd.DUTY_DEPART,
DFLT.DATA_TAG,
r.DESCRIPTION "RESOURCE",
r2.DESCRIPTION WORKCENTER_LIN,
CASE
WHEN zabd.ABNORMAL_METHOD = 'X' THEN
'线下换料'
WHEN zabd.ABNORMAL_METHOD = 'S' THEN
'试装'
WHEN zabd.ABNORMAL_METHOD = 'R' THEN
'让步放行'
WHEN zabd.ABNORMAL_METHOD = 'C' THEN
'报废'
WHEN zabd.ABNORMAL_METHOD = 'P' THEN
'配作'
WHEN zabd.ABNORMAL_METHOD = 'F' THEN
'返修'
WHEN zabd.ABNORMAL_METHOD = 'FW' THEN
'返修(外协)'
WHEN zabd.ABNORMAL_METHOD = 'FB' THEN
'返修(不返回原工艺)' ELSE ''
END METHOD,
zab.ABNORMAL_NO,
zab.CANCEL_REASON CANCEL_REASON,
zab.SFC,
ZNU.FULL_NAME,
zab.PB_DESCRIPTION,
zab.NC_QTY,
zab.ENTITY_LOCATION,
ZNU1.FULL_NAME RESOLVE_USER
FROM
Z_ABNORMAL_BILL zab
INNER JOIN ITEM i ON i.HANDLE = zab.ITEM_BO
LEFT JOIN RESRCE r ON r.RESRCE = zab.RESRCE AND r.SITE = zab.SITE
LEFT JOIN RESRCE r ON r.RESRCE = zab.RESRCE
AND r.SITE = zab.SITE
LEFT JOIN Z_ABNORMAL_BILL_DISPOSE zabd ON zabd.ABNORMAL_BILL_BO = zab.HANDLE
LEFT JOIN Z_ABNORMAL_NC_CODE zanc ON zanc.ABNORMAL_BILL_BO = zab.HANDLE
LEFT JOIN NC_CODE_T nct ON nct.NC_CODE_BO = 'NCCodeBO:'|| zanc.SITE || ',' || zanc.NC_CODE AND nct.LOCALE = 'zh'
LEFT JOIN ITEM_T it ON it.ITEM_BO = i.HANDLE AND it.LOCALE = 'zh'
LEFT JOIN WORK_CENTER wc ON wc.WORK_CENTER = zab.WORK_CENTER AND wc.SITE = zab.SITE
LEFT JOIN WORK_CENTER_T wct ON wct.WORK_CENTER_BO = wc.HANDLE AND wct.LOCALE = 'zh'
LEFT JOIN SHOP_ORDER so ON so.SHOP_ORDER = zab.SHOP_ORDER AND so.SITE = zab.SITE
LEFT JOIN CUSTOM_FIELDS item ON item.HANDLE = so.HANDLE AND item."ATTRIBUTE" = 'ITEM_NUMBER'
LEFT JOIN CUSTOM_FIELDS workOrder on workOrder.HANDLE = so.HANDLE AND workOrder."ATTRIBUTE" = 'WORK_ORDER'
LEFT JOIN NC_CODE_T nct ON nct.NC_CODE_BO = 'NCCodeBO:' || zanc.SITE || ',' || zanc.NC_CODE
AND nct.LOCALE = 'zh'
LEFT JOIN DATA_FIELD_LIST DFL ON instr( zabd.DUTY_DEPART, DFL.DATA_VALUE ) > 0
AND DFL.DATA_FIELD_BO = 'DataFieldBO:1000,RESPONSIBILITY_DEPARTMENT'
LEFT JOIN DATA_FIELD_LIST_T DFLT ON DFL.HANDLE = DFLT.DATA_FIELD_LIST_BO
LEFT JOIN ITEM_T it ON it.ITEM_BO = i.HANDLE
AND it.LOCALE = 'zh'
LEFT JOIN WORK_CENTER wc ON wc.WORK_CENTER = zab.WORK_CENTER
AND wc.SITE = zab.SITE
LEFT JOIN WORK_CENTER_T wct ON wct.WORK_CENTER_BO = wc.HANDLE
AND wct.LOCALE = 'zh'
LEFT JOIN SHOP_ORDER so ON so.SHOP_ORDER = zab.SHOP_ORDER
AND so.SITE = zab.SITE
LEFT JOIN CUSTOM_FIELDS item ON item.HANDLE = so.HANDLE
AND item."ATTRIBUTE" = 'ITEM_NUMBER'
LEFT JOIN CUSTOM_FIELDS workOrder ON workOrder.HANDLE = so.HANDLE
AND workOrder."ATTRIBUTE" = 'WORK_ORDER'
LEFT JOIN ROUTER r2 ON r2.HANDLE = so.PLANNED_ROUTER_BO
LEFT JOIN Z_NWA_USER ZNU ON ZNU.USER_NAME = zab.PB_USER
LEFT JOIN Z_NWA_USER ZNU1 ON ZNU1.USER_NAME = zabd.RESOLVE_USER
<where>
<if test="abnormalBill != null">
zab.SITE = #{abnormalBill.site}
@ -1372,9 +1414,72 @@
</if>
</if>
</where>
GROUP BY wct.DESCRIPTION ,so.SHOP_ORDER ,it.DESCRIPTION,r.DESCRIPTION,r2.DESCRIPTION,
zab.WORK_ORDER,zab.ITEM_NUMBER,zabd.ABNORMAL_METHOD,zab.ABNORMAL_NO,item.VALUE,workOrder.VALUE,
zab.CANCEL_REASON,zab.SFC,zab.PB_DESCRIPTION
GROUP BY
wct.DESCRIPTION,
so.SHOP_ORDER,
it.DESCRIPTION,
r.DESCRIPTION,
r2.DESCRIPTION,
zab.WORK_ORDER,
zab.ITEM_NUMBER,
zabd.ABNORMAL_METHOD,
zab.ABNORMAL_NO,
item.VALUE,
workOrder.VALUE,
zab.CANCEL_REASON,
zab.SFC,
zab.PB_DESCRIPTION,
i.ITEM,
ZNU.FULL_NAME,
zabd.DUTY_DEPART,
DFLT.DATA_TAG,
zab.NC_QTY,
zab.ENTITY_LOCATION,
ZNU1.FULL_NAME
)
SELECT
WORKCENTER,
SHOPORDER,
ITEM,
ITEM_NO,
WORK_ORDER,
PROJECT,
NC,
NC_QTY,
LISTAGG ( DATA_TAG, ',' ) WITHIN GROUP ( ORDER BY DATA_TAG ) AS DUTYDEPART,
"RESOURCE",
WORKCENTER_LIN,
METHOD,
ABNORMAL_NO,
CANCEL_REASON,
SFC,
FULL_NAME,
PB_DESCRIPTION,
ENTITY_LOCATION,
RESOLVE_USER
FROM
TEMP
GROUP BY
WORKCENTER,
SHOPORDER,
ITEM,
ITEM_NO,
WORK_ORDER,
PROJECT,
NC,
"RESOURCE",
WORKCENTER_LIN,
METHOD,
ABNORMAL_NO,
CANCEL_REASON,
SFC,
FULL_NAME,
PB_DESCRIPTION,
NC_QTY,
ENTITY_LOCATION,
RESOLVE_USER
</select>
<select id="findReplaceMessageResrce" resultType="java.util.HashMap">

@ -457,6 +457,13 @@ public class SfcDispatchServiceImpl extends ServiceImpl<SfcDispatchMapper, SfcDi
continue;
}
if (StringUtil.isBlank(sfcDispatchDto.getOther2()) || sfcDispatchDto.getOther2().equals("N")){
flag = false;
message.append(seq++ % 3 == 0 ? "\n" : "| |");
message.append("派工单[" + dispatchNo + "]没有维护物料去向信息!");
continue;
}
sfcDispatch.setHandle(handle);
//是否导入

@ -1009,7 +1009,7 @@
<!--根据工单找出工作令号,项目号,产品类别,计划工作中心有可能是查不见的-->
<select id="findByShopOrderBo" resultType="com.foreverwin.mesnac.meapi.dto.ShopOrderDto">
SELECT WO.VALUE WORK_ORDER,ITEM.VALUE ITEM_NUMBER,PC.VALUE PRODUCT_CATEGORY,WC.WORK_CENTER
SELECT SO.SHOP_ORDER,SO.STATUS_BO,WO.VALUE WORK_ORDER,ITEM.VALUE ITEM_NUMBER,PC.VALUE PRODUCT_CATEGORY,WC.WORK_CENTER
FROM SHOP_ORDER SO
LEFT JOIN CUSTOM_FIELDS WO ON WO.HANDLE = SO.HANDLE AND WO."ATTRIBUTE" = 'WORK_ORDER'
LEFT JOIN CUSTOM_FIELDS ITEM ON ITEM.HANDLE = SO.HANDLE AND ITEM."ATTRIBUTE" = 'ITEM_NUMBER'

@ -392,7 +392,7 @@
<select id="getAbnormalQty" resultType="com.foreverwin.mesnac.production.dto.SplitSfcDto">
SELECT zab.NC_QTY,zsbd.ROUTER_BO,zab.NC_CODE,zab.ABNORMAL_NO,zsbd.ABNORMAL_METHOD,zab.STEP_ID FROM Z_ABNORMAL_BILL zab
JOIN Z_ABNORMAL_BILL_DISPOSE zsbd ON zab.HANDLE=ZSBD.ABNORMAL_BILL_BO
WHERE ZAB.SFC=#{sfc} AND zab.ABNORMAL_NO=#{abnormalNo} AND zab.SITE=#{site} AND (zab.STATUS='G' OR zab.STATUS='F') AND zab."TYPE"='Z' AND (zsbd.ABNORMAL_METHOD='F' OR zsbd.ABNORMAL_METHOD='C')
WHERE ZAB.SFC=#{sfc} AND zab.ABNORMAL_NO=#{abnormalNo} AND zab.SITE=#{site} AND (zab.STATUS='G' OR zab.STATUS='F' OR zab.STATUS='J') AND zab."TYPE"='Z' AND (zsbd.ABNORMAL_METHOD='F' OR zsbd.ABNORMAL_METHOD='C')
</select>
<update id="updateSfcRouterInUse">

Loading…
Cancel
Save