123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319 |
- package u8c.impl;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.transaction.UserTransaction;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.microsoft.sqlserver.jdbc.StringUtils;
- import nc.bs.dao.BaseDAO;
- import nc.bs.framework.adaptor.IHttpServletAdaptor;
- import nc.bs.framework.common.NCLocator;
- import nc.bs.pub.billcodemanage.BillcodeGenerater;
- import nc.itf.uap.IUAPQueryBS;
- import nc.jdbc.framework.processor.ColumnProcessor;
- import nc.vo.jcom.lang.StringUtil;
- import nc.vo.pub.BusinessException;
- import nc.vo.pub.CircularlyAccessibleValueObject;
- import nc.vo.pub.lang.UFDate;
- import nc.vo.pub.lang.UFDouble;
- import nc.vo.trade.pub.IBillStatus;
- import u8c.bs.servlet.service.BaseServlet;
- import u8c.bs.servlet.service.GetBaseDAOUtil;
- import u8c.itf.po.IDemandPurchaseRequisition;
- import u8c.log.NcLog;
- import u8c.vo.DemandBVO;
- import u8c.vo.DemandVO;
- import nc.bs.framework.common.NCLocator;
- public class DemandAddImpl extends BaseServlet implements IHttpServletAdaptor{
- private IUAPQueryBS iuap = NCLocator.getInstance().lookup(IUAPQueryBS.class);
- BaseDAO dao = new BaseDAO();
- UserTransaction trans;
- @Override
- public void doAction(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- try {
- String createStr = buildJson(req, resp, this.getClass().getName());
- JSONObject json = JSON.parseObject(createStr);
- //接口返回结果
- JSONObject returnobj = new JSONObject();
- //正常返回json
- JSONArray result = new JSONArray();
- //报错返回json
- JSONArray errMessage = new JSONArray();
-
- String token =req.getParameter("token");
- if(!(token!=null && !token.equals("")&&("07a81a68-c60c-4ee4-83dc-25aa51a51497").equals(token))){
- errMessage.add(formatRSJsonData("失败","请确认通讯密码是否正确!",""));
- returnobj.put("info", "失败");
- returnobj.put("errMessage", "请确认通讯密码是否正确!");
- returnobj.put("result", errMessage);
- resp.getWriter().write(returnobj.toString());
- NcLog.info(returnobj.toString());
- return;
- }
- trans = NCLocator.getInstance().lookup(UserTransaction.class);
- trans.begin(); //开启事务
-
- String checkresult = checkJson(json);
- if(checkresult != null){
- errMessage.add(formatRSJsonData("失败",checkresult,""));
- returnobj.put("info", "失败");
- returnobj.put("errMessage", checkresult);
- returnobj.put("result", errMessage);
- resp.getWriter().write(returnobj.toString());
- NcLog.info(returnobj.toString());
- return;
- }
- JSONArray bodyArray = json.getJSONArray("result");
- for (Object Object : bodyArray) {
- JSONObject bodyObject = JSONObject.parseObject(Object.toString());
- String pk_corp = bodyObject.getString("pk_corp");//计划组织
- String vbillcode = bodyObject.getString("vbillcode");//单据号
- String prjcodehead=bodyObject.getString("prjcode");
- if(StringUtil.isEmpty(vbillcode)) {//如果单据号为空则自动生成
- vbillcode=new BillcodeGenerater().getBillCode("A2A3",pk_corp, null, null);
- }
- String pk_demandOld = getVbillcode(vbillcode);
- if(!StringUtils.isEmpty(pk_demandOld)) {
- errMessage.add(formatRSJsonData("失败","单据号"+ vbillcode +"已存在",""));
- returnobj.put("info", "失败");
- returnobj.put("errMessage", "单据号"+ vbillcode +"已存在");
- returnobj.put("result", errMessage);
- resp.getWriter().write(returnobj.toString());
- NcLog.info(returnobj.toString());
- return;
- }
- String dbilldate = bodyObject.getString("dbilldate");//单据日期
- String billmaker = GetBaseDAOUtil.getUserid(bodyObject.getString("billmaker"));//制单人
- if(billmaker.equals("")) {
- errMessage.add(formatRSJsonData("失败","制单人"+bodyObject.getString("billmaker")+"未查到,请检查",""));
- returnobj.put("info", "失败");
- returnobj.put("errMessage", "制单人"+bodyObject.getString("billmaker")+"未查到,请检查");
- returnobj.put("result", errMessage);
- resp.getWriter().write(returnobj.toString());
- NcLog.info(returnobj.toString());
- return;
- }
- String workmanid = GetBaseDAOUtil.getPsndocid(bodyObject.getString("workmanid"));//业务员
- String plandeptid = GetBaseDAOUtil.getDeptdocid(bodyObject.getString("plandeptid"));//计划部门
- String xmjbpk=GetBaseDAOUtil.getprojectid(prjcodehead);//项目基本档案主键
- String xmglpk=SqlexecuteQuery("pk_jobmngfil","bd_jobmngfil","pk_jobbasfil",xmjbpk);//项目管理档案主键
-
- String vnote = bodyObject.getString("vnote");//备注
- DemandVO headvo = new DemandVO();
- //表头赋值
- headvo.setPk_corp(pk_corp);
- headvo.setVbillcode(vbillcode);
- headvo.setDbilldate(new UFDate(dbilldate));//单据日期
- headvo.setMakedate(new UFDate(dbilldate));//制单日期
- headvo.setBillmaker(billmaker);
- headvo.setWorkmanid(workmanid);//业务员
- headvo.setPlandeptid(plandeptid);
- headvo.setVnote(vnote);//备注
- headvo.setVdef30(bodyObject.getString("vdef30"));//业务类型
- headvo.setBillstatus(IBillStatus.FREE);
- headvo.setProjectid(xmglpk);
- String pk_demand = dao.insertVO(headvo);
- //表体赋值
- if(bodyObject.getJSONArray("po")!=null) {
- JSONArray inArray = bodyObject.getJSONArray("po");
- for(int i = 0;i < inArray.size();i++) {
- Object inobj = inArray.get(i);
- JSONObject injsobj = JSONObject.parseObject(inobj.toString());
- String prjcode = injsobj.getString("prjcode");//项目编码
- String prjname = GetBaseDAOUtil.getprojectname(prjcode);//项目名称
- String prjtypecode = GetBaseDAOUtil.getprjtypecode(prjcode);//项目分类编码
- String prjtypename = GetBaseDAOUtil.getprjtypename(prjcode);//项目分类名称
- String vbatchcode = injsobj.getString("vbatchcode");//批次
- String cmaterialcode = SqlexecuteQuery("invcode","bd_invbasdoc","invcode",injsobj.getString("cmaterialcode"));//存货编码
- String cmaterialname = GetBaseDAOUtil.getinvname(cmaterialcode);//存货名称
- String spec = GetBaseDAOUtil.getinvspec(cmaterialcode);//规格
- String model = GetBaseDAOUtil.getinvtype(cmaterialcode);//型号
- String width = injsobj.getString("width");//宽度
- String height = injsobj.getString("height");//高度
- // String castunitid = GetBaseDAOUtil.getMeasidByName(injsobj.getString("castunitid"));//辅助计量单位
- String castunitid = injsobj.getString("castunitid");//辅助计量单位
- String num = injsobj.getString("num");//数量
- String nastnum = injsobj.getString("nastnum");//辅数量
- String vdef13="";//换算率
- if( (!StringUtils.isEmpty(num)) && (!StringUtils.isEmpty(nastnum)) ) {//判断数量与辅数量不为空计算换算率
- vdef13=new UFDouble(num).div(new UFDouble(nastnum)).toString();
- }
- String unitid = GetBaseDAOUtil.getmeasname(cmaterialcode);//计量单位
- String vdef1 = injsobj.getString("vdef1");//楼号楼层
- String vdef2 = injsobj.getString("vdef2");//樘数(数量)
- String vdef3 = injsobj.getString("vdef3");//框统计
- String vdef4 = injsobj.getString("vdef4");//扇统计
- String vdef5 = injsobj.getString("vdef5");//半成品分类
- String vdef6 = injsobj.getString("vdef6");//面积
- String vdef7 = injsobj.getString("vdef7");//切割长度
- String vdef8 = injsobj.getString("vdef8");//切割角度左下
- String vdef9 = injsobj.getString("vdef9");//切割角度右上
- String vdef10 = injsobj.getString("vdef10");//备注
- String vdef11 = injsobj.getString("vdef11");//系列
- String vdef12 = injsobj.getString("vdef12");//玻璃编号
-
- DemandBVO bodyvo = new DemandBVO();
- bodyvo.setPrjcode(prjcode);;
- bodyvo.setPrjname(prjname);
- bodyvo.setPrjtypecode(prjtypecode);
- bodyvo.setPrjtypename(prjtypename);
- bodyvo.setVbatchcode(vbatchcode);
- bodyvo.setCmaterialcode(cmaterialcode);
- bodyvo.setCmaterialname(cmaterialname);
- bodyvo.setSpec(spec);
- bodyvo.setModel(model);
- bodyvo.setWidth(width);
- bodyvo.setHeight(height);
- bodyvo.setCastunitid(castunitid);
- bodyvo.setNastnum(nastnum);
- bodyvo.setUnitid(unitid);
- bodyvo.setNum(new UFDouble(num));//数量
- bodyvo.setPk_demand(pk_demand);
- bodyvo.setVdef1(vdef1);
- bodyvo.setVdef2(vdef2);
- bodyvo.setVdef3(vdef3);
- bodyvo.setVdef4(vdef4);
- bodyvo.setVdef5(vdef5);
- bodyvo.setVdef6(vdef6);
- bodyvo.setVdef7(vdef7);
- bodyvo.setVdef8(vdef8);
- bodyvo.setVdef9(vdef9);
- bodyvo.setVdef10(vdef10);
- bodyvo.setVdef11(vdef11);
- bodyvo.setVdef12(vdef12);
- bodyvo.setVdef13(vdef13);
- bodyvo.setColor(injsobj.getString("color"));
- bodyvo.setSizing(injsobj.getString("sizing"));
- bodyvo.setAlloy(injsobj.getString("alloy"));
- // bodyvo.setStandard("国标");
- dao.insertVO(bodyvo);
- //生成请购单
- // IDemandPurchaseRequisition lookup = NCLocator.getInstance().lookup(IDemandPurchaseRequisition.class);
- List<DemandBVO> demandBVOs = new ArrayList();
- demandBVOs.add(bodyvo);
- // lookup.addPraybillVO(headvo,demandBVOs);
- DemandPurchaseRequisitionImpl dao = new DemandPurchaseRequisitionImpl();
- dao.addPraybillVO(headvo,demandBVOs);
- }
- }
- result.add(formatRSJsonData("成功","",vbillcode));
- }
- returnobj.put("info", "成功");
- returnobj.put("errMessage", "");
- returnobj.put("result", result);
- trans.commit();//提交事务
- resp.getWriter().write(returnobj.toString());
- NcLog.info(returnobj.toString());
- } catch (Exception e) {
- try {
- trans.rollback();//回退
- } catch (Exception e1) {
- e1.printStackTrace();
- }
- JSONArray errMessage = new JSONArray();
- JSONObject returnobj = new JSONObject();
- errMessage.add(formatRSJsonData("失败",e.getMessage(),""));
- returnobj.put("info", "失败");
- returnobj.put("errMessage", e.getMessage());
- returnobj.put("result", errMessage);
- resp.getWriter().write(returnobj.toString());
- NcLog.info(returnobj.toString());
- return;
- }
- }
-
- // 查询单据号主键
- public String getVbillcode(String vbillcode) throws Exception {
- String sql = "select pk_demand from po_demand where vbillcode ='"+vbillcode+"' and isnull(dr,0) = 0";
- String pk_demand = (String) iuap.executeQuery(sql, new ColumnProcessor());
- if (pk_demand == null) {
- return "";
- }
- return pk_demand;
- }
-
-
- /*
- * 数据库查询
- */
- private String SqlexecuteQuery(String out,String table,String key,String value) throws Exception {
- String sql = "select "+out+" from "+table+" where "+key+" = '"+value+"' and isnull(dr,0) = 0";
- Object object;
- try {
- object = new BaseDAO().executeQuery(sql, new ColumnProcessor());
- if (object==null) {
- throw new Exception("未查询到数据!请检查编码"+value+"是否正确!");
- }
- return object.toString();
- } catch (BusinessException e) {
- e.printStackTrace();
- return e.getMessage();
- }
- }
-
-
- /*
- * 非空判断
- */
- private String checkJson(JSONObject json) throws Exception {
-
- StringBuffer mags = new StringBuffer();
- Boolean empty = true;
- String body = "result";//表体
-
- if (json.getJSONArray(body)==null) {
- empty = false;
- mags.append("请传入接口数据! ");
- return mags.toString();
- }
-
- JSONArray oprepObjectBs = json.getJSONArray("result");
-
- String pk_corp = "pk_corp";//组织
- String billmaker = "billmaker";//制单人
- String dbilldate = "dbilldate";//单据日期
-
- String po = "po";//表体
-
- for(int i = 0; i < oprepObjectBs.size(); i++) {
- JSONObject oprepJsonObjectB = oprepObjectBs.getJSONObject(i);
- String[] HeadKey = {pk_corp,billmaker,dbilldate};
- int num = i+1;
-
- mags.append("第"+num+"块表头:{");
- for (String as : HeadKey) {
- if (oprepJsonObjectB.getString(as).isEmpty()) {
- empty = false;
- mags.append("'" + as + "' ");
- }
- }
- mags.append("}");
-
- if(oprepJsonObjectB.getJSONArray(po)==null) {
- mags.append("第"+num+"块表体不能为空");
- }
- }
-
- if (!empty) {
- return "以下字段不可为空:"+mags;
- }
- else {
- return null;
- }
- }
- }
|