|
@@ -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();
|
|
|
+ }
|
|
|
+
|
|
|
}
|