yaoyu 2 éve
commit
ee918baf4a

+ 19 - 0
ypff/.classpath

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="ypff/classes" path="ypff/src/public"/>
+	<classpathentry kind="src" output="ypff/classes" path="ypff/src/client"/>
+	<classpathentry kind="src" output="ypff/classes" path="ypff/src/private"/>
+	<classpathentry kind="src" output="ypff/classes" path="ypff/src/test"/>
+	<classpathentry kind="src" output="ypff/classes" path="ypff/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Ant_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Product_Common_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Middleware_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Framework_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Module_Public_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Module_Client_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Module_Private_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Module_Lang_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Generated_EJB"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

+ 25 - 0
ypff/.project

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>ypff</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.yonyou.studio.udt.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>com.yonyou.studio.udt.core.nature</nature>
+		<nature>com.yonyou.studio.ria.core.ModuleProjectNature</nature>
+		<nature>com.yonyou.studio.ria.core.BizCompProjectNature</nature>
+	</natures>
+</projectDescription>

+ 7 - 0
ypff/META-INF/module.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="gb2312"?>
+<module name="ypff">
+    <public>
+    </public>
+    <private>
+    </private>
+</module>

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

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding='gb2312'?>
+<module name="ypff">
+    <public>
+   		<component name="Validate" accessProtected="false"  remote="true" singleton="true" tx="NONE" supportAlias="true">
+    		<implementation>nc.bs.yp.impl.ValidateMaintainImpl</implementation>
+ 		</component>
+   		<component name="Unvalidate" accessProtected="false"  remote="true" singleton="true" tx="NONE" supportAlias="true">
+       		<implementation>nc.bs.yp.impl.UnvalidateMaintainImpl</implementation>
+ 		</component>
+ 		<component name="Modify" accessProtected="false"  remote="true" singleton="true" tx="NONE" supportAlias="true">
+       		<implementation>nc.bs.yp.impl.ModifyMaintianImpl</implementation>
+ 		</component>
+ 		<component priority="0" singleton="true" remote="true" tx="CMT" supportAlias="true">
+            <interface>nc.yp.dao.IUtilMaintain</interface>
+            <implementation>nc.bs.yp.impl.UtilMaintainImpl</implementation>
+        </component>
+    </public>
+</module>

+ 23 - 0
ypff/bin/.project

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>ypff</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.yonyou.studio.udt.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>com.yonyou.studio.udt.core.nature</nature>
+	</natures>
+</projectDescription>

+ 7 - 0
ypff/bin/META-INF/module.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="gb2312"?>
+<module name="ypff">
+    <public>
+    </public>
+    <private>
+    </private>
+</module>

+ 21 - 0
ypff/manifest.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Manifest>
+  <BusinessComponet name="ypff" dispname="ypff">
+    <public>
+      <src name="src/public"/>
+    </public>
+    <client>
+      <src name="src/client"/>
+    </client>
+    <private>
+      <src name="src/private"/>
+    </private>
+    <test>
+      <src name="src/test"/>
+    </test>
+    <resource>
+      <src name="resources"/>
+    </resource>
+    <funnodes/>
+  </BusinessComponet>
+</Manifest>

BIN
ypff/ypff/classes/nc/bs/servlet/service/BaseServlet.class


BIN
ypff/ypff/classes/nc/bs/yp/impl/ModifyMaintianImpl.class


BIN
ypff/ypff/classes/nc/bs/yp/impl/UnvalidateMaintainImpl.class


BIN
ypff/ypff/classes/nc/bs/yp/impl/UtilMaintainImpl.class


BIN
ypff/ypff/classes/nc/bs/yp/impl/ValidateMaintainImpl.class


BIN
ypff/ypff/classes/nc/bs/yp/plugin/GetBaseDAOUtil.class


BIN
ypff/ypff/classes/nc/log/NcLog.class


BIN
ypff/ypff/classes/nc/yp/dao/IUtilMaintain.class


+ 87 - 0
ypff/ypff/src/private/nc/bs/servlet/service/BaseServlet.java

@@ -0,0 +1,87 @@
+package nc.bs.servlet.service;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+
+
+import org.codehaus.jettison.json.JSONException;
+
+import uap.json.JSONObject;
+
+/**
+ * 提供一些公共方法
+ * 具体业务请在实际服务类实现
+ */
+public class BaseServlet {
+
+	public static String STATUS_SUCCESS ="success";
+	public static String STATUS_FAILURE ="fail";
+
+	/**
+	 * 格式化传入的数据,JSON化在具体服务类实现
+	 * @param req
+	 * @param resp
+	 * @param 类名
+	 * @return
+	 * @throws ServletException
+	 * @throws IOException
+	 */
+	protected String buildJson(HttpServletRequest req,
+							   HttpServletResponse resp, String classname)
+			throws ServletException, IOException {
+		req.setCharacterEncoding("UTF-8");
+		/* 设置格式为text/json */
+		resp.setContentType("text/json");
+		/* 设置字符集为'UTF-8' */
+		resp.setCharacterEncoding("UTF-8");
+		String reqJsonData = null;
+		// 接收流
+		BufferedReader reader = new BufferedReader(new InputStreamReader(
+				req.getInputStream(), "UTF-8"));
+		StringBuffer jsonStr = new StringBuffer();
+		try {
+			String line = "";
+			while ((line = reader.readLine()) != null) {
+				jsonStr.append(line);
+			}
+			if (jsonStr != null && !"".equals(jsonStr.toString())) {
+				reqJsonData = jsonStr.toString();
+//				PrLogger.error(new UFDateTime(System.currentTimeMillis()).toString()
+//						+ "客户端传入:" + classname + "~~" + reqJsonData);
+			} else {
+				throw new ServletException("传入的数据不合法!");
+			}
+		} catch (IOException e) {
+			throw new IOException("数据读取失败" + e.getMessage());
+		} finally {
+			reader.close();
+		}
+		return reqJsonData;
+	}
+
+
+
+	/**
+	 * 格式返回json数据
+	 *
+	 * @return
+	 * @throws JSONException
+	 * @throws Exception
+	 */
+	public static JSONObject formatRSJsonData(String status,String vbillcode,String message){
+		JSONObject rs = new JSONObject();
+		rs.put("status", status);
+		rs.put("vbillcode", vbillcode);
+		rs.put("message", message);
+		
+		
+		return rs;
+	}
+
+}

+ 227 - 0
ypff/ypff/src/private/nc/bs/yp/impl/ModifyMaintianImpl.java

@@ -0,0 +1,227 @@
+package nc.bs.yp.impl;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.geotools.xml.xLink.XLinkSchema.From;
+
+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.bs.yp.plugin.GetBaseDAOUtil;
+import nc.itf.uap.pf.IPFBusiAction;
+import nc.log.NcLog;
+import nc.md.persist.framework.IMDPersistenceQueryService;
+import nc.vo.bd.material.MaterialVO;
+import nc.vo.ct.saledaily.entity.AggCtSaleVO;
+import nc.vo.ct.saledaily.entity.CtSaleBVO;
+import nc.vo.ct.saledaily.entity.CtSaleChangeVO;
+import nc.vo.ct.saledaily.entity.CtSaleExpVO;
+import nc.vo.ct.saledaily.entity.CtSaleMemoraVO;
+import nc.vo.ct.saledaily.entity.CtSaleTermVO;
+import nc.vo.ct.saledaily.entity.CtSaleVO;
+import nc.vo.ct.saledaily.entity.RecvPlanVO;
+import nc.vo.org.DeptVO;
+import nc.vo.org.GroupVO;
+import nc.vo.org.SalesOrgVO;
+import nc.vo.pub.lang.UFBoolean;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.pub.lang.UFDateTime;
+import nc.vo.pub.lang.UFDouble;
+import nc.vo.pub.workflownote.WorkflownoteVO;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+public class ModifyMaintianImpl extends BaseServlet implements IHttpServletAdaptor{
+	//请求唯一标识
+	private String vbillcode = "";
+	
+	@Override
+	public void doAction(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+		try {
+			String createStr = buildJson(req, resp, this.getClass().getName());
+			JSONObject json = JSONObject.fromObject(createStr);
+			NcLog.info("销售合同变更JSON:"+json);
+			vbillcode = json.getString("vbillcode");
+			collect(json);
+			resp.getWriter().write(formatRSJsonData("0",vbillcode,"").toString());
+		} catch (Exception e) {
+			//前端控制台打印xml数据
+			resp.getWriter().write(formatRSJsonData("1",vbillcode,e.getMessage()).toString());
+			StringWriter stringWriter = new StringWriter();
+			e.printStackTrace(new PrintWriter(stringWriter));
+			//获取详细信息
+			String msg=stringWriter.getBuffer().toString();
+			NcLog.info("销售合同变更:"+msg);
+		}
+		
+	}
+
+	public void collect(JSONObject json) throws Exception {
+		
+		//合同条款
+		CtSaleTermVO ctSaleTermVO = new CtSaleTermVO();
+		List<CtSaleTermVO> ctSaleTermListVO = new ArrayList<CtSaleTermVO>();
+		//合同费用
+		CtSaleExpVO ctSaleExpVO = new CtSaleExpVO();
+		List<CtSaleExpVO> ctSaleExpListVO = new ArrayList<CtSaleExpVO>();
+		//合同大事记
+		CtSaleMemoraVO ctSaleMemoraVO = new CtSaleMemoraVO();
+		List<CtSaleMemoraVO> ctSaleMemoraListVO = new ArrayList<CtSaleMemoraVO>();
+		//集团
+     	GroupVO groupVo = GetBaseDAOUtil.getGroup(json.getString("groupCode"));
+     	NCLocator.getInstance().lookup(ISecurityTokenCallback.class).token("NCSystem".getBytes(),"pfxx".getBytes());
+     	
+     	//线程设置集团主键
+        InvocationInfoProxy.getInstance().setGroupId(groupVo.getPk_group());
+     	//组织
+        SalesOrgVO salesOrgVO = GetBaseDAOUtil.getSalesOrg(json.getString("pk_org"));
+        String sm_userpk = GetBaseDAOUtil.getUser(json.getString("billmaker")).getCuserid();
+        //用户主键
+        InvocationInfoProxy.getInstance().setUserId(sm_userpk);
+
+		IMDPersistenceQueryService service=NCLocator.getInstance().lookup(IMDPersistenceQueryService.class);
+		AggCtSaleVO aggCtSaleVO = (AggCtSaleVO) service.queryBillOfNCObjectByPKWithDR(AggCtSaleVO.class,GetBaseDAOUtil.GetVOID("ct_sale",json.getString("vbillcode")),true).getContainmentObject();
+		//主表
+		CtSaleVO ctSaleVO = aggCtSaleVO.getParentVO();
+		//计划生效日期
+		ctSaleVO.setValdate(new UFDate(json.getString("valdate")));
+		//计划终止日期
+		ctSaleVO.setInvallidate(new UFDate(json.getString("invallidate")));
+		if(!"".equals(json.getString("depid"))) {
+			DeptVO deptVO = GetBaseDAOUtil.getDept(json.getString("depid"),salesOrgVO.getPk_salesorg());
+			//部门最新版本
+			ctSaleVO.setDepid(deptVO.getPk_dept());
+			//部门
+			ctSaleVO.setDepid_v(deptVO.getPk_vid());
+		}
+		
+		//销售员
+		ctSaleVO.setPersonnelid("".equals(json.getString("personnelid")) ? null :  GetBaseDAOUtil.getPsndoc(json.getString("personnelid"),salesOrgVO.getPk_salesorg()).getPk_psndoc());
+		//主表vo状态
+		aggCtSaleVO.getParent().setStatus(1);
+		
+		
+		//变更历史
+		CtSaleChangeVO ctSaleChangeVO = new CtSaleChangeVO();
+		//主表主键
+		ctSaleChangeVO.setPk_ct_sale(aggCtSaleVO.getParent().getAttributeValue("pk_ct_sale").toString());
+		//集团主键
+		ctSaleChangeVO.setPk_group(groupVo.getPk_group());
+		//组织最新版本
+		ctSaleChangeVO.setPk_org(salesOrgVO.getPk_org());
+		//组织
+		ctSaleChangeVO.setPk_org_v(salesOrgVO.getPk_vid());
+		//版本号数组+1
+		ctSaleChangeVO.setVchangecode(new UFDouble(aggCtSaleVO.getChildren(CtSaleChangeVO.class).length+1));
+		//变更日期
+		ctSaleChangeVO.setVchgdate(new UFDate(json.getString("vchgdate")));
+		//变更人
+		ctSaleChangeVO.setVchgpsn(sm_userpk);
+		//变更原因
+		ctSaleChangeVO.setVchgreason(json.getString("vchgreason"));
+		//vo状态
+		ctSaleChangeVO.setStatus(2);
+		
+		
+		JSONArray datas =  json.getJSONArray("ct_sale_b");
+		for (int i = 0; i < datas.size(); i++) {
+			JSONObject JSONBody = (JSONObject) datas.get(i);
+			//合同基本子表
+			CtSaleBVO ctSaleBVO = (CtSaleBVO) aggCtSaleVO.getChildren(CtSaleBVO.class)[i];
+			//集团
+			ctSaleBVO.setPk_group(groupVo.getPk_group());
+			//组织最新版本
+			ctSaleBVO.setPk_org(salesOrgVO.getPk_org());
+			//组织
+			ctSaleBVO.setPk_org_v(salesOrgVO.getPk_vid());
+			//行号
+			ctSaleBVO.setCrowno(JSONBody.getString("crowno"));
+			MaterialVO materialVO = GetBaseDAOUtil.getMaterial(JSONBody.getString("pk_material"));
+			//物料
+			ctSaleBVO.setPk_material(materialVO.getPk_material());
+			//物料最新版本
+			ctSaleBVO.setPk_srcmaterial(materialVO.getPk_source());
+			//单位
+			ctSaleBVO.setCastunitid("".equals(JSONBody.getString("castunitid")) ? null : GetBaseDAOUtil.getMeasdo(JSONBody.getString("castunitid")).getPk_measdoc());
+			//主单位
+			ctSaleBVO.setCunitid("".equals(JSONBody.getString("cunitid")) ? null : GetBaseDAOUtil.getMeasdo(JSONBody.getString("cunitid")).getPk_measdoc());
+			//换算率
+			ctSaleBVO.setVchangerate("1");
+			//数量
+			ctSaleBVO.setNastnum(new UFDouble(JSONBody.getString("nnum")));
+			//主数量
+			ctSaleBVO.setNnum(new UFDouble(JSONBody.getString("nnum")));
+			//税率
+			ctSaleBVO.setNtaxrate(new UFDouble(JSONBody.getString("ntaxrate")));
+			//本位币含税单价
+			ctSaleBVO.setNgtaxprice(new UFDouble(JSONBody.getString("norigtaxprice")));
+			//主含税单价
+			ctSaleBVO.setNorigtaxprice(new UFDouble(JSONBody.getString("norigtaxprice")));
+			//报价含税单价
+			ctSaleBVO.setNqtorigtaxprice((new UFDouble(JSONBody.getString("norigtaxprice"))));
+			//报价本币含税单价
+			ctSaleBVO.setNqttaxprice((new UFDouble(JSONBody.getString("norigtaxprice"))));
+			//本币无税金额
+			ctSaleBVO.setNmny((new UFDouble(JSONBody.getString("norigmny"))));
+			//无税金额
+			ctSaleBVO.setNorigmny((new UFDouble(JSONBody.getString("norigmny"))));
+			//税额
+			ctSaleBVO.setNtax((new UFDouble(JSONBody.getString("ntax"))));
+			//备注
+			ctSaleBVO.setVmemo(JSONBody.getString("vmemo"));
+			//vo状态
+			ctSaleBVO.setStatus(1);
+			
+			aggCtSaleVO.getChildren(CtSaleBVO.class)[i] = ctSaleBVO;
+		}
+		
+//		List<CtSaleBVO> ctSaleBListVOList = new ArrayList<CtSaleBVO>();
+//		for (int i = 0; i < aggCtSaleVO.getChildren(CtSaleBVO.class).length; i++) {
+//			//合同基本子表
+//			CtSaleBVO ctSaleBVO = (CtSaleBVO) aggCtSaleVO.getChildren(CtSaleBVO.class)[i];
+//			//集团
+//			ctSaleBVO.setPk_group(groupVo.getPk_group());
+//			//组织最新版本
+//			ctSaleBVO.setPk_org(salesOrgVO.getPk_org());
+//			//组织
+//			ctSaleBVO.setPk_org_v(salesOrgVO.getPk_vid());
+//			//行号
+//			ctSaleBVO.setCrowno(crowno);
+//			//主数量
+//			ctSaleBVO.setNnum(new UFDouble(2));
+//			//vo状态
+//			ctSaleBVO.setStatus(1);
+//			
+//			aggCtSaleVO.getChildren(CtSaleBVO.class)[i] = ctSaleBVO;
+//		}
+		
+		
+		//创建数组长度+1加入变更记录
+		CtSaleChangeVO[] CtSaleChangearrVO = new CtSaleChangeVO[aggCtSaleVO.getChildren(CtSaleChangeVO.class).length+1];
+		for (int i = 0; i < aggCtSaleVO.getChildren(CtSaleChangeVO.class).length; i++) {
+			CtSaleChangearrVO[i] = (CtSaleChangeVO) aggCtSaleVO.getChildren(CtSaleChangeVO.class)[i];
+		}
+		CtSaleChangearrVO[CtSaleChangearrVO.length-1] = ctSaleChangeVO;
+		aggCtSaleVO.setChildren(CtSaleChangeVO.class, CtSaleChangearrVO);
+		processAction(aggCtSaleVO);
+		
+	}
+	
+	
+	public void processAction(AggCtSaleVO aggCtSaleVO) throws Exception{
+		WorkflownoteVO Workflownote = new WorkflownoteVO();
+		IPFBusiAction ipf = NCLocator.getInstance().lookup(IPFBusiAction.class);
+		//调用变更单据动作
+		ipf.processAction("MODIFY", "Z3", Workflownote, aggCtSaleVO, null, null);
+	}
+}

+ 66 - 0
ypff/ypff/src/private/nc/bs/yp/impl/UnvalidateMaintainImpl.java

@@ -0,0 +1,66 @@
+package nc.bs.yp.impl;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import nc.vo.pubapp.pattern.exception.ExceptionUtils;
+import nc.yp.dao.IUtilMaintain;
+import nc.bs.dao.BaseDAO;
+import nc.bs.framework.adaptor.IHttpServletAdaptor;
+import nc.bs.framework.common.NCLocator;
+import nc.bs.framework.server.ISecurityTokenCallback;
+import nc.bs.servlet.service.BaseServlet;
+import nc.itf.ypff.IProCostCalMaintain;
+import nc.log.NcLog;
+import net.sf.json.JSONObject;
+
+
+/**
+ * 销售合同取消生效
+ * @author YY
+ */
+public class UnvalidateMaintainImpl extends BaseServlet implements IHttpServletAdaptor{
+
+	//请求唯一标识
+	private String vbillcode = "";
+	
+	@Override
+	public void doAction(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+		try {
+			String createStr = buildJson(req, resp, this.getClass().getName());
+			JSONObject json = JSONObject.fromObject(createStr);
+			NcLog.info("销售合同取消生效JSON:"+json);
+			vbillcode = json.getString("vbillcode");
+			processAction(json);
+			resp.getWriter().write(formatRSJsonData("0",vbillcode,"").toString());
+		} catch (Exception e) {
+			//前端控制台打印xml数据
+			resp.getWriter().write(formatRSJsonData("1",vbillcode,e.getMessage()).toString());
+			StringWriter stringWriter = new StringWriter();
+			e.printStackTrace(new PrintWriter(stringWriter));
+			//获取详细信息
+			String msg=stringWriter.getBuffer().toString();
+			NcLog.info("销售合同取消生效:"+msg);
+		}
+		
+	}
+	
+	
+	/**
+	 * 
+	 * 调用独立事务
+	 * @param aggGatheringBillVO
+	 * @throws Exception
+	 */
+	public void processAction(JSONObject json) throws Exception{
+		NCLocator.getInstance().lookup(ISecurityTokenCallback.class).token("NCSystem".getBytes(),"pfxx".getBytes());
+		IUtilMaintain iUtilMaintain =  NCLocator.getInstance().lookup(IUtilMaintain.class);
+		iUtilMaintain.XSHTQX_RequiresNew(json);
+	}
+
+}

+ 104 - 0
ypff/ypff/src/private/nc/bs/yp/impl/UtilMaintainImpl.java

@@ -0,0 +1,104 @@
+package nc.bs.yp.impl;
+
+import nc.bs.dao.BaseDAO;
+import nc.bs.framework.common.InvocationInfoProxy;
+import nc.bs.framework.common.NCLocator;
+import nc.bs.framework.server.ISecurityTokenCallback;
+import nc.bs.yp.plugin.GetBaseDAOUtil;
+import nc.itf.uap.pf.IPFBusiAction;
+import nc.jdbc.framework.generator.IdGenerator;
+import nc.jdbc.framework.generator.SequenceGenerator;
+import nc.md.persist.framework.IMDPersistenceQueryService;
+import nc.vo.ct.saledaily.entity.AggCtSaleVO;
+import nc.vo.org.SalesOrgVO;
+import nc.vo.pub.workflownote.WorkflownoteVO;
+import nc.yp.dao.IUtilMaintain;
+import net.sf.json.JSONObject;
+
+public class UtilMaintainImpl implements IUtilMaintain {
+	private BaseDAO baseDAO = new BaseDAO();
+	private WorkflownoteVO Workflownote = new WorkflownoteVO();
+	private IPFBusiAction ipf = NCLocator.getInstance().lookup(IPFBusiAction.class);
+	private IMDPersistenceQueryService service=NCLocator.getInstance().lookup(IMDPersistenceQueryService.class);
+	
+	
+	@Override
+	public void XSHTQX_RequiresNew(JSONObject json) throws Exception {
+		//指定集团pk
+		InvocationInfoProxy.getInstance().setGroupId(GetBaseDAOUtil.getGroup(json.getString("groupCode")).getPk_group());
+		//组织
+        SalesOrgVO salesOrgVO = GetBaseDAOUtil.getSalesOrg(json.getString("pk_org"));
+		//根据唯一标识取到AggVO
+		AggCtSaleVO aggCtSaleVO = (AggCtSaleVO) service.queryBillOfNCObjectByPKWithDR(AggCtSaleVO.class,GetBaseDAOUtil.GetVOID("ct_sale",json.getString("vbillcode")),true).getContainmentObject();
+		//用户主键
+		InvocationInfoProxy.getInstance().setUserId(GetBaseDAOUtil.getUser(json.getString("billmaker")).getCuserid());
+		//调用单据取消生效动作脚本
+		ipf.processAction("UNVALIDATE", "Z3", Workflownote, aggCtSaleVO, null, null);
+		//拼接主键
+		IdGenerator idGenerator = new SequenceGenerator();
+		
+		
+		//新增执行过程
+		StringBuilder insertSQL = new StringBuilder("insert into ct_sale_exec(pk_ct_sale,pk_ct_sale_exec,pk_group,pk_org,pk_org_v,vexecdate,vexecflow,vexecreason,dr,ts) values(");
+		//主表主键
+		insertSQL.append("'").append(aggCtSaleVO.getParentVO().getPk_ct_sale()).append("', ");
+		//主键
+		insertSQL.append("'").append(idGenerator.generate()).append("', ");
+		//集团
+		insertSQL.append("'").append(aggCtSaleVO.getParentVO().getPk_group()).append("', ");
+		//原始组织
+		insertSQL.append("'").append(salesOrgVO.getPk_org()).append("', ");
+		//组织
+		insertSQL.append("'").append(salesOrgVO.getPk_vid()).append("', ");
+		//日期
+		insertSQL.append("'").append(json.getString("dbilldate")).append("', ");
+		//执行流程
+		insertSQL.append("'").append("取消生效").append("', ");
+		//原因
+		insertSQL.append("'").append(json.getString("vexecreason")).append("', ");
+	    insertSQL.append("0, ");
+	    // TS
+	    insertSQL.append("to_char(sysdate,'yyyy-mm-dd HH24:MI:SS'))");
+	    baseDAO.executeUpdate(insertSQL.toString());
+	}
+
+	@Override
+	public void XSHT_RequiresNew(JSONObject json) throws Exception {
+
+		//指定集团pk
+		InvocationInfoProxy.getInstance().setGroupId(GetBaseDAOUtil.getGroup(json.getString("groupCode")).getPk_group());
+		//组织
+        SalesOrgVO salesOrgVO = GetBaseDAOUtil.getSalesOrg(json.getString("pk_org"));
+        //用户主键
+      	InvocationInfoProxy.getInstance().setUserId(GetBaseDAOUtil.getUser(json.getString("billmaker")).getCuserid());
+      	//根据唯一标识取到AggVO
+		AggCtSaleVO aggCtSaleVO = (AggCtSaleVO) service.queryBillOfNCObjectByPKWithDR(AggCtSaleVO.class,GetBaseDAOUtil.GetVOID("ct_sale",json.getString("vbillcode")),true).getContainmentObject();
+		//调用单据取消生效动作脚本
+		ipf.processAction("VALIDATE", "Z3", Workflownote, aggCtSaleVO, null, null);
+		//拼接主键
+		IdGenerator idGenerator = new SequenceGenerator();
+
+		//新增执行过程
+		StringBuilder insertSQL = new StringBuilder("insert into ct_sale_exec(pk_ct_sale,pk_ct_sale_exec,pk_group,pk_org,pk_org_v,vexecdate,vexecflow,vexecreason,dr,ts) values(");
+		//主表主键
+		insertSQL.append("'").append(aggCtSaleVO.getParentVO().getPk_ct_sale()).append("', ");
+		//主键
+		insertSQL.append("'").append(idGenerator.generate()).append("', ");
+		//集团
+		insertSQL.append("'").append(aggCtSaleVO.getParentVO().getPk_group()).append("', ");
+		//原始组织
+		insertSQL.append("'").append(salesOrgVO.getPk_org()).append("', ");
+		//组织
+		insertSQL.append("'").append(salesOrgVO.getPk_vid()).append("', ");
+		//日期
+		insertSQL.append("'").append(json.getString("dbilldate")).append("', ");
+		//执行流程
+		insertSQL.append("'").append("实际生效").append("', ");
+		//原因
+		insertSQL.append("'").append(json.getString("vexecreason")).append("', ");
+		insertSQL.append("0, ");
+		//TS
+		insertSQL.append("to_char(sysdate,'yyyy-mm-dd HH24:MI:SS'))");
+		baseDAO.executeUpdate(insertSQL.toString());
+	}
+}

+ 57 - 0
ypff/ypff/src/private/nc/bs/yp/impl/ValidateMaintainImpl.java

@@ -0,0 +1,57 @@
+package nc.bs.yp.impl;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import nc.bs.framework.adaptor.IHttpServletAdaptor;
+import nc.bs.framework.common.NCLocator;
+import nc.bs.framework.server.ISecurityTokenCallback;
+import nc.bs.servlet.service.BaseServlet;
+import nc.log.NcLog;
+import nc.yp.dao.IUtilMaintain;
+import net.sf.json.JSONObject;
+
+/**
+ * 销售合同生效
+ * @author yylt2
+ *
+ */
+public class ValidateMaintainImpl extends BaseServlet implements IHttpServletAdaptor{
+
+	//请求唯一标识
+	private String vbillcode = "";
+	
+	@Override
+	public void doAction(HttpServletRequest req, HttpServletResponse resp)
+			throws ServletException, IOException {
+		try {
+			String createStr = buildJson(req, resp, this.getClass().getName());
+			JSONObject json = JSONObject.fromObject(createStr);
+			NcLog.info("销售合同生效JSON:"+json);
+			vbillcode = json.getString("vbillcode");
+			processAction(json);
+			resp.getWriter().write(formatRSJsonData("0",vbillcode,"").toString());
+		} catch (Exception e) {
+			//前端控制台打印xml数据
+			resp.getWriter().write(formatRSJsonData("1",vbillcode,e.getMessage()).toString());
+			StringWriter stringWriter = new StringWriter();
+			e.printStackTrace(new PrintWriter(stringWriter));
+			//获取详细信息
+			String msg=stringWriter.getBuffer().toString();
+			NcLog.info("销售合同生效:"+msg);
+		}
+		
+	}
+
+	private void processAction(JSONObject json) throws Exception {
+		NCLocator.getInstance().lookup(ISecurityTokenCallback.class).token("NCSystem".getBytes(),"pfxx".getBytes());
+		IUtilMaintain iUtilMaintain =  NCLocator.getInstance().lookup(IUtilMaintain.class);
+		iUtilMaintain.XSHT_RequiresNew(json);
+	}
+
+}

+ 165 - 0
ypff/ypff/src/private/nc/bs/yp/plugin/GetBaseDAOUtil.java

@@ -0,0 +1,165 @@
+package nc.bs.yp.plugin;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Random;
+
+import nc.bs.dao.BaseDAO;
+import nc.jdbc.framework.SQLParameter;
+import nc.jdbc.framework.processor.BeanProcessor;
+import nc.jdbc.framework.processor.ColumnProcessor;
+import nc.vo.bd.currtype.CurrtypeVO;
+import nc.vo.bd.defdoc.DefdocVO;
+import nc.vo.bd.material.MaterialVO;
+import nc.vo.bd.material.measdoc.MeasdocVO;
+import nc.vo.bd.psn.PsndocVO;
+import nc.vo.bd.transporttype.TransportTypeVO;
+import nc.vo.org.DeptVO;
+import nc.vo.org.GroupVO;
+import nc.vo.org.SalesOrgVO;
+import nc.vo.pmpub.project.ProjectHeadVO;
+import nc.vo.scmf.qc.qualitylevel.entity.QualityLevelItemVO;
+import nc.vo.sm.UserVO;
+
+
+/**
+ * 工具类
+ * 
+ * @author 隔壁老赵
+ *
+ */
+public class GetBaseDAOUtil {
+	private static BaseDAO baseDAO = new BaseDAO();
+	
+	// 用户 (sm_user)
+	public static UserVO getUser(String str) throws Exception {
+		String sql = "select * from sm_user where  user_code='"+str+"' and nvl(dr,0)=0";
+		UserVO userVO =  (UserVO) baseDAO.executeQuery(sql, new BeanProcessor(UserVO.class));
+		if (userVO == null) {
+			throw new Exception("获取用户信息失败,未找到与参数" + str + "有关的数据!");
+		}
+		return userVO;
+	}
+	
+	//集团(org_group)
+	public static GroupVO getGroup(String str) throws Exception {
+		String sql = "select * from org_group where code='"+str+"' and nvl(dr,0)=0";
+		GroupVO groupVO = (GroupVO) baseDAO.executeQuery(sql, new BeanProcessor(GroupVO.class));
+		if (groupVO == null) {
+			throw new Exception("获取集团信息失败,未找到与参数" + str + "有关的数据!");
+		}
+		return groupVO;
+	}
+	
+	//组织_业务单元_销售组织 (org_salesorg)
+	public static SalesOrgVO getSalesOrg(String str)throws Exception {
+		String sql = "select * from org_salesorg where code='"+str+"' and nvl(dr,0)=0";
+		SalesOrgVO salesOrgVO = (SalesOrgVO) baseDAO.executeQuery(sql, new BeanProcessor(SalesOrgVO.class));
+		if (salesOrgVO == null) {
+			throw new Exception("获取销售组织信息失败,未找到与参数" + str + "有关的数据!");
+		}
+		return salesOrgVO;
+	}
+	
+	//项目信息(bd_project)
+	public static ProjectHeadVO getProjectHead(String str) throws Exception {
+		String sql = "select * from bd_project where project_code ='"+str+"' and enablestate ='2'";
+		ProjectHeadVO projectHeadVO = (ProjectHeadVO) baseDAO.executeQuery(sql, new BeanProcessor(ProjectHeadVO.class));
+		if (projectHeadVO == null) {
+			throw new Exception("获取项目信息失败,未找到与参数" + str + "有关的数据!");
+		}
+		return projectHeadVO;
+		
+	}
+	
+	//币种信息(bd_currtype)
+	public static CurrtypeVO getCurrtype(String str) throws Exception {
+		String sql = "select * from bd_currtype where  pk_currtype= '"+str+"' and nvl(dr,0)=0 ";
+		CurrtypeVO currtypeVO = (CurrtypeVO) baseDAO.executeQuery(sql,new BeanProcessor(CurrtypeVO.class));
+		if (currtypeVO == null) {
+			throw new Exception("未找到与参数" + str + "有关的数据!");
+		}
+		return currtypeVO;
+	}
+	
+	// 获取组织_部门(org_dept)
+	public static DeptVO getDept(String str,String str1) throws Exception {
+		String sql = "select * From org_dept where  code ='"+str+"' and pk_org='"+str1+"' and nvl(dr,0)=0 ";
+		DeptVO deptVO = (DeptVO) baseDAO.executeQuery(sql, new BeanProcessor(DeptVO.class));
+		if (deptVO == null) {
+			throw new Exception("获取部门信息失败,未找到与参数" + str + "有关的数据!");
+		}
+		return deptVO;
+	}
+	
+	// 人员基本信息(bd_psndoc)
+	public static PsndocVO getPsndoc(String str,String str1) throws Exception {
+		String sql = "select * from bd_psndoc where code='"+str+"' and pk_org='"+str1+"' and nvl(dr,0)=0 ";
+		PsndocVO psndocVO = (PsndocVO) baseDAO.executeQuery(sql,new BeanProcessor(PsndocVO.class));
+		if (psndocVO == null) {
+			throw new Exception("获取人员基本信息失败,未找到与参数" + str + "有关的数据!");
+		}
+		return psndocVO;
+	}
+	
+	// 物料基本信息(多版本) (bd_material)
+	public static MaterialVO getMaterial(String str) throws Exception {
+		String sql = "select  * From  bd_material where   code='"+str+"' and nvl(dr,0)=0 and enablestate=2 ";
+		MaterialVO materialVO = (MaterialVO) baseDAO.executeQuery(sql,new BeanProcessor(MaterialVO.class));
+		if (materialVO == null) {
+			throw new Exception("获取物料信息失败,未找到与参数" + str + "有关的数据!");
+		}
+		return materialVO;
+	}
+	
+	//获取单位编码(bd_measdoc)
+	public static MeasdocVO getMeasdo(String str) throws Exception {
+		String sql = "select * from bd_measdoc where code = '"+str+"' and nvl(dr, 0)=0";
+		MeasdocVO measdocVO =(MeasdocVO) baseDAO.executeQuery(sql,new BeanProcessor(MeasdocVO.class));
+		if (measdocVO == null) {
+			throw new Exception("获取单位信息失败,未找到与参数" + str + "有关的数据!");
+		}
+		return measdocVO;
+	}
+	
+	//自定义档案(bd_defdoc)
+	public static DefdocVO getDefdoc(String str, String str1) throws Exception {
+		String sql = "select * from bd_defdoc where pk_defdoclist = (select pk_defdoclist from bd_defdoclist where name ='"+str+"' and nvl(dr,0)=0) and code = '"+str1+"' and nvl(dr,0)=0";
+		DefdocVO defdocVO = (DefdocVO) baseDAO.executeQuery(sql,new BeanProcessor(DefdocVO.class));
+		if(defdocVO == null) {
+			throw new Exception("获取"+str+"失败,未找到与参数" + str1 + "有关的数据!");
+		}
+		return defdocVO;
+	}
+	
+	//质量等级
+	public static QualityLevelItemVO getQualityLevelItem(String str)throws Exception {
+		String sql = "select * from scm_qualitylevel_b where cqualitylvcode='"+str+"' and nvl(dr,0)=0";
+		QualityLevelItemVO qualityLevelItemVO = (QualityLevelItemVO) baseDAO.executeQuery(sql,new BeanProcessor(QualityLevelItemVO.class));
+		if(qualityLevelItemVO == null) {
+			throw new Exception("获取质量等级失败,未找到与参数"+str+"有关的数据");
+		}
+		return qualityLevelItemVO;
+	}
+	
+	//运输方式
+	public static TransportTypeVO getTransportType(String str,String str1)throws Exception{
+		String sql = "select * from bd_transporttype where code='"+str+"' and pk_org='"+str1+"' and nvl(dr,0)=0";
+		TransportTypeVO transportTypeVO = (TransportTypeVO) baseDAO.executeQuery(sql, new BeanProcessor(TransportTypeVO.class));
+		if(transportTypeVO == null) {
+			throw new Exception("获取运输方式失败,未找到与参数"+str+"有关的数据");
+		}
+		return transportTypeVO;
+	}
+	
+	//查询单据是否存在
+	public static String GetVOID(String str,String str2) throws Exception {
+		String sql = "select pk_ct_sale from "+str+" where vbillcode ='"+str2+"' and blatest='Y' and nvl(dr, 0)=0";
+		String pk_ct_sale = (String) baseDAO.executeQuery(sql, new ColumnProcessor());
+		if(pk_ct_sale == null) {
+			throw new Exception("获取销售合同信息失败,未找到与参数" + str2 + "有关的数据!");
+		}
+		return pk_ct_sale;
+	}
+
+}

+ 81 - 0
ypff/ypff/src/private/nc/log/NcLog.java

@@ -0,0 +1,81 @@
+package nc.log;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import nc.bs.framework.common.RuntimeEnv;
+
+import org.apache.log4j.Logger;
+/**
+ * nclog
+ * @author YY
+ * @datetime 2021-9-29 
+ */
+public class NcLog
+{
+  private static final Logger logger = Logger.getLogger(NcLog.class);
+  private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+  private static SimpleDateFormat format$ = new SimpleDateFormat("yyyy-MM-dd");
+
+  public static void info(String str)
+  {
+    String logFilePath = getLogFile();
+    File file = new File(logFilePath);
+    BufferedWriter fos = null;
+    try
+    {
+      fos = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true)));
+      str = format.format(new Date()) + " " + str + "\r\n";
+      
+      fos.write(str + "\r\n");
+      fos.flush();
+    }
+    catch (Exception localException)
+    {
+      if (fos != null)
+        try
+        {
+          fos.close();
+        }
+        catch (IOException localIOException)
+        {
+        }
+    }
+    finally {
+      if (fos != null)
+        try
+        {
+          fos.close();
+        }
+        catch (IOException localIOException2)
+        {
+        }
+    }
+  }
+
+  private static String getLogFile() {
+    String destFileFolder = RuntimeEnv.getInstance().getNCHome() + File.separator + "mancLog" + File.separator + format$.format(new Date());
+    String destFilePath = destFileFolder + File.separator + "org.log";
+    File destFolder = new File(destFileFolder);
+    if (!destFolder.exists()) {
+      destFolder.mkdirs();
+    }
+    File destFile = new File(destFilePath);
+    if (!destFile.exists()) {
+      try
+      {
+        destFile.createNewFile();
+      }
+      catch (Exception e)
+      {
+        logger.info(e);
+      }
+    }
+    return destFilePath;
+  }
+}

+ 10 - 0
ypff/ypff/src/public/nc/yp/dao/IUtilMaintain.java

@@ -0,0 +1,10 @@
+package nc.yp.dao;
+
+import net.sf.json.JSONObject;
+
+public interface IUtilMaintain{
+	void XSHT_RequiresNew(JSONObject json)throws Exception;
+	
+	void XSHTQX_RequiresNew(JSONObject json)throws Exception;
+}
+