Przeglądaj źródła

工序完工报告初始化

18870042648 2 lat temu
rodzic
commit
e3ffbc2d44

+ 4 - 0
ypff/META-INF/service.upm

@@ -14,5 +14,9 @@
             <interface>nc.bs.framework.adaptor.IHttpServletAdaptor</interface>
             <implementation>nc.bs.yp.impl.PomUpdateStatusImpl</implementation>
         </component>
+        <component accessProtected="false" name="Oprep" remote="true" singleton="true" tx="CMT">
+            <interface>nc.bs.framework.adaptor.IHttpServletAdaptor</interface>
+            <implementation>nc.bs.yp.impl.OprepAddImpl</implementation>
+        </component>
     </public>
 </module>

+ 247 - 0
ypff/ypff/src/private/nc/bs/yp/impl/OprepAddImpl.java

@@ -0,0 +1,247 @@
+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.dao.DAOException;
+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.pub.pf.PfUtilTools;
+import nc.bs.servlet.service.BaseServlet;
+import nc.itf.mmsfc.operationrep.IOprepMaintain;
+import nc.jdbc.framework.processor.ColumnProcessor;
+import nc.log.NcLog;
+import nc.md.persist.framework.IMDPersistenceQueryService;
+import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
+import nc.vo.mmsfc.operationrep.entity.AggOprepVO;
+import nc.vo.mmsfc.operationrep.entity.OprepItemVO;
+import nc.vo.mmsfc.operationrep.entity.OprepVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.VOStatus;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+/**
+ * 工序完工报告
+ * @author LP
+ *
+ */
+@SuppressWarnings("restriction")
+public class OprepAddImpl extends BaseServlet implements IHttpServletAdaptor {
+	
+	private static final String TURE = "0";
+	private static final String FALSE = "1";
+	private IMDPersistenceQueryService qryService = NCLocator.getInstance().lookup(IMDPersistenceQueryService.class);
+	private BaseDAO dao = 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();
+        logObject.accumulate("InterName","工序完工报告");
+		String json = buildJson(req, resp, this.getClass().getName());
+		PrintWriter out = resp.getWriter();
+
+		try {
+			
+			p_data = JSONObject.fromObject(json);//获取报文
+			
+			logObject.accumulate("InputDate", p_data);
+			
+			vbillcode = p_data.getString("vbillcode");//获取流程生产订单单号
+			
+			checkJson();//非空判断
+			
+			InvocationInfoProxy.getInstance().setGroupId(SqlexecuteQuery("pk_group", "org_group", "code", p_data.getString("group")));
+			InvocationInfoProxy.getInstance().setUserId(SqlexecuteQuery("cuserid", "sm_user", "user_code", p_data.getString("creator")));
+			
+			AggOprepVO aggOprepVO = getAggOprepVO(vbillcode);
+			
+			addAggOprepVO(aggOprepVO);
+			
+			out.print(formatRSJsonData(TURE, p_data.getString("vbillcode"), "成功"));
+			logObject.accumulate("OutDate", formatRSJsonData(TURE, p_data.getString("vbillcode"), "成功").toString());
+			
+		} catch (Exception e) {
+			
+			String error = e.getMessage()==null?e.toString():e.getMessage().toString();
+			out.print(formatRSJsonData(FALSE, vbillcode, error));
+			logObject.accumulate("OutDate",formatRSJsonData(FALSE, vbillcode, error).toString());
+			errorMessgae = StackTrace(e);
+			
+		}finally {
+			NcLog.info(logObject.toString()+"\r"+errorMessgae);
+			out.flush();
+			out.close();
+		}
+		
+	}
+	
+	/*
+	 *新增addAggOprepVO()
+	 */
+	private void addAggOprepVO(AggOprepVO aggOprepVO) throws BusinessException {
+		
+		AggOprepVO newAggOprepVO = new AggOprepVO();
+		
+		OprepVO parentVO = aggOprepVO.getParentVO();
+		OprepItemVO[] childrenVO = aggOprepVO.getChildrenVO();
+		
+		//--------------------------表头组装OprepVO-------------------------
+		
+		parentVO.setStatus(VOStatus.NEW);
+		
+		newAggOprepVO.setParentVO(parentVO);
+		
+		//--------------------------表体组装OprepVO-------------------------
+		
+		JSONArray bodyArray = p_data.getJSONArray("body");
+		
+		for (OprepItemVO oprepItemVO : childrenVO) {
+			
+			for (Object Object : bodyArray) {
+				
+				JSONObject bodyObject = JSONObject.fromObject(Object);
+				
+				String cmaterialCode = bodyObject.getString("cmaterialvid");
+				
+				String cmaterialPk = SqlexecuteQuery("pk_material", "bd_material", "code", cmaterialCode);
+				
+				if (cmaterialPk.equals(oprepItemVO.getCbmaterialvid())) {
+					
+					oprepItemVO.setStatus(VOStatus.NEW);
+					
+				}
+			}
+		}
+		
+		newAggOprepVO.setChildrenVO(childrenVO);
+		
+		//--------------------------保存OperepVO----------------------------
+		
+		NCLocator.getInstance().lookup(IOprepMaintain.class).insertOprep(new AggOprepVO[] {newAggOprepVO});
+		
+	}
+	
+	/*
+	 * 转单
+	 */
+	private AggOprepVO getAggOprepVO(String vbillcode) throws Exception {
+		
+		PMOAggVO pmoAggVO = getPmoVO(vbillcode);
+		
+		AggOprepVO oprepVO = (AggOprepVO) PfUtilTools.runChangeData("55E8", "55D2", pmoAggVO);
+		
+		return oprepVO;
+	}
+	
+	/*
+	 * 非空判断
+	 */
+	private void checkJson() throws Exception {
+		
+		StringBuffer mags = new StringBuffer();
+		
+		String vbillcode = "vbillcode";//生产订单单号
+		String group = "group";//集团编码
+		String creator = "creator";//创建人
+ 
+		String[] HeadKey = {vbillcode,group,creator};
+		
+		for (String as : HeadKey) {
+
+			if (p_data.getString(as).isEmpty()) {
+				mags.append("'" + as + "'");
+			}
+		}
+		
+//----------------------------------------------------------
+		
+		JSONArray oprepObjectBs = p_data.getJSONArray("body");
+		
+		if (oprepObjectBs == null || oprepObjectBs.size() == 0) {
+			throw new Exception("表体不可为空!");
+		}
+		
+		String cmaterialvid = "cmaterialvid";//物料编码
+		
+		for(int i = 0; i < oprepObjectBs.size(); i++) {
+			
+			JSONObject oprepJsonObjectB = oprepObjectBs.getJSONObject(i);
+			String[] BodyKey = {cmaterialvid};
+			int num = i+1;
+			
+			mags.append("第"+num+"块表体:{");
+			for (String as : BodyKey) {
+
+				if (oprepJsonObjectB.getString(as).isEmpty()) {
+					mags.append("'" + as + "' ");
+				}
+			}
+			mags.append("}");
+		}
+		
+		if (mags.length()!=0) {
+			throw new Exception("以下字段不可为空:"+mags);
+		}
+	}
+	
+	/*
+	 * 获取生产订单AggVO
+	 */
+	@SuppressWarnings("unchecked")
+	private PMOAggVO getPmoVO(String vbillcode) throws Exception {
+		
+		ArrayList<PMOAggVO> PmoAggVOs = (ArrayList<PMOAggVO>) 
+				qryService.queryBillOfVOByCond(PMOAggVO.class,"vbillcode = '"+vbillcode+"'",true,false);
+		
+		if (PmoAggVOs == null || PmoAggVOs.size() == 0) {
+			throw new Exception("根据单据号'"+vbillcode+"'未找到生产订单,请检查!");
+		}else {
+			PMOAggVO pmoAggVO = (PMOAggVO) PmoAggVOs.get(0).clone();
+			return pmoAggVO;
+		}
+	}
+
+	/*
+	 * 异常信息明细
+	 */
+	private String StackTrace(Exception e) {
+	    StringWriter sw = new StringWriter();
+	    PrintWriter pw = new PrintWriter(sw);
+	    e.printStackTrace(pw);
+	    return sw.toString();
+	}
+	
+	/*
+	 * 数据库查询
+	 */
+	private String SqlexecuteQuery(String out,String table,String key,String value) throws DAOException {
+		
+		String sql = "select "+out+" from "+table+" where "+key+" = '"+value+"'";
+		
+		Object object = dao.executeQuery(sql, new ColumnProcessor());
+		
+		if (object==null) {
+			throw new DAOException("未查询到数据!请检查编码"+value+"是否正确!");
+		}
+		
+		return object.toString();
+		
+	}
+}

+ 28 - 9
ypff/ypff/src/private/nc/bs/yp/impl/PomUpdateStatusImpl.java

@@ -9,21 +9,20 @@ import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import nc.bs.dao.BaseDAO;
+import nc.bs.dao.DAOException;
 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.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.jdbc.framework.processor.ColumnProcessor;
 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;
 
 /**
@@ -37,6 +36,7 @@ public class PomUpdateStatusImpl extends BaseServlet implements IHttpServletAdap
 	private static final String TURE = "0";
 	private static final String FALSE = "1";
 	private IMDPersistenceQueryService qryService = NCLocator.getInstance().lookup(IMDPersistenceQueryService.class);
+	private BaseDAO dao = new BaseDAO();
 	private JSONObject p_data = null;
 
 	@Override
@@ -48,6 +48,7 @@ public class PomUpdateStatusImpl extends BaseServlet implements IHttpServletAdap
         String vbillcode = "";
         String errorMessgae = "";
         JSONObject logObject = new JSONObject();
+        logObject.accumulate("InterName","生产订单修改库存状态");
 		String json = buildJson(req, resp, this.getClass().getName());
 		PrintWriter out = resp.getWriter();
 
@@ -63,8 +64,8 @@ public class PomUpdateStatusImpl extends BaseServlet implements IHttpServletAdap
 			
 			PMOAggVO pmoAggVO = getPmoVO(vbillcode);//获取生产订单AggVO
 			
-			InvocationInfoProxy.getInstance().setGroupId("0001V5100000000006BX");
-			InvocationInfoProxy.getInstance().setUserId("1001V710000000AECSBZ");
+			InvocationInfoProxy.getInstance().setGroupId(SqlexecuteQuery("pk_group", "org_group", "code", p_data.getString("group")));
+			InvocationInfoProxy.getInstance().setUserId(SqlexecuteQuery("cuserid", "sm_user", "user_code", p_data.getString("creator")));
 			
 			approveUpdate(pmoAggVO);//更改状态
 			
@@ -76,7 +77,6 @@ public class PomUpdateStatusImpl extends BaseServlet implements IHttpServletAdap
 			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 {
@@ -96,8 +96,10 @@ public class PomUpdateStatusImpl extends BaseServlet implements IHttpServletAdap
 		
 		String vbillcode = "vbillcode";//生产订单单号
 		String statusName = "statusName";//状态名称
+		String group = "group";//集团编码
+		String creator = "creator";//创建人
  
-		String[] HeadKey = {vbillcode,statusName};
+		String[] HeadKey = {vbillcode,statusName,group,creator};
 		
 		for (String as : HeadKey) {
 
@@ -162,7 +164,7 @@ public class PomUpdateStatusImpl extends BaseServlet implements IHttpServletAdap
 			NCLocator.getInstance().lookup(IPMOMaintainService.class).approveCancel(new PMOAggVO[] {pmoAggVO});
 			
 		}else {
-			throw new Exception("status 只允许填写 '审批 '和 '未审批' !");
+			throw new Exception("status 只允许填写 '审批 '和 '未审批' ,请检查数据'"+p_data.getString("statusName")+"'的合法性或编码格式是否正确!");
 		}
 		
 	}
@@ -177,4 +179,21 @@ public class PomUpdateStatusImpl extends BaseServlet implements IHttpServletAdap
 	    return sw.toString();
 	}
 	
+	/*
+	 * 数据库查询
+	 */
+	private String SqlexecuteQuery(String out,String table,String key,String value) throws DAOException {
+		
+		String sql = "select "+out+" from "+table+" where "+key+" = '"+value+"'";
+		
+		Object object = dao.executeQuery(sql, new ColumnProcessor());
+		
+		if (object==null) {
+			throw new DAOException("未查询到数据!请检查编码"+value+"是否正确!");
+		}
+		
+		return object.toString();
+		
+	}
+	
 }