|
|
@@ -728,28 +728,117 @@ public class MESHelperServiceImpl implements MESHelperService {
|
|
|
}
|
|
|
iSN=map.get("iSN").toString();
|
|
|
|
|
|
- SqlRowList rs = baseDao.queryForRowSet("select ms_id,ms_craftcode,ms_prodcode,ms_status,ms_stepcode,ms_nextstepcode from "+Master+".makeserial where ms_id=( select max(ms_id) from "+Master+".makeserial where ms_sncode in ( select '" + iSN + "' from dual union select sn from "+Master+".makesnrelation where beforesn='" + iSN + "' and sn<>' ' union select beforesn from "+Master+".makesnrelation where sn='" + iSN + "' and beforesn<>' '))");
|
|
|
- String ms_status = "";
|
|
|
- String ms_craftcode = "";
|
|
|
- String ms_prodcode = "";
|
|
|
- String ms_id = "";
|
|
|
+ //回流工序,替代客户端cd_stepcode.Text
|
|
|
+ if(map.get("iStepCode")==null){
|
|
|
+ oErrMessage = "回流工序不能为空";
|
|
|
+ rmap.put("oErrMessage",oErrMessage);
|
|
|
+ return rmap;
|
|
|
+ }
|
|
|
+ String iStepCode=map.get("iStepCode").toString();
|
|
|
|
|
|
+ //操作人,对应客户端User.UserCode
|
|
|
+ String iUserCode="";
|
|
|
+ if(map.get("iUserCode")!=null){
|
|
|
+ iUserCode=map.get("iUserCode").toString();
|
|
|
+ }
|
|
|
+ //岗位资源,对应客户端User.UserSourceCode
|
|
|
+ String iSourceCode="";
|
|
|
+ if(map.get("iSourceCode")!=null){
|
|
|
+ iSourceCode=map.get("iSourceCode").toString();
|
|
|
+ }
|
|
|
|
|
|
+ //取该SN最新一条记录,校验是否允许回流
|
|
|
+ SqlRowList rs=baseDao.queryForRowSet("select ms_id,ms_makecode,ms_craftcode,ms_prodcode,ms_status,ms_paststep," +
|
|
|
+ "nvl(ms_isactive,0)ms_isactive,nvl(ms_qccheck,0)ms_qccheck,nvl(ms_ifqccheck,0)ms_ifqccheck," +
|
|
|
+ "nvl(ms_outstatus,0)ms_outstatus,nvl(pr_ifrepaircheck,0)pr_ifrepaircheck " +
|
|
|
+ "from "+Master+".makeserial left join "+Master+".product on pr_code=ms_prodcode " +
|
|
|
+ "where ms_sncode='"+iSN+"' order by ms_id desc");
|
|
|
+ String ms_id="";
|
|
|
+ String ms_makecode="";
|
|
|
+ String ms_paststep="";
|
|
|
if(rs.next()){
|
|
|
- ms_id= rs.getString("ms_id");
|
|
|
- ms_craftcode=rs.getString("ms_craftcode");
|
|
|
- ms_prodcode=rs.getString("ms_prodcode");
|
|
|
+ ms_id=rs.getString("ms_id");
|
|
|
+ ms_makecode=rs.getString("ms_makecode");
|
|
|
+ ms_paststep=rs.getString("ms_paststep")==null?"":rs.getString("ms_paststep");
|
|
|
+ //已执行的工序才允许回流
|
|
|
+ if(!ms_paststep.contains(iStepCode)){
|
|
|
+ oErrMessage = "序列号" + iSN + "不允许回流到未执行工序";
|
|
|
+ rmap.put("oErrMessage",oErrMessage);
|
|
|
+ return rmap;
|
|
|
+ }
|
|
|
+ //已出货不允许回流
|
|
|
+ if("-1".equals(rs.getString("ms_outstatus"))){
|
|
|
+ oErrMessage = "序列号" + iSN + "已出货不允许回流";
|
|
|
+ rmap.put("oErrMessage",oErrMessage);
|
|
|
+ return rmap;
|
|
|
+ }
|
|
|
+ //Key已激活不允许回流
|
|
|
+ if("-1".equals(rs.getString("ms_isactive"))){
|
|
|
+ oErrMessage = "序列号" + iSN + "Key已激活不允许回流";
|
|
|
+ rmap.put("oErrMessage",oErrMessage);
|
|
|
+ return rmap;
|
|
|
+ }
|
|
|
+ //抽检状态不允许重置站点
|
|
|
+ if(("-1".equals(rs.getString("ms_qccheck")) && "-1".equals(rs.getString("pr_ifrepaircheck")))
|
|
|
+ || "-1".equals(rs.getString("ms_ifqccheck"))){
|
|
|
+ oErrMessage = "序列号" + iSN + "处于抽检状态,不允许重置站点";
|
|
|
+ rmap.put("oErrMessage",oErrMessage);
|
|
|
+ return rmap;
|
|
|
+ }
|
|
|
}else {
|
|
|
- oErrMessage = "SN不存在";
|
|
|
+ oErrMessage = "序列号" + iSN + "不存在";
|
|
|
rmap.put("oErrMessage",oErrMessage);
|
|
|
return rmap;
|
|
|
}
|
|
|
|
|
|
- Object firststep=baseDao.getFieldDataByCondition("craft left join craftdetail on cr_id=cd_crid","cd_stepcode","cr_code='"+ms_craftcode+"' and cr_prodcode='"+ms_prodcode+"' and cd_firststep=-1");
|
|
|
- if(firststep!=null){
|
|
|
- baseDao.execute("update makeserial set ms_nextstepcode=? where ms_id=?",firststep,ms_id);
|
|
|
+ //取回流工序在工艺路线中的执行顺序,用于判断用料表需要拆解的项次
|
|
|
+ Object stepno=baseDao.getFieldDataByCondition(Master+".craft left join "+Master+".craftdetail on cr_id=cd_crid",
|
|
|
+ "cd_stepno","cr_code=(select ms_craftcode from "+Master+".makeserial where ms_id='"+ms_id+"') " +
|
|
|
+ "and cr_prodcode=(select ms_prodcode from "+Master+".makeserial where ms_id='"+ms_id+"') " +
|
|
|
+ "and cd_stepcode='"+iStepCode+"'");
|
|
|
+ String cd_stepno=stepno==null?"":stepno.toString();
|
|
|
+ if("".equals(cd_stepno)){
|
|
|
+ oErrMessage = "工序" + iStepCode + "不在该SN的工艺路线中";
|
|
|
+ rmap.put("oErrMessage",oErrMessage);
|
|
|
+ return rmap;
|
|
|
}
|
|
|
+
|
|
|
+ //工序名称,用于记录操作日志
|
|
|
+ Object stname=baseDao.getFieldDataByCondition(Master+".step","st_name","st_code='"+iStepCode+"'");
|
|
|
+ String st_name=stname==null?"":stname.toString();
|
|
|
+
|
|
|
+ StringBuffer sql=new StringBuffer();
|
|
|
+ List<String> sqls=new ArrayList<String>();
|
|
|
+ //重置makeserial,ms_paststep截断到回流工序之前
|
|
|
+ sql.append("update "+Master+".makeserial set ms_status=1,ms_outboxcode='',ms_printcount=0,ms_stepcode='',ms_nextstepcode='"+iStepCode+"',");
|
|
|
+ sql.append("ms_paststep=case when instr(ms_paststep,'"+iStepCode+"')>0 then substr(ms_paststep,0,instr(ms_paststep,'"+iStepCode+"')-2) else ms_paststep end ");
|
|
|
+ sql.append("where ms_sncode='"+iSN+"' and ms_makecode='"+ms_makecode+"'");
|
|
|
+ sqls.add(sql.toString());
|
|
|
+ //删除未处理的不良记录
|
|
|
+ sql.setLength(0);
|
|
|
+ sql.append("delete "+Master+".makebad where mb_sncode='"+iSN+"' and mb_makecode='"+ms_makecode+"' and mb_status=0");
|
|
|
+ sqls.add(sql.toString());
|
|
|
+ //删除标签打印记录
|
|
|
+ sql.setLength(0);
|
|
|
+ sql.append("delete "+Master+".labelprintlog where lpl_value='"+iSN+"'");
|
|
|
+ sqls.add(sql.toString());
|
|
|
+ //拆解用料表,回流工序及之后已上料的明细置为拆解状态
|
|
|
+ sql.setLength(0);
|
|
|
+ sql.append("update "+Master+".craftmaterial set cm_status=-1,cm_lastdeco=-1,cm_dropman='"+iUserCode+"',");
|
|
|
+ sql.append("cm_dropdate=sysdate,CM_REMARK='重置站点拆解',cm_dropstep='"+iStepCode+"',");
|
|
|
+ sql.append("cm_dropsccode='"+iSourceCode+"' where cm_sncode='"+iSN+"' and cm_makecode='"+ms_makecode+"' ");
|
|
|
+ sql.append("and cm_stepcode in (select cd_stepcode from "+Master+".craftdetail left join "+Master+".step on st_code=cd_stepcode " +
|
|
|
+ "left join "+Master+".craft on cd_crid=cr_id where ST_STATUSCODE='AUDITED' " +
|
|
|
+ "and cr_code=(select ms_craftcode from "+Master+".makeserial where ms_id='"+ms_id+"') " +
|
|
|
+ "and cr_prodcode=(select ms_prodcode from "+Master+".makeserial where ms_id='"+ms_id+"') " +
|
|
|
+ "and cd_detno>="+cd_stepno+")");
|
|
|
+ sqls.add(sql.toString());
|
|
|
+ //同一次提交内完成重置,避免中途失败导致数据不一致
|
|
|
+ baseDao.execute(sqls);
|
|
|
+
|
|
|
rmap.put("oErrMessage",null);
|
|
|
+ rmap.put("oStepName",st_name);
|
|
|
+ rmap.put("oMakeCode",ms_makecode);
|
|
|
return rmap;
|
|
|
}
|
|
|
|