Pārlūkot izejas kodu

批次号报错还新增修改

pancy 1 gadu atpakaļ
vecāks
revīzija
8f4fe0c290

+ 134 - 71
scmpub/scmpub/src/private/nc/bs/scmpub/impl/BatchCodeAddImpl.java

@@ -3,11 +3,15 @@ package nc.bs.scmpub.impl;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.util.Arrays;
+import java.util.List;
 
 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;
@@ -16,6 +20,7 @@ import nc.bs.servlet.test.service.BaseServlet;
 import nc.impl.scmf.ic.mbatchcode.BatchcodeMaintainImpl;
 import nc.itf.scmf.ic.mbatchcode.IBatchcodeMaintainService;
 import nc.itf.uap.IUAPQueryBS;
+import nc.jdbc.framework.processor.ColumnListProcessor;
 import nc.jdbc.framework.processor.ColumnProcessor;
 import nc.pub.test.util.DataSourceUtil;
 import nc.vo.bd.meta.BatchOperateVO;
@@ -27,85 +32,138 @@ import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 
 //批次号档案接口
-public class BatchCodeAddImpl extends BaseServlet implements IHttpServletAdaptor {
+public class BatchCodeAddImpl extends BaseServlet implements
+		IHttpServletAdaptor {
+
+	BaseDAO db = new BaseDAO();
+	IUAPQueryBS iuap = (IUAPQueryBS) NCLocator.getInstance().lookup(
+			IUAPQueryBS.class.getName());
+	String id = "";
+	JSONArray arrys;
 
-	IUAPQueryBS iuap= (IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());
-	
 	@Override
 	public void doAction(HttpServletRequest req, HttpServletResponse resp)
 			throws ServletException, IOException {
 		// TODO 自动生成的方法存根
+		arrys = new JSONArray();
 		try {
 			DataSourceUtil.setDataSource();
-			InvocationInfoProxy.getInstance().setGroupId(this.qryGroup());
-			NCLocator.getInstance().lookup(ISecurityTokenCallback.class).token("NCSystem".getBytes(),"pfxx".getBytes());
-			String createStr = buildJson(req, resp, this.getClass().getName());
-			JSONObject json = JSONObject.fromObject(createStr);
-			JSONArray results = json.getJSONArray("results");
-			PrintWriter out = resp.getWriter();
-			StringBuffer returnstr = new StringBuffer();
-			for(int i=0;i<results.size();i++){
-				JSONObject obj = (JSONObject) results.get(i);
-				String checkresult = checkJson(obj);//非空判断
-				if(!(checkresult.equals("")||checkresult.equals(null))){
-					returnstr.append("第"+i+"条记录"+checkresult+";");
+		} catch (BusinessException e) {
+			// TODO 自动生成的 catch 块
+		}
+		InvocationInfoProxy.getInstance().setGroupId(this.qryGroup());
+		NCLocator.getInstance().lookup(ISecurityTokenCallback.class)
+				.token("NCSystem".getBytes(), "pfxx".getBytes());
+		String createStr = buildJson(req, resp, this.getClass().getName());
+		JSONObject json = JSONObject.fromObject(createStr);
+		JSONArray results = json.getJSONArray("results");
+		PrintWriter out = resp.getWriter();
+		StringBuffer returnstr = new StringBuffer();
+
+		for (int i = 0; i < results.size(); i++) {
+			JSONObject obj = (JSONObject) results.get(i);
+			id = obj.getString("id");
+			String checkresult;
+			try {
+				checkresult = checkJson(obj);
+				if (!(checkresult.equals("") || checkresult.equals(null))) {
+					JSONObject jsonobj = new JSONObject();
+					jsonobj.put("status", "失败");
+					jsonobj.put("id", obj.getString("id"));
+					jsonobj.put("message", "第" + i + "条记录" + checkresult + ";");
+					arrys.add(jsonobj);
 					continue;
 				}
-				String vbatchcode = obj.getString("vbatchcode");
-				BatchOperateVO operatevo = new BatchOperateVO();
-				BatchcodeVO[] vos = new BatchcodeVO[1];
-				BatchcodeVO batchcodevo = new BatchcodeVO();
-				batchcodevo.setVbatchcode(vbatchcode);
-				batchcodevo.setCmaterialoid(SqlexecuteQuery("pk_material", "bd_material", "code", obj.getString("cmaterialoid")));
-				batchcodevo.setCmaterialvid(SqlexecuteQuery("pk_source", "bd_material", "code", obj.getString("cmaterialoid")));
-				batchcodevo.setDinbounddate(new UFDate(obj.getString("dinbounddate")));
-				batchcodevo.setDproducedate(new UFDate(obj.getString("dproducedate")));
-				batchcodevo.setDvalidate(new UFDate(obj.getString("dvalidate")));
-				batchcodevo.setPk_group(this.qryGroup());
-				vos[0] = batchcodevo;
-				operatevo.setAddObjs(vos);
-				BatchcodeMaintainImpl impl = new BatchcodeMaintainImpl();
+			} catch (Exception e) {
+				// TODO 自动生成的 catch 块
+			}// 非空判断
+			String code = obj.getString("cmaterialoid");
+			String vbatchcode = obj.getString("vbatchcode");
+			BatchOperateVO operatevo = new BatchOperateVO();
+			BatchcodeVO[] vos = new BatchcodeVO[1];
+			BatchcodeVO batchcodevo = new BatchcodeVO();
+			batchcodevo.setVbatchcode(vbatchcode);
+			String pk_material = "";
+			try {
+				pk_material = SqlexecuteQuery("pk_material",
+						"bd_material", "code", code);
+				batchcodevo.setCmaterialoid(pk_material);
+			} catch (Exception e) {
+				// TODO 自动生成的 catch 块
+			}
+			try {
+				batchcodevo.setCmaterialvid(SqlexecuteQuery("pk_source",
+						"bd_material", "code", obj.getString("cmaterialoid")));
+			} catch (Exception e) {
+				// TODO 自动生成的 catch 块
+			}
+			batchcodevo.setDinbounddate(new UFDate(obj
+					.getString("dinbounddate")));
+			batchcodevo.setDproducedate(new UFDate(obj
+					.getString("dproducedate")));
+			batchcodevo.setDvalidate(new UFDate(obj.getString("dvalidate")));
+			batchcodevo.setPk_group(this.qryGroup());
+			vos[0] = batchcodevo;
+			operatevo.setAddObjs(vos);
+			
+			//唯一性校验
+			String qrysql = "select count(*) from scm_batchcode where cmaterialoid = '"+pk_material+"' and vbatchcode = '"+vbatchcode+"' and dr = 0";
+			try {
+				List<Object> returnnum =  (List<Object>) iuap.executeQuery(qrysql,new ColumnListProcessor());
+				if(!returnnum.get(0).toString().equals("0")){
+					JSONObject jsonobj = new JSONObject();
+					jsonobj.put("status", "失败");
+					jsonobj.put("id", obj.getString("id"));
+					jsonobj.put("message", "物料"+code+"批次号"+vbatchcode+"重复!,不能保存。");
+					arrys.add(jsonobj);
+					continue;
+				}
+			} catch (BusinessException e1) {
+				// TODO 自动生成的 catch 块
+				e1.printStackTrace();
+			}
+			BatchcodeMaintainImpl impl = new BatchcodeMaintainImpl();
+			try {
 				impl.batchSave(operatevo);
-				returnstr.append("第"+i+"条记录成功,批次号为"+vbatchcode+";");
+			} catch (BusinessException e) {
+				// TODO 自动生成的 catch 块
+				
+				JSONObject jsonobj = new JSONObject();
+				jsonobj.put("status", "失败");
+				jsonobj.put("id", id);
+				jsonobj.put("message", e.getMessage());
+				arrys.add(jsonobj);
+				continue;
 			}
-			resp.getWriter().write(formatRSJsonData("成功",
-					returnstr.toString(),"").toString());
-			return;
-		} catch (BusinessException e) {
-			// TODO 自动生成的 catch 块
-			resp.getWriter().write(formatRSJsonData("失败",
-				     e.getMessage().toString(),"").toString());
-			StringWriter stringWriter = new StringWriter();
-			e.printStackTrace(new PrintWriter(stringWriter));
-			//获取详细信息
-			String msg=stringWriter.getBuffer().toString();
-		} catch (Exception e) {
-			// TODO 自动生成的 catch 块
-			resp.getWriter().write(formatRSJsonData("失败",
-				     e.getMessage().toString(),"").toString());
-			StringWriter stringWriter = new StringWriter();
-			e.printStackTrace(new PrintWriter(stringWriter));
-			//获取详细信息
-			String msg=stringWriter.getBuffer().toString();
+			
+			JSONObject jsonobj = new JSONObject();
+			jsonobj.put("status", "成功");
+			jsonobj.put("id", obj.getString("id"));
+			jsonobj.put("message", "第" + i + "条记录成功,批次号为" + vbatchcode + ";");
+			arrys.add(jsonobj);
 		}
+
+		resp.getWriter().write(arrys.toString());
+		return;
 	}
 
 	/*
 	 * 非空判断
 	 */
 	private String checkJson(JSONObject json) throws Exception {
-		
+
 		StringBuffer mags = new StringBuffer();
 		Boolean empty = true;
-		
-		String vbatchcode = "vbatchcode";//批次号
-		String cmaterialoid = "cmaterialoid";//物料编码
-		String dinbounddate = "dinbounddate";//首次入库日期
-		String dproducedate = "dproducedate";//生产日期
-		String dvalidate = "dvalidate";//失效日期
- 
-		String[] HeadKey = {vbatchcode,cmaterialoid,dinbounddate,dproducedate,dvalidate};
-		
+
+		String vbatchcode = "vbatchcode";// 批次号
+		String cmaterialoid = "cmaterialoid";// 物料编码
+		String dinbounddate = "dinbounddate";// 首次入库日期
+		String dproducedate = "dproducedate";// 生产日期
+		String dvalidate = "dvalidate";// 失效日期
+
+		String[] HeadKey = { vbatchcode, cmaterialoid, dinbounddate,
+				dproducedate, dvalidate };
+
 		for (String as : HeadKey) {
 
 			if (json.getString(as).isEmpty()) {
@@ -113,15 +171,16 @@ public class BatchCodeAddImpl extends BaseServlet implements IHttpServletAdaptor
 				mags.append("'" + as + "'");
 			}
 		}
-		
+
 		if (!empty) {
-			return "以下字段不可为空:"+mags;
+			return "以下字段不可为空:" + mags;
 		}
 		return "";
 	}
-	
+
 	/**
 	 * 数据库查询
+	 * 
 	 * @param out
 	 * @param table
 	 * @param key
@@ -129,17 +188,20 @@ public class BatchCodeAddImpl extends BaseServlet implements IHttpServletAdaptor
 	 * @return
 	 * @throws Exception
 	 */
-	private String SqlexecuteQuery(String out,String table,String key,String value) throws Exception {
-		
-		String sql = "select "+out+" from "+table+" where "+key+" = '"+value+"' and nvl(dr,0)=0 and enablestate = '2' and latest = 'Y'";
-		
+	private String SqlexecuteQuery(String out, String table, String key,
+			String value) throws Exception {
+
+		String sql = "select " + out + " from " + table + " where " + key
+				+ " = '" + value
+				+ "' and nvl(dr,0)=0 and enablestate = '2' and latest = 'Y'";
+
 		Object object;
 		try {
 			object = iuap.executeQuery(sql, new ColumnProcessor());
-			if (object==null) {
-				throw new Exception("未查询到数据!请检查编码"+value+"是否正确!");
+			if (object == null) {
+				throw new Exception("未查询到数据!请检查编码" + value + "是否正确!");
 			}
-			
+
 			return object.toString();
 		} catch (BusinessException e) {
 			// TODO Auto-generated catch block
@@ -148,16 +210,17 @@ public class BatchCodeAddImpl extends BaseServlet implements IHttpServletAdaptor
 		}
 	}
 
-	
 	/**
 	 * 获取集团id
+	 * 
 	 * @return
 	 */
 	private String qryGroup() {
 		String qrysql = "select pk_group from org_group where nvl(dr,0)=0 and rownum = 1";
 		String pk_group;
 		try {
-			pk_group = (String) iuap.executeQuery(qrysql, new ColumnProcessor());
+			pk_group = (String) iuap
+					.executeQuery(qrysql, new ColumnProcessor());
 			return pk_group;
 		} catch (BusinessException e) {
 			// TODO Auto-generated catch block