Merge remote-tracking branch 'origin/main'
This commit is contained in:
		
						commit
						9975914490
					
				| 
						 | 
					@ -31,6 +31,7 @@ public class GatheringbillEditSaveBatchBSAction extends BillUpdateBatchBSAction
 | 
				
			||||||
        this.validatorCode.add(93);
 | 
					        this.validatorCode.add(93);
 | 
				
			||||||
        this.validatorCode.add(94);
 | 
					        this.validatorCode.add(94);
 | 
				
			||||||
        this.validatorCode.add(100);
 | 
					        this.validatorCode.add(100);
 | 
				
			||||||
 | 
					        this.validatorCode.remove(44);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected void doBeforeUpdate(AggregatedValueObject[] bills, AggregatedValueObject[] orginBills) throws BusinessException {
 | 
					    protected void doBeforeUpdate(AggregatedValueObject[] bills, AggregatedValueObject[] orginBills) throws BusinessException {
 | 
				
			||||||
| 
						 | 
					@ -41,34 +42,34 @@ public class GatheringbillEditSaveBatchBSAction extends BillUpdateBatchBSAction
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /**
 | 
					        /**
 | 
				
			||||||
         * 收款单保存校验关联的销售订单实际收款金额是否超过价税合计
 | 
					         * 收款单保存校验关联的销售订单实际收款金额是否超过价税合计
 | 
				
			||||||
         */
 | 
					         */
 | 
				
			||||||
        int i = 0;
 | 
					        int i = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for(AggregatedValueObject bill : bills) {
 | 
					        for(AggregatedValueObject bill : bills) {
 | 
				
			||||||
            AggregatedValueObject oriBill = orginBills[i++];
 | 
					            AggregatedValueObject oriBill = orginBills[i++];
 | 
				
			||||||
            BaseBillVO billVO = (BaseBillVO) bill.getParentVO(); //修改的收款单
 | 
					            BaseBillVO billVO = (BaseBillVO) bill.getParentVO(); //修改的收款单
 | 
				
			||||||
            BaseBillVO billOriVO = (BaseBillVO) oriBill.getParentVO(); //之前的收款单
 | 
					            BaseBillVO billOriVO = (BaseBillVO) oriBill.getParentVO(); //之前的收款单
 | 
				
			||||||
            UFDouble money = billVO.getMoney(); //修改后的金额
 | 
					            UFDouble money = billVO.getMoney(); //修改后的金额
 | 
				
			||||||
            UFDouble oriMoney = billOriVO.getMoney(); //修改前的金额
 | 
					            UFDouble oriMoney = billOriVO.getMoney(); //修改前的金额
 | 
				
			||||||
            String pk_tradetype = billVO.getPk_tradetype();
 | 
					            String pk_tradetype = billVO.getPk_tradetype();
 | 
				
			||||||
            if(!"F2-Cxx-02".equals(pk_tradetype)){
 | 
					            if(!"F2-Cxx-02".equals(pk_tradetype)){
 | 
				
			||||||
                continue;
 | 
					                continue;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            String def3 = billVO.getDef3(); //收款单对应的销售订单id
 | 
					            String def3 = billVO.getDef3(); //收款单对应的销售订单id
 | 
				
			||||||
            if(StringUtil.isEmpty(def3) || "N".equals(def3) || "~".equals(def3)){
 | 
					            if(StringUtil.isEmpty(def3) || "N".equals(def3) || "~".equals(def3)){
 | 
				
			||||||
                //无绑定的销售订单则下一次循环
 | 
					                //无绑定的销售订单则下一次循环
 | 
				
			||||||
                continue;
 | 
					                continue;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            //计算收款单金额差值
 | 
					            //计算收款单金额差值
 | 
				
			||||||
            UFDouble changeMoney = money.sub(oriMoney);
 | 
					            UFDouble changeMoney = money.sub(oriMoney);
 | 
				
			||||||
            //根据销售订单id去查询销售订单
 | 
					            //根据销售订单id去查询销售订单
 | 
				
			||||||
            BaseDAO dao = new BaseDAO();
 | 
					            BaseDAO dao = new BaseDAO();
 | 
				
			||||||
            String sql = "select nreceivedmny,ntotalorigmny from so_saleorder where dr = 0 and csaleorderid = '" +def3+"'";
 | 
					            String sql = "select nreceivedmny,ntotalorigmny from so_saleorder where dr = 0 and csaleorderid = '" +def3+"'";
 | 
				
			||||||
            Map saleMap = (Map)dao.executeQuery(sql, new MapProcessor());
 | 
					            Map saleMap = (Map)dao.executeQuery(sql, new MapProcessor());
 | 
				
			||||||
            //销售订单价税合计
 | 
					            //销售订单价税合计
 | 
				
			||||||
            UFDouble ntotalorigmny = UFDouble.ZERO_DBL;
 | 
					            UFDouble ntotalorigmny = UFDouble.ZERO_DBL;
 | 
				
			||||||
            //销售订单实际收款金额
 | 
					            //销售订单实际收款金额
 | 
				
			||||||
            UFDouble nreceivedmny = UFDouble.ZERO_DBL;
 | 
					            UFDouble nreceivedmny = UFDouble.ZERO_DBL;
 | 
				
			||||||
            if(saleMap != null) {
 | 
					            if(saleMap != null) {
 | 
				
			||||||
                nreceivedmny = new UFDouble(saleMap.get("nreceivedmny") == null ? "0" : saleMap.get("nreceivedmny").toString());
 | 
					                nreceivedmny = new UFDouble(saleMap.get("nreceivedmny") == null ? "0" : saleMap.get("nreceivedmny").toString());
 | 
				
			||||||
| 
						 | 
					@ -76,7 +77,7 @@ public class GatheringbillEditSaveBatchBSAction extends BillUpdateBatchBSAction
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            UFDouble moreMoney = nreceivedmny.add(changeMoney).sub(ntotalorigmny);
 | 
					            UFDouble moreMoney = nreceivedmny.add(changeMoney).sub(ntotalorigmny);
 | 
				
			||||||
            if(nreceivedmny.add(changeMoney).compareTo(ntotalorigmny) > 0){
 | 
					            if(nreceivedmny.add(changeMoney).compareTo(ntotalorigmny) > 0){
 | 
				
			||||||
                throw new BusinessException("【该笔收款已超销售订单"+ moreMoney +"元,无法传输!请检查订单累计收款金额!】");
 | 
					                throw new BusinessException("【该笔收款已超销售订单"+ moreMoney +"元,无法传输!请检查订单累计收款金额!】");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,7 +30,7 @@ public class GatheringbillSaveBatchBSAction extends BillInsertBatchBSAction {
 | 
				
			||||||
        this.validatorCode.add(8);
 | 
					        this.validatorCode.add(8);
 | 
				
			||||||
        this.validatorCode.add(24);
 | 
					        this.validatorCode.add(24);
 | 
				
			||||||
        this.validatorCode.add(28);
 | 
					        this.validatorCode.add(28);
 | 
				
			||||||
        this.validatorCode.add(44);
 | 
					//        this.validatorCode.add(44);
 | 
				
			||||||
        this.validatorCode.add(46);
 | 
					        this.validatorCode.add(46);
 | 
				
			||||||
        this.validatorCode.add(31);
 | 
					        this.validatorCode.add(31);
 | 
				
			||||||
        this.validatorCode.add(36);
 | 
					        this.validatorCode.add(36);
 | 
				
			||||||
| 
						 | 
					@ -59,29 +59,29 @@ public class GatheringbillSaveBatchBSAction extends BillInsertBatchBSAction {
 | 
				
			||||||
        ArapBillVOUtils.setDefaultSettleFlag(bills);
 | 
					        ArapBillVOUtils.setDefaultSettleFlag(bills);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /**
 | 
					        /**
 | 
				
			||||||
         * 收款单保存校验关联的销售订单实际收款金额是否超过价税合计
 | 
					         * 收款单保存校验关联的销售订单实际收款金额是否超过价税合计
 | 
				
			||||||
         */
 | 
					         */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for(AggregatedValueObject bill : bills) {
 | 
					        for(AggregatedValueObject bill : bills) {
 | 
				
			||||||
            BaseBillVO billVO = (BaseBillVO) bill.getParentVO(); //修改的收款单
 | 
					            BaseBillVO billVO = (BaseBillVO) bill.getParentVO(); //修改的收款单
 | 
				
			||||||
            UFDouble money = billVO.getMoney(); //金额
 | 
					            UFDouble money = billVO.getMoney(); //金额
 | 
				
			||||||
            String pk_tradetype = billVO.getPk_tradetype();
 | 
					            String pk_tradetype = billVO.getPk_tradetype();
 | 
				
			||||||
            if(!"F2-Cxx-02".equals(pk_tradetype)){
 | 
					            if(!"F2-Cxx-02".equals(pk_tradetype)){
 | 
				
			||||||
                continue;
 | 
					                continue;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            String def3 = billVO.getDef3(); //收款单对应的销售订单id
 | 
					            String def3 = billVO.getDef3(); //收款单对应的销售订单id
 | 
				
			||||||
            if(StringUtil.isEmpty(def3) || "N".equals(def3) || "~".equals(def3)){
 | 
					            if(StringUtil.isEmpty(def3) || "N".equals(def3) || "~".equals(def3)){
 | 
				
			||||||
                //无绑定的销售订单则下一次循环
 | 
					                //无绑定的销售订单则下一次循环
 | 
				
			||||||
                continue;
 | 
					                continue;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //根据销售订单id去查询销售订单
 | 
					            //根据销售订单id去查询销售订单
 | 
				
			||||||
            BaseDAO dao = new BaseDAO();
 | 
					            BaseDAO dao = new BaseDAO();
 | 
				
			||||||
            String sql = "select nreceivedmny,ntotalorigmny from so_saleorder where dr = 0 and csaleorderid = '" +def3+"'";
 | 
					            String sql = "select nreceivedmny,ntotalorigmny from so_saleorder where dr = 0 and csaleorderid = '" +def3+"'";
 | 
				
			||||||
            Map saleMap = (Map)dao.executeQuery(sql, new MapProcessor());
 | 
					            Map saleMap = (Map)dao.executeQuery(sql, new MapProcessor());
 | 
				
			||||||
            //销售订单价税合计
 | 
					            //销售订单价税合计
 | 
				
			||||||
            UFDouble ntotalorigmny = UFDouble.ZERO_DBL;
 | 
					            UFDouble ntotalorigmny = UFDouble.ZERO_DBL;
 | 
				
			||||||
            //销售订单实际收款金额
 | 
					            //销售订单实际收款金额
 | 
				
			||||||
            UFDouble nreceivedmny = UFDouble.ZERO_DBL;
 | 
					            UFDouble nreceivedmny = UFDouble.ZERO_DBL;
 | 
				
			||||||
            if(saleMap != null) {
 | 
					            if(saleMap != null) {
 | 
				
			||||||
                nreceivedmny = new UFDouble(saleMap.get("nreceivedmny") == null ? "0" : saleMap.get("nreceivedmny").toString());
 | 
					                nreceivedmny = new UFDouble(saleMap.get("nreceivedmny") == null ? "0" : saleMap.get("nreceivedmny").toString());
 | 
				
			||||||
| 
						 | 
					@ -89,7 +89,7 @@ public class GatheringbillSaveBatchBSAction extends BillInsertBatchBSAction {
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            UFDouble moreMoney = nreceivedmny.add(money).sub(ntotalorigmny);
 | 
					            UFDouble moreMoney = nreceivedmny.add(money).sub(ntotalorigmny);
 | 
				
			||||||
            if(nreceivedmny.add(money).compareTo(ntotalorigmny) > 0){
 | 
					            if(nreceivedmny.add(money).compareTo(ntotalorigmny) > 0){
 | 
				
			||||||
                throw new BusinessException("【该笔收款已超销售订单"+ moreMoney +"元,无法传输!请检查订单累计收款金额!】");
 | 
					                throw new BusinessException("【该笔收款已超销售订单"+ moreMoney +"元,无法传输!请检查订单累计收款金额!】");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,306 @@
 | 
				
			||||||
 | 
					package nccloud.web.gl.accountrep.action;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import nc.bs.logging.Logger;
 | 
				
			||||||
 | 
					import nc.vo.pub.BusinessException;
 | 
				
			||||||
 | 
					import nccloud.framework.core.exception.ExceptionUtils;
 | 
				
			||||||
 | 
					import nccloud.framework.service.ServiceLocator;
 | 
				
			||||||
 | 
					import nccloud.framework.web.action.itf.ICommonAction;
 | 
				
			||||||
 | 
					import nccloud.framework.web.container.IRequest;
 | 
				
			||||||
 | 
					import nccloud.framework.web.container.SessionContext;
 | 
				
			||||||
 | 
					import nccloud.framework.web.json.JsonFactory;
 | 
				
			||||||
 | 
					import nccloud.pubitf.gl.account.IAccountReportWebService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.math.BigDecimal;
 | 
				
			||||||
 | 
					import java.text.DecimalFormat;
 | 
				
			||||||
 | 
					import java.time.LocalDate;
 | 
				
			||||||
 | 
					import java.time.format.DateTimeFormatter;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import java.util.stream.Collectors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class AccountBalanceTotalQueryAction implements ICommonAction {
 | 
				
			||||||
 | 
					    public AccountBalanceTotalQueryAction() {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    public Object doAction(IRequest request) {
 | 
				
			||||||
 | 
					        String json = request.read();
 | 
				
			||||||
 | 
					        Logger.info("busiParam:" + json);
 | 
				
			||||||
 | 
					        Map<String, Object> paraMap = (Map) JsonFactory.create().fromJson(json, Map.class);
 | 
				
			||||||
 | 
					        this.setAppcode(paraMap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            return this.doQuery(getParaMap(paraMap));
 | 
				
			||||||
 | 
					        } catch (BusinessException e) {
 | 
				
			||||||
 | 
					            ExceptionUtils.wrapException(e);
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    public Object doQuery(Map<String, Object> paraMap) throws BusinessException {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 科目余额表数据
 | 
				
			||||||
 | 
					        Map<String, Object> result = ((IAccountReportWebService) ServiceLocator.find(IAccountReportWebService.class)).queryAccBalance((Map<String, Object>) paraMap.get("second"));
 | 
				
			||||||
 | 
					        // 科目辅助余额表数据
 | 
				
			||||||
 | 
					        Map<String, Object> result1 = ((IAccountReportWebService) ServiceLocator.find(IAccountReportWebService.class)).querySubjAssBalanceBooks((Map<String, Object>) paraMap.get("first"));
 | 
				
			||||||
 | 
					        List<Map<String, Object>> data = (List<Map<String, Object>>) result.get("data");
 | 
				
			||||||
 | 
					        List<Map<String, Object>> data1 = (List<Map<String, Object>>) result1.get("data");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 过滤掉 data1 中 assname 为空的数据
 | 
				
			||||||
 | 
					        data1 = data1.stream()
 | 
				
			||||||
 | 
					                .filter(item -> item.get("assname") != null && !item.get("assname").toString().trim().isEmpty())
 | 
				
			||||||
 | 
					                .collect(Collectors.toList());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 创建一个映射,根据 acccode 快速查找 data 中的元素
 | 
				
			||||||
 | 
					        Map<String, Map<String, Object>> dataMap = data.stream()
 | 
				
			||||||
 | 
					                .collect(Collectors.toMap(item -> (String) item.get("acccode"), item -> item));
 | 
				
			||||||
 | 
					        for (Map<String, Object> item : data) {
 | 
				
			||||||
 | 
					            String endorint = (String) item.get("endorint");
 | 
				
			||||||
 | 
					            BigDecimal endlocamount = parseEndlocamount((String) item.get("endlocamount")) ;
 | 
				
			||||||
 | 
					            if ("贷".equals(endorint)) {
 | 
				
			||||||
 | 
					                item.put("endlocamount", endlocamount.negate());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // 构造新的 Map,存储每个父级科目的期末余额之和
 | 
				
			||||||
 | 
					        Map<String, BigDecimal> sumMap = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 构造新的列表
 | 
				
			||||||
 | 
					        List<Map<String, Object>> mergedList = new ArrayList<>();
 | 
				
			||||||
 | 
					        DecimalFormat decimalFormat = new DecimalFormat("#,##0.00");
 | 
				
			||||||
 | 
					        List<BigDecimal> bigDecimals = new ArrayList<>();
 | 
				
			||||||
 | 
					        for (Map<String, Object> item : data1) {
 | 
				
			||||||
 | 
					            Map<String, Object> linkMap = (Map<String, Object>) item.get("link");
 | 
				
			||||||
 | 
					            String acccode = (String) linkMap.get("acccode");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            String accname = (String) item.get("accname");
 | 
				
			||||||
 | 
					            String parentAcccode = acccode;
 | 
				
			||||||
 | 
					            Map<String, Object> parentItem = dataMap.get(parentAcccode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (parentItem != null) {
 | 
				
			||||||
 | 
					                String endlocamountStr = (String) item.get("endlocamount");
 | 
				
			||||||
 | 
					                String endorint = (String) item.get("endorint");
 | 
				
			||||||
 | 
					                BigDecimal endlocamount = parseEndlocamount(endlocamountStr);
 | 
				
			||||||
 | 
					               // 构造新的 Map
 | 
				
			||||||
 | 
					                Map<String, Object> newItem = new HashMap<>();
 | 
				
			||||||
 | 
					                newItem.put("endlocamount", decimalFormat.format(endlocamount));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // 根据 endorint 调整 endlocamount 的符号
 | 
				
			||||||
 | 
					                if ("贷".equals(endorint)) {
 | 
				
			||||||
 | 
					                    endlocamount = endlocamount.negate();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                bigDecimals.add(endlocamount);
 | 
				
			||||||
 | 
					                // 更新 sumMap
 | 
				
			||||||
 | 
					                sumMap.put(parentAcccode, sumMap.getOrDefault(parentAcccode, BigDecimal.ZERO).add(endlocamount));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                newItem.put("pacccode", parentAcccode);
 | 
				
			||||||
 | 
					                newItem.put("pendorint", parentItem.get("endorint"));
 | 
				
			||||||
 | 
					                newItem.put("paccname", parentItem.get("accname"));
 | 
				
			||||||
 | 
					                newItem.put("pendlocamount", parentItem.get("endlocamount"));
 | 
				
			||||||
 | 
					                newItem.put("acccode", acccode);
 | 
				
			||||||
 | 
					                newItem.put("accname", accname); // 假设 data1 中没有 accname,使用父级的 accname
 | 
				
			||||||
 | 
					                newItem.put("assname", item.get("assname"));
 | 
				
			||||||
 | 
					                newItem.put("endorint", item.get("endorint"));
 | 
				
			||||||
 | 
					//                newItem.put("endlocamount", decimalFormat.format(endlocamount));
 | 
				
			||||||
 | 
					                mergedList.add(newItem);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        BigDecimal sum=BigDecimal.valueOf(0);
 | 
				
			||||||
 | 
					        for (BigDecimal bigDecimal : bigDecimals){
 | 
				
			||||||
 | 
					            sum=sum.add(bigDecimal);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        List<Map<String, Object>> toBeRemoved = new ArrayList<>();
 | 
				
			||||||
 | 
					// 计算每个父级科目的 endlocamount 和所有关联 data1 中 endlocamount 的差值
 | 
				
			||||||
 | 
					        for (Map<String, Object> item : mergedList) {
 | 
				
			||||||
 | 
					            String parentAcccode = (String) item.get("pacccode");
 | 
				
			||||||
 | 
					            BigDecimal endlocamount =BigDecimal.ZERO;
 | 
				
			||||||
 | 
					            if( item.get("pendlocamount") instanceof String){
 | 
				
			||||||
 | 
					                String endlocamountStr = (String) item.get("pendlocamount");
 | 
				
			||||||
 | 
					                 endlocamount = parseEndlocamount(endlocamountStr);
 | 
				
			||||||
 | 
					            }else if( item.get("pendlocamount") instanceof BigDecimal){
 | 
				
			||||||
 | 
					                endlocamount = (BigDecimal) item.get("pendlocamount");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//            BigDecimal endlocamount = (BigDecimal) item.get("pendlocamount");
 | 
				
			||||||
 | 
					            BigDecimal sumEndlocamount = sumMap.get(parentAcccode);
 | 
				
			||||||
 | 
					            BigDecimal difference = sumEndlocamount.subtract(endlocamount);
 | 
				
			||||||
 | 
					            if (difference.compareTo(BigDecimal.ZERO) == 0) {
 | 
				
			||||||
 | 
					                toBeRemoved.add(item);
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                if(endlocamount.compareTo(BigDecimal.ZERO) < 0){
 | 
				
			||||||
 | 
					                    item.put("pendlocamount",decimalFormat.format(endlocamount.negate()) );
 | 
				
			||||||
 | 
					                }else{
 | 
				
			||||||
 | 
					                    item.put("pendlocamount",decimalFormat.format(endlocamount) );
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                item.put("difference", decimalFormat.format(difference));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        mergedList.removeAll(toBeRemoved);
 | 
				
			||||||
 | 
					//        for (int i = 1; i < mergedList.size(); i++) {
 | 
				
			||||||
 | 
					//            mergedList.get(i).put("pacccode", "");
 | 
				
			||||||
 | 
					//            mergedList.get(i).put("paccname", "");
 | 
				
			||||||
 | 
					//            mergedList.get(i).put("pendlocamount", "");
 | 
				
			||||||
 | 
					//            mergedList.get(i).put("difference", "");
 | 
				
			||||||
 | 
					//        }
 | 
				
			||||||
 | 
					        //{"busiParamJson":"{\"pk_accountingbook\":[\"1001A110000000001PFH\"],\"pk_unit\":[],\"multbusi\":false,\"usesubjversion\":\"N\",\"versiondate\":\"2025-01-02\",\"startlvl\":\"1\",\"endlvl\":\"1\",\"isleave\":true,\"isoutacc\":\"N\",\"startyear\":\"2024\",\"endyear\":\"2024\",\"startperiod\":\"12\",\"endperiod\":\"12\",\"startdate\":\"2024-12-01\",\"endtdate\":\"2024-12-31\",\"includeuntally\":\"N\",\"includeerror\":\"N\",\"includeplcf\":\"Y\",\"includerc\":\"N\",\"pk_currtype\":\"本币\",\"returncurr\":\"1\",\"mutibook\":\"N\",\"showzerooccur\":\"N\",\"showzerobalanceoccur\":\"Y\",\"sumbysubjtype\":\"N\",\"showupsubj\":\"N\",\"currplusacc\":\"Y\",\"balanceori\":\"-1\",\"twowaybalance\":\"N\",\"istree\":\"Y\",\"qryObjs\":[],\"pk_accasoa\":[\"1001A1100000000017SV\"]}","sysParamJson":{"busiaction":"科目辅助余额表-查询","appcode":"20028003","tabid":"","ts":1735815136860,"from":"","pagecs":1735804016325}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 输出合并后的列表
 | 
				
			||||||
 | 
					        for (Map<String, Object> item : mergedList) {
 | 
				
			||||||
 | 
					            System.out.println(item);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return mergedList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 解析 endlocamount 字符串为 double 类型
 | 
				
			||||||
 | 
					    private static BigDecimal parseEndlocamount(String endlocamountStr) {
 | 
				
			||||||
 | 
					        if (endlocamountStr == null || endlocamountStr.isEmpty()) {
 | 
				
			||||||
 | 
					            return BigDecimal.ZERO;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // 去除逗号
 | 
				
			||||||
 | 
					        endlocamountStr = endlocamountStr.replace(",", "");
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            return BigDecimal.valueOf(Double.parseDouble(endlocamountStr));
 | 
				
			||||||
 | 
					        } catch (NumberFormatException e) {
 | 
				
			||||||
 | 
					            return BigDecimal.ZERO;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    private Map<String,Object> getParaMap(Map<String, Object> params) {
 | 
				
			||||||
 | 
					        // 获取传入的参数
 | 
				
			||||||
 | 
					        List<String> pkAccountingBook = (List<String>) params.get("pk_accountingbook");
 | 
				
			||||||
 | 
					//1001A1100000000017TP
 | 
				
			||||||
 | 
					        List<String> pkAccasoa = (List<String>) params.get("pk_accasoa");
 | 
				
			||||||
 | 
					//        pkAccasoa.add("1001A1100000000017TP");
 | 
				
			||||||
 | 
					        String startYear = (String) params.get("startyear");
 | 
				
			||||||
 | 
					        String endYear = (String) params.get("endyear");
 | 
				
			||||||
 | 
					        String startPeriod = (String) params.get("startperiod");
 | 
				
			||||||
 | 
					        String endPeriod = (String) params.get("endperiod");
 | 
				
			||||||
 | 
					        String startDate = (String) params.get("startdate");
 | 
				
			||||||
 | 
					        String endDate = (String) params.get("enddate");
 | 
				
			||||||
 | 
					        String isleave = (String) params.get("isleave");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 创建第一个 Map 对象
 | 
				
			||||||
 | 
					        Map<String, Object> firstBusiParamJson = new HashMap<>();
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("pk_accountingbook", pkAccountingBook);
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("pk_unit", new ArrayList<String>(){});
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("multbusi", false);
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("usesubjversion", "N");
 | 
				
			||||||
 | 
					        // 获取当前日期
 | 
				
			||||||
 | 
					        LocalDate currentDate = LocalDate.now();
 | 
				
			||||||
 | 
					// 格式化日期为 "yyyy-MM-dd" 格式
 | 
				
			||||||
 | 
					        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
 | 
				
			||||||
 | 
					        String formattedDate = currentDate.format(formatter);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 设置 versiondate 为当前日期
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("versiondate", formattedDate);
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("startlvl", "1");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("endlvl", "1");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("isleave", isleave);
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("isoutacc", "N");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("startyear", startYear);
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("endyear", endYear);
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("startperiod", startPeriod);
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("endperiod", endPeriod);
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("startdate", startDate);
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("enddate", endDate);
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("includeuntally", "N");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("includeerror", "N");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("includeplcf", "Y");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("includerc", "N");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("pk_currtype", "本币");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("returncurr", "1");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("mutibook", "N");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("showzerooccur", "N");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("showzerobalanceoccur", "Y");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("sumbysubjtype", "N");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("showupsubj", "N");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("currplusacc", "Y");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("balanceori", "-1");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("twowaybalance", "N");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("istree", "Y");
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("qryObjs", new ArrayList<String>(){});
 | 
				
			||||||
 | 
					        firstBusiParamJson.put("pk_accasoa", pkAccasoa);
 | 
				
			||||||
 | 
					        if(pkAccasoa.isEmpty() || pkAccasoa.get(0).equals("")){
 | 
				
			||||||
 | 
					            firstBusiParamJson.put("isleave", "N");
 | 
				
			||||||
 | 
					            firstBusiParamJson.put("pk_accasoa", new ArrayList<String>(){});
 | 
				
			||||||
 | 
					        }else{
 | 
				
			||||||
 | 
					            firstBusiParamJson.put("isleave", null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					//        firstBusiParamJson.put("pk_accasoa", pkAccasoa);//1001A1100000000017SV
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Map<String, Object> firstSysParamJson = new HashMap<>();
 | 
				
			||||||
 | 
					        firstSysParamJson.put("busiaction", "科目辅助余额表-查询");
 | 
				
			||||||
 | 
					        firstSysParamJson.put("appcode", "20028003");
 | 
				
			||||||
 | 
					        firstSysParamJson.put("tabid", "");
 | 
				
			||||||
 | 
					        firstSysParamJson.put("ts", System.currentTimeMillis());
 | 
				
			||||||
 | 
					        firstSysParamJson.put("from", "");
 | 
				
			||||||
 | 
					        firstSysParamJson.put("pagecs", System.currentTimeMillis());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 创建第二个 Map 对象
 | 
				
			||||||
 | 
					        Map<String, Object> secondBusiParamJson = new HashMap<>();
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("pk_accountingbook", pkAccountingBook);
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("pk_unit",new ArrayList<String>());
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("multbusi", false);
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("usesubjversion", "N");
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("versiondate", null);
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("startlvl", "1");
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("endlvl", "1");
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("isleave", isleave);
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("isoutacc", "N");
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("startyear", startYear);
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("endyear", endYear);
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("startperiod", startPeriod);
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("endperiod", endPeriod);
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("startdate", startDate);
 | 
				
			||||||
 | 
					//        secondBusiParamJson.put("endtdate", endDate);
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("enddate", endDate);
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("includeuntally", "N");
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("includeerror", "N");
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("includeplcf", "Y");
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("includerc", "N");
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("pk_currtype", "本币");
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("returncurr", "1");
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("mutibook", "N");
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("showzerooccur", "N");
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("showzerobalanceoccur", "Y");
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("currplusacc", "Y");
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("sumbysubjtype", "N");
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("balanceori", "-1");
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("twowaybalance", "N");
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("querybyperiod", true);
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("pk_accasoa", pkAccasoa);//1001A1100000000017SV
 | 
				
			||||||
 | 
					        if(pkAccasoa.isEmpty() || pkAccasoa.get(0).equals("")){
 | 
				
			||||||
 | 
					            secondBusiParamJson.put("isleave", "N");
 | 
				
			||||||
 | 
					            secondBusiParamJson.put("pk_accasoa", new ArrayList<String>(){});
 | 
				
			||||||
 | 
					        }else{
 | 
				
			||||||
 | 
					            secondBusiParamJson.put("isleave", null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        secondBusiParamJson.put("appcode", "20023005");
 | 
				
			||||||
 | 
					        Map<String, Object> secondSysParamJson = new HashMap<>();
 | 
				
			||||||
 | 
					        secondSysParamJson.put("busiaction", "科目余额表-查询");
 | 
				
			||||||
 | 
					        secondSysParamJson.put("appcode", "20023005");
 | 
				
			||||||
 | 
					        secondSysParamJson.put("tabid", "");
 | 
				
			||||||
 | 
					        secondSysParamJson.put("ts", System.currentTimeMillis());
 | 
				
			||||||
 | 
					        secondSysParamJson.put("from", "");
 | 
				
			||||||
 | 
					        secondSysParamJson.put("pagecs", System.currentTimeMillis());
 | 
				
			||||||
 | 
					        Map<String, Object> paraMap = new HashMap<>();
 | 
				
			||||||
 | 
					        Map<String, Object> first = new HashMap<>();
 | 
				
			||||||
 | 
					        first.put("busiParamJson", firstBusiParamJson);
 | 
				
			||||||
 | 
					        first.put("sysParamJson", firstSysParamJson);
 | 
				
			||||||
 | 
					        Map<String, Object> second = new HashMap<>();
 | 
				
			||||||
 | 
					        second.put("busiParamJson2", secondBusiParamJson);
 | 
				
			||||||
 | 
					        second.put("sysParamJson2", secondSysParamJson);
 | 
				
			||||||
 | 
					        paraMap.put("first",firstBusiParamJson);
 | 
				
			||||||
 | 
					        paraMap.put("second",secondBusiParamJson);
 | 
				
			||||||
 | 
					        return paraMap;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    private void setAppcode(Map<String, Object> paraMap) {
 | 
				
			||||||
 | 
					        String appcode = SessionContext.getInstance().getAppcode();
 | 
				
			||||||
 | 
					        if (appcode.startsWith("2002305010")) {
 | 
				
			||||||
 | 
					            appcode = (String)paraMap.get("pk_multicol");
 | 
				
			||||||
 | 
					        } else if (appcode.startsWith("2002308010")) {
 | 
				
			||||||
 | 
					            appcode = (String)paraMap.get("pk_report");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        paraMap.put("appcode", appcode);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,404 @@
 | 
				
			||||||
 | 
					<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
 | 
				
			||||||
 | 
					<actions>
 | 
				
			||||||
 | 
						 <action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.accbalquery</name>
 | 
				
			||||||
 | 
							<label>科目余额表查询</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.AccountBalanceQueryAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.triaccquery</name>
 | 
				
			||||||
 | 
							<label>三栏式总账</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.TriAccbooksQueryAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.detailbookquery</name>
 | 
				
			||||||
 | 
							<label>三栏式明细账</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.DetailBookQueryAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.subjassemblequery</name>
 | 
				
			||||||
 | 
							<label>科目汇总表</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.SubjAssembleQueryAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.summarylistquery</name>
 | 
				
			||||||
 | 
							<label>摘要汇总表</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.SummaryListQueryAction</clazz>
 | 
				
			||||||
 | 
						</action>	
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.multibookformatquery</name>
 | 
				
			||||||
 | 
							<label>多栏账定义查询</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.MultiBookFormatQueryAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.multibookformatcopy</name>
 | 
				
			||||||
 | 
							<label>多栏账定义复制</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.MultiBookFormatCopyAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.multibookformatsave</name>
 | 
				
			||||||
 | 
							<label>多栏账定义保存</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.MultiBookFormatSaveAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.multibookformatdelete</name>
 | 
				
			||||||
 | 
							<label>多栏账定义删除</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.MultiBookFormatDeleteAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.multibookformatpreview</name>
 | 
				
			||||||
 | 
							<label>多栏账表格预览</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.MultiBookFormatPreviewAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.multibookquery</name>
 | 
				
			||||||
 | 
							<label>多栏账查询</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.MultiBookQueryAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.multibookpage</name>
 | 
				
			||||||
 | 
							<label>多栏账分页信息</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.MultiBookPageAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.assanalysisreportquery</name>
 | 
				
			||||||
 | 
							<label>辅助分析设置查询</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.AssAnalysisReportQueryAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.assanalysisreportsave</name>
 | 
				
			||||||
 | 
							<label>辅助分析设置保存</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.AssAnalysisReportSaveAction</clazz>
 | 
				
			||||||
 | 
							<btncode>add,edit,alter</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.assanalysisreportdelete</name>
 | 
				
			||||||
 | 
							<label>辅助分析设置删除</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.AssAnalysisReportDeleteAction</clazz>
 | 
				
			||||||
 | 
							<btncode>delete</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.assanalysisquery</name>
 | 
				
			||||||
 | 
							<label>辅助分析查询</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.AssAnalysisQueryAction</clazz>
 | 
				
			||||||
 | 
							<btncode>directprint</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.diarybookspage</name>
 | 
				
			||||||
 | 
							<label>日记账分页信息</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.DiaryBooksPageAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.diarybooksquery</name>
 | 
				
			||||||
 | 
							<label>日记账查询</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.DiaryBooksQueryAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.dailyreportquery</name>
 | 
				
			||||||
 | 
							<label>日报表查询</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.DailyReportQueryAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.assattqueryobject</name>
 | 
				
			||||||
 | 
							<label>辅助属性查询对象</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.AssAttrQueryObjectAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.assattquerybalance</name>
 | 
				
			||||||
 | 
							<label>辅助属性余额查询</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.AssAttBalanceQueryAction</clazz>
 | 
				
			||||||
 | 
							<btncode>directprint</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.multianalysisqueryobject</name>
 | 
				
			||||||
 | 
							<label>多维分析表查询对象</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.MultiAnalysisQueryObjectAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
						<name>gl.accountrep.multianalysisquerybook</name>
 | 
				
			||||||
 | 
							<label>多维分析表查询</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.MultiAnalysisBookQueryAction</clazz>
 | 
				
			||||||
 | 
							<btncode>directprint</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.subjassbalancebooksquery</name>
 | 
				
			||||||
 | 
							<label>科目辅助余额表</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.SubjAssBalanceBooksQueryAction</clazz>
 | 
				
			||||||
 | 
						</action>		
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.assbalancequery</name>
 | 
				
			||||||
 | 
							<label>辅助余额表</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.AssBalanceQueryAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.cashdiaryquery</name>
 | 
				
			||||||
 | 
							<label>现金日记账和银行日记账</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.CashDiaryQueryAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.sequencebooksquery</name>
 | 
				
			||||||
 | 
							<label>序时账</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.SequenceBooksQueryAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.balancebookprint</name>
 | 
				
			||||||
 | 
							<label>科目余额表打印</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.BalanceBookPrintAction</clazz>
 | 
				
			||||||
 | 
							<btncode>print</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.balancebookoutput</name>
 | 
				
			||||||
 | 
							<label>科目余额表输出</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.BalanceBookOutputAction</clazz>
 | 
				
			||||||
 | 
							<btncode>directprint</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.assbalanceprint</name>
 | 
				
			||||||
 | 
							<label>辅助余额表打印</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.AssBalancePrintAction</clazz>
 | 
				
			||||||
 | 
							<btncode>print</btncode>
 | 
				
			||||||
 | 
						</action>	
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.assbalanceoutput</name>
 | 
				
			||||||
 | 
							<label>辅助余额表输出</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.AssBalanceOutputAction</clazz>
 | 
				
			||||||
 | 
							<btncode>directprint,templateOutput</btncode>
 | 
				
			||||||
 | 
						</action>		
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.assdetailprint</name>
 | 
				
			||||||
 | 
							<label>辅助明细账打印</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.AssDetailPrintAction</clazz>
 | 
				
			||||||
 | 
							<btncode>print</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.assdetailoutput</name>
 | 
				
			||||||
 | 
							<label>辅助明细账打印</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.AssDetailOutputAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.assdetailoutput</name>
 | 
				
			||||||
 | 
							<label>辅助明细账输出</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.AssDetailOutputAction</clazz>
 | 
				
			||||||
 | 
							<btncode>directprint,templateOutput</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.triaccbookprint</name>
 | 
				
			||||||
 | 
							<label>三栏式总账打印</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.TriAccBookPrintAction</clazz>
 | 
				
			||||||
 | 
							<btncode>print</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.triaccbookoutput</name>
 | 
				
			||||||
 | 
							<label>三栏式总账输出</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.TriAccBookOutputAction</clazz>
 | 
				
			||||||
 | 
							<btncode>directprint,templateOutput</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.triaccdetailprint</name>
 | 
				
			||||||
 | 
							<label>三栏式明细账打印</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.DetailBookPrintAction</clazz>
 | 
				
			||||||
 | 
							<btncode>print</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.triaccdetailoutput</name>
 | 
				
			||||||
 | 
							<label>三栏式明细账输出</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.DetailBookOutputAction</clazz>
 | 
				
			||||||
 | 
							<btncode>directprint,templateOutput</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.sequencebookprint</name>
 | 
				
			||||||
 | 
							<label>序时账打印</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.SequenceBookPrintAction</clazz>
 | 
				
			||||||
 | 
							<btncode>print</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.sequencebookoutput</name>
 | 
				
			||||||
 | 
							<label>序时账输出</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.SequenceBookOutputAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.multibookprint</name>
 | 
				
			||||||
 | 
							<label>多栏账打印</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.MultiBookPrintAction</clazz>
 | 
				
			||||||
 | 
							<btncode>print</btncode>
 | 
				
			||||||
 | 
						</action>	
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.multibookoutput</name>
 | 
				
			||||||
 | 
							<label>多栏账输出</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.MultiBookOutputAction</clazz>
 | 
				
			||||||
 | 
							<btncode>directprint,templateOutput</btncode>
 | 
				
			||||||
 | 
						</action>	
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.subjassbalanceprint</name>
 | 
				
			||||||
 | 
							<label>科目辅助余额表打印</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.SubjAssBalanceBookPrintAction</clazz>
 | 
				
			||||||
 | 
							<btncode>print</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.subjassbalanceoutput</name>
 | 
				
			||||||
 | 
							<label>科目辅助余额表输出</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.SubjAssBalanceBookOutputAction</clazz>
 | 
				
			||||||
 | 
							<btncode>directprint</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.diarybooksprint</name>
 | 
				
			||||||
 | 
							<label>日记账打印</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.DiaryBooksPrintAction</clazz>
 | 
				
			||||||
 | 
							<btncode>print</btncode>
 | 
				
			||||||
 | 
						</action>	
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.diarybooksoutput</name>
 | 
				
			||||||
 | 
							<label>日记账输出</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.DiaryBooksOutputAction</clazz>
 | 
				
			||||||
 | 
							<btncode>printexcel,printoutput</btncode>
 | 
				
			||||||
 | 
						</action>	
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.cashdiaryprint</name>
 | 
				
			||||||
 | 
							<label>现金日记账打印</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.BankDiaryPrintAction</clazz>
 | 
				
			||||||
 | 
							<btncode>print</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.cashdiaryoutput</name>
 | 
				
			||||||
 | 
							<label>现金日记账输出</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.BankDiaryOutputAction</clazz>
 | 
				
			||||||
 | 
							<btncode>directprint,templateOutput</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.bankdiaryprint</name>
 | 
				
			||||||
 | 
							<label>银行日记账打印</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.BankDiaryPrintAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.bankdiaryoutput</name>
 | 
				
			||||||
 | 
							<label>银行日记账输出</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.BankDiaryOutputAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.subjassembleprint</name>
 | 
				
			||||||
 | 
							<label>科目汇总表打印</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.SubjAssemblePrintAction</clazz>
 | 
				
			||||||
 | 
							<btncode>print</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.subjassembleoutput</name>
 | 
				
			||||||
 | 
							<label>科目汇总表输出</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.SubjAssembleOutputAction</clazz>
 | 
				
			||||||
 | 
							<btncode>directprint</btncode>
 | 
				
			||||||
 | 
						</action>	
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.summarylistprint</name>
 | 
				
			||||||
 | 
							<label>摘要汇总表打印</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.SummaryListPrintAction</clazz>
 | 
				
			||||||
 | 
							<btncode>print</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.summarylistoutput</name>
 | 
				
			||||||
 | 
							<label>摘要汇总表输出</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.SummaryListOutputAction</clazz>
 | 
				
			||||||
 | 
						</action>					
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.dailyreportprint</name>
 | 
				
			||||||
 | 
							<label>日报表打印</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.DailyReportPrintAction</clazz>
 | 
				
			||||||
 | 
							<btncode>print</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.dailyreportoutput</name>
 | 
				
			||||||
 | 
							<label>日报表输出</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.DailyReportOutputAction</clazz>
 | 
				
			||||||
 | 
							<btncode>directprint,templateOutput</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.capitalreportprint</name>
 | 
				
			||||||
 | 
							<label>资金日报表打印</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.DailyReportPrintAction</clazz>
 | 
				
			||||||
 | 
							<btncode>print</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.capitalreportoutput</name>
 | 
				
			||||||
 | 
							<label>资金日报表输出</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.DailyReportOutputAction</clazz>
 | 
				
			||||||
 | 
							<btncode>directprint</btncode>
 | 
				
			||||||
 | 
						</action>				
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.assbalancequeryobject</name>
 | 
				
			||||||
 | 
							<label>辅助余额查询对象</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.AssBalanceQueryObjectAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.assdetailquery</name>
 | 
				
			||||||
 | 
							<label>辅助明细账</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.AssDetailQueryAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.budgetlink</name>
 | 
				
			||||||
 | 
							<label>预算联查报表</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountreplink.action.BudgetLinkAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.voucherlinksequence</name>
 | 
				
			||||||
 | 
							<label>凭证联查序时账</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountreplink.action.VoucherLinkSequenceAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.directprint</name>
 | 
				
			||||||
 | 
							<label>直接打印</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.DirectPrintAction</clazz>
 | 
				
			||||||
 | 
							<btncode>directprint,print</btncode>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.queryaccount</name>
 | 
				
			||||||
 | 
							<label>查询科目</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.AccountQueryAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.queryassitembyaccountpk</name>
 | 
				
			||||||
 | 
							<label>查询科目及下级的辅助项(科目余额表联查辅助)</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.QueryAssItemByAccountPKAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.summarylistqueryassitem</name>
 | 
				
			||||||
 | 
							<label>查询科目及下级的辅助项(摘要汇总表)</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.SummaryListQueryAssItemAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.ufolink</name>
 | 
				
			||||||
 | 
							<label>企业报表联查</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.UFOLinkAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.expandfun</name>
 | 
				
			||||||
 | 
							<label>多主体公式展开</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.ExpendFunAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.checkparam</name>
 | 
				
			||||||
 | 
							<label>账表查询的参数校验</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.CheckParamAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.glproviderdesign</name>
 | 
				
			||||||
 | 
							<label>语义模型业务数据</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.GLProviderDesignAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.AdaptAccountRepLinkParam</name>
 | 
				
			||||||
 | 
							<label>联查报表获取参数值</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountreplink.action.AdaptAccountRepLinkParamAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
						<action>
 | 
				
			||||||
 | 
							<name>gl.accountrep.accountbalancetotal</name>
 | 
				
			||||||
 | 
							<label>账账相对查询</label>
 | 
				
			||||||
 | 
							<clazz>nccloud.web.gl.accountrep.action.AccountBalanceTotalQueryAction</clazz>
 | 
				
			||||||
 | 
						</action>
 | 
				
			||||||
 | 
					</actions>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,44 @@
 | 
				
			||||||
 | 
					<authorizes>
 | 
				
			||||||
 | 
						<authorize>
 | 
				
			||||||
 | 
							<!--期末处理关结账-->
 | 
				
			||||||
 | 
							<appcode>20020BATCL,20020RECON,20020RECOQ,20020TRYBL,2002BATCHRECON,2002CLACC,101006,101007</appcode>
 | 
				
			||||||
 | 
							<actions>
 | 
				
			||||||
 | 
								<!--结账刷新期间-->
 | 
				
			||||||
 | 
								<action>gl.reckoning.refreshperiod</action>
 | 
				
			||||||
 | 
								<!--结账报告-->
 | 
				
			||||||
 | 
								<action>gl.reckoning.reckoningreport</action>
 | 
				
			||||||
 | 
								<!--结账-->
 | 
				
			||||||
 | 
								<action>gl.reckoning.reckoning</action>
 | 
				
			||||||
 | 
								<!--反结账-->
 | 
				
			||||||
 | 
								<action>gl.reckoning.unreckoning</action>
 | 
				
			||||||
 | 
								<!--关账报告-->
 | 
				
			||||||
 | 
								<action>gl.reckoning.closereport</action>
 | 
				
			||||||
 | 
								<!--结账状态查询-->
 | 
				
			||||||
 | 
								<action>gl.reckoning.reckoningstatus</action>
 | 
				
			||||||
 | 
								<!--批量结账查询-->
 | 
				
			||||||
 | 
								<action>gl.reckoning.batchreckoningquery</action>
 | 
				
			||||||
 | 
								<!--批量结账-->
 | 
				
			||||||
 | 
								<action>gl.reckoning.batchreckoning</action>
 | 
				
			||||||
 | 
								<!--批量反结账-->
 | 
				
			||||||
 | 
								<action>gl.reckoning.batchunreckoning</action>
 | 
				
			||||||
 | 
								<!--关账报告打印-->	
 | 
				
			||||||
 | 
								<action>gl.settled.closereportprint</action>
 | 
				
			||||||
 | 
								<!--关账报告输出-->	
 | 
				
			||||||
 | 
								<action>gl.accountrep.closereportoutput</action>
 | 
				
			||||||
 | 
								<!--结账报告打印-->
 | 
				
			||||||
 | 
								<action>gl.accountrep.reckoningreportprint</action>
 | 
				
			||||||
 | 
								<!--结账报告输出-->	
 | 
				
			||||||
 | 
								<action>gl.accountrep.reckoningreportoutput</action>
 | 
				
			||||||
 | 
								<!--试算-->	
 | 
				
			||||||
 | 
								<action>gl.voucher.calculation</action>
 | 
				
			||||||
 | 
								<!--试算平衡打印-->
 | 
				
			||||||
 | 
								<action>gl.voucher.checkbalanceprint</action>
 | 
				
			||||||
 | 
								<!--税务云-上传-->
 | 
				
			||||||
 | 
								<action>gl.pfxx.taxcloudupload</action>
 | 
				
			||||||
 | 
								<!--税务云-请求配置-->
 | 
				
			||||||
 | 
								<action>gl.pfxx.taxcloudconfig</action>
 | 
				
			||||||
 | 
								<action>gl.accountrep.accountbalancetotal</action>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							</actions>
 | 
				
			||||||
 | 
						</authorize>
 | 
				
			||||||
 | 
					</authorizes>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,176 @@
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Source code recreated from a .class file by IntelliJ IDEA
 | 
				
			||||||
 | 
					// (powered by FernFlower decompiler)
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package nc.bs.mmpac.pickm.bp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import nc.bs.mmpac.pickm.plugin.PickmPluginPoint;
 | 
				
			||||||
 | 
					import nc.bs.mmpac.pickm.rule.*;
 | 
				
			||||||
 | 
					import nc.bs.mmpac.pickm.rule.ic.PickmATPCheckRule;
 | 
				
			||||||
 | 
					import nc.bs.mmpac.pickm.rule.ic.PickmAutoReserveRule;
 | 
				
			||||||
 | 
					import nc.bs.mmpac.pickm.rule.sc.PickmSetDeftValueForScRule;
 | 
				
			||||||
 | 
					import nc.bs.mmpac.pickm.rule.sc.PickmSetItemDeftValueForScRule;
 | 
				
			||||||
 | 
					import nc.bs.mmpub.rule.MMAutoMaterialAssignRule;
 | 
				
			||||||
 | 
					import nc.bs.pubapp.pub.rule.FieldLengthCheckRule;
 | 
				
			||||||
 | 
					import nc.bs.pubapp.pub.rule.OrgDisabledCheckRule;
 | 
				
			||||||
 | 
					import nc.bsutil.mmpac.pickm.PickmSagasUtil;
 | 
				
			||||||
 | 
					import nc.impl.pubapp.bd.userdef.UserDefSaveRule;
 | 
				
			||||||
 | 
					import nc.impl.pubapp.pattern.data.bill.template.BillInsertOperator;
 | 
				
			||||||
 | 
					import nc.impl.pubapp.pattern.data.bill.template.InsertBPTemplate;
 | 
				
			||||||
 | 
					import nc.impl.pubapp.pattern.data.bill.tool.BillTransferTool;
 | 
				
			||||||
 | 
					import nc.impl.pubapp.pattern.rule.IRule;
 | 
				
			||||||
 | 
					import nc.impl.pubapp.pattern.rule.processer.AroundProcesser;
 | 
				
			||||||
 | 
					import nc.impl.pubapp.pattern.rule.template.IOperator;
 | 
				
			||||||
 | 
					import nc.util.mmf.busi.rule.MMBillCodeCheckAndTrantypeRule;
 | 
				
			||||||
 | 
					import nc.util.mmf.busi.rule.MMCreateBillcodeAndTrantypecodeRule;
 | 
				
			||||||
 | 
					import nc.util.mmf.framework.base.MMValueCheck;
 | 
				
			||||||
 | 
					import nc.vo.mmpac.pickm.entity.AggPickmVO;
 | 
				
			||||||
 | 
					import nc.vo.mmpac.pickm.entity.PickmHeadVO;
 | 
				
			||||||
 | 
					import nc.vo.mmpac.pickm.entity.PickmItemVO;
 | 
				
			||||||
 | 
					import nc.vo.mmpac.pickm.enumeration.FsourcetypeEnum;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class PickmInsertForScBP {
 | 
				
			||||||
 | 
					    public PickmInsertForScBP() {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void savePickmForSc(PickmHeadVO[] headVOs) {
 | 
				
			||||||
 | 
					        if (!MMValueCheck.isEmpty(headVOs)) {
 | 
				
			||||||
 | 
					            List<AggPickmVO> aggPickmVOList = new ArrayList();
 | 
				
			||||||
 | 
					            AggPickmVO aggPickmVO = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for(PickmHeadVO headVO : headVOs) {
 | 
				
			||||||
 | 
					                headVO.setFsourcetype(FsourcetypeEnum.WWBILL_STATE.toInteger());
 | 
				
			||||||
 | 
					                aggPickmVO = new AggPickmVO();
 | 
				
			||||||
 | 
					                aggPickmVO.setParent(headVO);
 | 
				
			||||||
 | 
					                aggPickmVOList.add(aggPickmVO);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            AggPickmVO[] retVOs = this.savePickmForSc((AggPickmVO[])aggPickmVOList.toArray(new AggPickmVO[0]));
 | 
				
			||||||
 | 
					            IRule<AggPickmVO> pickmAutoApproveRule = new PickmAutoApproveAfterSaveRule();
 | 
				
			||||||
 | 
					            pickmAutoApproveRule.process(retVOs);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void savePickmForSc2(AggPickmVO[] vos) {
 | 
				
			||||||
 | 
					        if (!MMValueCheck.isEmpty(vos)) {
 | 
				
			||||||
 | 
					            AggPickmVO[] retVOs = this.savePickmForSc(vos);
 | 
				
			||||||
 | 
					            IRule<AggPickmVO> pickmAutoApproveRule = new PickmAutoApproveAfterSaveRule();
 | 
				
			||||||
 | 
					            pickmAutoApproveRule.process(retVOs);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void addAfterRule(AroundProcesser<AggPickmVO> processor) {
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> billCodeCheckRule = new MMBillCodeCheckAndTrantypeRule("55A3", "vbillcode", "pk_group", "pk_org", "vbusitype");
 | 
				
			||||||
 | 
					        processor.addAfterRule(billCodeCheckRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> atpCheckRule = new PickmATPCheckRule(false, (AggPickmVO[])null);
 | 
				
			||||||
 | 
					        processor.addAfterRule(atpCheckRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> autoReserveRule = new PickmAutoReserveRule();
 | 
				
			||||||
 | 
					        processor.addAfterRule(autoReserveRule);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void addBeforeRule(AroundProcesser<AggPickmVO> processor) {
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> orgRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000");
 | 
				
			||||||
 | 
					        processor.addBeforeRule(orgRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> getMakeDateRule = new PickmMakeDateRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(getMakeDateRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> setForScRule = new PickmSetDeftValueForScRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(setForScRule);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> billcodeRule = new MMCreateBillcodeAndTrantypecodeRule("55A3", "vbillcode", "pk_group", "pk_org", "vbusitype");
 | 
				
			||||||
 | 
					        processor.addBeforeRule(billcodeRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> createSubItemRule = new PickmCreateSubItemRule(false);
 | 
				
			||||||
 | 
					        processor.addBeforeRule(createSubItemRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> setItemForScRule = new PickmSetItemDeftValueForScRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(setItemForScRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> sameRule = new PickmCheckSameStockRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(sameRule);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> checkSameRow = new PickmRowNoRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(checkSameRow);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> lengthCheckRule = new FieldLengthCheckRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(lengthCheckRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> autoHMaterialAssignRule = new MMAutoMaterialAssignRule("cmaterialvid", (String)null, new String[]{"pk_org"}, (String[])null);
 | 
				
			||||||
 | 
					        processor.addBeforeFinalRule(autoHMaterialAssignRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> autobMaterialAssignRule = new MMAutoMaterialAssignRule((String)null, "cbmaterialvid", new String[]{"pk_org"}, new String[]{"cdeliverorgid", "csupplyorgid"});
 | 
				
			||||||
 | 
					        processor.addBeforeFinalRule(autobMaterialAssignRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> marperRule = new PickmCheckMaterialPermissionRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(marperRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> bmarperRule = new PickmCheckItemMaterialPermissionRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(bmarperRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> pickmSaveRule = new PickmSaveRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(pickmSaveRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> atpCheckRule = new PickmATPCheckRule(true, (AggPickmVO[])null);
 | 
				
			||||||
 | 
					        processor.addBeforeRule(atpCheckRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> userDefSaveRule = new UserDefSaveRule(new String[]{"vdef", "vbdef"}, new Class[]{PickmHeadVO.class, PickmItemVO.class});
 | 
				
			||||||
 | 
					        processor.addBeforeRule(userDefSaveRule);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private AggPickmVO[] savePickmForSc(AggPickmVO[] vos) {
 | 
				
			||||||
 | 
					        if (MMValueCheck.isEmpty(vos)) {
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            new BillTransferTool(vos);
 | 
				
			||||||
 | 
					            InsertBPTemplate<AggPickmVO> bp = new InsertBPTemplate(PickmPluginPoint.INSERTFORSC);
 | 
				
			||||||
 | 
					            this.addBeforeRule(bp.getAroundProcesser());
 | 
				
			||||||
 | 
					            this.addAfterRule(bp.getAroundProcesser());
 | 
				
			||||||
 | 
					            bp.getAroundProcesser().before(vos);
 | 
				
			||||||
 | 
					            IOperator<AggPickmVO> operator = new BillInsertOperator();
 | 
				
			||||||
 | 
					            AggPickmVO[] aggvos = (AggPickmVO[])operator.operate(vos);
 | 
				
			||||||
 | 
					            PickmSagasUtil.addSagaAndCompensate4Insert(aggvos);
 | 
				
			||||||
 | 
					            bp.getAroundProcesser().after(aggvos);
 | 
				
			||||||
 | 
					            return aggvos;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void savePickmForScSagasCheck(PickmHeadVO[] headVOs) {
 | 
				
			||||||
 | 
					        if (!MMValueCheck.isEmpty(headVOs)) {
 | 
				
			||||||
 | 
					            List<AggPickmVO> aggPickmVOList = new ArrayList();
 | 
				
			||||||
 | 
					            AggPickmVO aggPickmVO = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for(PickmHeadVO headVO : headVOs) {
 | 
				
			||||||
 | 
					                headVO.setFsourcetype(FsourcetypeEnum.WWBILL_STATE.toInteger());
 | 
				
			||||||
 | 
					                aggPickmVO = new AggPickmVO();
 | 
				
			||||||
 | 
					                aggPickmVO.setParent(headVO);
 | 
				
			||||||
 | 
					                aggPickmVOList.add(aggPickmVO);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            new BillTransferTool((AggPickmVO[])aggPickmVOList.toArray(new AggPickmVO[0]));
 | 
				
			||||||
 | 
					            InsertBPTemplate<AggPickmVO> bp = new InsertBPTemplate(PickmPluginPoint.INSERTFORSC);
 | 
				
			||||||
 | 
					            this.addBeforeRuleSagasCheck(bp.getAroundProcesser());
 | 
				
			||||||
 | 
					            bp.getAroundProcesser().before((AggPickmVO[])aggPickmVOList.toArray(new AggPickmVO[0]));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void addBeforeRuleSagasCheck(AroundProcesser<AggPickmVO> processor) {
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> orgRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000");
 | 
				
			||||||
 | 
					        processor.addBeforeRule(orgRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> getMakeDateRule = new PickmMakeDateRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(getMakeDateRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> setForScRule = new PickmSetDeftValueForScRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(setForScRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> createSubItemRule = new PickmCreateSubItemRule(false);
 | 
				
			||||||
 | 
					        processor.addBeforeRule(createSubItemRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> setItemForScRule = new PickmSetItemDeftValueForScRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(setItemForScRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> sameRule = new PickmCheckSameStockRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(sameRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> checkSameRow = new PickmRowNoRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(checkSameRow);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> lengthCheckRule = new FieldLengthCheckRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(lengthCheckRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> marperRule = new PickmCheckMaterialPermissionRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(marperRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> bmarperRule = new PickmCheckItemMaterialPermissionRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(bmarperRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> pickmSaveRule = new PickmSaveRule();
 | 
				
			||||||
 | 
					        processor.addBeforeRule(pickmSaveRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> atpCheckRule = new PickmATPCheckRule(true, (AggPickmVO[])null);
 | 
				
			||||||
 | 
					        processor.addBeforeRule(atpCheckRule);
 | 
				
			||||||
 | 
					        IRule<AggPickmVO> userDefSaveRule = new UserDefSaveRule(new String[]{"vdef", "vbdef"}, new Class[]{PickmHeadVO.class, PickmItemVO.class});
 | 
				
			||||||
 | 
					        processor.addBeforeRule(userDefSaveRule);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,110 @@
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Source code recreated from a .class file by IntelliJ IDEA
 | 
				
			||||||
 | 
					// (powered by FernFlower decompiler)
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package nc.impl.sc.m61.action.maintain.rule;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import nc.bs.framework.common.NCLocator;
 | 
				
			||||||
 | 
					import nc.impl.pubapp.pattern.rule.IRule;
 | 
				
			||||||
 | 
					import nc.itf.mmpac.pickm.IPickmMaintainService;
 | 
				
			||||||
 | 
					import nc.itf.sc.m61.compenstate.IScOrderSagasCompensate;
 | 
				
			||||||
 | 
					import nc.itf.sc.reference.mm.PubMMPACService;
 | 
				
			||||||
 | 
					import nc.itf.scmpub.reference.uap.pf.PfServiceScmUtil;
 | 
				
			||||||
 | 
					import nc.vo.mmpac.pickm.entity.AggPickmVO;
 | 
				
			||||||
 | 
					import nc.vo.mmpac.pickm.entity.PickmHeadVO;
 | 
				
			||||||
 | 
					import nc.vo.pub.BusinessException;
 | 
				
			||||||
 | 
					import nc.vo.pubapp.pattern.exception.ExceptionUtils;
 | 
				
			||||||
 | 
					import nc.vo.sc.m61.entity.SCOrderItemVO;
 | 
				
			||||||
 | 
					import nc.vo.sc.m61.entity.SCOrderVO;
 | 
				
			||||||
 | 
					import nc.vo.scmpub.res.billtype.MMBillType;
 | 
				
			||||||
 | 
					import nc.vo.scmpub.res.billtype.SCBillType;
 | 
				
			||||||
 | 
					import nc.vo.scmpub.util.ArrayUtil;
 | 
				
			||||||
 | 
					import nccloud.commons.lang.ArrayUtils;
 | 
				
			||||||
 | 
					import nccloud.pubitf.sc.pub.util.ScSagasUtil;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.Serializable;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class SCOrderPushMoRule implements IRule<SCOrderVO> {
 | 
				
			||||||
 | 
					    public SCOrderPushMoRule() {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void process(SCOrderVO[] vos) {
 | 
				
			||||||
 | 
					        if (!ArrayUtils.isEmpty(vos)) {
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                // 分组处理逻辑
 | 
				
			||||||
 | 
					                List<SCOrderVO> specialList = new ArrayList<>();
 | 
				
			||||||
 | 
					                List<SCOrderVO> normalList = new ArrayList<>();
 | 
				
			||||||
 | 
					                for (SCOrderVO vo : vos) {
 | 
				
			||||||
 | 
					                    // 假设通过 getBilltype() 获取单据类型,请根据实际字段调整
 | 
				
			||||||
 | 
					                    if ("61-Cxx-01".equals(vo.getParentVO().getVtrantypecode()) ){
 | 
				
			||||||
 | 
					                        specialList.add(vo);
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        normalList.add(vo);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                List<PickmHeadVO> headList = new ArrayList<>();
 | 
				
			||||||
 | 
					                // 特殊类型处理
 | 
				
			||||||
 | 
					                if (!specialList.isEmpty()) {
 | 
				
			||||||
 | 
					                    AggPickmVO[] specialPickVos = (AggPickmVO[]) PfServiceScmUtil.exeVOChangeByBillItfDef(
 | 
				
			||||||
 | 
					                            "61-Cxx-01", // 特殊类型编码
 | 
				
			||||||
 | 
					                            MMBillType.PickMo.getCode(),
 | 
				
			||||||
 | 
					                            vos);
 | 
				
			||||||
 | 
					                    IPickmMaintainService ipickmMaintainService = NCLocator.getInstance().lookup(IPickmMaintainService.class);
 | 
				
			||||||
 | 
					                    ipickmMaintainService.insert(specialPickVos);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // 常规处理
 | 
				
			||||||
 | 
					                if (!normalList.isEmpty()) {
 | 
				
			||||||
 | 
					                    AggPickmVO[] normalPickVos = (AggPickmVO[]) PfServiceScmUtil.exeVOChangeByBillItfDef(
 | 
				
			||||||
 | 
					                            SCBillType.Order.getCode(),
 | 
				
			||||||
 | 
					                            MMBillType.PickMo.getCode(),
 | 
				
			||||||
 | 
					                            normalList.toArray(new SCOrderVO[0]));
 | 
				
			||||||
 | 
					                    for(AggPickmVO vo : normalPickVos) {
 | 
				
			||||||
 | 
					                        PickmHeadVO head = (PickmHeadVO)vo.getParent();
 | 
				
			||||||
 | 
					                        headList.add(head);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (headList.size() > 0) {
 | 
				
			||||||
 | 
					                    this.addSagaAndCompensate(vos);
 | 
				
			||||||
 | 
					                    PubMMPACService.pushMMPac((PickmHeadVO[])headList.toArray(new PickmHeadVO[headList.size()]));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            } catch (BusinessException e) {
 | 
				
			||||||
 | 
					                ExceptionUtils.wrappException(e);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void addSagaAndCompensate(SCOrderVO[] vos) {
 | 
				
			||||||
 | 
					        ScSagasUtil.frozenAndAddSaga(vos, "pickMo", SCBillType.Order.getCode());
 | 
				
			||||||
 | 
					        if (!ArrayUtil.isEmpty(vos)) {
 | 
				
			||||||
 | 
					            Map<String, Serializable> map = new HashMap();
 | 
				
			||||||
 | 
					            map.put("opertaion", "pickMo");
 | 
				
			||||||
 | 
					            List<String> bids = new ArrayList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for(SCOrderVO scOrderVO : vos) {
 | 
				
			||||||
 | 
					                SCOrderItemVO[] itemVOs = scOrderVO.getChildrenVO();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                for(SCOrderItemVO bvo : itemVOs) {
 | 
				
			||||||
 | 
					                    bids.add(bvo.getPk_order_b());
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            map.put("pk_order_b", bids.toArray(new String[0]));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                ScSagasUtil.compensate(IScOrderSagasCompensate.class, map);
 | 
				
			||||||
 | 
					            } catch (BusinessException e) {
 | 
				
			||||||
 | 
					                ExceptionUtils.wrappException(e);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,253 @@
 | 
				
			||||||
 | 
					package nccloud.web.sscivm.ivsale.sale.action;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.InputStream;
 | 
				
			||||||
 | 
					import java.io.UnsupportedEncodingException;
 | 
				
			||||||
 | 
					import java.security.InvalidKeyException;
 | 
				
			||||||
 | 
					import java.security.NoSuchAlgorithmException;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import java.util.TreeMap;
 | 
				
			||||||
 | 
					import javax.crypto.Mac;
 | 
				
			||||||
 | 
					import javax.crypto.spec.SecretKeySpec;
 | 
				
			||||||
 | 
					import java.nio.charset.StandardCharsets;
 | 
				
			||||||
 | 
					import java.util.Base64;
 | 
				
			||||||
 | 
					import java.net.URLEncoder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.alibaba.fastjson.JSONObject;
 | 
				
			||||||
 | 
					import com.google.gson.Gson;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.ByteArrayInputStream;
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.apache.http.client.config.CookieSpecs;
 | 
				
			||||||
 | 
					import org.apache.http.client.config.RequestConfig;
 | 
				
			||||||
 | 
					import org.apache.http.client.methods.HttpGet;
 | 
				
			||||||
 | 
					import org.apache.http.client.methods.HttpPost;
 | 
				
			||||||
 | 
					import org.apache.http.entity.StringEntity;
 | 
				
			||||||
 | 
					import org.apache.http.impl.client.CloseableHttpClient;
 | 
				
			||||||
 | 
					import org.apache.http.impl.client.HttpClients;
 | 
				
			||||||
 | 
					import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
 | 
				
			||||||
 | 
					import org.apache.http.util.EntityUtils;
 | 
				
			||||||
 | 
					import com.yonyou.cloud.utils.StringUtils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import nc.bs.trade.business.HYSuperDMO;
 | 
				
			||||||
 | 
					import nc.util.mmf.framework.base.MMValueCheck;
 | 
				
			||||||
 | 
					import nc.vo.pub.BusinessException;
 | 
				
			||||||
 | 
					import nc.vo.pubapp.pattern.exception.ExceptionUtils;
 | 
				
			||||||
 | 
					import nc.vo.sscivm.invoice.IVMInvoiceHeadVO;
 | 
				
			||||||
 | 
					import nc.vo.sscivm.ivsale.IVApplicationHeadVO;
 | 
				
			||||||
 | 
					import nc.vo.sscivm.ivsale.IVApplogVO;
 | 
				
			||||||
 | 
					import nccloud.framework.core.io.WebFile;
 | 
				
			||||||
 | 
					import nccloud.framework.service.ServiceLocator;
 | 
				
			||||||
 | 
					import nccloud.framework.web.action.itf.ICommonAction;
 | 
				
			||||||
 | 
					import nccloud.framework.web.container.IRequest;
 | 
				
			||||||
 | 
					import nccloud.itf.sscivm.ivsale.service.IVSaleQueryService;
 | 
				
			||||||
 | 
					import nccloud.pubitf.platform.attachment.IAttachmentService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class InvoiceDownloadAction implements ICommonAction {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						IAttachmentService ncservice = ServiceLocator.find(IAttachmentService.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public Object doAction(IRequest request) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Map<String, String[]> params_1 = request.readParameters();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							String[] pk = params_1.get("pk");
 | 
				
			||||||
 | 
							String[] invoiceTypes = params_1.get("invoiceType");
 | 
				
			||||||
 | 
							String isdoc = "z";
 | 
				
			||||||
 | 
							WebFile file = null;
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								List<IVMInvoiceHeadVO> headVOList =ServiceLocator.find(IVSaleQueryService.class).queryIVMInvoiceHeadVOsByPks(new String[] {pk[0]});
 | 
				
			||||||
 | 
								IVMInvoiceHeadVO headVO = headVOList.get(0);
 | 
				
			||||||
 | 
								String invoiceType = invoiceTypes[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// 获取旗舰版的token
 | 
				
			||||||
 | 
								String appKey = "8c9eb1ea1ba54b3f9683a8b355f8e615";
 | 
				
			||||||
 | 
								String appSecret = "999e15c2a13ee4eab480534be4bf52fdf9032a6d";
 | 
				
			||||||
 | 
								String tokenUrl="https://c2.yonyoucloud.com/iuap-api-auth/open-auth/selfAppAuth/getAccessToken";
 | 
				
			||||||
 | 
								String getbsfileUrl="https://c2.yonyoucloud.com/iuap-api-gateway/yonbip/tax/output-tax/api/einvoice/getbsfile?access_token=";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								Map<String, String> params = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// 除签名外的其他参数
 | 
				
			||||||
 | 
								params.put("appKey", appKey);
 | 
				
			||||||
 | 
								String timestamp = String.valueOf(System.currentTimeMillis());
 | 
				
			||||||
 | 
								params.put("timestamp", timestamp);
 | 
				
			||||||
 | 
								// 计算签名
 | 
				
			||||||
 | 
								Map<String, String> treeMap;
 | 
				
			||||||
 | 
								if (params instanceof TreeMap) {
 | 
				
			||||||
 | 
									treeMap = params;
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									treeMap = new TreeMap<>(params);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								StringBuilder stringBuilder = new StringBuilder();
 | 
				
			||||||
 | 
								for (Map.Entry<String, String> entry : treeMap.entrySet()) {
 | 
				
			||||||
 | 
									stringBuilder.append(entry.getKey()).append(entry.getValue());
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								Mac mac = Mac.getInstance("HmacSHA256");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mac.init(new SecretKeySpec(appSecret.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
 | 
				
			||||||
 | 
								byte[] signData = mac.doFinal(stringBuilder.toString().getBytes(StandardCharsets.UTF_8));
 | 
				
			||||||
 | 
								String base64String = Base64.getEncoder().encodeToString(signData);
 | 
				
			||||||
 | 
								String signature = URLEncoder.encode(base64String, "UTF-8");
 | 
				
			||||||
 | 
								params.put("signature", signature);
 | 
				
			||||||
 | 
					//        			String responseString = doGet(
 | 
				
			||||||
 | 
					//        					"https://c1.yonyoucloud.com/iuap-api-auth/open-auth/selfAppAuth/getAccessToken", params);
 | 
				
			||||||
 | 
								String responseString = doGet(tokenUrl, params);
 | 
				
			||||||
 | 
								Gson gson = new Gson();
 | 
				
			||||||
 | 
								Map result = gson.fromJson(responseString, Map.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (StringUtils.equals("00000", result.get("code").toString())) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									Map<String, Object> tokenInfo = (Map<String, Object>) result.get("data");
 | 
				
			||||||
 | 
									String access_token = (String) tokenInfo.get("access_token");
 | 
				
			||||||
 | 
									// 税务服务-调用销项发票管理-已开票-版式文件查询接口
 | 
				
			||||||
 | 
									Map<String, Object> map = new HashMap<>();
 | 
				
			||||||
 | 
									// 发票类型 1:增值税电子普通发票; 2:增值税电子专用发票; 3:增值税普通发票; 4:增值税专用发票 、增值税专用发票(机动车); 5:机动车销售统一发票; 8:增值税电子普通发票(成品油); 10:成品油普通发票; 11:成品油专用发票; 15:二手车销售统一发票; 31:数电专用发票; 32:数电普通发票; 33:数电纸质发票(增值税专用发票); 34:数电纸质发票(普通发票);
 | 
				
			||||||
 | 
									map.put("fplx", headVO.getInvoice_type());
 | 
				
			||||||
 | 
									// 数电发票号码
 | 
				
			||||||
 | 
									map.put("slfphm", headVO.getFphm());
 | 
				
			||||||
 | 
									// 用友自画pdf
 | 
				
			||||||
 | 
									map.put("yypdf", "0");
 | 
				
			||||||
 | 
									// 税局pdf
 | 
				
			||||||
 | 
									map.put("taxpdf", "1".equals(invoiceType) ? "1" : "0");
 | 
				
			||||||
 | 
									// 税局xml
 | 
				
			||||||
 | 
									map.put("taxxml", "2".equals(invoiceType) ? "1" : "0");
 | 
				
			||||||
 | 
									// 税局ofd
 | 
				
			||||||
 | 
									map.put("taxofd", "3".equals(invoiceType) ? "1" : "0");
 | 
				
			||||||
 | 
					//        				String resString = doPost(
 | 
				
			||||||
 | 
					//        						"https://c1.yonyoucloud.com/iuap-api-gateway/yonbip/tax/output-tax/api/einvoice/getbsfile?access_token=" + access_token,
 | 
				
			||||||
 | 
					//        						map);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									String resString = doPost(getbsfileUrl + access_token,map);
 | 
				
			||||||
 | 
									gson = new Gson();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									Map resultMap = gson.fromJson(resString, Map.class);
 | 
				
			||||||
 | 
									if (StringUtils.equals("200", resultMap.get("code").toString())) {
 | 
				
			||||||
 | 
										Map<String, Object> infoMap = (Map<String, Object>) resultMap.get("data");
 | 
				
			||||||
 | 
										String tax = "1".equals(invoiceType) ? (String) infoMap.get("taxpdf") : "2".equals(invoiceType) ? (String) infoMap.get("taxxml") : "3".equals(invoiceType) ? (String) infoMap.get("taxofd") : "";
 | 
				
			||||||
 | 
										if (MMValueCheck.isEmpty(tax)) {
 | 
				
			||||||
 | 
											throw new Exception("未查询到发票信息");
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										byte[] imageBytes = javax.xml.bind.DatatypeConverter.parseBase64Binary(tax);
 | 
				
			||||||
 | 
										InputStream ins = new ByteArrayInputStream(imageBytes);
 | 
				
			||||||
 | 
										String Fphm = headVO.getFphm();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										//发票号码+单位名称+合同号(开票申请字段)+金额(发票上的价税合计)
 | 
				
			||||||
 | 
										String filename = "1".equals(invoiceType) ? ".pdf" : "2".equals(invoiceType) ? ".xml" : "3".equals(invoiceType) ? ".ofd" : "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										String ctcode="";
 | 
				
			||||||
 | 
										HYSuperDMO dmo = new HYSuperDMO();
 | 
				
			||||||
 | 
										IVApplogVO[] ivApplogVO=(IVApplogVO[]) dmo.queryByWhereClause(IVApplogVO.class, "fphm='"+Fphm+"' and dr=0 ");
 | 
				
			||||||
 | 
										if(ivApplogVO!=null&&ivApplogVO.length>0) {
 | 
				
			||||||
 | 
											ivApplogVO[0].getLyid();//开票申请单主键
 | 
				
			||||||
 | 
											IVApplicationHeadVO ivApplicationHeadVO =(IVApplicationHeadVO) dmo.queryByPrimaryKey(IVApplicationHeadVO.class, ivApplogVO[0].getLyid());
 | 
				
			||||||
 | 
											ctcode=ivApplicationHeadVO.getDef2();//合同号
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										//发票号码+单位名称+合同号(开票申请字段)+金额(发票上的价税合计)  合同号_单位名称_发票号码_金额
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//          					合同号_单位名称_发票号码_金额
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										String name = ctcode+"_"+headVO.getGmfmc()+"_"+Fphm+"_"+String.valueOf(headVO.getJshj().toDouble()) + filename;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//          					String name = Fphm+"_"+headVO.getGmfmc()+"_"+ctcode+"_"+String.valueOf(headVO.getJshj().toDouble()) + filename;
 | 
				
			||||||
 | 
										file = new WebFile(name, ins);
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										throw new Exception("获取发票信息失败");
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								}else {
 | 
				
			||||||
 | 
									throw new Exception("获取access_token失败");
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					//            String url = "";
 | 
				
			||||||
 | 
					//            IVMInvoiceHeadVO headVO = headVOList.get(0);
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//            if (headVOList != null && headVOList.size() > 0) {
 | 
				
			||||||
 | 
					//            	  url = headVO.getViewurl();
 | 
				
			||||||
 | 
					//            }
 | 
				
			||||||
 | 
					//            InputStream ins = this.ncservice.download(isdoc, url, "sscivm");
 | 
				
			||||||
 | 
					//            String Fpdm = headVO.getFpdm();
 | 
				
			||||||
 | 
					//            String Fphm = headVO.getFphm();
 | 
				
			||||||
 | 
					//            String name = headVO.getFilename();
 | 
				
			||||||
 | 
					//        	String filename = ".pdf";
 | 
				
			||||||
 | 
					//          	if(name!=null && name.endsWith(".ofd")){
 | 
				
			||||||
 | 
					//             filename = ".ofd";
 | 
				
			||||||
 | 
					//            }
 | 
				
			||||||
 | 
					//            file = new WebFile(Fpdm + "_" + Fphm + filename, ins);
 | 
				
			||||||
 | 
							} catch (BusinessException e) {
 | 
				
			||||||
 | 
								ExceptionUtils.wrappException(e);
 | 
				
			||||||
 | 
							} catch (NoSuchAlgorithmException e) {
 | 
				
			||||||
 | 
								// TODO Auto-generated catch block
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
 | 
							} catch (InvalidKeyException e) {
 | 
				
			||||||
 | 
								// TODO Auto-generated catch block
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
 | 
							} catch (UnsupportedEncodingException e) {
 | 
				
			||||||
 | 
								// TODO Auto-generated catch block
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
 | 
							} catch (IOException e) {
 | 
				
			||||||
 | 
								// TODO Auto-generated catch block
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
 | 
							} catch (Exception e) {
 | 
				
			||||||
 | 
								// TODO Auto-generated catch block
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return file;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String doPost(String requestUrl, Map<String, Object> param) throws IOException {
 | 
				
			||||||
 | 
							PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
 | 
				
			||||||
 | 
							cm.setMaxTotal(500);
 | 
				
			||||||
 | 
							cm.setDefaultMaxPerRoute(50);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							RequestConfig globalConfig = RequestConfig.custom().setConnectionRequestTimeout(5000) // 连接池获取连接超时
 | 
				
			||||||
 | 
									.setConnectTimeout(5000) // 连接建立超时
 | 
				
			||||||
 | 
									.setSocketTimeout(20000) // 等待响应超时
 | 
				
			||||||
 | 
									.setCookieSpec(CookieSpecs.IGNORE_COOKIES).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm)
 | 
				
			||||||
 | 
									.setDefaultRequestConfig(globalConfig).build();
 | 
				
			||||||
 | 
							HttpPost post = new HttpPost(requestUrl);
 | 
				
			||||||
 | 
							post.setHeader("Content-Type", "application/json;charset=UTF-8");
 | 
				
			||||||
 | 
							post.setEntity(new StringEntity(JSONObject.toJSONString(param), "utf-8"));
 | 
				
			||||||
 | 
							String responseString = httpClient.execute(post, response -> EntityUtils.toString(response.getEntity()));
 | 
				
			||||||
 | 
							return responseString;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String doGet(String requestUrl, Map<String, String> paramMap) throws IOException {
 | 
				
			||||||
 | 
							PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
 | 
				
			||||||
 | 
							cm.setMaxTotal(500);
 | 
				
			||||||
 | 
							cm.setDefaultMaxPerRoute(50);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							RequestConfig globalConfig = RequestConfig.custom().setConnectionRequestTimeout(5000) // 连接池获取连接超时
 | 
				
			||||||
 | 
									.setConnectTimeout(5000) // 连接建立超时
 | 
				
			||||||
 | 
									.setSocketTimeout(20000) // 等待响应超时
 | 
				
			||||||
 | 
									.setCookieSpec(CookieSpecs.IGNORE_COOKIES).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm)
 | 
				
			||||||
 | 
									.setDefaultRequestConfig(globalConfig).build();
 | 
				
			||||||
 | 
							StringBuilder param = new StringBuilder("?");
 | 
				
			||||||
 | 
							if (paramMap != null) {
 | 
				
			||||||
 | 
								for (Map.Entry<String, String> entry : paramMap.entrySet()) {
 | 
				
			||||||
 | 
									param.append(entry.getKey());
 | 
				
			||||||
 | 
									param.append("=");
 | 
				
			||||||
 | 
									param.append(entry.getValue());
 | 
				
			||||||
 | 
									param.append("&");
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								param.deleteCharAt(param.length() - 1);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							String url = requestUrl + param;
 | 
				
			||||||
 | 
							HttpGet get = new HttpGet(url);
 | 
				
			||||||
 | 
							String responseString = httpClient.execute(get, response -> EntityUtils.toString(response.getEntity()));
 | 
				
			||||||
 | 
							get.releaseConnection();
 | 
				
			||||||
 | 
							return responseString;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,148 @@
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Source code recreated from a .class file by IntelliJ IDEA
 | 
				
			||||||
 | 
					// (powered by FernFlower decompiler)
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package nc.bs.ssctp.sscbd.tasktype.query.convertor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import nc.bs.ssctp.sscbd.tasktype.config.TaskTypeConfigFactory;
 | 
				
			||||||
 | 
					import nc.bs.ssctp.sscbd.tasktype.query.SSCTaskQueryCondition;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class BlurConvertor implements ITaskQueryConditionConvertor {
 | 
				
			||||||
 | 
					    public BlurConvertor() {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getWherePart(SSCTaskQueryCondition condition) {
 | 
				
			||||||
 | 
					        StringBuilder whereSql = new StringBuilder();
 | 
				
			||||||
 | 
					        whereSql.append(" ");
 | 
				
			||||||
 | 
					        if (TaskTypeConfigFactory.QUERYCONDITION_BLUR.equals(condition.getQueryField())) {
 | 
				
			||||||
 | 
					            String blur = condition.getQueryFieldValue();
 | 
				
			||||||
 | 
					            if (blur == null || "".equals(blur)) {
 | 
				
			||||||
 | 
					                return "";
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            String[] blurs = blur.split(",");
 | 
				
			||||||
 | 
					            List<String> vas = new ArrayList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for(String str : blurs) {
 | 
				
			||||||
 | 
					                vas.add(str);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (vas != null && vas.size() > 0) {
 | 
				
			||||||
 | 
					                for(String s : vas) {
 | 
				
			||||||
 | 
					                    whereSql.append(" and ( NODETASKS.busiid in ( ");
 | 
				
			||||||
 | 
					                    if (s.contains("=")) {
 | 
				
			||||||
 | 
					                        String[] strs = s.split("=");
 | 
				
			||||||
 | 
					                        whereSql.append(" SELECT a.busiid FROM sscrp_bill a,sscrp_detail b WHERE a.pk_bill = b.pk_bill AND CODE = '" + strs[0] + "' AND VALUE like '%" + strs[1].replaceAll("'", "") + "%'  ");
 | 
				
			||||||
 | 
					                        whereSql.append(" UNION ALL ");
 | 
				
			||||||
 | 
					                        whereSql.append(" SELECT a.busiid FROM sscrp_bill_done a,sscrp_detail_done b WHERE a.pk_bill = b.pk_bill AND CODE = '" + strs[0] + "' AND VALUE like '%" + strs[1].replaceAll("'", "") + "%'  ");
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        whereSql.append(" SELECT a.busiid FROM sscrp_bill a,sscrp_detail b WHERE a.pk_bill = b.pk_bill AND VALUE like '%" + s.replaceAll("'", "") + "%'  ");
 | 
				
			||||||
 | 
					                        whereSql.append(" UNION ALL ");
 | 
				
			||||||
 | 
					                        whereSql.append(" SELECT a.busiid FROM sscrp_bill_done a,sscrp_detail_done b WHERE a.pk_bill = b.pk_bill AND VALUE like '%" + s.replaceAll("'", "") + "%'  ");
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    whereSql.append(" ) ");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    // 新增四个EXISTS条件 //联查 付款单、收款单、主报销单、主借款单 四张单子
 | 
				
			||||||
 | 
					                    whereSql.append(" OR EXISTS (SELECT 1 FROM AR_GATHERITEM bill JOIN BD_BALATYPE bala ON bala.pk_balatype = bill.pk_balatype WHERE NODETASKS.busiid = bill.pk_gatherbill AND bala.name LIKE '%" + s.replaceAll("'", "") + "%')");
 | 
				
			||||||
 | 
					                    whereSql.append(" OR EXISTS (SELECT 1 FROM ap_paybill bill JOIN AP_PAYITEM item ON item.pk_paybill = bill.pk_paybill JOIN BD_BALATYPE bala ON bala.pk_balatype = item.pk_balatype WHERE NODETASKS.busiid = bill.pk_paybill AND bala.name LIKE '%" + s.replaceAll("'", "") + "%')");
 | 
				
			||||||
 | 
					                    whereSql.append(" OR EXISTS (SELECT 1 FROM er_bxzb bill JOIN BD_BALATYPE bala ON bala.pk_balatype = bill.jsfs WHERE NODETASKS.busiid = bill.pk_jkbx AND bala.name LIKE '%" + s.replaceAll("'", "") + "%')");
 | 
				
			||||||
 | 
					                    whereSql.append(" OR EXISTS (SELECT 1 FROM er_jkzb bill JOIN BD_BALATYPE bala ON bala.pk_balatype = bill.jsfs WHERE NODETASKS.busiid = bill.pk_jkbx AND bala.name LIKE '%" + s.replaceAll("'", "") + "%')");
 | 
				
			||||||
 | 
					                    whereSql.append(" ) ");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return whereSql.toString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getWhere(String condition, Object blur) {
 | 
				
			||||||
 | 
					        StringBuilder whereSql = new StringBuilder();
 | 
				
			||||||
 | 
					        whereSql.append(condition);
 | 
				
			||||||
 | 
					        List<String> vas = new ArrayList();
 | 
				
			||||||
 | 
					        if (blur != null && !blur.toString().equals("")) {
 | 
				
			||||||
 | 
					            for(Object c : (List)blur) {
 | 
				
			||||||
 | 
					                vas.add((String)c);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for(String str : vas) {
 | 
				
			||||||
 | 
					            vas.add(str);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (vas != null && vas.size() > 0) {
 | 
				
			||||||
 | 
					            StringBuilder sql = new StringBuilder();
 | 
				
			||||||
 | 
					            sql.append(" SELECT TASK.busiid                 ");
 | 
				
			||||||
 | 
					            sql.append("   FROM SSCTP_TASK TASK                                                          ");
 | 
				
			||||||
 | 
					            sql.append("   LEFT JOIN SSCTP_CURRENTTASK CURTASK                                            ");
 | 
				
			||||||
 | 
					            sql.append("     ON CURTASK.PK_CURRENTTASK = TASK.PK_CURRENTTASK                             ");
 | 
				
			||||||
 | 
					            sql.append("   LEFT JOIN SSCTP_TASKEXTENDINFO EXTENDINFO                                     ");
 | 
				
			||||||
 | 
					            sql.append("     ON EXTENDINFO.PK_CURRENTTASK = TASK.PK_CURRENTTASK                          ");
 | 
				
			||||||
 | 
					            sql.append("  WHERE " + condition + " and TASK.dr=0 and (CURTASK.saga_frozen is null or CURTASK.saga_frozen <> 1) ");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for(String s : vas) {
 | 
				
			||||||
 | 
					                whereSql.append(" and nodetasks.busiid in ( ");
 | 
				
			||||||
 | 
					                if (s.contains("=")) {
 | 
				
			||||||
 | 
					                    String[] strs = s.split("=");
 | 
				
			||||||
 | 
					                    whereSql.append(" SELECT a.busiid FROM sscrp_bill a,sscrp_detail b WHERE a.pk_bill = b.pk_bill AND CODE = '" + strs[0] + "' AND VALUE like '%" + strs[1].replaceAll("'", "") + "%' AND a.busiid IN (" + sql.toString() + ") ");
 | 
				
			||||||
 | 
					                    whereSql.append(" UNION ALL ");
 | 
				
			||||||
 | 
					                    whereSql.append(" SELECT a.busiid FROM sscrp_bill_done a,sscrp_detail_done b WHERE a.pk_bill = b.pk_bill AND CODE = '" + strs[0] + "' AND VALUE like '%" + strs[1].replaceAll("'", "") + "%' AND a.busiid IN (" + sql.toString() + ") ");
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    String var10001 = s.replaceAll("'", "");
 | 
				
			||||||
 | 
					                    whereSql.append(" SELECT a.busiid FROM sscrp_bill a,sscrp_detail b WHERE a.pk_bill = b.pk_bill AND VALUE like '%" + var10001 + "%' AND a.busiid IN (" + sql.toString() + ") ");
 | 
				
			||||||
 | 
					                    whereSql.append(" UNION ALL ");
 | 
				
			||||||
 | 
					                    var10001 = s.replaceAll("'", "");
 | 
				
			||||||
 | 
					                    whereSql.append(" SELECT a.busiid FROM sscrp_bill_done a,sscrp_detail_done b WHERE a.pk_bill = b.pk_bill AND VALUE like '%" + var10001 + "%' AND a.busiid IN (" + sql.toString() + ") ");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                whereSql.append(" ) ");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return whereSql.toString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getWhere4QM(String condition, Object blur) {
 | 
				
			||||||
 | 
					        StringBuilder whereSql = new StringBuilder();
 | 
				
			||||||
 | 
					        whereSql.append(condition);
 | 
				
			||||||
 | 
					        List<String> vas = new ArrayList();
 | 
				
			||||||
 | 
					        if (blur != null && !blur.toString().equals("")) {
 | 
				
			||||||
 | 
					            for(Object c : (List)blur) {
 | 
				
			||||||
 | 
					                vas.add((String)c);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for(String str : vas) {
 | 
				
			||||||
 | 
					            vas.add(str);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (vas != null && vas.size() > 0) {
 | 
				
			||||||
 | 
					            StringBuilder sql = new StringBuilder();
 | 
				
			||||||
 | 
					            sql.append(" SELECT TASK.busiid                 ");
 | 
				
			||||||
 | 
					            sql.append("   FROM SSCTP_TASK TASK                                                          ");
 | 
				
			||||||
 | 
					            sql.append("   LEFT JOIN SSCTP_CURRENTTASK CURTASK                                            ");
 | 
				
			||||||
 | 
					            sql.append("     ON CURTASK.PK_CURRENTTASK = TASK.PK_CURRENTTASK                             ");
 | 
				
			||||||
 | 
					            sql.append("   LEFT JOIN SSCTP_TASKEXTENDINFO EXTENDINFO                                     ");
 | 
				
			||||||
 | 
					            sql.append("     ON EXTENDINFO.PK_CURRENTTASK = TASK.PK_CURRENTTASK                          ");
 | 
				
			||||||
 | 
					            sql.append("  WHERE " + condition + " and TASK.dr=0 and (CURTASK.saga_frozen is null or CURTASK.saga_frozen <> 1) ");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for(String s : vas) {
 | 
				
			||||||
 | 
					                whereSql.append(" and nodetasks.busiid in ( ");
 | 
				
			||||||
 | 
					                whereSql.append(" select id from sscqm_check_bill where pk_bill in ( ");
 | 
				
			||||||
 | 
					                String var10001 = s.replaceAll("'", "");
 | 
				
			||||||
 | 
					                whereSql.append(" SELECT a.busiid FROM sscrp_bill a,sscrp_detail b WHERE a.pk_bill = b.pk_bill AND VALUE like '%" + var10001 + "%' AND a.busiid IN (" + sql.toString() + ") ");
 | 
				
			||||||
 | 
					                whereSql.append(" UNION ALL ");
 | 
				
			||||||
 | 
					                var10001 = s.replaceAll("'", "");
 | 
				
			||||||
 | 
					                whereSql.append(" SELECT a.busiid FROM sscrp_bill_done a,sscrp_detail_done b WHERE a.pk_bill = b.pk_bill AND VALUE like '%" + var10001 + "%' AND a.busiid IN (" + sql.toString() + ") ");
 | 
				
			||||||
 | 
					                whereSql.append(" ) )");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return whereSql.toString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue