用友NCC 如何通过OpenApi 上传附件

请求参数中添加附件 url

  • 获取附件信息:

  • 上传附件的文件服务器和拼装附件VO写入数据库

package indi.stitch.test;

import nccloud.open.api.auto.token.cur.utils.APICurUtils;
import nccloud.open.api.auto.token.itf.IAPIUtils;
import nccloud.open.api.auto.token.old.utils.APIOldUtils;

/**
 * 测试销售合同OpenApi
 * @author hwl
 *
 */
public class TestZ3OpenApi {

	public static void main(String[] args) throws Exception {
		IAPIUtils util = null;
		util = new APIOldUtils(); // 2021.05之前的版本
		//util = new APICurUtils();//2021.05版本及以后版本
		// 服务地址ip
		String ip = "127.0.0.1";
		// 服务地址端口号
		String port = "80";
		// 账套编码,开发环境使用develop,生产环境需要使用用root账号登录,在“系统管理”节点查看账套编码
		String busi_center = "develop";
		// 第三方应用编码
		String app_id = "ysxttoncc";
		// app_secret,用于请求加签
		String app_secret = "3b1f844bb928482c95fc";
		// 公钥,加解密使用
		String public_key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCEfh4A8uS5p5Tth+lsKl3xT1IF51U6ZcO9Bs27UCKOI9wlM2RYM03EMTvg3wzV1f953LUtdPlLv0dbiFQxyUp6O/YTsBa1Df3HDpJ8VcZXrJco5nPvXCWbtc7UWEBCrODdFWcdO6/pWlmWFJKCR29kuM+rzdvV49kyok61c6d9IQIDAQAB";
		// ncc用户名
		String ncc_user = "yonyou02";
		// ncc用户密码
		String password = "ncc1234";
		util.init(ip, port, busi_center, app_id, app_secret, public_key, ncc_user, password);
		// 获取token
		String token = util.getToken();
		System.out.println(token);
		// 请求的OpenAPI接口地址,注意nccloud前面没有"/"
		String apiuri = "nccloud/api/ct/saledaily/savebase";
		util.setApiUrl(apiuri);
		//对应接口地址的请求参数
		String requestParam = "[{\"ct_sale\":{\"pk_org\":\"0001A310000000004OFT\",\"vbillcode\":\"RLJT2022-QN-XS-0007\",\"ctname\":\"测试OpenApi接口\",\"vtrantypecode\":\"Z3-01\",\"valdate\":\"2022-04-20 00:00:00\",\"invallidate\":\"2022-05-19 00:00:00\",\"pk_customer\":\"1001A31000000001GIQK\" },\"ct_sale_b\":[{\"pk_material\":\"1001A31000000008AT29\",\"nqtorigtaxprice\":1,\"nnum\":2,\"vmemo\":\"测试表体备注\"}],\"file\":[{\"name\":\"张店区人才公寓申请表\",\"type\":\"docx\",\"url\":\"http://www.zhangdian.gov.cn/resources/public/20220405/624bf9f559341953b634d39d.docx\"},{\"name\":\"单身承若书\",\"type\":\"doc\",\"url\":\"http://www.zhangdian.gov.cn/resources/public/20220405/624bf9f53f963d17a234d357.doc\"}]}]";
		//进行接口测试
		String result = util.getAPIRetrun(token, requestParam);
		System.out.println(result);
	}

}
package nccloud.openapi.ct.mz3;

import com.google.gdata.util.common.base.StringUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import nc.bs.framework.common.NCLocator;
import nc.bs.scmpub.query.SCMBillQuery;
import nc.bs.scmpub.query.SCMViewQuery;
import nc.ui.querytemplate.operator.BetweenOperator;
import nc.ui.querytemplate.operator.EqOperator;
import nc.ui.querytemplate.operator.GtOperator;
import nc.ui.querytemplate.operator.LtOperator;
import nc.vo.ct.enumeration.CtEntity;
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.CtSaleVO;
import nc.vo.ct.saledaily.entity.CtSalebillViewVO;
import nc.vo.ct.saledaily.entity.RecvPlanVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.ISuperVO;
import nc.vo.pub.lang.UFDateTime;
import nc.vo.pubapp.AppContext;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.vo.scmpub.util.QuerySchemeBuilder;
import nccloud.api.ct.mz3.IAPISaledailyMaintain;
import nccloud.api.ct.mz3.IAPISaledailyQuery;
import nccloud.api.rest.utils.NCCRestUtils;
import nccloud.openapi.common.tool.ThirdSysFileToNcc;
import nccloud.openapi.scmpub.util.CallReturnBuildUtil;
import nccloud.ws.rest.resource.AbstractNCCRestResource;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONString;

@Path("ct/saledaily")
public class SaledailyResource extends AbstractNCCRestResource {
	@POST
	@Path("savebase")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString save(List<Map<String, Object>> paramList) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		ArrayList aggVOList = new ArrayList();
		try {
			Iterator var4 = paramList.iterator();

			while (var4.hasNext()) {
				Map<String, Object> map = (Map) var4.next();
				if (!map.containsKey(CtEntity.ct_sale.name()) || !map.containsKey(CtEntity.ct_sale_b.name())) {
					result.put("message", "传入数据异常,合同要包含表头信息和表体信息");
					result.put("code", 1);
					return NCCRestUtils.toJSONString(result);
				}

				Map<String, String> headInfo = (Map) map.get(CtEntity.ct_sale.name());
				List<Map<String, String>> bodyInfo = (List) map.get(CtEntity.ct_sale_b.name());
				AggCtSaleVO aggvo = new AggCtSaleVO();
				CtSaleVO hvo = new CtSaleVO();
				Iterator var10 = headInfo.keySet().iterator();

				while (var10.hasNext()) {
					String headkey = (String) var10.next();
					hvo.setAttributeValue(headkey, headInfo.get(headkey));
				}
				//add by hwl 20220420 客开新增附件 start
				if (map.containsKey("file")) {
					ThirdSysFileToNcc tsf = new ThirdSysFileToNcc();
					//手动创建pk,给单据主键赋值,用pk关联附件信息(NCC附件管理的逻辑)
					String pk = tsf.getPK();
					hvo.setAttributeValue("pk_ct_sale", pk);
					
					List<Map<String, String>> fileInfo = (List) map.get("file");
					if(fileInfo.size()>0) {
						tsf.UploadFileAction(pk,fileInfo);
						
					}
					System.out.println(fileInfo);
					
				}

				aggvo.setParentVO(hvo);
				List<CtSaleBVO> bvoList = new ArrayList();
				Iterator var20 = bodyInfo.iterator();

				while (var20.hasNext()) {
					Map<String, String> bodyMap = (Map) var20.next();
					CtSaleBVO bvo = new CtSaleBVO();
					Iterator var14 = bodyMap.keySet().iterator();

					while (var14.hasNext()) {
						String bodykey = (String) var14.next();
						bvo.setAttributeValue(bodykey, bodyMap.get(bodykey));
					}

					bvoList.add(bvo);
				}

				aggvo.setCtSaleBVO((ISuperVO[]) bvoList.toArray(new CtSaleBVO[bvoList.size()]));
				aggVOList.add(aggvo);
			}

			AggCtSaleVO[] ctSaleVOs = (AggCtSaleVO[]) aggVOList.toArray(new AggCtSaleVO[aggVOList.size()]);
			AggCtSaleVO[] saveBase = ((IAPISaledailyMaintain) NCLocator.getInstance()
					.lookup(IAPISaledailyMaintain.class)).saveBase(ctSaleVOs);
			
			result.put("message", "合同保存成功");
			result.put("data", saveBase);
			result.put("code", 0);
			return NCCRestUtils.toJSONString(result);
		} catch (BusinessException var16) {
			result.put("message", "合同保存异常" + var16.getMessage());
			result.put("code", 1);
			return NCCRestUtils.toJSONString(result);
		}
	}

	@POST
	@Path("querybycodes")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString queryByBillcode(String[] billcodes) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		if (ArrayUtils.isEmpty(billcodes)) {
			result.put("message", "传入合同编号不能为空,请检查");
			result.put("code", 1);
			return NCCRestUtils.toJSONString(result);
		} else {
			try {
				IAPISaledailyQuery query = (IAPISaledailyQuery) NCLocator.getInstance()
						.lookup(IAPISaledailyQuery.class);
				QuerySchemeBuilder builder = QuerySchemeBuilder.buildByFullClassName(CtSaleVO.class.getName());
				builder.append("vbillcode", EqOperator.getInstance(), billcodes);
				AggCtSaleVO[] vos = query.queryVOByScheme(builder.create());
				if (ArrayUtils.isEmpty(vos)) {
					result.put("message", "没有符合条件的数据");
					result.put("code", 1);
				} else {
					result.put("message", "合同查询成功");
					result.put("data", vos);
					result.put("code", 0);
				}
			} catch (BusinessException var6) {
				result.put("message", "查询合同出现异常" + var6.getMessage());
				result.put("code", 1);
				return NCCRestUtils.toJSONString(result);
			}

			return NCCRestUtils.toJSONString(result);
		}
	}

	@POST
	@Path("querybyids")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString queryByHids(String[] hids) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		if (ArrayUtils.isEmpty(hids)) {
			result.put("message", "传入合同主键不能为空,请检查");
			result.put("code", 1);
			return NCCRestUtils.toJSONString(result);
		} else {
			try {
				AggCtSaleVO[] vos = ((IAPISaledailyQuery) NCLocator.getInstance().lookup(IAPISaledailyQuery.class))
						.queryVOByHIDs(hids);
				if (ArrayUtils.isEmpty(vos)) {
					result.put("message", "没有符合条件的数据");
					result.put("code", 1);
				} else {
					result.put("message", "合同查询成功");
					result.put("data", vos);
					result.put("code", 0);
				}
			} catch (BusinessException var4) {
				result.put("message", "查询合同出现异常" + var4.getMessage());
				result.put("code", 1);
				return NCCRestUtils.toJSONString(result);
			}

			return NCCRestUtils.toJSONString(result);
		}
	}

	@POST
	@Path("queryvo")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString queryVO(Map<String, Object> paramMap) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		if (paramMap == null) {
			result.put("message", "传入参数不能为空");
			result.put("code", 0);
			return NCCRestUtils.toJSONString(result);
		} else {
			String[] queryFields = new String[]{"pk_ct_sale", "pk_org", "ctrantypeid", "vbillcode", "ctname",
					"pk_customer.code", "pk_customer.name", "personnelid", "depid", "corigcurrencyid", "fstatusflag",
					"cprojectid", "billmaker", "pk_ct_sale_b.pk_srcmaterial.code", "pk_ct_sale_b.pk_srcmaterial.name",
					"pk_ct_sale_b.pk_marbasclass.name", "pk_ct_sale_b.pk_marbasclass.code"};
			String[] dateFields = new String[]{"subscribedate", "valdate", "invallidate", "actualvalidate",
					"actualinvalidate"};
			QuerySchemeBuilder builder = QuerySchemeBuilder.buildByFullClassName(AggCtSaleVO.class.getName());

			try {
				String[] var6 = queryFields;
				int var7 = queryFields.length;

				int var8;
				String field;
				for (var8 = 0; var8 < var7; ++var8) {
					field = var6[var8];
					List<String> fieldValue = (List) paramMap.get(field);
					if (fieldValue != null && fieldValue.size() > 0) {
						builder.append(field, EqOperator.getInstance(), fieldValue.toArray(new String[0]));
					}
				}

				var6 = dateFields;
				var7 = dateFields.length;

				for (var8 = 0; var8 < var7; ++var8) {
					field = var6[var8];
					String fieldValue = (String) paramMap.get(field);
					if (fieldValue != null && fieldValue.trim().length() > 0) {
						String[] date = fieldValue.split("~");
						if (date.length == 1) {
							if (fieldValue.contains("~")) {
								builder.append(field, GtOperator.getInstance(),
										new UFDateTime[]{new UFDateTime(date[0].trim())});
							} else {
								builder.append(field, EqOperator.getInstance(),
										new UFDateTime[]{new UFDateTime(date[0].trim())});
							}
						} else if (date.length == 2) {
							if (!StringUtil.isEmpty(date[0].trim()) && !StringUtil.isEmpty(date[1].trim())) {
								builder.append(field, BetweenOperator.getInstance(), new UFDateTime[]{
										new UFDateTime(date[0].trim()), new UFDateTime(date[1].trim())});
							} else if (StringUtil.isEmpty(date[0].trim())) {
								builder.append(field, LtOperator.getInstance(),
										new UFDateTime[]{new UFDateTime(date[1].trim())});
							} else if (StringUtil.isEmpty(date[1].trim())) {
								builder.append(field, GtOperator.getInstance(),
										new UFDateTime[]{new UFDateTime(date[0].trim())});
							}
						}
					}
				}

				SCMBillQuery<AggCtSaleVO> queryTool = new SCMBillQuery(AggCtSaleVO.class);
				AggCtSaleVO[] vos = (AggCtSaleVO[]) queryTool.queryVOByScheme(builder.create());
				if (ArrayUtils.isEmpty(vos)) {
					result.put("message", "没有符合条件的数据");
					result.put("code", 1);
				} else {
					result.put("message", "合同查询成功");
					result.put("data", vos);
					result.put("code", 0);
				}
			} catch (BusinessException var12) {
				result.put("message", "查询合同出现异常" + var12.getMessage());
				result.put("code", 1);
				return NCCRestUtils.toJSONString(result);
			}

			return NCCRestUtils.toJSONString(result);
		}
	}

	@POST
	@Path("querybodyvo")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString queryBodyVO(Map<String, Object> paramMap) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		if (paramMap == null) {
			result.put("message", "传入参数不能为空");
			result.put("code", 0);
			return NCCRestUtils.toJSONString(result);
		} else {
			String[] queryFields = new String[]{"pk_ct_sale", "pk_org", "ctrantypeid", "vbillcode", "ctname",
					"pk_customer.code", "pk_customer.name", "personnelid", "depid", "corigcurrencyid", "fstatusflag",
					"cprojectid", "billmaker", "pk_ct_sale_b.pk_srcmaterial.code", "pk_ct_sale_b.pk_srcmaterial.name",
					"pk_ct_sale_b.pk_marbasclass.name", "pk_ct_sale_b.pk_marbasclass.code"};
			String[] dateFields = new String[]{"subscribedate", "valdate", "invallidate", "actualvalidate",
					"actualinvalidate"};
			QuerySchemeBuilder builder = QuerySchemeBuilder.buildByFullClassName(AggCtSaleVO.class.getName());

			try {
				String[] var6 = queryFields;
				int var7 = queryFields.length;

				int var8;
				String field;
				for (var8 = 0; var8 < var7; ++var8) {
					field = var6[var8];
					List<String> fieldValue = (List) paramMap.get(field);
					if (fieldValue != null && fieldValue.size() > 0) {
						builder.append(field, EqOperator.getInstance(), fieldValue.toArray(new String[0]));
					}
				}

				var6 = dateFields;
				var7 = dateFields.length;

				for (var8 = 0; var8 < var7; ++var8) {
					field = var6[var8];
					String fieldValue = (String) paramMap.get(field);
					if (fieldValue != null && fieldValue.trim().length() > 0) {
						String[] date = fieldValue.split("~");
						if (date.length == 1) {
							if (fieldValue.contains("~")) {
								builder.append(field, GtOperator.getInstance(),
										new UFDateTime[]{new UFDateTime(date[0].trim())});
							} else {
								builder.append(field, EqOperator.getInstance(),
										new UFDateTime[]{new UFDateTime(date[0].trim())});
							}
						}

						if (date.length == 2) {
							if (!StringUtil.isEmpty(date[0].trim()) && !StringUtil.isEmpty(date[1].trim())) {
								builder.append(field, BetweenOperator.getInstance(), new UFDateTime[]{
										new UFDateTime(date[0].trim()), new UFDateTime(date[1].trim())});
							} else if (StringUtil.isEmpty(date[0].trim())) {
								builder.append(field, LtOperator.getInstance(),
										new UFDateTime[]{new UFDateTime(date[1].trim())});
							} else if (StringUtil.isEmpty(date[1].trim())) {
								builder.append(field, GtOperator.getInstance(),
										new UFDateTime[]{new UFDateTime(date[0].trim())});
							}
						}
					}
				}

				SCMViewQuery<CtSalebillViewVO> queryTool = new SCMViewQuery(CtSalebillViewVO.class);
				CtSalebillViewVO[] vos = (CtSalebillViewVO[]) queryTool.queryViewVOByScheme(builder.create());
				if (ArrayUtils.isEmpty(vos)) {
					result.put("message", "没有符合条件的数据");
					result.put("code", 1);
				} else {
					result.put("message", "合同查询成功");
					result.put("data", vos);
					result.put("code", 0);
				}
			} catch (BusinessException var12) {
				result.put("message", "查询合同出现异常" + var12.getMessage());
				result.put("code", 1);
				return NCCRestUtils.toJSONString(result);
			}

			return NCCRestUtils.toJSONString(result);
		}
	}

	@POST
	@Path("update")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString update(List<Map<String, Object>> jsonArray) throws BusinessException {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		ArrayList aggVOList = new ArrayList();

		try {
			Iterator var4 = jsonArray.iterator();

			while (true) {
				if (!var4.hasNext()) {
					if (aggVOList.size() > 0) {
						AggCtSaleVO[] modifyVOs = ((IAPISaledailyMaintain) NCLocator.getInstance()
								.lookup(IAPISaledailyMaintain.class))
										.update((AggCtSaleVO[]) aggVOList.toArray(new AggCtSaleVO[aggVOList.size()]));
						result.put("message", "合同修改成功");
						result.put("data", modifyVOs);
						result.put("code", 0);
					}
					break;
				}

				Map<String, Object> map = (Map) var4.next();
				if (map == null || !map.containsKey(CtEntity.ct_sale.name())) {
					result.put("message", "传入参数错误,表头主键信息必输");
					result.put("code", 1);
					return NCCRestUtils.toJSONString(result);
				}

				Map<String, Object> saleHead = (Map) map.get(CtEntity.ct_sale.name());
				AggCtSaleVO aggSaleVO = new AggCtSaleVO();
				CtSaleVO parentVO = new CtSaleVO();
				Set<String> headKeySet = saleHead.keySet();
				Iterator var10 = headKeySet.iterator();

				while (var10.hasNext()) {
					String headKey = (String) var10.next();
					parentVO.setAttributeValue(headKey, saleHead.get(headKey));
				}

				aggSaleVO.setParentVO(parentVO);
				List<Map<String, Object>> saleBody = (List) map.get(CtEntity.ct_sale_b.name());
				List<CtSaleBVO> bVOList = new ArrayList();
				Iterator var12 = saleBody.iterator();

				while (var12.hasNext()) {
					Map<String, Object> bmap = (Map) var12.next();
					CtSaleBVO CtSaleBVO = new CtSaleBVO();
					Iterator var15 = bmap.keySet().iterator();

					while (var15.hasNext()) {
						String bodyKey = (String) var15.next();
						CtSaleBVO.setAttributeValue(bodyKey, bmap.get(bodyKey));
					}

					bVOList.add(CtSaleBVO);
				}

				aggSaleVO.setCtSaleBVO((ISuperVO[]) bVOList.toArray(new CtSaleBVO[bVOList.size()]));
				aggVOList.add(aggSaleVO);
			}
		} catch (BusinessException var17) {
			result.put("message", "修改合同出现异常" + var17.getMessage());
			result.put("code", 1);
			return NCCRestUtils.toJSONString(result);
		}

		return NCCRestUtils.toJSONString(result);
	}

	@POST
	@Path("delete")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString delete(String[] hids) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		if (hids != null && hids.length != 0) {
			try {
				SCMBillQuery<AggCtSaleVO> queryTool = new SCMBillQuery(AggCtSaleVO.class);
				AggCtSaleVO[] vos = (AggCtSaleVO[]) queryTool.queryVOByIDs(hids);
				if (ArrayUtils.isEmpty(vos)) {
					result.put("message", "没有符合条件的数据");
					result.put("code", 1);
				} else {
					((IAPISaledailyMaintain) NCLocator.getInstance().lookup(IAPISaledailyMaintain.class)).delete(vos);
					result.put("message", "合同删除成功");
					result.put("code", 0);
				}
			} catch (BusinessException var5) {
				result.put("message", "删除合同出现异常" + var5.getMessage());
				result.put("code", 1);
				return NCCRestUtils.toJSONString(result);
			}

			return NCCRestUtils.toJSONString(result);
		} else {
			return NCCRestUtils.toJSONString(CallReturnBuildUtil.buildNullParamResult());
		}
	}

	@POST
	@Path("sendapprove")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString sendApprove(Map<String, Object> paramMap) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		if (paramMap == null) {
			result.put("message", "传入参数不能为空,请检查");
			result.put("code", 1);
		} else {
			try {
				AggCtSaleVO[] vos = this.querySaledaily(paramMap);
				if (ArrayUtils.isEmpty(vos)) {
					result.put("message", "没有符合条件的数据");
					result.put("code", 1);
				} else {
					AggCtSaleVO[] sendApprove = ((IAPISaledailyMaintain) NCLocator.getInstance()
							.lookup(IAPISaledailyMaintain.class)).sendApprove(vos);
					result.put("message", "合同提交成功");
					result.put("data", sendApprove);
					result.put("code", 0);
				}
			} catch (BusinessException var5) {
				result.put("message", "提交合同出现异常" + var5.getMessage());
				result.put("code", 1);
				return NCCRestUtils.toJSONString(result);
			}
		}

		return NCCRestUtils.toJSONString(result);
	}

	@POST
	@Path("unsend")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString unSendApprove(Map<String, Object> paramMap) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		if (paramMap == null) {
			result.put("message", "传入参数不能为空,请检查");
			result.put("code", 1);
		} else {
			try {
				AggCtSaleVO[] vos = this.querySaledaily(paramMap);
				if (ArrayUtils.isEmpty(vos)) {
					result.put("message", "没有符合条件的数据");
					result.put("code", 1);
				} else {
					AggCtSaleVO[] unSend = ((IAPISaledailyMaintain) NCLocator.getInstance()
							.lookup(IAPISaledailyMaintain.class)).unSendApprove(vos);
					result.put("message", "合同收回成功");
					result.put("data", unSend);
					result.put("code", 0);
				}
			} catch (BusinessException var5) {
				result.put("message", "收回合同出现异常" + var5.getMessage());
				result.put("code", 1);
				return NCCRestUtils.toJSONString(result);
			}
		}

		return NCCRestUtils.toJSONString(result);
	}

	@POST
	@Path("approve")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString approve(Map<String, Object> paramMap) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		if (paramMap == null) {
			result.put("message", "传入参数不能为空,请检查");
			result.put("code", 1);
		} else {
			try {
				AggCtSaleVO[] vos = this.querySaledaily(paramMap);
				if (ArrayUtils.isEmpty(vos)) {
					result.put("message", "没有符合条件的数据");
					result.put("code", 1);
				} else {
					AggCtSaleVO[] aprove = ((IAPISaledailyMaintain) NCLocator.getInstance()
							.lookup(IAPISaledailyMaintain.class)).approve(vos);
					result.put("message", "合同审批成功");
					result.put("data", aprove);
					result.put("code", 0);
				}
			} catch (BusinessException var5) {
				result.put("message", "审批合同出现异常" + var5.getMessage());
				result.put("code", 1);
				return NCCRestUtils.toJSONString(result);
			}
		}

		return NCCRestUtils.toJSONString(result);
	}

	@POST
	@Path("unapprove")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString unApprove(Map<String, Object> paramMap) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		if (paramMap == null) {
			result.put("message", "传入参数不能为空,请检查");
			result.put("code", 1);
		} else {
			try {
				AggCtSaleVO[] vos = this.querySaledaily(paramMap);
				if (ArrayUtils.isEmpty(vos)) {
					result.put("message", "没有符合条件的数据");
					result.put("code", 1);
				} else {
					AggCtSaleVO[] aprove = ((IAPISaledailyMaintain) NCLocator.getInstance()
							.lookup(IAPISaledailyMaintain.class)).unApprove(vos);
					result.put("message", "合同取消审批成功");
					result.put("data", aprove);
					result.put("code", 0);
				}
			} catch (BusinessException var5) {
				result.put("message", "取消审批合同出现异常" + var5.getMessage());
				result.put("code", 1);
				return NCCRestUtils.toJSONString(result);
			}
		}

		return NCCRestUtils.toJSONString(result);
	}

	@POST
	@Path("freeze")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString freeze(Map<String, Object> paramMap) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		if (paramMap == null) {
			result.put("message", "传入参数不能为空,请检查");
			result.put("code", 1);
		} else {
			try {
				AggCtSaleVO[] vos = this.querySaledaily(paramMap);
				if (ArrayUtils.isEmpty(vos)) {
					result.put("message", "没有符合条件的数据");
					result.put("code", 1);
				} else {
					AggCtSaleVO[] freeze = ((IAPISaledailyMaintain) NCLocator.getInstance()
							.lookup(IAPISaledailyMaintain.class)).freeze(vos);
					result.put("message", "合同冻结成功");
					result.put("data", freeze);
					result.put("code", 0);
				}
			} catch (BusinessException var5) {
				result.put("message", "冻结合同出现异常" + var5.getMessage());
				result.put("code", 1);
				return NCCRestUtils.toJSONString(result);
			}
		}

		return NCCRestUtils.toJSONString(result);
	}

	@POST
	@Path("unfreeze")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString unfreeze(Map<String, Object> paramMap) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		if (paramMap == null) {
			result.put("message", "传入参数不能为空,请检查");
			result.put("code", 1);
		} else {
			try {
				AggCtSaleVO[] vos = this.querySaledaily(paramMap);
				if (ArrayUtils.isEmpty(vos)) {
					result.put("message", "没有符合条件的数据");
					result.put("code", 1);
				} else {
					AggCtSaleVO[] unFreeze = ((IAPISaledailyMaintain) NCLocator.getInstance()
							.lookup(IAPISaledailyMaintain.class)).unFreeze(vos);
					result.put("message", "合同解冻成功");
					result.put("data", unFreeze);
					result.put("code", 0);
				}
			} catch (BusinessException var5) {
				result.put("message", "解冻合同出现异常" + var5.getMessage());
				result.put("code", 1);
				return NCCRestUtils.toJSONString(result);
			}
		}

		return NCCRestUtils.toJSONString(result);
	}

	@POST
	@Path("terminate")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString terminate(Map<String, Object> paramMap) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		if (paramMap == null) {
			result.put("message", "传入参数不能为空,请检查");
			result.put("code", 1);
		} else {
			try {
				AggCtSaleVO[] vos = this.querySaledaily(paramMap);
				if (ArrayUtils.isEmpty(vos)) {
					result.put("message", "没有符合条件的数据");
					result.put("code", 1);
				} else {
					AggCtSaleVO[] terminate = ((IAPISaledailyMaintain) NCLocator.getInstance()
							.lookup(IAPISaledailyMaintain.class)).terminate(vos);
					result.put("message", "合同终止成功");
					result.put("data", terminate);
					result.put("code", 0);
				}
			} catch (BusinessException var5) {
				result.put("message", "终止合同出现异常" + var5.getMessage());
				result.put("code", 1);
				return NCCRestUtils.toJSONString(result);
			}
		}

		return NCCRestUtils.toJSONString(result);
	}

	@POST
	@Path("unterminate")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString unTerminate(Map<String, Object> paramMap) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		if (paramMap == null) {
			result.put("message", "传入参数不能为空,请检查");
			result.put("code", 1);
		} else {
			try {
				AggCtSaleVO[] vos = this.querySaledaily(paramMap);
				if (ArrayUtils.isEmpty(vos)) {
					result.put("message", "没有符合条件的数据");
					result.put("data", (Object) null);
					result.put("code", 1);
				} else {
					AggCtSaleVO[] unTerminate = ((IAPISaledailyMaintain) NCLocator.getInstance()
							.lookup(IAPISaledailyMaintain.class)).unTerminate(vos);
					result.put("message", "合同取消终止成功");
					result.put("data", unTerminate);
					result.put("code", 0);
				}
			} catch (BusinessException var5) {
				result.put("message", "取消终止合同出现异常" + var5.getMessage());
				result.put("code", 1);
				return NCCRestUtils.toJSONString(result);
			}
		}

		return NCCRestUtils.toJSONString(result);
	}

	@POST
	@Path("modify")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString modify(List<Map<String, Object>> jsonArray) throws BusinessException {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		ArrayList aggVOList = new ArrayList();

		try {
			Iterator var4 = jsonArray.iterator();

			while (true) {
				if (!var4.hasNext()) {
					if (aggVOList.size() > 0) {
						AggCtSaleVO[] modifyVOs = ((IAPISaledailyMaintain) NCLocator.getInstance()
								.lookup(IAPISaledailyMaintain.class))
										.modify((AggCtSaleVO[]) aggVOList.toArray(new AggCtSaleVO[aggVOList.size()]));
						result.put("message", "合同变更成功");
						result.put("data", modifyVOs);
						result.put("code", 0);
					}
					break;
				}

				Map<String, Object> map = (Map) var4.next();
				if (map == null || !map.containsKey(CtEntity.ct_sale.name())
						|| !map.containsKey(CtEntity.ct_sale_b.name())) {
					result.put("message", "传入参数错误,表头表体信息必输");
					result.put("code", 1);
					return NCCRestUtils.toJSONString(result);
				}

				Map<String, Object> saleHead = (Map) map.get(CtEntity.ct_sale.name());
				AggCtSaleVO aggSaleVO = new AggCtSaleVO();
				CtSaleVO parentVO = new CtSaleVO();
				Set<String> headKeySet = saleHead.keySet();
				Iterator var10 = headKeySet.iterator();

				while (var10.hasNext()) {
					String headKey = (String) var10.next();
					parentVO.setAttributeValue(headKey, saleHead.get(headKey));
				}

				aggSaleVO.setParentVO(parentVO);
				List<Map<String, Object>> puBody = (List) map.get(CtEntity.ct_sale_b.name());
				List<CtSaleBVO> bVOList = new ArrayList();
				Iterator var12 = puBody.iterator();

				Map saleChange;
				Iterator var15;
				String changeKey;
				while (var12.hasNext()) {
					saleChange = (Map) var12.next();
					CtSaleBVO ctSaleBVO = new CtSaleBVO();
					var15 = saleChange.keySet().iterator();

					while (var15.hasNext()) {
						changeKey = (String) var15.next();
						ctSaleBVO.setAttributeValue(changeKey, saleChange.get(changeKey));
					}

					bVOList.add(ctSaleBVO);
				}

				aggSaleVO.setCtSaleBVO((ISuperVO[]) bVOList.toArray(new CtSaleBVO[bVOList.size()]));
				CtSaleChangeVO[] changeVO = new CtSaleChangeVO[1];
				saleChange = (Map) map.get(CtEntity.ct_sale_change.name());
				Set<String> changeKeySet = saleChange.keySet();
				var15 = changeKeySet.iterator();

				while (var15.hasNext()) {
					changeKey = (String) var15.next();
					changeVO[0].setAttributeValue(changeKey, saleChange.get(changeKey));
				}

				changeVO[0].setAttributeValue("vchgdate", AppContext.getInstance().getBusiDate());
				changeVO[0].setAttributeValue("vchgpsn", AppContext.getInstance().getPkUser());
				aggSaleVO.setCtSaleChangeVO(changeVO);
				aggVOList.add(aggSaleVO);
			}
		} catch (BusinessException var17) {
			result.put("message", "变更合同出现异常" + var17.getMessage());
			result.put("code", 1);
			return NCCRestUtils.toJSONString(result);
		}

		return NCCRestUtils.toJSONString(result);
	}

	@POST
	@Path("validate")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString validate(Map<String, Object> paramMap) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		if (paramMap == null) {
			result.put("message", "传入参数不能为空");
			result.put("code", 1);
		} else {
			try {
				AggCtSaleVO[] vos = this.querySaledaily(paramMap);
				if (ArrayUtils.isEmpty(vos)) {
					result.put("message", "没有符合条件的数据");
					result.put("code", 1);
				} else {
					AggCtSaleVO[] unTerminate = ((IAPISaledailyMaintain) NCLocator.getInstance()
							.lookup(IAPISaledailyMaintain.class)).validate(vos);
					result.put("message", "合同生效成功");
					result.put("data", unTerminate);
					result.put("code", 0);
				}
			} catch (BusinessException var5) {
				result.put("message", "合同生效出现异常" + var5.getMessage());
				result.put("code", 1);
				return NCCRestUtils.toJSONString(result);
			}
		}

		return NCCRestUtils.toJSONString(result);
	}

	@POST
	@Path("unvalidate")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString unValidate(Map<String, Object> paramMap) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		if (paramMap == null) {
			result.put("message", "传入参数不能为空");
			result.put("code", 1);
		} else {
			try {
				AggCtSaleVO[] vos = this.querySaledaily(paramMap);
				if (ArrayUtils.isEmpty(vos)) {
					result.put("message", "没有符合条件的数据");
					result.put("data", (Object) null);
					result.put("code", 1);
				} else {
					AggCtSaleVO[] unTerminate = ((IAPISaledailyMaintain) NCLocator.getInstance()
							.lookup(IAPISaledailyMaintain.class)).unValidate(vos);
					result.put("message", "合同取消生效成功");
					result.put("data", unTerminate);
					result.put("code", 0);
				}
			} catch (BusinessException var5) {
				result.put("message", "合同取消生效出现异常" + var5.getMessage());
				result.put("code", 1);
				return NCCRestUtils.toJSONString(result);
			}
		}

		return NCCRestUtils.toJSONString(result);
	}

	@POST
	@Path("queryrecplan")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString queryRecPlanVO(Map<String, Object> paramMap) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		if (paramMap == null) {
			result.put("message", "传入参数不能为空");
			result.put("code", 1);
		} else {
			String pk_ct_pu = (String) paramMap.get("pk_ct_sale");
			String vbillcode = (String) paramMap.get("vbillcode");
			if (StringUtils.isNotEmpty(pk_ct_pu)) {
				try {
					RecvPlanVO[] recPlanVOs = ((IAPISaledailyMaintain) NCLocator.getInstance()
							.lookup(IAPISaledailyMaintain.class)).queryRecPlanVO(pk_ct_pu, vbillcode);
					if (recPlanVOs.length > 0) {
						result.put("message", "收款计划查询成功");
						result.put("data", recPlanVOs);
						result.put("code", 0);
					}
				} catch (BusinessException var6) {
					result.put("message", "合同联查收款计划出现异常" + var6.getMessage());
					result.put("code", 1);
					return NCCRestUtils.toJSONString(result);
				}
			} else {
				result.put("message", "销售合同主键信息不能为空");
				result.put("code", 1);
			}
		}

		return NCCRestUtils.toJSONString(result);
	}

	@POST
	@Path("querybysrcBids")
	@Consumes({"application/json"})
	@Produces({"application/json"})
	public JSONString queryBodyBySourceIds(String[] sourcebids) {
		Map<String, Object> result = new HashMap();
		result.put("success", true);
		if (ArrayUtils.isEmpty(sourcebids)) {
			result.put("message", "传入参数不能为空");
			result.put("code", 1);
			return NCCRestUtils.toJSONString(result);
		} else {
			try {
				CtSalebillViewVO[] viewVO = ((IAPISaledailyQuery) NCLocator.getInstance()
						.lookup(IAPISaledailyQuery.class)).queryViewVOBySourceBIDs(sourcebids);
				if (ArrayUtils.isEmpty(viewVO)) {
					result.put("message", "没有符合条件的数据");
					result.put("code", 1);
				} else {
					result.put("message", "合同查询成功");
					result.put("data", viewVO);
					result.put("code", 0);
				}
			} catch (BusinessException var4) {
				result.put("message", "查询销售合同异常");
				result.put("code", 1);
				return NCCRestUtils.toJSONString(result);
			}

			return NCCRestUtils.toJSONString(result);
		}
	}

	private AggCtSaleVO[] querySaledaily(Map<String, Object> paramMap) {
		List<String> vbillcodes = (List) paramMap.get("vbillcode");
		List<String> pk_ct_sales = (List) paramMap.get("pk_ct_sale");
		QuerySchemeBuilder builder = QuerySchemeBuilder.buildByFullClassName(CtSaleVO.class.getName());
		if (vbillcodes != null && vbillcodes.size() > 0) {
			builder.append("vbillcode", EqOperator.getInstance(), vbillcodes.toArray(new String[vbillcodes.size()]));
		}

		if (pk_ct_sales != null && pk_ct_sales.size() > 0) {
			builder.append("pk_ct_sale", EqOperator.getInstance(), pk_ct_sales.toArray(new String[pk_ct_sales.size()]));
		}

		IAPISaledailyQuery query = (IAPISaledailyQuery) NCLocator.getInstance().lookup(IAPISaledailyQuery.class);
		AggCtSaleVO[] vos = null;

		try {
			vos = query.queryVOByScheme(builder.create());
		} catch (BusinessException var8) {
			ExceptionUtils.wrappException(var8);
		}

		return vos;
	}

	public String getModule() {
		return null;
	}
}
package nccloud.openapi.common.tool;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import nc.bs.framework.common.InvocationInfoProxy;
import nc.bs.framework.common.NCLocator;
import nc.bs.logging.Logger;
import nc.bs.pub.filesystem.IAttachManageConst;
import nc.bs.pub.filesystem.IFileSystemService;
import nc.itf.bd.srmbdpub.ISrmpubDBService;
import nc.vo.pub.BusinessException;
import nc.vo.pub.filesystem.NCFileNode;
import nc.vo.pub.filesystem.NCFileVO;
import nccloud.impl.platform.common.util.StringUtils;
import uap.pub.fs.client.FileStorageClient;
import uap.pub.fs.domain.basic.FileHeader;
import uap.pub.fs.domain.ext.IFileStorageExt;


public class ThirdSysFileToNcc {
	
	
	/**
	 * 生成PK
	 * @return
	 */
	private ISrmpubDBService dbservice;
	public String getPK() throws BusinessException{
		if(null==dbservice){
			dbservice = (ISrmpubDBService)NCLocator.getInstance().lookup(ISrmpubDBService.class);
		}
		String[] pks  = dbservice.generateIDs(1);
	    return pks[0];
	}
		
	/*
	 * 上传文件
	 * */
	public List<NCFileNode> UploadFileAction(String pk_filepath,List<Map<String, String>> fileList){
		//时间戳
		long currentTimeMillis = System.currentTimeMillis();
		System.out.println(currentTimeMillis);
		List<NCFileNode> fileNodes=new ArrayList<NCFileNode>();
		for(int i=0;i<fileList.size();i++){
			Map<String, String> fileMap = fileList.get(i);
			if(StringUtils.isNotEmpty(fileMap.get("name"))&& StringUtils.isNotEmpty(fileMap.get("type"))&& StringUtils.isNotEmpty(fileMap.get("url"))){
				try {
					URL url = new URL(fileMap.get("url"));
					URLConnection conn = url.openConnection();
					InputStream inputStream = conn.getInputStream();
					NCFileNode uploadFile = this.uploadFile(InvocationInfoProxy.getInstance().getUserDataSource(), pk_filepath, fileMap.get("name")+"."+fileMap.get("type"), inputStream, InvocationInfoProxy.getInstance().getUserId(),0);
					if(null!=uploadFile){
						fileNodes.add(uploadFile);
					}
				} catch (IOException e) {
					e.printStackTrace();
				}catch (Exception e) {
					e.printStackTrace();
				}
				
			}
		}
		return fileNodes;
	}
	
	
	/**
	 * 上传文件
	 * @param dsName
	 * @param pPath
	 * @param fileName
	 * @param input
	 * @param creator
	 * @param fileLength
	 * @return
	 * @throws Exception
	 */
	public NCFileNode uploadFile(String dsName, String pPath, String fileName, InputStream input, String creator, long fileLength)
		    throws Exception
	  {
	    Logger.debug("------------------------sungbztest uploadFile--------------------");
	    FileHeader fileHeader = FileStorageClient.getInstance().uploadFile(IAttachManageConst.RIAMoudleID, fileName, input, false, new IFileStorageExt[0]);
	    NCFileNode newNode = null;
	    if (fileHeader != null) {
	      String pk_doc = fileHeader.getPath();
	      String name = fileHeader.getName();
	      long size = fileHeader.getFileSize().longValue();
	      IFileSystemService service = (IFileSystemService)NCLocator.getInstance().lookup(IFileSystemService.class);
	      NCFileVO attach = new NCFileVO();
	      attach.setPath(name);
	      attach.setCreator(creator);
	      attach.setIsdoc("z");
	      attach.setFileLen(size);
	      attach.setPk_doc(pk_doc);
	      newNode = service.createCloudFileNode(pPath, creator, attach);
	    }
	    return newNode;
	  }	
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xxpp688

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值