功能调整
This commit is contained in:
		
							parent
							
								
									44a1ed41f7
								
							
						
					
					
						commit
						e0732a29e5
					
				|  | @ -5,6 +5,22 @@ | |||
| 
 | ||||
| package nc.bs.arap.actions; | ||||
| 
 | ||||
| import nc.bs.arap.bill.ArapBillPubUtil; | ||||
| import nc.bs.arap.util.ArapBillVOUtils; | ||||
| import nc.bs.arap.util.ArapVOUtils; | ||||
| import nc.bs.arap.util.BillAccountCalendarUtils; | ||||
| import nc.bs.arap.validator.CrossRuleCheckValidator; | ||||
| import nc.bs.dao.BaseDAO; | ||||
| import nc.jdbc.framework.processor.MapProcessor; | ||||
| import nc.vo.arap.basebill.BaseBillVO; | ||||
| import nc.vo.arap.utils.StringUtil; | ||||
| import nc.vo.pub.AggregatedValueObject; | ||||
| import nc.vo.pub.BusinessException; | ||||
| import nc.vo.pub.CircularlyAccessibleValueObject; | ||||
| import nc.vo.pub.lang.UFDouble; | ||||
| 
 | ||||
| import java.util.Map; | ||||
| 
 | ||||
| public class GatheringbillEditSaveBatchBSAction extends BillUpdateBatchBSAction { | ||||
|     public GatheringbillEditSaveBatchBSAction() { | ||||
|         this.validatorCode.add(5); | ||||
|  | @ -12,6 +28,79 @@ public class GatheringbillEditSaveBatchBSAction extends BillUpdateBatchBSAction | |||
|         this.validatorCode.add(57); | ||||
|         this.validatorCode.add(59); | ||||
|         this.validatorCode.add(62); | ||||
|         this.validatorCode.remove(44); | ||||
|     } | ||||
| 
 | ||||
|     protected void doBeforeUpdate(AggregatedValueObject[] bills, AggregatedValueObject[] orginBills) throws BusinessException { | ||||
|         ArapBillPubUtil.fillTradeTypeInfo(bills); | ||||
| 
 | ||||
|         for(AggregatedValueObject bill : bills) { | ||||
|             ArapBillPubUtil.processMoneyOnlySum(bill); | ||||
|         } | ||||
| 
 | ||||
|         /** | ||||
|          * 收款单保存校验关联的销售订单实际收款金额是否超过价税合计 | ||||
|          */ | ||||
|         int i = 0; | ||||
| 
 | ||||
|         for(AggregatedValueObject bill : bills) { | ||||
|             AggregatedValueObject oriBill = orginBills[i++]; | ||||
|             BaseBillVO billVO = (BaseBillVO) bill.getParentVO(); //修改的收款单 | ||||
|             BaseBillVO billOriVO = (BaseBillVO) oriBill.getParentVO(); //之前的收款单 | ||||
|             UFDouble money = billVO.getMoney(); //修改后的金额 | ||||
|             UFDouble oriMoney = billOriVO.getMoney(); //修改前的金额 | ||||
|             String pk_tradetype = billVO.getPk_tradetype(); | ||||
|             if(!"F2-Cxx-02".equals(pk_tradetype)){ | ||||
|                 continue; | ||||
|             } | ||||
|             String def3 = billVO.getDef3(); //收款单对应的销售订单id | ||||
|             if(StringUtil.isEmpty(def3) || "N".equals(def3) || "~".equals(def3)){ | ||||
|                 //无绑定的销售订单则下一次循环 | ||||
|                 continue; | ||||
|             } | ||||
|             //计算收款单金额差值 | ||||
|             UFDouble changeMoney = money.sub(oriMoney); | ||||
|             //根据销售订单id去查询销售订单 | ||||
|             BaseDAO dao = new BaseDAO(); | ||||
|             String sql = "select nreceivedmny,ntotalorigmny from so_saleorder where dr = 0 and csaleorderid = '" +def3+"'"; | ||||
|             Map saleMap = (Map)dao.executeQuery(sql, new MapProcessor()); | ||||
|             //销售订单价税合计 | ||||
|             UFDouble ntotalorigmny = UFDouble.ZERO_DBL; | ||||
|             //销售订单实际收款金额 | ||||
|             UFDouble nreceivedmny = UFDouble.ZERO_DBL; | ||||
|             if(saleMap != null) { | ||||
|                 nreceivedmny = new UFDouble(saleMap.get("nreceivedmny") == null ? "0" : saleMap.get("nreceivedmny").toString()); | ||||
|                 ntotalorigmny = new UFDouble(saleMap.get("ntotalorigmny") == null ? "0" : saleMap.get("ntotalorigmny").toString()); | ||||
|             } | ||||
|             UFDouble moreMoney = nreceivedmny.add(changeMoney).sub(ntotalorigmny); | ||||
|             if(nreceivedmny.add(changeMoney).compareTo(ntotalorigmny) > 0){ | ||||
|                 throw new BusinessException("【该笔收款已超销售订单"+ moreMoney +"元,无法传输!请检查订单累计收款金额!】"); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         ArapBillVOUtils.prepareDefaultInfo(bills, true); | ||||
|         int updateType = this.getUpdateType(bills, orginBills); | ||||
| 
 | ||||
|         for(AggregatedValueObject bill : bills) { | ||||
|             bill.getParentVO().setStatus(1); | ||||
|         } | ||||
| 
 | ||||
|         if (updateType == TEMP_2_SAVE || updateType == SAVE_2_SAVE) { | ||||
|             for(AggregatedValueObject bill : bills) { | ||||
|                 for(CircularlyAccessibleValueObject item : bill.getChildrenVO()) { | ||||
|                     if (item.getStatus() != 2 && item.getStatus() != 3) { | ||||
|                         item.setStatus(1); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         if (updateType == TEMP_2_SAVE || updateType == SAVE_2_SAVE) { | ||||
|             BillAccountCalendarUtils.setAccperiodYearMonth(bills); | ||||
|         } | ||||
| 
 | ||||
|         this.checkIsCorrdBillMoneyControl(bills, orginBills); | ||||
|         this.checkOtherSystemBill(bills, orginBills); | ||||
|         (new CrossRuleCheckValidator()).validate(bills); | ||||
|         ArapVOUtils.resetMoneyBal(bills, orginBills); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -5,6 +5,19 @@ | |||
| 
 | ||||
| package nc.bs.arap.actions; | ||||
| 
 | ||||
| import nc.bs.arap.bill.ArapBillPubUtil; | ||||
| import nc.bs.arap.util.*; | ||||
| import nc.bs.arap.validator.CrossRuleCheckValidator; | ||||
| import nc.bs.dao.BaseDAO; | ||||
| import nc.jdbc.framework.processor.MapProcessor; | ||||
| import nc.vo.arap.basebill.BaseBillVO; | ||||
| import nc.vo.arap.utils.StringUtil; | ||||
| import nc.vo.pub.AggregatedValueObject; | ||||
| import nc.vo.pub.BusinessException; | ||||
| import nc.vo.pub.lang.UFDouble; | ||||
| 
 | ||||
| import java.util.Map; | ||||
| 
 | ||||
| public class GatheringbillSaveBatchBSAction extends BillInsertBatchBSAction { | ||||
|     public GatheringbillSaveBatchBSAction() { | ||||
|         this.validatorCode.add(5); | ||||
|  | @ -26,4 +39,52 @@ public class GatheringbillSaveBatchBSAction extends BillInsertBatchBSAction { | |||
|         this.validatorCode.add(62); | ||||
|         this.validatorCode.add(76); | ||||
|     } | ||||
| 
 | ||||
|     protected void doBeforeInsert(AggregatedValueObject[] bills) throws BusinessException { | ||||
|         ArapBillPubUtil.fillTradeTypeInfo(bills); | ||||
|         BillBankUtils.fillSettleBankrelated_code(bills); | ||||
|         BillDateUtils.setBillDateByNow(bills); | ||||
|         ArapBillPubUtil.resetBasedocVid(bills); | ||||
|         BillAccountCalendarUtils.setAccperiodYearMonth(bills); | ||||
|         ArapBillVOUtils.prepareDefaultInfo(bills); | ||||
|         BillMoneyVUtils.sumAllVoBodyToHead(bills); | ||||
|         (new CrossRuleCheckValidator()).validate(bills); | ||||
|         ArapBillPubUtil.resetDestVODoc(bills); | ||||
|         ArapBillVOUtils.setMaterialInfo(bills); | ||||
|         ArapBillVOUtils.setDefaultSagaFrozen(bills); | ||||
| 
 | ||||
|         /** | ||||
|          * 收款单保存校验关联的销售订单实际收款金额是否超过价税合计 | ||||
|          */ | ||||
| 
 | ||||
|         for(AggregatedValueObject bill : bills) { | ||||
|             BaseBillVO billVO = (BaseBillVO) bill.getParentVO(); //修改的收款单 | ||||
|             UFDouble money = billVO.getMoney(); //金额 | ||||
|             String pk_tradetype = billVO.getPk_tradetype(); | ||||
|             if(!"F2-Cxx-02".equals(pk_tradetype)){ | ||||
|                 continue; | ||||
|             } | ||||
|             String def3 = billVO.getDef3(); //收款单对应的销售订单id | ||||
|             if(StringUtil.isEmpty(def3) || "N".equals(def3) || "~".equals(def3)){ | ||||
|                 //无绑定的销售订单则下一次循环 | ||||
|                 continue; | ||||
|             } | ||||
|             //根据销售订单id去查询销售订单 | ||||
|             BaseDAO dao = new BaseDAO(); | ||||
|             String sql = "select nreceivedmny,ntotalorigmny from so_saleorder where dr = 0 and csaleorderid = '" +def3+"'"; | ||||
|             Map saleMap = (Map)dao.executeQuery(sql, new MapProcessor()); | ||||
|             //销售订单价税合计 | ||||
|             UFDouble ntotalorigmny = UFDouble.ZERO_DBL; | ||||
|             //销售订单实际收款金额 | ||||
|             UFDouble nreceivedmny = UFDouble.ZERO_DBL; | ||||
|             if(saleMap != null) { | ||||
|                 nreceivedmny = new UFDouble(saleMap.get("nreceivedmny") == null ? "0" : saleMap.get("nreceivedmny").toString()); | ||||
|                 ntotalorigmny = new UFDouble(saleMap.get("ntotalorigmny") == null ? "0" : saleMap.get("ntotalorigmny").toString()); | ||||
|             } | ||||
|             UFDouble moreMoney = nreceivedmny.add(money).sub(ntotalorigmny); | ||||
|             if(nreceivedmny.add(money).compareTo(ntotalorigmny) > 0){ | ||||
|                 throw new BusinessException("【该笔收款已超销售订单"+ moreMoney +"元,无法传输!请检查订单累计收款金额!】"); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -1,31 +1,10 @@ | |||
| package nc.bs.arap.busireg; | ||||
| 
 | ||||
| import com.alibaba.fastjson.JSONObject; | ||||
| import com.google.gson.Gson; | ||||
| import com.yonyou.cloud.utils.StringUtils; | ||||
| import nc.bs.businessevent.BdUpdateEvent; | ||||
| import nc.bs.businessevent.BusinessEvent; | ||||
| import nc.bs.businessevent.IBusinessEvent; | ||||
| import nc.bs.businessevent.IBusinessListener; | ||||
| import nc.bs.dao.BaseDAO; | ||||
| import nc.bs.trade.business.HYSuperDMO; | ||||
| import nc.bs.uapbd.util.IgnoreSslUtil; | ||||
| import nc.jdbc.framework.processor.ColumnProcessor; | ||||
| import nc.jdbc.framework.processor.MapProcessor; | ||||
| import nc.vo.arap.basebill.BaseAggVO; | ||||
| import nc.vo.arap.utils.ArrayUtil; | ||||
| import nc.vo.pub.AggregatedValueObject; | ||||
| import nc.vo.pub.BusinessException; | ||||
| import nc.vo.pub.CircularlyAccessibleValueObject; | ||||
| import nc.vo.pub.lang.UFDouble; | ||||
| import nc.vo.so.m30.entity.SaleOrderHVO; | ||||
| import nccloud.bs.arap.sagas.util.SagasUtils; | ||||
| import nccloud.commons.lang.ArrayUtils; | ||||
| 
 | ||||
| import javax.crypto.Mac; | ||||
| import javax.crypto.spec.SecretKeySpec; | ||||
| import javax.net.ssl.HttpsURLConnection; | ||||
| import java.io.*; | ||||
| import java.io.BufferedReader; | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| import java.io.InputStreamReader; | ||||
| import java.io.OutputStream; | ||||
| import java.net.URL; | ||||
| import java.net.URLEncoder; | ||||
| import java.nio.charset.StandardCharsets; | ||||
|  | @ -34,228 +13,257 @@ import java.util.HashMap; | |||
| import java.util.Map; | ||||
| import java.util.TreeMap; | ||||
| 
 | ||||
| import javax.crypto.Mac; | ||||
| import javax.crypto.spec.SecretKeySpec; | ||||
| import javax.net.ssl.HttpsURLConnection; | ||||
| 
 | ||||
| import com.alibaba.fastjson.JSONObject; | ||||
| import com.google.gson.Gson; | ||||
| import com.yonyou.cloud.utils.StringUtils; | ||||
| 
 | ||||
| import nc.bs.businessevent.BdUpdateEvent; | ||||
| import nc.bs.businessevent.BusinessEvent; | ||||
| import nc.bs.businessevent.IBusinessEvent; | ||||
| import nc.bs.businessevent.IBusinessListener; | ||||
| import nc.bs.dao.BaseDAO; | ||||
| import nc.bs.trade.business.HYPubBO; | ||||
| import nc.bs.trade.business.HYSuperDMO; | ||||
| import nc.bs.uapbd.util.IgnoreSslUtil; | ||||
| import nc.jdbc.framework.processor.ColumnProcessor; | ||||
| import nc.jdbc.framework.processor.MapProcessor; | ||||
| import nc.vo.arap.basebill.BaseAggVO; | ||||
| import nc.vo.arap.utils.ArrayUtil; | ||||
| import nc.vo.cmp.settlement.SettlementAggVO; | ||||
| import nc.vo.pub.AggregatedValueObject; | ||||
| import nc.vo.pub.BusinessException; | ||||
| import nc.vo.pub.CircularlyAccessibleValueObject; | ||||
| import nc.vo.pub.lang.UFDouble; | ||||
| import nc.vo.so.m30.entity.SaleOrderHVO; | ||||
| import nccloud.bs.arap.sagas.util.SagasUtils; | ||||
| import nccloud.commons.lang.ArrayUtils; | ||||
| 
 | ||||
| public class BusiregForSyncSaleorderAndToBIP implements IBusinessListener{ | ||||
| 
 | ||||
| 	@Override | ||||
| 	public void doAction(IBusinessEvent event) throws BusinessException { | ||||
| 		// TODO Auto-generated method stub | ||||
| 		BaseAggVO[] bills = getBills(event); | ||||
| 		if (ArrayUtils.isEmpty(bills) || SagasUtils.isCompensateStage()) { | ||||
| 			return; | ||||
| 		} | ||||
| 		// 更新 销售订单 | ||||
| 		try { | ||||
| 			BaseDAO dao = new BaseDAO(); | ||||
| 			for(BaseAggVO aggvo : bills) { | ||||
| 				CircularlyAccessibleValueObject headvo = aggvo.getParentVO(); | ||||
| 				// 本次收款金额 | ||||
| 				Object money = headvo.getAttributeValue("money"); | ||||
| 				// 收款单主键 | ||||
| 				Object pk_busibill = headvo.getAttributeValue("pk_gatherbill"); | ||||
| 				// 销售订单主键 | ||||
| 				Object csaleorderid = headvo.getAttributeValue("def3"); | ||||
| 				// 根据销售订单主键,查询比较字段 | ||||
| 				String sql = "select vdef17, vdef15, vdef14, vdef11, vdef9 from so_saleorder where csaleorderid = '" + csaleorderid + "' and dr = 0 "; | ||||
| 				HashMap hm = (HashMap)dao.executeQuery(sql, new MapProcessor()); | ||||
| 				Object vdef17 = hm.get("vdef17"); | ||||
| 				Object vdef15 = hm.get("vdef15"); | ||||
| 				Object vdef14 = hm.get("vdef14"); | ||||
| 				Object vdef11 = hm.get("vdef11"); | ||||
| 				Object  vdef9 = hm.get("vdef9"); | ||||
| 				// 合同号 | ||||
| 				Object ctpk = aggvo.getChildrenVO()[0].getAttributeValue("def6"); | ||||
| 				// 查询合同号下 | ||||
| 				String sql1 = " select sum(ar_gatheritem.money_cr) sk_effect_money " +  | ||||
| 							 " from ar_gatheritem " +  | ||||
| 							 " left join ar_gatherbill on ar_gatherbill.pk_gatherbill = ar_gatheritem.pk_gatherbill " +  | ||||
| 							 " where ar_gatherbill.dr = 0 and ar_gatheritem.dr = 0 and ar_gatherbill.EFFECTSTATUS = 10 " +  | ||||
| 							 " and ar_gatheritem.def6 = '" + ctpk + "'"; | ||||
| 				Object obj = dao.executeQuery(sql1, new ColumnProcessor()); | ||||
| 				// 收款单累计金额 | ||||
| 				UFDouble sk_effect_money = UFDouble.ZERO_DBL; | ||||
| 				if(obj != null) { | ||||
| 					sk_effect_money = new UFDouble(obj.toString()); | ||||
| 				} | ||||
| 				// 表头合同金额 | ||||
| 				UFDouble ctmoney = UFDouble.ZERO_DBL; | ||||
| 				if(vdef17 != null) { | ||||
| 					ctmoney = new UFDouble(vdef17.toString()); | ||||
| 				} | ||||
| 				// 预收比例 | ||||
| 				UFDouble preratio = UFDouble.ZERO_DBL; | ||||
| 				if(vdef15 != null) { | ||||
| 					preratio = new UFDouble(vdef15.toString()); | ||||
| 				} | ||||
| 				// 收款大于预收 | ||||
| 				if (sk_effect_money.compareTo(UFDouble.ZERO_DBL) > 0 && sk_effect_money.sub(ctmoney.multiply(preratio)).compareTo(UFDouble.ZERO_DBL) >= 0) { | ||||
| 					String updateSQL = "update so_saleorder set vdef11 = (select pk_defdoc from bd_defdoc where code = 'fhk01') where csaleorderid = '" + csaleorderid + "'"; | ||||
| 					dao.executeUpdate(updateSQL); | ||||
| 				} else if (sk_effect_money.compareTo(UFDouble.ZERO_DBL) > 0 && sk_effect_money.sub(ctmoney.multiply(preratio)).compareTo(UFDouble.ZERO_DBL) < 0) { | ||||
| 					String updateSQL = "update so_saleorder set vdef11 = (select pk_defdoc from bd_defdoc where code = 'fhk02') where csaleorderid = '" + csaleorderid + "'"; | ||||
| 					dao.executeUpdate(updateSQL); | ||||
| 				} | ||||
| 				JSONObject HTXSDD = new JSONObject(); | ||||
| 				HTXSDD.put("id", vdef9); | ||||
| 				HYSuperDMO dmo= new HYSuperDMO(); | ||||
| 				SaleOrderHVO[] hvo = (SaleOrderHVO[])dmo.queryByWhereClause(SaleOrderHVO.class, "csaleorderid='"+csaleorderid+"'"); | ||||
| 				 | ||||
| 				 | ||||
| 				// 实际预收款 npreceivemny | ||||
| 				UFDouble npreceivemny = hvo[0].getNpreceivemny(); | ||||
| 				JSONObject p = new JSONObject(); | ||||
| 				HTXSDD.put("actPreRecvAmt", npreceivemny.getDouble()); | ||||
| 				// 实际收款金额 nreceivedmny | ||||
| 				UFDouble nreceivedmny = hvo[0].getNreceivedmny(); | ||||
| 				HTXSDD.put("actRecvAmt", nreceivedmny.getDouble()); | ||||
| 				// 是否收到预收款 | ||||
| 				Object vdef14Code = dao.executeQuery("select code from bd_defdoc where pk_defdoc = '" + vdef14 + "'", new ColumnProcessor()); | ||||
| 				HTXSDD.put("isPreRecv", vdef14Code); | ||||
| 				// 是否收到发货款 | ||||
| 				Object vdef11Code = dao.executeQuery("select code from bd_defdoc where pk_defdoc = '" + vdef11 + "'", new ColumnProcessor()); | ||||
| 				HTXSDD.put("isShipRecdAmt", vdef11Code); | ||||
| 				p.put("HTXSDD", HTXSDD); | ||||
| 				System.out.println(p.toJSONString()); | ||||
| 				// 获取旗舰版的token | ||||
| 				Map<String, String> params = new HashMap<>(); | ||||
| 	 			String appKey = "a3c57e0d871240e9b9bf56b35001a324"; | ||||
| 	 			String appSecret = "a959f7786db8dbb9a2c0493b5855a46bea68ad75"; | ||||
| 	 			String tokenUrl="https://www.tkkfbip.com/iuap-api-auth/open-auth/selfAppAuth/getAccessToken"; | ||||
| 	 			String toBipUrl="https://www.tkkfbip.com/iuap-api-gateway/oxp4h3x6/current_yonbip_default_sys/KKAPI/contractSaleOrder/update?access_token="; | ||||
| 	 			// 除签名外的其他参数 | ||||
| 				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(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"); | ||||
|     				doPost(toBipUrl+ access_token, p); | ||||
|     			} | ||||
| 			} | ||||
| 		} catch (Exception e) { | ||||
| 			e.printStackTrace(); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	private BaseAggVO[] getBills(IBusinessEvent event) { | ||||
| 		Object value = null; | ||||
| 		if (event instanceof BusinessEvent) { | ||||
| 			value = ((BusinessEvent)event).getObject(); | ||||
| 		} else if (event instanceof BdUpdateEvent) { | ||||
| 			value = ((BdUpdateEvent)event).getNewObject(); | ||||
| 		}      | ||||
| 		BaseAggVO[] bills = null; | ||||
| 		if (null != value) { | ||||
| 			if (value.getClass().isArray()) { | ||||
| 				Object[] objs = (Object[])value; | ||||
| 				bills = (objs instanceof BaseAggVO[]) ? (BaseAggVO[])objs : (BaseAggVO[])ArrayUtil.convertSupers2Subs((AggregatedValueObject[])objs, BaseAggVO.class); | ||||
| 			} else { | ||||
| 				bills = new BaseAggVO[1]; | ||||
| 				bills[0] = (BaseAggVO)value; | ||||
| 			}  | ||||
| 		} | ||||
| 		return bills; | ||||
| 	} | ||||
| 	 | ||||
| private String doGet(String requestUrl, Map<String, String> paramMap) throws IOException { | ||||
| 		 | ||||
| 		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; | ||||
| 		URL u = new URL(url); | ||||
| 			try { | ||||
| 				if("https".equalsIgnoreCase(u.getProtocol())){//判定网址是否信任,不信任则调用忽略信任工具类SslUtil | ||||
| 				    IgnoreSslUtil.ignoreSsl(); | ||||
| 				} | ||||
| 				HttpsURLConnection connection = (HttpsURLConnection)u.openConnection(); | ||||
| 				connection.setRequestMethod("GET"); | ||||
| 				connection.setConnectTimeout(5000); | ||||
| 				connection.setReadTimeout(5000); | ||||
| 				connection.connect(); | ||||
| 				StringBuilder response =new StringBuilder();  | ||||
| 				int responsecode = connection.getResponseCode(); | ||||
| 				if(responsecode == HttpsURLConnection.HTTP_OK) { | ||||
| 					InputStream inputstream =connection.getInputStream(); | ||||
| 					BufferedReader reader = new BufferedReader(new InputStreamReader(inputstream)); | ||||
| 					String line; | ||||
| 					 | ||||
| 					while((line =reader.readLine()) != null) { | ||||
| 						response.append(line);  | ||||
| 					} | ||||
| 					reader.close(); | ||||
| 				} | ||||
| 				connection.disconnect();	 | ||||
| 				return response.toString(); | ||||
| 			} catch(Exception  e) { | ||||
| 				e.printStackTrace(); | ||||
| 			} | ||||
| 		 | ||||
| 		 | ||||
| 		 | ||||
| 		return null; | ||||
| 	} | ||||
|     @Override | ||||
|     public void doAction(IBusinessEvent event) throws BusinessException { | ||||
|         // TODO Auto-generated method stub | ||||
|         BaseAggVO[] bills = getBills(event); | ||||
|         if (ArrayUtils.isEmpty(bills) || SagasUtils.isCompensateStage()) { | ||||
|             return; | ||||
|         } | ||||
|         // 更新 销售订单 | ||||
|         try { | ||||
|             BaseDAO dao = new BaseDAO(); | ||||
|             for(BaseAggVO aggvo : bills) { | ||||
|                 CircularlyAccessibleValueObject headvo = aggvo.getParentVO(); | ||||
|                 // 本次收款金额 | ||||
|                 Object money = headvo.getAttributeValue("money"); | ||||
|                 // 收款单主键 | ||||
|                 Object pk_busibill = headvo.getAttributeValue("pk_gatherbill"); | ||||
|                 // 销售订单主键 | ||||
|                 Object csaleorderid = headvo.getAttributeValue("def3"); | ||||
|                 // 根据销售订单主键,查询比较字段 | ||||
|                 String sql = "select vdef17, vdef15, vdef14, vdef11, vdef9 from so_saleorder where csaleorderid = '" + csaleorderid + "' and dr = 0 "; | ||||
|                 HashMap hm = (HashMap)dao.executeQuery(sql, new MapProcessor()); | ||||
|                 Object vdef17 = hm.get("vdef17"); | ||||
|                 Object vdef15 = hm.get("vdef15"); | ||||
|                 Object vdef14 = hm.get("vdef14"); | ||||
|                 Object vdef11 = hm.get("vdef11"); | ||||
|                 Object  vdef9 = hm.get("vdef9"); | ||||
|                 // 合同号 | ||||
|                 Object ctpk = aggvo.getChildrenVO()[0].getAttributeValue("def6"); | ||||
|                 // 查询合同号下 | ||||
|                 String sql1 = " select sum(ar_gatheritem.money_cr) sk_effect_money " + | ||||
|                         " from ar_gatheritem " + | ||||
|                         " left join ar_gatherbill on ar_gatherbill.pk_gatherbill = ar_gatheritem.pk_gatherbill " + | ||||
|                         " where ar_gatherbill.dr = 0 and ar_gatheritem.dr = 0 and ar_gatherbill.EFFECTSTATUS = 10 " + | ||||
|                         " and ar_gatheritem.def6 = '" + ctpk + "'"; | ||||
|                 Object obj = dao.executeQuery(sql1, new ColumnProcessor()); | ||||
|                 // 收款单累计金额 | ||||
|                 UFDouble sk_effect_money = UFDouble.ZERO_DBL; | ||||
|                 if(obj != null) { | ||||
|                     sk_effect_money = new UFDouble(obj.toString()); | ||||
|                 } | ||||
|                 // 表头合同金额 | ||||
|                 UFDouble ctmoney = UFDouble.ZERO_DBL; | ||||
|                 if(vdef17 != null) { | ||||
|                     ctmoney = new UFDouble(vdef17.toString()); | ||||
|                 } | ||||
|                 // 预收比例 | ||||
|                 UFDouble preratio = UFDouble.ZERO_DBL; | ||||
|                 if(vdef15 != null) { | ||||
|                     preratio = new UFDouble(vdef15.toString()); | ||||
|                 } | ||||
|                 // 收款大于预收 | ||||
|                 if (sk_effect_money.compareTo(UFDouble.ZERO_DBL) > 0 && sk_effect_money.sub(ctmoney.multiply(preratio)).compareTo(UFDouble.ZERO_DBL) >= 0) { | ||||
|                     String updateSQL = "update so_saleorder set vdef11 = (select pk_defdoc from bd_defdoc where code = 'fhk01') where csaleorderid = '" + csaleorderid + "'"; | ||||
|                     dao.executeUpdate(updateSQL); | ||||
|                 } else if (sk_effect_money.compareTo(UFDouble.ZERO_DBL) > 0 && sk_effect_money.sub(ctmoney.multiply(preratio)).compareTo(UFDouble.ZERO_DBL) < 0) { | ||||
|                     String updateSQL = "update so_saleorder set vdef11 = (select pk_defdoc from bd_defdoc where code = 'fhk02') where csaleorderid = '" + csaleorderid + "'"; | ||||
|                     dao.executeUpdate(updateSQL); | ||||
|                 } | ||||
|                 JSONObject HTXSDD = new JSONObject(); | ||||
|                 HTXSDD.put("id", vdef9); | ||||
|                 HYSuperDMO dmo= new HYSuperDMO(); | ||||
|                 SaleOrderHVO[] hvo = (SaleOrderHVO[])dmo.queryByWhereClause(SaleOrderHVO.class, "csaleorderid='"+csaleorderid+"'"); | ||||
| 
 | ||||
| 	private String doPost(String requestUrl, JSONObject json) throws IOException { | ||||
| 		URL u = new URL(requestUrl); | ||||
| 		try { | ||||
| 			if("https".equalsIgnoreCase(u.getProtocol())){//判定网址是否信任,不信任则调用忽略信任工具类SslUtil | ||||
| 			    IgnoreSslUtil.ignoreSsl(); | ||||
| 			} | ||||
| 			HttpsURLConnection connection = (HttpsURLConnection)u.openConnection(); | ||||
| 			// 设置请求方法 | ||||
| 	        connection.setRequestMethod("POST"); | ||||
| 	         // 设置请求属性 | ||||
| 	        connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); | ||||
| 	         // 发送POST请求必须设置如下两行 | ||||
| 	        connection.setDoOutput(true); | ||||
| 	        connection.setDoInput(true); | ||||
| 	        byte[] outputInBytes = json.toJSONString().getBytes(StandardCharsets.UTF_8); | ||||
| 	        // 写入数据到请求体 | ||||
| 	        OutputStream os = connection.getOutputStream(); | ||||
| 	        os.write(outputInBytes); | ||||
| 	        // 获取响应码 | ||||
| 	        int responseCode = connection.getResponseCode(); | ||||
| 	        System.out.println("Response Code: " + responseCode); | ||||
| 	        // 读取响应 | ||||
| 	        String response = ""; | ||||
| 	        try(BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()))) { | ||||
| 	            br.readLine(); | ||||
| 	            System.out.println("Response: " + response); | ||||
| 	        } | ||||
| 	        // 关闭连接 | ||||
| 	        connection.disconnect(); | ||||
| 	        return response; | ||||
| 		} catch(Exception e) { | ||||
| 			e.printStackTrace(); | ||||
| 		} | ||||
| 		return null; | ||||
| 	} | ||||
| 
 | ||||
|                 // 实际收款金额 npreceivemny | ||||
|                 UFDouble npreceivemny = hvo[0].getNpreceivemny(); | ||||
|                 JSONObject p = new JSONObject(); | ||||
|                 HTXSDD.put("actRecvAmt", npreceivemny.getDouble()); | ||||
|                 // 实际预收款 nreceivedmny | ||||
|                 UFDouble nreceivedmny = hvo[0].getNreceivedmny(); | ||||
|                 HTXSDD.put("actPreRecvAmt", nreceivedmny.getDouble()); | ||||
|                 // 是否收到预收款 | ||||
|                 Object vdef14Code = dao.executeQuery("select code from bd_defdoc where pk_defdoc = '" + vdef14 + "'", new ColumnProcessor()); | ||||
|                 HTXSDD.put("isPreRecv", vdef14Code); | ||||
|                 // 是否收到发货款 | ||||
|                 Object vdef11Code = dao.executeQuery("select code from bd_defdoc where pk_defdoc = '" + vdef11 + "'", new ColumnProcessor()); | ||||
|                 HTXSDD.put("isShipRecdAmt", vdef11Code); | ||||
|                 p.put("HTXSDD", HTXSDD); | ||||
|                 System.out.println(p.toJSONString()); | ||||
|                 // 获取旗舰版的token | ||||
|                 Map<String, String> params = new HashMap<>(); | ||||
|                 String appKey = "a3c57e0d871240e9b9bf56b35001a324"; | ||||
|                 String appSecret = "a959f7786db8dbb9a2c0493b5855a46bea68ad75"; | ||||
|                 String tokenUrl="https://www.tkkfbip.com/iuap-api-auth/open-auth/selfAppAuth/getAccessToken"; | ||||
|                 String toBipUrl="https://www.tkkfbip.com/iuap-api-gateway/oxp4h3x6/current_yonbip_default_sys/KKAPI/contractSaleOrder/update?access_token="; | ||||
|                 // 除签名外的其他参数 | ||||
|                 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(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"); | ||||
|                     doPost(toBipUrl+ access_token, p); | ||||
|                 } | ||||
|             } | ||||
|         } catch (Exception e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private BaseAggVO[] getBills(IBusinessEvent event) { | ||||
|         Object value = null; | ||||
|         if (event instanceof BusinessEvent) { | ||||
|             value = ((BusinessEvent)event).getObject(); | ||||
|         } else if (event instanceof BdUpdateEvent) { | ||||
|             value = ((BdUpdateEvent)event).getNewObject(); | ||||
|         } | ||||
|         BaseAggVO[] bills = null; | ||||
|         if (null != value) { | ||||
|             if (value.getClass().isArray()) { | ||||
|                 Object[] objs = (Object[])value; | ||||
|                 bills = (objs instanceof BaseAggVO[]) ? (BaseAggVO[])objs : (BaseAggVO[])ArrayUtil.convertSupers2Subs((AggregatedValueObject[])objs, BaseAggVO.class); | ||||
|             } else { | ||||
|                 bills = new BaseAggVO[1]; | ||||
|                 bills[0] = (BaseAggVO)value; | ||||
|             } | ||||
|         } | ||||
|         return bills; | ||||
|     } | ||||
| 
 | ||||
|     private String doGet(String requestUrl, Map<String, String> paramMap) throws IOException { | ||||
| 
 | ||||
|         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; | ||||
|         URL u = new URL(url); | ||||
|         try { | ||||
|             if("https".equalsIgnoreCase(u.getProtocol())){//判定网址是否信任,不信任则调用忽略信任工具类SslUtil | ||||
|                 IgnoreSslUtil.ignoreSsl(); | ||||
|             } | ||||
|             HttpsURLConnection connection = (HttpsURLConnection)u.openConnection(); | ||||
|             connection.setRequestMethod("GET"); | ||||
|             connection.setConnectTimeout(5000); | ||||
|             connection.setReadTimeout(5000); | ||||
|             connection.connect(); | ||||
|             StringBuilder response =new StringBuilder(); | ||||
|             int responsecode = connection.getResponseCode(); | ||||
|             if(responsecode == HttpsURLConnection.HTTP_OK) { | ||||
|                 InputStream inputstream =connection.getInputStream(); | ||||
|                 BufferedReader reader = new BufferedReader(new InputStreamReader(inputstream)); | ||||
|                 String line; | ||||
| 
 | ||||
|                 while((line =reader.readLine()) != null) { | ||||
|                     response.append(line); | ||||
|                 } | ||||
|                 reader.close(); | ||||
|             } | ||||
|             connection.disconnect(); | ||||
|             return response.toString(); | ||||
|         } catch(Exception  e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     private String doPost(String requestUrl, JSONObject json) throws IOException { | ||||
|         URL u = new URL(requestUrl); | ||||
|         try { | ||||
|             if("https".equalsIgnoreCase(u.getProtocol())){//判定网址是否信任,不信任则调用忽略信任工具类SslUtil | ||||
|                 IgnoreSslUtil.ignoreSsl(); | ||||
|             } | ||||
|             HttpsURLConnection connection = (HttpsURLConnection)u.openConnection(); | ||||
|             // 设置请求方法 | ||||
|             connection.setRequestMethod("POST"); | ||||
|             // 设置请求属性 | ||||
|             connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); | ||||
|             // 发送POST请求必须设置如下两行 | ||||
|             connection.setDoOutput(true); | ||||
|             connection.setDoInput(true); | ||||
|             byte[] outputInBytes = json.toJSONString().getBytes(StandardCharsets.UTF_8); | ||||
|             // 写入数据到请求体 | ||||
|             OutputStream os = connection.getOutputStream(); | ||||
|             os.write(outputInBytes); | ||||
|             // 获取响应码 | ||||
|             int responseCode = connection.getResponseCode(); | ||||
|             System.out.println("Response Code: " + responseCode); | ||||
|             // 读取响应 | ||||
|             String response = ""; | ||||
|             try(BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()))) { | ||||
|                 br.readLine(); | ||||
|                 System.out.println("Response: " + response); | ||||
|             } | ||||
|             // 关闭连接 | ||||
|             connection.disconnect(); | ||||
|             return response; | ||||
|         } catch(Exception e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -10,6 +10,7 @@ import nc.impl.pubapp.pattern.rule.IRule; | |||
| import nc.md.persist.framework.IMDPersistenceQueryService; | ||||
| 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.pmo.pac0002.entity.PMOAggVO; | ||||
| import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; | ||||
| import nc.vo.mmpac.pmo.pac0002.enumeration.PMOFBillstatusEnum; | ||||
|  | @ -55,13 +56,22 @@ public void process(PMOAggVO[] vos) { | |||
| 				} | ||||
| 				//Êý×éת»» | ||||
| 				AggPickmVO[] aggVOsArr = new AggPickmVO[aggVOs.size()]; | ||||
| 				boolean flag = false; | ||||
| 				for(int z=0; z<aggVOs.size(); z++) { | ||||
| 					aggVOsArr[z] =aggVOs.get(z); | ||||
| 					AggPickmVO aggPickmVO = aggVOs.get(z); | ||||
| 					PickmHeadVO pickmHeadVO = aggPickmVO.getParentVO(); | ||||
| 					Integer fbillstatus = pickmHeadVO.getFbillstatus(); | ||||
| 					//已经位完工态的备料计划不修改 | ||||
| 					if(fbillstatus != 2){ | ||||
| 						aggVOsArr[z] =aggVOs.get(z); | ||||
| 						flag = true; | ||||
| 					} | ||||
| 				} | ||||
| 				if(flag) { | ||||
| 					//备料计划完工 | ||||
| 					PickmMaintainServiceImpl ipickmMaintainService = new PickmMaintainServiceImpl(); | ||||
| 					ipickmMaintainService.finishPickm(aggVOsArr); | ||||
| 				} | ||||
| 				 | ||||
| 				//备料计划完工 | ||||
| 				PickmMaintainServiceImpl ipickmMaintainService = new  PickmMaintainServiceImpl(); | ||||
| 				ipickmMaintainService.finishPickm(aggVOsArr); | ||||
| 			}catch(BusinessException e) { | ||||
| 				// TODO Auto-generated catch block | ||||
| 				e.printStackTrace(); | ||||
|  |  | |||
|  | @ -242,8 +242,21 @@ public class IVApplicationServiceImpl implements IVApplicationService { | |||
|             //如果来源单据为销售发票,根据来源单据编号src_billno和来源单据类型(billtype = 32)查询销售发票价税合计(ntotalorigmny)与开票申请中价税合计(jshj)比较,须满足 jshj<ntotalorigmny | ||||
|             String src_billtype = ivApplicationVO.getParentVO().getSrc_billtype(); //来源单据类型 | ||||
|             String src_billno = ivApplicationVO.getParentVO().getSrc_billno(); //来源单据号 | ||||
|             if("32".equals(src_billtype) && !StringUtil.isNullStringOrNull(src_billno)){ | ||||
|                 BaseDAO dao = new BaseDAO(); | ||||
|             String def23 = ivApplicationVO.getParentVO().getDef23(); //bip开票类型 (3:出口发票) | ||||
|             //根据开票申请自定义项23查询自定义档案编码 | ||||
|             BaseDAO dao = new BaseDAO(); | ||||
|             String sqlDefdoc = "select code from bd_defdoc where dr = 0 and pk_defdoc = '" +def23+"'"; | ||||
|             Object objDefdoc = dao.executeQuery(sqlDefdoc, new ColumnProcessor()); | ||||
|             String def23Code = ""; | ||||
|             if(objDefdoc != null) { | ||||
|                 def23Code = objDefdoc.toString(); | ||||
|             } | ||||
|             /** | ||||
|              * 2025-03-12新增: | ||||
|              *  开票申请自定义项 23(bip开票类型) 不等于 3,def23Code != 3 | ||||
|              *  再做金额校验 | ||||
|              */ | ||||
|             if("32".equals(src_billtype) && !StringUtil.isNullStringOrNull(src_billno) && !"3".equals(def23Code)){ | ||||
|                 String sql = "select ntotalorigmny from so_saleinvoice where dr = 0 and vbillcode = '" +src_billno+"'"; | ||||
|                 Object obj = dao.executeQuery(sql, new ColumnProcessor()); | ||||
|                 //销售发票价税合计 | ||||
|  |  | |||
|  | @ -1,8 +1,11 @@ | |||
| package nccloud.web.ssctp.sscbd.ssctask.action; | ||||
| 
 | ||||
| import com.alibaba.fastjson.JSONObject; | ||||
| 
 | ||||
| import antlr.collections.List; | ||||
| import itf.approvecenter.util.DataExchangeBean; | ||||
| import java.lang.reflect.InvocationTargetException; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Map; | ||||
| import nc.bs.framework.common.InvocationInfoProxy; | ||||
| import nc.bs.logging.Logger; | ||||
|  | @ -26,73 +29,81 @@ implements ICommonAction | |||
| public Object doAction(IRequest request) { | ||||
|   IJson json = JsonFactory.create(); | ||||
|   String read = request.read(); | ||||
|   Map<String, Object> map = (Map)json.fromJson(read, Map.class); | ||||
|   String billType = (String)map.get("billtype"); | ||||
|   String billno = (String)map.get("billno"); | ||||
|   String pk_group = (String)map.get("pk_group"); | ||||
|   String pk_task = (String)map.get("pk_task"); | ||||
|   String pk_currenttask = (String)map.get("pk_currenttask"); | ||||
|    | ||||
|   String mod = (String)map.get("mod"); | ||||
|    | ||||
|   AggregatedValueObject billvo = null; | ||||
|   Map<String, Object> requestMap = (Map)json.fromJson(read, Map.class); | ||||
|   //????????????????? | ||||
|   ArrayList<Map<String, Object>> dataList = (ArrayList)requestMap.get("batchDataList"); | ||||
|   ArrayList<JSONObject> resultList = new ArrayList<>(); | ||||
|   JSONObject jo = new JSONObject(); | ||||
|   //????????? | ||||
|   for(Map<String, Object> map: dataList) { | ||||
| 	  String billType = (String)map.get("billtype"); | ||||
| 	  String billno = (String)map.get("billno"); | ||||
| 	  String pk_group = (String)map.get("pk_group"); | ||||
| 	  String pk_task = (String)map.get("pk_task"); | ||||
| 	  String pk_currenttask = (String)map.get("pk_currenttask"); | ||||
| 	   | ||||
| 	  String mod = (String)map.get("mod"); | ||||
| 	   | ||||
| 	  AggregatedValueObject billvo = null; | ||||
| 	   | ||||
| 	  try { | ||||
| 	    checkSagaStatus(pk_currenttask, SSCCurrentTaskVO.getDefaultTableName(), "pk_currenttask"); | ||||
| 	     | ||||
| 	    ((ISSCTaskDriveWorkflowService)ServiceLocator.find(ISSCTaskDriveWorkflowService.class)).sscApproveDriveWorkflow(map); | ||||
| 	     | ||||
| 	    String ts = TaskQryUtil.getLatestTs(pk_task, mod); | ||||
| 	    jo.put("ts", (ts == null) ? (String)map.get("ts") : ts); | ||||
| 	    resultList.add(jo); | ||||
| 	  } catch (Exception e) { | ||||
| 	    Throwable ex = ExceptionUtils.unmarsh(e); | ||||
| 	    if (e.getCause() instanceof InvocationTargetException) | ||||
| 	    { | ||||
| 	 | ||||
| 	 | ||||
| 	 | ||||
| 	       | ||||
| 	      if ((ex.getCause() != null && isInterface(ex.getCause().getClass(), "nc.itf.pubapp.pub.exception.IResumeException")) || (ex.getCause() == null && isInterface(ex.getClass(), "nc.itf.pubapp.pub.exception.IResumeException"))) { | ||||
| //	        JSONObject retJson = new JSONObject(); | ||||
| 	        String skipcodes = ""; | ||||
| 	 | ||||
| 	         | ||||
| 	        String billtype2RegistClass = ((Billtype2VO)PfDataCache.getBillType2InfoByGroup(billType, 25, pk_group).get(0)).getClassname(); | ||||
| 	        if (billtype2RegistClass != null && !"".equals(billtype2RegistClass)) { | ||||
| 	          try { | ||||
| 	            Class clazz = Class.forName(billtype2RegistClass); | ||||
| 	            IApproveBusiHandler busiHandler = (IApproveBusiHandler)clazz.newInstance(); | ||||
| 	            DataExchangeBean bean = busiHandler.handleApproveBusiException(billType, billno, billvo, e); | ||||
| 	            if (bean.skipCodes != null && bean.skipCodes.length > 0) { | ||||
| 	              for (int i = 0; i < bean.skipCodes.length - 1; i++) { | ||||
| 	                skipcodes = skipcodes + bean.skipCodes[i] + ","; | ||||
| 	              } | ||||
| 	              skipcodes = skipcodes + bean.skipCodes[bean.skipCodes.length - 1]; | ||||
| 	            }  | ||||
| 	          } catch (Exception e1) { | ||||
| 	            Logger.error(e.getMessage(), e); | ||||
| 	            ExceptionUtils.wrapException(e1); | ||||
| 	          }  | ||||
| 	        } | ||||
| 	        String lastcodes = InvocationInfoProxy.getInstance().getProperty("skipcodes"); | ||||
| 	        if (lastcodes != null && !"".equals(lastcodes)) { | ||||
| 	          skipcodes = skipcodes + "," + lastcodes; | ||||
| 	        } | ||||
| 	        jo.put("skipcodes", skipcodes); | ||||
| 	        jo.put("bugetAlarm", ((InvocationTargetException)e.getCause()).getTargetException().getMessage()); | ||||
| 	        resultList.add(jo); | ||||
| 	      }  | ||||
| 	    } | ||||
| 	   | ||||
| 	 | ||||
| 	 | ||||
| 	 | ||||
| 	     | ||||
| 	    Logger.error(e.getMessage(), e); | ||||
| 	    ExceptionUtils.wrapException(e); | ||||
| 	  }  | ||||
|   } | ||||
|    | ||||
|   try { | ||||
|     checkSagaStatus(pk_currenttask, SSCCurrentTaskVO.getDefaultTableName(), "pk_currenttask"); | ||||
|      | ||||
|     ((ISSCTaskDriveWorkflowService)ServiceLocator.find(ISSCTaskDriveWorkflowService.class)).sscApproveDriveWorkflow(map); | ||||
|      | ||||
|     String ts = TaskQryUtil.getLatestTs(pk_task, mod); | ||||
|     jo.put("ts", (ts == null) ? (String)map.get("ts") : ts); | ||||
|   } catch (Exception e) { | ||||
|     Throwable ex = ExceptionUtils.unmarsh(e); | ||||
|     if (e.getCause() instanceof InvocationTargetException) | ||||
|     { | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|        | ||||
|       if ((ex.getCause() != null && isInterface(ex.getCause().getClass(), "nc.itf.pubapp.pub.exception.IResumeException")) || (ex.getCause() == null && isInterface(ex.getClass(), "nc.itf.pubapp.pub.exception.IResumeException"))) { | ||||
|         JSONObject retJson = new JSONObject(); | ||||
|         String skipcodes = ""; | ||||
| 
 | ||||
|          | ||||
|         String billtype2RegistClass = ((Billtype2VO)PfDataCache.getBillType2InfoByGroup(billType, 25, pk_group).get(0)).getClassname(); | ||||
|         if (billtype2RegistClass != null && !"".equals(billtype2RegistClass)) { | ||||
|           try { | ||||
|             Class clazz = Class.forName(billtype2RegistClass); | ||||
|             IApproveBusiHandler busiHandler = (IApproveBusiHandler)clazz.newInstance(); | ||||
|             DataExchangeBean bean = busiHandler.handleApproveBusiException(billType, billno, billvo, e); | ||||
|             if (bean.skipCodes != null && bean.skipCodes.length > 0) { | ||||
|               for (int i = 0; i < bean.skipCodes.length - 1; i++) { | ||||
|                 skipcodes = skipcodes + bean.skipCodes[i] + ","; | ||||
|               } | ||||
|               skipcodes = skipcodes + bean.skipCodes[bean.skipCodes.length - 1]; | ||||
|             }  | ||||
|           } catch (Exception e1) { | ||||
|             Logger.error(e.getMessage(), e); | ||||
|             ExceptionUtils.wrapException(e1); | ||||
|           }  | ||||
|         } | ||||
|         String lastcodes = InvocationInfoProxy.getInstance().getProperty("skipcodes"); | ||||
|         if (lastcodes != null && !"".equals(lastcodes)) { | ||||
|           skipcodes = skipcodes + "," + lastcodes; | ||||
|         } | ||||
|         retJson.put("skipcodes", skipcodes); | ||||
|         retJson.put("bugetAlarm", ((InvocationTargetException)e.getCause()).getTargetException().getMessage()); | ||||
|         return retJson; | ||||
|       }  | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|      | ||||
|     Logger.error(e.getMessage(), e); | ||||
|     ExceptionUtils.wrapException(e); | ||||
|   }  | ||||
|   return jo; | ||||
|   return resultList.toString(); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -100,12 +100,16 @@ public class InvoiceTaskPlugin implements IBackgroundWorkPlugin{ | |||
|                      */ | ||||
|                     //手动开启事务 | ||||
|                     TransactionFactory.getTMProxy().begin(3,0); | ||||
|                     //修改发票信息单据号 | ||||
|                     String sscivmSql = "UPDATE sscivm_invoice set billno = '" + fphm +"' where pk_invoice = '"+ pk_invoice +"'"; | ||||
|                     dao.executeUpdate(sscivmSql); | ||||
|                     Logger.error("---sscivmSqlExecute------"+sscivmSql); | ||||
|                     //修改发票关联关系单据编码 | ||||
|                     String sirSql = "UPDATE sscivm_invoice_relation set billno = '" + billno +"' where pk_invoice = '"+ pk_invoice +"' and billid = '"+ csaleinvoiceid +"'"; | ||||
|                     String sirSql = "UPDATE sscivm_invoice_relation set billno = '" + fphm +"' where pk_invoice = '"+ pk_invoice +"' and billid = '"+ csaleinvoiceid +"'"; | ||||
|                     dao.executeUpdate(sirSql); | ||||
|                     Logger.error("---sirSqlExecute------"+sirSql); | ||||
|                     //ERP销售发票回传,根据销售发票id,回写发票号和单据编号 | ||||
|                     String sSaleSql = "UPDATE so_saleinvoice set vdef20 = 'Y' , vdef13 = '" + fphm + "', vbillcode = '" + billno +"'  where csaleinvoiceid = '" + csaleinvoiceid + "'"; | ||||
|                     String sSaleSql = "UPDATE so_saleinvoice set vdef20 = 'Y' , vdef13 = '" + fphm + "', vbillcode = '" + fphm +"'  where csaleinvoiceid = '" + csaleinvoiceid + "'"; | ||||
|                     dao.executeUpdate(sSaleSql); | ||||
|                     Logger.error("---sSaleSqlExecute------"+sSaleSql); | ||||
|                     //根据销售发票id 回写下游应收单表头发票号 | ||||
|  | @ -125,7 +129,7 @@ public class InvoiceTaskPlugin implements IBackgroundWorkPlugin{ | |||
|                     Logger.error("---recItemSqlExecute------"+recItemSql); | ||||
|                     //查询销售发票下游单据,如果有将下游单据表体字段【来源单据号】更新成新的发票号 | ||||
|                     String saleOutSql = "UPDATE ic_saleout_b \n" + | ||||
|                             "SET vsourcebillcode = '"+ billno +"' \n" + | ||||
|                             "SET vsourcebillcode = '"+ fphm +"' \n" + | ||||
|                             "WHERE\n" + | ||||
|                             "csourcetype = '32' \n" + | ||||
|                             "AND csourcebillhid = '" + csaleinvoiceid +"'"; | ||||
|  |  | |||
|  | @ -92,7 +92,7 @@ public class MaterialDefaultRefModel extends AbstractRefGridTreeBigDataModel imp | |||
|         this.setClassDataPower(true); | ||||
|         this.setClassWherePart("1 = 1"); | ||||
|         this.setFieldCode(new String[]{"pk_org", "code", "name", "materialspec", "materialtype", "materialshortname", | ||||
|                 "materialmnecode", "graphid", "pk_measdoc", "memo"}); | ||||
|                 "materialmnecode", "memo", "graphid", "pk_measdoc"}); | ||||
|         String[] fieldNames = new String[]{NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-000360"), | ||||
|                 NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0002911"), | ||||
|                 NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0002908"), | ||||
|  | @ -100,14 +100,14 @@ public class MaterialDefaultRefModel extends AbstractRefGridTreeBigDataModel imp | |||
|                 NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0001240"), | ||||
|                 NCLangRes4VoTransl.getNCLangRes().getStrByID("10140mag", "2materia-000017"), | ||||
|                 NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0000703"), | ||||
|                 NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-000258"), | ||||
|                 NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0001223"), | ||||
|                 NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-000031"), | ||||
|                 NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-000258")}; | ||||
|                 NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-000031")}; | ||||
|         this.setFieldName(fieldNames); | ||||
|         String orgFomula = "getMLCValue(\"" + OrgVO.getDefaultTableName() + "\",\"" + "name" + "\",\"" + "pk_org" + "\"," + "pk_org" + ")"; | ||||
|         String mesFomula = "getMLCValue(\"" + MeasdocVO.getDefaultTableName() + "\",\"" + "name" + "\",\"" + "pk_measdoc" + "\"," + "pk_measdoc" + ")"; | ||||
|         this.setFormulas(new String[][]{{"pk_org", orgFomula}, {"pk_measdoc", mesFomula}}); | ||||
|         this.setDefaultFieldCount(7); | ||||
|         this.setDefaultFieldCount(8); | ||||
|         this.setHiddenFieldCode(new String[]{"pk_material", "pk_source", "pk_marbasclass"}); | ||||
|         this.setTableName(MaterialVersionVO.getDefaultTableName()); | ||||
|         this.setPkFieldCode("pk_source"); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue