瀏覽代碼

生产订单状态接口

18870042648 2 年之前
父節點
當前提交
772aa1d7a6

+ 13 - 0
ypff/META-INF/inter.upm

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding='gb2312'?>
+<module name="ypff">
+    <public>
+		<component priority="0" singleton="true" remote="true" tx="CMT" supportAlias="true">
+		<interface>nc.yp.dao.IUtilMaintain</interface>
+		<implementation>nc.bs.yp.impl.UtilMaintainImpl</implementation>
+		</component>
+		<component remote="true" singleton="true" tx="CMT">
+		<interface>nc.yp.dao.PomStatusMaintain</interface>
+		<implementation>nc.bs.yp.impl.PomStatusMaintainImpl</implementation>
+		</component>
+    </public>
+</module>

+ 3 - 6
ypff/META-INF/service.upm

@@ -10,12 +10,9 @@
  		<component name="Modify" accessProtected="false"  remote="true" singleton="true" tx="NONE" supportAlias="true">
        		<implementation>nc.bs.yp.impl.ModifyMaintianImpl</implementation>
  		</component>
- 		<component name="Pomstatus" accessProtected="false"  remote="true" singleton="true" tx="NONE" supportAlias="true">
-       		<implementation>nc.bs.yp.impl.PomUpdateStatusImpl</implementation>
- 		</component>
- 		<component priority="0" singleton="true" remote="true" tx="CMT" supportAlias="true">
-            <interface>nc.yp.dao.IUtilMaintain</interface>
-            <implementation>nc.bs.yp.impl.UtilMaintainImpl</implementation>
+		<component accessProtected="false" name="Pomstatus" remote="true" singleton="true" tx="CMT">
+            <interface>nc.bs.framework.adaptor.IHttpServletAdaptor</interface>
+            <implementation>nc.bs.yp.impl.PomUpdateStatusImpl</implementation>
         </component>
     </public>
 </module>

+ 27 - 0
ypff/ypff/src/private/nc/bs/yp/impl/PomStatusMaintainImpl.java

@@ -0,0 +1,27 @@
+package nc.bs.yp.impl;
+
+import nc.bs.framework.common.NCLocator;
+import nc.itf.mmpac.pickm.ppickm.IPpickmMaintainService;
+import nc.itf.mmpac.pmo.pac0002.IPMOMaintainService;
+import nc.vo.mmpac.pickm.entity.AggPickmVO;
+import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
+import nc.vo.pub.BusinessException;
+import nc.yp.dao.PomStatusMaintain;
+
+/**
+ * Éú²ú¶©µ¥¶ÀÁ¢ÊÂÎñ
+ * @author LP
+ *
+ */
+public class PomStatusMaintainImpl implements PomStatusMaintain {
+
+	@Override
+	public void PomStatus_RequiresNew(AggPickmVO PickmVO, PMOAggVO pmoVO) throws BusinessException {
+		
+		if (PickmVO.getParentVO().getFbillstatus()==1) {
+			NCLocator.getInstance().lookup(IPpickmMaintainService.class).unAuditPickm(new AggPickmVO[] {PickmVO});
+		}
+		NCLocator.getInstance().lookup(IPMOMaintainService.class).approveCancel(new PMOAggVO[] {pmoVO});
+		
+	}
+}

+ 104 - 33
ypff/ypff/src/private/nc/bs/yp/impl/PomUpdateStatusImpl.java

@@ -2,18 +2,28 @@ package nc.bs.yp.impl;
 
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.ArrayList;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import nc.bs.dao.BaseDAO;
 import nc.bs.framework.adaptor.IHttpServletAdaptor;
+import nc.bs.framework.common.InvocationInfoProxy;
 import nc.bs.framework.common.NCLocator;
+import nc.bs.framework.server.ISecurityTokenCallback;
 import nc.bs.servlet.service.BaseServlet;
-import nc.md.model.MetaDataException;
+import nc.itf.mmpac.pickm.IPickmMaintainService;
+import nc.itf.mmpac.pickm.dpickm.IDpickmMaintainService;
+import nc.itf.mmpac.pickm.ppickm.IPpickmMaintainService;
+import nc.itf.mmpac.pmo.pac0002.IPMOMaintainService;
+import nc.log.NcLog;
 import nc.md.persist.framework.IMDPersistenceQueryService;
+import nc.vo.mmpac.pickm.entity.AggPickmVO;
 import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
+import nc.yp.dao.IUtilMaintain;
+import nc.yp.dao.PomStatusMaintain;
 import net.sf.json.JSONObject;
 
 /**
@@ -26,32 +36,48 @@ public class PomUpdateStatusImpl extends BaseServlet implements IHttpServletAdap
 	
 	private static final String TURE = "0";
 	private static final String FALSE = "1";
-	private StringBuffer error = new StringBuffer();
 	private IMDPersistenceQueryService qryService = NCLocator.getInstance().lookup(IMDPersistenceQueryService.class);
-	private BaseDAO basedao = new BaseDAO();
+	private JSONObject p_data = null;
 
 	@Override
 	public void doAction(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 		
+		NCLocator.getInstance().lookup(ISecurityTokenCallback.class).token("NCSystem".getBytes(),"pfxx".getBytes());
+        InvocationInfoProxy.getInstance().setUserDataSource("syptest210103");
+		
+        String vbillcode = "";
+        String errorMessgae = "";
+        JSONObject logObject = new JSONObject();
 		String json = buildJson(req, resp, this.getClass().getName());
 		PrintWriter out = resp.getWriter();
-		
-		JSONObject p_data = JSONObject.fromObject(json);//获取报文
-		
-		if (!checkJson(p_data)) {
-			out.print(formatRSJsonData(FALSE, p_data.getString("vbillcode"), error.toString()));
-			out.flush();
-			out.close();
-		}
-		
+
 		try {
 			
-			String vbillcode = p_data.getString("vbillcode");//获取流程生产订单单号
-			PMOAggVO pmoAggVO = getPmoVO(vbillcode);
+			p_data = JSONObject.fromObject(json);//获取报文
+			
+			logObject.accumulate("InputDate", p_data);
+			
+			vbillcode = p_data.getString("vbillcode");//获取流程生产订单单号
+			
+			checkJson();//非空判断
+			
+			PMOAggVO pmoAggVO = getPmoVO(vbillcode);//获取生产订单AggVO
+			
+			approveUpdate(pmoAggVO);//更改状态
+			
 			out.print(formatRSJsonData(TURE, p_data.getString("vbillcode"), "成功"));
+			logObject.accumulate("OutDate", formatRSJsonData(TURE, p_data.getString("vbillcode"), "成功").toString());
+			
+		} catch (Exception e) {
 			
-		} catch (MetaDataException e) {
-			out.print(formatRSJsonData(FALSE, p_data.getString("vbillcode"), e.getMessage()==null?e.toString():e.getMessage().toString()));
+			String error = e.getMessage()==null?e.toString():e.getMessage().toString();
+			out.print(formatRSJsonData(FALSE, vbillcode, error));
+			logObject.accumulate("OutDate",formatRSJsonData(FALSE, vbillcode, error).toString());
+//			logObject.accumulate("ErrorMessage",StackTrace(e));
+			errorMessgae = StackTrace(e);
+			
+		}finally {
+			NcLog.info(logObject.toString()+"\r"+errorMessgae);
 			out.flush();
 			out.close();
 		}
@@ -61,43 +87,88 @@ public class PomUpdateStatusImpl extends BaseServlet implements IHttpServletAdap
 	/*
 	 * 非空判断
 	 */
-	private boolean checkJson(JSONObject p_data) {
+	private void checkJson() throws Exception {
 		
-		boolean check = true;
 		StringBuffer mags = new StringBuffer();
 		
 		String vbillcode = "vbillcode";//生产订单单号
+		String statusName = "statusName";//状态名称
  
-		String[] HeadKey = {vbillcode};
+		String[] HeadKey = {vbillcode,statusName};
 		
 		for (String as : HeadKey) {
 
 			if (p_data.getString(as).isEmpty()) {
-				mags.append("'" + as + "' ");
-				check = false;
+				mags.append("'" + as + "'");
 			}
 		}
 		
-		if (!check) {
-			error.append("以下字段不可为空:"+mags);
+		if (mags.length()!=0) {
+			throw new Exception("以下字段不可为空:"+mags);
 		}
-		return check;
 	}
 	
 	/*
-	 * 获取生产订单VO
+	 * 获取生产订单AggVO
 	 */
-	private PMOAggVO getPmoVO(String vbillcode) throws MetaDataException {
+	@SuppressWarnings("unchecked")
+	private PMOAggVO getPmoVO(String vbillcode) throws Exception {
 		
-		PMOAggVO pmoAggVO = (PMOAggVO) qryService.queryBillOfVOByCond(PMOAggVO.class, vbillcode,true,false);
+		ArrayList<PMOAggVO> PmoAggVOs = (ArrayList<PMOAggVO>) 
+				qryService.queryBillOfVOByCond(PMOAggVO.class,"vbillcode = '"+vbillcode+"'",true,false);
 		
-		if (pmoAggVO == null) {
-			error.append("根据单据号'"+vbillcode+"'未找到生产订单,请检查!");
-			return null;
+		if (PmoAggVOs == null || PmoAggVOs.size() == 0) {
+			throw new Exception("根据单据号'"+vbillcode+"'未找到生产订单,请检查!");
+		}else {
+			PMOAggVO pmoAggVO = (PMOAggVO) PmoAggVOs.get(0).clone();
+			return pmoAggVO;
 		}
+	}
+	
+	/*
+	 * 获取备料计划AggVO
+	 */
+	@SuppressWarnings("unchecked")
+	private AggPickmVO getPickmVO(String vfirstmocode) throws Exception {
 		
-		return pmoAggVO;
+		ArrayList<AggPickmVO> PickmAggVOs = (ArrayList<AggPickmVO>) 
+				qryService.queryBillOfVOByCond(AggPickmVO.class,"vfirstmocode = '"+vfirstmocode+"'",true,false);
 		
+		AggPickmVO aggPickmVO = (AggPickmVO) PickmAggVOs.get(0).clone();
+			return aggPickmVO;
 	}
-
+	
+	/*
+	 * 状态变更
+	 */
+	private void approveUpdate(PMOAggVO pmoAggVO) throws Exception {
+		
+		if (p_data.getString("statusName").equals("审批")) {
+			
+			NCLocator.getInstance().lookup(IPMOMaintainService.class).approve(new PMOAggVO[] {pmoAggVO});
+			
+		}else if (p_data.getString("statusName").equals("取消审批")) {
+			
+			AggPickmVO aggPickmVO = getPickmVO(p_data.getString("vbillcode"));
+			
+			PomStatusMaintain pomStatusMaintain = NCLocator.getInstance().lookup(PomStatusMaintain.class);
+			
+			pomStatusMaintain.PomStatus_RequiresNew(aggPickmVO, pmoAggVO);
+			
+		}else {
+			throw new Exception("status 只允许填写 '审批 '和 '未审批' !");
+		}
+		
+	}
+	
+	/*
+	 * 异常信息明细
+	 */
+	private String StackTrace(Exception e) {
+	    StringWriter sw = new StringWriter();
+	    PrintWriter pw = new PrintWriter(sw);
+	    e.printStackTrace(pw);
+	    return sw.toString();
+	}
+	
 }

+ 16 - 0
ypff/ypff/src/public/nc/yp/dao/PomStatusMaintain.java

@@ -0,0 +1,16 @@
+package nc.yp.dao;
+
+import nc.vo.mmpac.pickm.entity.AggPickmVO;
+import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
+import nc.vo.pub.BusinessException;
+
+/**
+ * Éú²ú¶©µ¥¶ÀÁ¢ÊÂÎñ
+ * @author LP
+ *
+ */
+public interface PomStatusMaintain {
+
+	void PomStatus_RequiresNew(AggPickmVO PickmVO,PMOAggVO pmoVO)throws BusinessException;
+	
+}