|
|
@@ -0,0 +1,228 @@
|
|
|
+package com.yw.contract.client.action;
|
|
|
+
|
|
|
+import com.yw.contract.contract.model.ContractInfo;
|
|
|
+import com.yw.contract.contract.service.ContractEntryService;
|
|
|
+import com.yw.core.clientImpl.model.ResultVo;
|
|
|
+import com.yw.core.clientImpl.service.RequestAbs;
|
|
|
+import com.yw.core.session.AppSession;
|
|
|
+import com.yw.core.utils.ParameterHelper;
|
|
|
+import com.yw.core.utils.RegisterCodeImpl;
|
|
|
+import com.yw.core.utils.StringUtil;
|
|
|
+import net.sf.json.JSONArray;
|
|
|
+import net.sf.json.JSONObject;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.springframework.context.ApplicationContext;
|
|
|
+
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 从MES查询OA合同分页列表
|
|
|
+ */
|
|
|
+public class ContractQueryListAction extends RequestAbs {
|
|
|
+ public final String serviceId = "contract_mesContractQueryList";
|
|
|
+ private ApplicationContext cxt = null;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getResult() {
|
|
|
+ // 获取请求的参数
|
|
|
+ String param = getParameters();
|
|
|
+ JSONObject json = JSONObject.fromObject(param);
|
|
|
+
|
|
|
+ if (null == cxt) {
|
|
|
+ cxt = AppSession.getApplicationContext();
|
|
|
+ }
|
|
|
+
|
|
|
+ ResultVo rv = null;
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 获取单位ID(必传参数)
|
|
|
+ String unitIdStr = json.getString("unitId");
|
|
|
+
|
|
|
+ if (StringUtil.isEmpty(unitIdStr)) {
|
|
|
+ rv = new ResultVo();
|
|
|
+ rv.setReturnCode("-1");
|
|
|
+ rv.setReturnMsg("单位ID不能为空");
|
|
|
+ return JSONObject.fromObject(rv, config).toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ Long unitId = Long.valueOf(unitIdStr);
|
|
|
+
|
|
|
+ // 获取分页参数
|
|
|
+ int page = json.has("page") ? json.getInt("page") : 1;
|
|
|
+ int pageSize = json.has("pageSize") ? json.getInt("pageSize") : 10;
|
|
|
+
|
|
|
+ // 获取查询条件
|
|
|
+ String contractNumber = json.optString("contractNumber", ""); // 合同编号
|
|
|
+ String contractName = json.optString("contractName", ""); // 合同名称
|
|
|
+ String contractType = json.optString("contractType", ""); // 合同类型
|
|
|
+ String isValidStr = json.optString("isValid", ""); // 流程状态
|
|
|
+
|
|
|
+ // 验证isValid参数,只允许0、1、3
|
|
|
+ Integer isValid = null;
|
|
|
+ if (StringUtils.isNotEmpty(isValidStr)) {
|
|
|
+ try {
|
|
|
+ isValid = Integer.parseInt(isValidStr);
|
|
|
+ if (isValid != 0 && isValid != 1 && isValid != 3) {
|
|
|
+ rv = new ResultVo();
|
|
|
+ rv.setReturnCode("-1");
|
|
|
+ rv.setReturnMsg("isValid参数只能为0、1或3");
|
|
|
+ return JSONObject.fromObject(rv, config).toString();
|
|
|
+ }
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ rv = new ResultVo();
|
|
|
+ rv.setReturnCode("-1");
|
|
|
+ rv.setReturnMsg("isValid参数格式错误");
|
|
|
+ return JSONObject.fromObject(rv, config).toString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ContractEntryService contractEntryService =
|
|
|
+ (ContractEntryService) cxt.getBean("contractEntryService");
|
|
|
+
|
|
|
+ // 构建查询参数(参考ContractEntryAction的实现方式)
|
|
|
+ ParameterHelper ph = new ParameterHelper();
|
|
|
+ if (StringUtils.isNotEmpty(contractNumber)) {
|
|
|
+ ph.setParam("contract_search_number", "%" + contractNumber + "%");
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(contractName)) {
|
|
|
+ ph.setParam("contract_search_name", "%" + contractName + "%");
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(contractType)) {
|
|
|
+ ph.setParam("contract_search_type", contractType); // 精确匹配,不加%
|
|
|
+ }
|
|
|
+ if (isValid != null) {
|
|
|
+ ph.setParam("isValid", isValid.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 构建查询对象,将unitId放入ContractInfo中
|
|
|
+ ContractInfo info = new ContractInfo();
|
|
|
+ info.setUnit_id(unitId);
|
|
|
+
|
|
|
+ // 调用Service查询合同列表(使用MES专用方法,默认查询isValid为0、1、3的合同)
|
|
|
+ List<ContractInfo> contractList = contractEntryService.mesContractEntryList(
|
|
|
+ String.valueOf(page - 1),
|
|
|
+ String.valueOf(pageSize),
|
|
|
+ ph,
|
|
|
+ info
|
|
|
+ );
|
|
|
+
|
|
|
+ // 查询总数
|
|
|
+ int total = contractEntryService.countMesContractEntry(ph, info);
|
|
|
+
|
|
|
+ // 构建返回数据(只返回列表需要的核心字段)
|
|
|
+ JSONArray contractArray = new JSONArray();
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ if (contractList != null && !contractList.isEmpty()) {
|
|
|
+ for (ContractInfo contract : contractList) {
|
|
|
+ JSONObject contractJson = new JSONObject();
|
|
|
+ // 基础信息
|
|
|
+ contractJson.put("universalid", contract.getUniversalid());
|
|
|
+ contractJson.put("contractNumber", contract.getContract_number()); // 合同编号
|
|
|
+ contractJson.put("contractName", contract.getContract_name()); // 合同名称
|
|
|
+ contractJson.put("contractType", contract.getContract_type()); // 合同类型
|
|
|
+ contractJson.put("contractTypeName", contract.getContract_type_name()); // 合同类型名称
|
|
|
+ contractJson.put("applyDate", contract.getApplyDate()); // 填报日期
|
|
|
+
|
|
|
+ // 格式化日期字段
|
|
|
+ if (contract.getCreateTime() != null) {
|
|
|
+ contractJson.put("createTime", sdf.format(contract.getCreateTime())); // 生成时间
|
|
|
+ }
|
|
|
+ contractJson.put("initiator", contract.getInitiator()); // 发起人
|
|
|
+
|
|
|
+ // 金额和日期
|
|
|
+ contractJson.put("contractMoney", contract.getContract_money()); // 合同金额
|
|
|
+ /*if (contract.getContract_entrying_date() != null) {
|
|
|
+ contractJson.put("contractEntryingDate", sdf.format(contract.getContract_entrying_date())); // 录入日期
|
|
|
+ }*/
|
|
|
+
|
|
|
+ // 供需方
|
|
|
+ contractJson.put("firstpartyName", contract.getFirstparty_name()); // 甲方/需方名称
|
|
|
+ contractJson.put("secondpartyName", contract.getSecondparty_name()); // 乙方/供方名称
|
|
|
+
|
|
|
+ // 人员信息
|
|
|
+ contractJson.put("salesmanName", contract.getSalesman_name()); // 业务员名称
|
|
|
+ contractJson.put("salesmanTel", contract.getSalesmanTel()); // 经办人电话
|
|
|
+ contractJson.put("department", contract.getDepartment()); // 填报部门
|
|
|
+ contractJson.put("otherContractor", contract.getOther_contractor()); // 对方联系人及电话
|
|
|
+
|
|
|
+
|
|
|
+ // 供应商或客户
|
|
|
+ contractJson.put("supplierCode", contract.getSupplierCode()); // 供应商编码
|
|
|
+ contractJson.put("supplierName", contract.getSupplierName()); // 供应商名称
|
|
|
+
|
|
|
+ // 项目和位置
|
|
|
+ contractJson.put("projectItem", contract.getProjectItem()); // 所属项目或产品
|
|
|
+ contractJson.put("usePosition", contract.getUsePosition()); // 使用位置
|
|
|
+
|
|
|
+ // 流程状态
|
|
|
+ contractJson.put("isValid", contract.getIsValid()); // 流程办理状态
|
|
|
+ contractJson.put("processId", contract.getProcessId()); // 流水号
|
|
|
+ contractJson.put("flowInsId", contract.getFlowInsId()); // 流程实例id
|
|
|
+ contractJson.put("lFormInsId", contract.getlFormInsId()); // 表单实例ID
|
|
|
+
|
|
|
+ // 采购相关
|
|
|
+ contractJson.put("purchaseId", contract.getPurchaseId()); // 采购申请单ID
|
|
|
+ contractJson.put("purchaseNumber", contract.getPurchaseNumber()); // 采购申请单编号
|
|
|
+ contractJson.put("orderNumber", contract.getOrderNumber()); // 采购订单编号
|
|
|
+
|
|
|
+ // 其他信息
|
|
|
+ contractJson.put("contractContent", contract.getContractContent()); // 合同内容
|
|
|
+ contractJson.put("otherFile", contract.getOtherFile()); // 随合同提交的其它材料
|
|
|
+ contractJson.put("salesmanSign", contract.getSalesmanSign()); // 经办人签字
|
|
|
+
|
|
|
+ contractArray.add(contractJson);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ JSONObject resultData = new JSONObject();
|
|
|
+ resultData.put("total", total);
|
|
|
+ resultData.put("page", page);
|
|
|
+ resultData.put("pageSize", pageSize);
|
|
|
+ resultData.put("list", contractArray);
|
|
|
+
|
|
|
+ rv = new ResultVo();
|
|
|
+ rv.setReturnCode("1");
|
|
|
+ rv.setReturnMsg("success");
|
|
|
+ rv.setReturnParams(resultData.toString());
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ rv = new ResultVo();
|
|
|
+ rv.setReturnCode("-1");
|
|
|
+ rv.setReturnMsg("查询合同列表异常:" + e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ return JSONObject.fromObject(rv, config).toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getServiceId() {
|
|
|
+ return serviceId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void main(String[] args) throws Exception {
|
|
|
+ // 测试用例
|
|
|
+ String url = "http://localhost:8180/ynet/clientServices.do?iscrypt=1";
|
|
|
+
|
|
|
+ // 构造测试数据
|
|
|
+ JSONObject testData = new JSONObject();
|
|
|
+ testData.put("serviceId", "contract_mesContractQueryList");
|
|
|
+
|
|
|
+ JSONObject params = new JSONObject();
|
|
|
+ params.put("unitId", "405015400328302"); // 单位ID(必传)
|
|
|
+ params.put("page", 1); // 页码
|
|
|
+ params.put("pageSize", 20); // 每页条数
|
|
|
+ //params.put("contractNumber", "HT2026"); // 合同编号(可选)
|
|
|
+ //params.put("contractName", "测试"); // 合同名称(可选)
|
|
|
+ params.put("contractType", "2"); // 合同类型(可选,1销售合同 ,2采购合同)
|
|
|
+ //params.put("isValid", "1"); // 流程状态(可选,只能是0审批中、1已生效、3退回发起人)
|
|
|
+
|
|
|
+ testData.put("params", params);
|
|
|
+
|
|
|
+ String rs = RegisterCodeImpl.requestPage(url, testData.toString());
|
|
|
+ System.out.println(rs);
|
|
|
+ }
|
|
|
+}
|