|
@@ -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
|