主生产付款单编辑供应商带出辅助余额等信息-张鑫0515
This commit is contained in:
		
							parent
							
								
									137c78408a
								
							
						
					
					
						commit
						13d8c2b50a
					
				|  | @ -0,0 +1,379 @@ | ||||||
|  | package nccloud.web.arap.paybill.action; | ||||||
|  | 
 | ||||||
|  | import nccloud.web.arap.arappub.action.CardBodyAfterEditPubAction; | ||||||
|  | import nccloud.web.arap.arappub.info.CardBodyEventInfo; | ||||||
|  | import nccloud.web.arap.paybill.handler.PayBillCardBodyEditHandlerList; | ||||||
|  | import java.text.SimpleDateFormat; | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.HashMap; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  | import com.google.gson.Gson; | ||||||
|  | import nc.itf.gl.api.IResourceService; | ||||||
|  | import nc.md.model.MetaDataException; | ||||||
|  | import nc.md.persist.framework.IMDPersistenceQueryService; | ||||||
|  | import nc.vo.arap.basebill.BaseAggVO; | ||||||
|  | import nc.vo.arap.pay.PayBillItemVO; | ||||||
|  | import nc.vo.arap.pay.PayBillVO; | ||||||
|  | import nc.vo.bd.supplier.SupplierVO; | ||||||
|  | import nc.vo.gl.openapi.GLQueryWebVO; | ||||||
|  | import nc.vo.org.AccountingBookVO; | ||||||
|  | import nc.vo.pub.lang.UFDate; | ||||||
|  | import nccloud.api.rest.utils.NCCRestUtils; | ||||||
|  | import nccloud.framework.service.ServiceLocator; | ||||||
|  | 
 | ||||||
|  | public class CardBodyAfterEditAction extends CardBodyAfterEditPubAction { | ||||||
|  | 	/** | ||||||
|  | 	 * 220201/224103/224105/224101科目的期末余额 | ||||||
|  | 	 */ | ||||||
|  | 	private String endlocamount220201 = ""; | ||||||
|  | 	private String endlocamount224103 = ""; | ||||||
|  | 	private String endlocamount224105 = ""; | ||||||
|  | 	private String endlocamount224101 = ""; | ||||||
|  | 	IMDPersistenceQueryService imDPersistenceService = ServiceLocator.find(IMDPersistenceQueryService.class); | ||||||
|  | 
 | ||||||
|  | 	public void afterEvent(CardBodyEventInfo eventInfo) { | ||||||
|  | 		PayBillCardBodyEditHandlerList handlerList = new PayBillCardBodyEditHandlerList(); | ||||||
|  | 		eventInfo = changeCard(eventInfo); | ||||||
|  | 		handlerList.fireToHandler(eventInfo); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	public CardBodyEventInfo changeCard(CardBodyEventInfo eventInfo) { | ||||||
|  | 		BaseAggVO aggvo = eventInfo.getAggvo(); | ||||||
|  | 		String key = eventInfo.getEvent().getAttrcode(); | ||||||
|  | 
 | ||||||
|  | 		if (key.equals("supplier")) { | ||||||
|  | 			PayBillItemVO[] payvoArry = (PayBillItemVO[]) aggvo.getChildrenVO(); | ||||||
|  | 			PayBillVO billvo = (PayBillVO) aggvo.getParent(); | ||||||
|  | //			财务组织编码 | ||||||
|  | 			String pk_relorg = billvo.getPk_fiorg(); | ||||||
|  | //			核算账薄编码 | ||||||
|  | 			String accbookCode = getAccbookCode(pk_relorg); | ||||||
|  | //			单据号 | ||||||
|  | 			String billno = billvo.getBillno(); | ||||||
|  | //			单据日期 | ||||||
|  | 			UFDate billdate = billvo.getBilldate(); | ||||||
|  | //			当前时间 | ||||||
|  | 			Long serverDate = System.currentTimeMillis(); | ||||||
|  | //			如果有单据号则为修改,修改时单据日期选择现在 | ||||||
|  | 			if (billno != null) { | ||||||
|  | 				billdate = new UFDate(serverDate); | ||||||
|  | 			} | ||||||
|  | 			for (int i = 0; i < payvoArry.length; i++) { | ||||||
|  | 				PayBillItemVO payvo = payvoArry[i]; | ||||||
|  | 				String supplier = payvo.getSupplier(); | ||||||
|  | //						如果供应商不是空或者null | ||||||
|  | 				if (!"".equals(supplier) && null != supplier) { | ||||||
|  | 					SupplierVO suppliervo = getSupplierVO(supplier); | ||||||
|  | 					{ | ||||||
|  | 						if (suppliervo != null) { | ||||||
|  | //							供应商编码 | ||||||
|  | 							String code = suppliervo.getCode(); | ||||||
|  | //							供应商名称 | ||||||
|  | 							String name = suppliervo.getName(); | ||||||
|  | 							getAccountingSubject(accbookCode, billdate, code, name); | ||||||
|  | 							payvoArry[i].setDef30(endlocamount220201); | ||||||
|  | 							payvoArry[i].setDef31(endlocamount224103); | ||||||
|  | 							payvoArry[i].setDef32(endlocamount224105); | ||||||
|  | 							payvoArry[i].setDef33(endlocamount224101); | ||||||
|  | 						} | ||||||
|  | 					} | ||||||
|  | 				} else { | ||||||
|  | 					payvoArry[i].setDef30(null); | ||||||
|  | 					payvoArry[i].setDef31(null); | ||||||
|  | 					payvoArry[i].setDef32(null); | ||||||
|  | 					payvoArry[i].setDef33(null); | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			aggvo.setChildrenVO(payvoArry); | ||||||
|  | 			eventInfo.setAggvo(aggvo); | ||||||
|  | 		} | ||||||
|  | 		return eventInfo; | ||||||
|  | 
 | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * nccloud/api/gl/accountrep/assbalance 查询辅助余额接口.查220201/224103/224105的科目的期末余额 | ||||||
|  | 	 *  | ||||||
|  | 	 * @param accbookCode    辅助核算编码 | ||||||
|  | 	 * @param billdate       单据日期 | ||||||
|  | 	 * @param checkvaluecode 供应商编码 | ||||||
|  | 	 * @param checkvaluename 供应商名称 | ||||||
|  | 	 */ | ||||||
|  | 	public void getAccountingSubject(String acccode, UFDate date, String code, String name) { | ||||||
|  | 		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); | ||||||
|  | 		String strdate = formatter.format(date.toDate()); | ||||||
|  | 
 | ||||||
|  | 		endlocamount220201 = getendlocamountBy(queryAssBalance(getRequest(acccode, strdate, code, name))); | ||||||
|  | 		endlocamount224103 = getendlocamountBy(queryAssBalance(getRequest1(acccode, strdate, code, name))); | ||||||
|  | 		endlocamount224105 = getendlocamountBy(queryAssBalance(getRequest2(acccode, strdate, code, name))); | ||||||
|  | 		endlocamount224101 = getendlocamountBy(queryAssBalance(getRequest3(acccode, strdate, code, name))); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	public List<Map<String, Object>> queryAssBalance(String json) { | ||||||
|  | 		NCCRestUtils.initInvocationInfo(); | ||||||
|  | 		GLQueryWebVO qryWebVO = (GLQueryWebVO) new Gson().fromJson(json, GLQueryWebVO.class); | ||||||
|  | 		List<Map<String, Object>> data = null; | ||||||
|  | 		try { | ||||||
|  | 			data = ServiceLocator.find(IResourceService.class).queryAssBalanceByVO(qryWebVO); | ||||||
|  | 		} catch (Exception e) { | ||||||
|  | 			e.printStackTrace(); | ||||||
|  | 		} | ||||||
|  | 		if (data == null) { | ||||||
|  | 			return null; | ||||||
|  | 		} | ||||||
|  | 		return data; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * 解析json获取期末余额 | ||||||
|  | 	 *  | ||||||
|  | 	 * @param json | ||||||
|  | 	 * @return 期末余额 endlocamount | ||||||
|  | 	 */ | ||||||
|  | 	public String getendlocamountBy(List<Map<String, Object>> data) { | ||||||
|  | 		if (data == null) { | ||||||
|  | 			return null; | ||||||
|  | 		} | ||||||
|  | 		String str2 = (String) data.get(0).get("endlocamount"); | ||||||
|  | 		String str3 = (String) data.get(0).get("endorint"); | ||||||
|  | 		if (str2 == null || "".equals(str2)) { | ||||||
|  | 			str2 = "0.0"; | ||||||
|  | 		} else { | ||||||
|  | 			if ("借".equals(str3)) { | ||||||
|  | 				str2 = "-" + str2; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		return str2; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	/** | ||||||
|  | 	 *  | ||||||
|  | 	 * @return 获取核算账薄code | ||||||
|  | 	 */ | ||||||
|  | 	public String getAccbookCode(String pk_relorg) { | ||||||
|  | 		List<AccountingBookVO> bills = null; | ||||||
|  | 		String sql = "pk_relorg = '" + pk_relorg + "' and dr = 0 "; | ||||||
|  | 		String accbookCode = ""; | ||||||
|  | 		try { | ||||||
|  | 			bills = (List<AccountingBookVO>) imDPersistenceService.queryBillOfVOByCond(AccountingBookVO.class, sql, | ||||||
|  | 					false); | ||||||
|  | 			if (bills.size() != 0) { | ||||||
|  | 				accbookCode = bills.get(0).getCode(); | ||||||
|  | 			} | ||||||
|  | 		} catch (MetaDataException e) { | ||||||
|  | 			// TODO Auto-generated catch block | ||||||
|  | 			e.printStackTrace(); | ||||||
|  | 		} | ||||||
|  | 		return accbookCode; | ||||||
|  | 
 | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	public SupplierVO getSupplierVO(String pk_supplier) { | ||||||
|  | 		List<SupplierVO> supplier = null; | ||||||
|  | 		SupplierVO suppliervo = null; | ||||||
|  | 		String sql = "pk_supplier = '" + pk_supplier + "' and dr = 0 "; | ||||||
|  | 		try { | ||||||
|  | 			supplier = (List<SupplierVO>) imDPersistenceService.queryBillOfVOByCond(SupplierVO.class, sql, false); | ||||||
|  | 			if (supplier.size() != 0) { | ||||||
|  | 				suppliervo = supplier.get(0); | ||||||
|  | 			} | ||||||
|  | 		} catch (MetaDataException e) { | ||||||
|  | 			// TODO Auto-generated catch block | ||||||
|  | 			e.printStackTrace(); | ||||||
|  | 		} | ||||||
|  | 		return suppliervo; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	private static String getRequest(String accbookCode, String strdate, String code, String name) { | ||||||
|  | 		Map<String, Object> map = new HashMap<String, Object>(); | ||||||
|  | 		List<String> accbookcodeList = new ArrayList<String>(); | ||||||
|  | 		accbookcodeList.add(accbookCode); | ||||||
|  | 		map.put("accbookCode", accbookcodeList); | ||||||
|  | 		map.put("queryByPeriod", "false"); | ||||||
|  | 		map.put("inclUntallyed", "true"); | ||||||
|  | 		map.put("inclTransfer", "true"); | ||||||
|  | 		map.put("inclError", "true"); | ||||||
|  | 		map.put("inclReclassify", "true"); | ||||||
|  | 		map.put("date", strdate); | ||||||
|  | 		map.put("endDate", strdate); | ||||||
|  | 		map.put("currtypeCode", "本币"); | ||||||
|  | 
 | ||||||
|  | 		List<Map<String, Object>> queryObjList = new ArrayList<Map<String, Object>>(); | ||||||
|  | 		Map<String, Object> quyMap = new HashMap<String, Object>(); | ||||||
|  | 		Map<String, Object> typeMap = new HashMap<String, Object>(); | ||||||
|  | 
 | ||||||
|  | 		typeMap.put("checktypecode", "会计科目"); | ||||||
|  | 		typeMap.put("checktypename", "会计科目"); | ||||||
|  | 		quyMap.put("checktype", typeMap); | ||||||
|  | 		List<Map<String, String>> valueList = new ArrayList<Map<String, String>>(); | ||||||
|  | 		Map<String, String> valueMap = new HashMap<String, String>(); | ||||||
|  | 
 | ||||||
|  | 		valueMap.put("checkvaluecode", "220201"); | ||||||
|  | 		valueMap.put("checkvaluename", "应付款"); | ||||||
|  | 		valueList.add(valueMap); | ||||||
|  | 		quyMap.put("checkvalue", valueList); | ||||||
|  | 		queryObjList.add(quyMap); | ||||||
|  | 		// | ||||||
|  | 		Map<String, Object> quyMap1 = new HashMap<String, Object>(); | ||||||
|  | 		Map<String, Object> typeMap1 = new HashMap<String, Object>(); | ||||||
|  | 
 | ||||||
|  | 		typeMap1.put("checktypecode", "0019"); | ||||||
|  | 		typeMap1.put("checktypename", "供应商档案"); | ||||||
|  | 		quyMap1.put("checktype", typeMap1); | ||||||
|  | 		List<Map<String, String>> valueList1 = new ArrayList<Map<String, String>>(); | ||||||
|  | 		Map<String, String> valueMap1 = new HashMap<String, String>(); | ||||||
|  | 
 | ||||||
|  | 		valueMap1.put("checkvaluecode", code); | ||||||
|  | 		valueMap1.put("checkvaluename", name); | ||||||
|  | 		valueList1.add(valueMap1); | ||||||
|  | 		quyMap1.put("checkvalue", valueList1); | ||||||
|  | 		queryObjList.add(quyMap1); | ||||||
|  | 		map.put("queryObj", queryObjList); | ||||||
|  | 		return new Gson().toJson(map); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	private static String getRequest1(String accbookCode, String strdate, String code, String name) { | ||||||
|  | 		Map<String, Object> map = new HashMap<String, Object>(); | ||||||
|  | 		List<String> accbookcodeList = new ArrayList<String>(); | ||||||
|  | 		accbookcodeList.add(accbookCode); | ||||||
|  | 		map.put("accbookCode", accbookcodeList); | ||||||
|  | 		map.put("queryByPeriod", "false"); | ||||||
|  | 		map.put("inclUntallyed", "true"); | ||||||
|  | 		map.put("inclTransfer", "true"); | ||||||
|  | 		map.put("inclError", "true"); | ||||||
|  | 		map.put("inclReclassify", "true"); | ||||||
|  | 		map.put("date", strdate); | ||||||
|  | 		map.put("endDate", strdate); | ||||||
|  | 		map.put("currtypeCode", "本币"); | ||||||
|  | 
 | ||||||
|  | 		List<Map<String, Object>> queryObjList = new ArrayList<Map<String, Object>>(); | ||||||
|  | 		Map<String, Object> quyMap = new HashMap<String, Object>(); | ||||||
|  | 		Map<String, Object> typeMap = new HashMap<String, Object>(); | ||||||
|  | 
 | ||||||
|  | 		typeMap.put("checktypecode", "会计科目"); | ||||||
|  | 		typeMap.put("checktypename", "会计科目"); | ||||||
|  | 		quyMap.put("checktype", typeMap); | ||||||
|  | 		List<Map<String, String>> valueList = new ArrayList<Map<String, String>>(); | ||||||
|  | 		Map<String, String> valueMap = new HashMap<String, String>(); | ||||||
|  | 
 | ||||||
|  | 		valueMap.put("checkvaluecode", "224103"); | ||||||
|  | 		valueMap.put("checkvaluename", "单位"); | ||||||
|  | 		valueList.add(valueMap); | ||||||
|  | 		quyMap.put("checkvalue", valueList); | ||||||
|  | 		queryObjList.add(quyMap); | ||||||
|  | 		// | ||||||
|  | 		Map<String, Object> quyMap1 = new HashMap<String, Object>(); | ||||||
|  | 		Map<String, Object> typeMap1 = new HashMap<String, Object>(); | ||||||
|  | 
 | ||||||
|  | 		typeMap1.put("checktypecode", "0019"); | ||||||
|  | 		typeMap1.put("checktypename", "供应商档案"); | ||||||
|  | 		quyMap1.put("checktype", typeMap1); | ||||||
|  | 		List<Map<String, String>> valueList1 = new ArrayList<Map<String, String>>(); | ||||||
|  | 		Map<String, String> valueMap1 = new HashMap<String, String>(); | ||||||
|  | 
 | ||||||
|  | 		valueMap1.put("checkvaluecode", code); | ||||||
|  | 		valueMap1.put("checkvaluename", name); | ||||||
|  | 		valueList1.add(valueMap1); | ||||||
|  | 		quyMap1.put("checkvalue", valueList1); | ||||||
|  | 		queryObjList.add(quyMap1); | ||||||
|  | 		map.put("queryObj", queryObjList); | ||||||
|  | 		return new Gson().toJson(map); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	private static String getRequest2(String accbookCode, String strdate, String code, String name) { | ||||||
|  | 		Map<String, Object> map = new HashMap<String, Object>(); | ||||||
|  | 		List<String> accbookcodeList = new ArrayList<String>(); | ||||||
|  | 		accbookcodeList.add(accbookCode); | ||||||
|  | 		map.put("accbookCode", accbookcodeList); | ||||||
|  | 		map.put("queryByPeriod", "false"); | ||||||
|  | 		map.put("inclUntallyed", "true"); | ||||||
|  | 		map.put("inclTransfer", "true"); | ||||||
|  | 		map.put("inclError", "true"); | ||||||
|  | 		map.put("inclReclassify", "true"); | ||||||
|  | 		map.put("date", strdate); | ||||||
|  | 		map.put("endDate", strdate); | ||||||
|  | 		map.put("currtypeCode", "本币"); | ||||||
|  | 
 | ||||||
|  | 		List<Map<String, Object>> queryObjList = new ArrayList<Map<String, Object>>(); | ||||||
|  | 		Map<String, Object> quyMap = new HashMap<String, Object>(); | ||||||
|  | 		Map<String, Object> typeMap = new HashMap<String, Object>(); | ||||||
|  | 
 | ||||||
|  | 		typeMap.put("checktypecode", "会计科目"); | ||||||
|  | 		typeMap.put("checktypename", "会计科目"); | ||||||
|  | 		quyMap.put("checktype", typeMap); | ||||||
|  | 		List<Map<String, String>> valueList = new ArrayList<Map<String, String>>(); | ||||||
|  | 		Map<String, String> valueMap = new HashMap<String, String>(); | ||||||
|  | 
 | ||||||
|  | 		valueMap.put("checkvaluecode", "224105"); | ||||||
|  | 		valueMap.put("checkvaluename", "运费"); | ||||||
|  | 		valueList.add(valueMap); | ||||||
|  | 		quyMap.put("checkvalue", valueList); | ||||||
|  | 		queryObjList.add(quyMap); | ||||||
|  | 		// | ||||||
|  | 		Map<String, Object> quyMap1 = new HashMap<String, Object>(); | ||||||
|  | 		Map<String, Object> typeMap1 = new HashMap<String, Object>(); | ||||||
|  | 
 | ||||||
|  | 		typeMap1.put("checktypecode", "0019"); | ||||||
|  | 		typeMap1.put("checktypename", "供应商档案"); | ||||||
|  | 		quyMap1.put("checktype", typeMap1); | ||||||
|  | 		List<Map<String, String>> valueList1 = new ArrayList<Map<String, String>>(); | ||||||
|  | 		Map<String, String> valueMap1 = new HashMap<String, String>(); | ||||||
|  | 
 | ||||||
|  | 		valueMap1.put("checkvaluecode", code); | ||||||
|  | 		valueMap1.put("checkvaluename", name); | ||||||
|  | 		valueList1.add(valueMap1); | ||||||
|  | 		quyMap1.put("checkvalue", valueList1); | ||||||
|  | 		queryObjList.add(quyMap1); | ||||||
|  | 		map.put("queryObj", queryObjList); | ||||||
|  | 		return new Gson().toJson(map); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	private static String getRequest3(String accbookCode, String strdate, String code, String name) { | ||||||
|  | 		Map<String, Object> map = new HashMap<String, Object>(); | ||||||
|  | 		List<String> accbookcodeList = new ArrayList<String>(); | ||||||
|  | 		accbookcodeList.add(accbookCode); | ||||||
|  | 		map.put("accbookCode", accbookcodeList); | ||||||
|  | 		map.put("queryByPeriod", "false"); | ||||||
|  | 		map.put("inclUntallyed", "true"); | ||||||
|  | 		map.put("inclTransfer", "true"); | ||||||
|  | 		map.put("inclError", "true"); | ||||||
|  | 		map.put("inclReclassify", "true"); | ||||||
|  | 		map.put("date", strdate); | ||||||
|  | 		map.put("endDate", strdate); | ||||||
|  | 		map.put("currtypeCode", "本币"); | ||||||
|  | 
 | ||||||
|  | 		List<Map<String, Object>> queryObjList = new ArrayList<Map<String, Object>>(); | ||||||
|  | 		Map<String, Object> quyMap = new HashMap<String, Object>(); | ||||||
|  | 		Map<String, Object> typeMap = new HashMap<String, Object>(); | ||||||
|  | 
 | ||||||
|  | 		typeMap.put("checktypecode", "会计科目"); | ||||||
|  | 		typeMap.put("checktypename", "会计科目"); | ||||||
|  | 		quyMap.put("checktype", typeMap); | ||||||
|  | 		List<Map<String, String>> valueList = new ArrayList<Map<String, String>>(); | ||||||
|  | 		Map<String, String> valueMap = new HashMap<String, String>(); | ||||||
|  | 
 | ||||||
|  | 		valueMap.put("checkvaluecode", "224101"); | ||||||
|  | 		valueMap.put("checkvaluename", "保证金"); | ||||||
|  | 		valueList.add(valueMap); | ||||||
|  | 		quyMap.put("checkvalue", valueList); | ||||||
|  | 		queryObjList.add(quyMap); | ||||||
|  | 		// | ||||||
|  | 		Map<String, Object> quyMap1 = new HashMap<String, Object>(); | ||||||
|  | 		Map<String, Object> typeMap1 = new HashMap<String, Object>(); | ||||||
|  | 
 | ||||||
|  | 		typeMap1.put("checktypecode", "0019"); | ||||||
|  | 		typeMap1.put("checktypename", "供应商档案"); | ||||||
|  | 		quyMap1.put("checktype", typeMap1); | ||||||
|  | 		List<Map<String, String>> valueList1 = new ArrayList<Map<String, String>>(); | ||||||
|  | 		Map<String, String> valueMap1 = new HashMap<String, String>(); | ||||||
|  | 
 | ||||||
|  | 		valueMap1.put("checkvaluecode", code); | ||||||
|  | 		valueMap1.put("checkvaluename", name); | ||||||
|  | 		valueList1.add(valueMap1); | ||||||
|  | 		quyMap1.put("checkvalue", valueList1); | ||||||
|  | 		queryObjList.add(quyMap1); | ||||||
|  | 		map.put("queryObj", queryObjList); | ||||||
|  | 		return new Gson().toJson(map); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | @ -0,0 +1,119 @@ | ||||||
|  | package nc.vo.scmpub.util; | ||||||
|  | 
 | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.HashSet; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Set; | ||||||
|  | 
 | ||||||
|  | import nc.impl.pubapp.pattern.data.vo.VOQuery; | ||||||
|  | import nc.vo.bd.material.MaterialVersionVO; | ||||||
|  | import nc.vo.ml.NCLangRes4VoTransl; | ||||||
|  | import nc.vo.pub.CircularlyAccessibleValueObject; | ||||||
|  | import nc.vo.pub.VOStatus; | ||||||
|  | import nc.vo.pubapp.pattern.exception.ExceptionUtils; | ||||||
|  | import nc.vo.pubapp.pattern.model.entity.bill.AbstractBill; | ||||||
|  | import nccloud.commons.lang.StringUtils; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @author jilush | ||||||
|  |  * @version ncc1.0 | ||||||
|  |  * @description 物料未做版本化时oid、vid一致性校验 | ||||||
|  |  * @date 2022/6/27 14:56 | ||||||
|  |  */ | ||||||
|  | public class MaterialOVidConsistentCheck { | ||||||
|  | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * @description 校验物料ovid是否一致 | ||||||
|  | 	 * @param vos | ||||||
|  | 	 * @param materialoidField 物料oid名称 | ||||||
|  | 	 * @param materialvidField 物料vid名称 | ||||||
|  | 	 * @param crownoField      行号名称 | ||||||
|  | 	 * @return | ||||||
|  | 	 * @author jilush | ||||||
|  | 	 * @date 2022/6/27 15:02 | ||||||
|  | 	 * @version ncc1.0 | ||||||
|  | 	 */ | ||||||
|  | 	public void check(AbstractBill[] vos, String materialoidField, String materialvidField, String crownoField) { | ||||||
|  | 		// 1、构造没有做过版本化的物料set | ||||||
|  | 		Set<String> noMulVersionMaterialSet = getIsBMulVersionMaterialMap(vos, materialoidField); | ||||||
|  | 		// 2、校验非多版本 | ||||||
|  | 		checkMulVersion(vos, materialoidField, materialvidField, crownoField, noMulVersionMaterialSet); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * @param vos | ||||||
|  | 	 * @param pk_sourceField | ||||||
|  | 	 * @param pk_materialField | ||||||
|  | 	 * @param crownoField | ||||||
|  | 	 * @param isBMulVersionMaterialMap | ||||||
|  | 	 * @return | ||||||
|  | 	 * @description 校验多版本 | ||||||
|  | 	 * @author jilush | ||||||
|  | 	 * @date 2022/6/27 15:20 | ||||||
|  | 	 * @version ncc1.0 | ||||||
|  | 	 */ | ||||||
|  | 	private void checkMulVersion(AbstractBill[] vos, String pk_sourceField, String pk_materialField, String crownoField, | ||||||
|  | 			Set<String> noMulVersionMaterialSet) { | ||||||
|  | 		for (AbstractBill vo : vos) { | ||||||
|  | 			CircularlyAccessibleValueObject[] childrenVOS = vo.getChildrenVO(); | ||||||
|  | 			StringBuilder errorMsg = new StringBuilder(); | ||||||
|  | 			List<String> crownList = new ArrayList<>(); | ||||||
|  | 			for (CircularlyAccessibleValueObject childrenVO : childrenVOS) { | ||||||
|  | 				if (childrenVO.getStatus() != VOStatus.DELETED) { | ||||||
|  | 					String pk_source = (String) childrenVO.getAttributeValue(pk_sourceField); | ||||||
|  | 					// 未做过版本化时校验 | ||||||
|  | 					if (noMulVersionMaterialSet.contains(pk_source)) { | ||||||
|  | 						String pk_material = (String) childrenVO.getAttributeValue(pk_materialField); | ||||||
|  | 						if (!StringUtils.equals(pk_material, pk_source)) { | ||||||
|  | 							crownList.add((String) childrenVO.getAttributeValue(crownoField)); | ||||||
|  | 						} | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			if (crownList.size() > 0) { | ||||||
|  | 				errorMsg.append(NCLangRes4VoTransl.getNCLangRes().getStrByID("4001002_0", "04001002-0811", null, | ||||||
|  | 						crownList.toArray(new String[0]))); | ||||||
|  | 				errorMsg.append(NCLangRes4VoTransl.getNCLangRes().getStrByID("4001002_0", "04001002-0856")); | ||||||
|  | 				ExceptionUtils.wrappBusinessException(errorMsg.toString()); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * @description 根据vo查询物料oid信息并组装set | ||||||
|  | 	 * @param vos | ||||||
|  | 	 * @param pk_sourceField | ||||||
|  | 	 * @return | ||||||
|  | 	 * @author jilush | ||||||
|  | 	 * @date 2022/6/27 15:10 | ||||||
|  | 	 * @version ncc1.0 | ||||||
|  | 	 */ | ||||||
|  | 	private Set<String> getIsBMulVersionMaterialMap(AbstractBill[] vos, String pk_sourceField) { | ||||||
|  | 		// 1、获取物料版本主键 | ||||||
|  | 		Set<String> pk_sourceSet = new HashSet<String>(); | ||||||
|  | 		for (AbstractBill vo : vos) { | ||||||
|  | 			CircularlyAccessibleValueObject[] childrenVOs = vo.getChildrenVO(); | ||||||
|  | 			for (CircularlyAccessibleValueObject childrenVO : childrenVOs) { | ||||||
|  | 				if (childrenVO.getStatus() != VOStatus.DELETED) { | ||||||
|  | 					pk_sourceSet.add((String) childrenVO.getAttributeValue(pk_sourceField)); | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		if (pk_sourceSet.size() > 0) { | ||||||
|  | 			// 2、查询物料版本信息 | ||||||
|  | 			VOQuery<MaterialVersionVO> materialVersionVOQuery = new VOQuery<>(MaterialVersionVO.class); | ||||||
|  | 			MaterialVersionVO[] materialVersionVOS = materialVersionVOQuery.query(pk_sourceSet.toArray(new String[0])); | ||||||
|  | 			// 3、组装set,版本号大于1表示物料做过版本化 | ||||||
|  | 			Set<String> noMulVersionMaterialSet = new HashSet<>(); | ||||||
|  | 			for (MaterialVersionVO materialVersionVO : materialVersionVOS) { | ||||||
|  | 				if (materialVersionVO.getVersion() == 1) { | ||||||
|  | 					noMulVersionMaterialSet.add(materialVersionVO.getPk_source()); | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			return noMulVersionMaterialSet; | ||||||
|  | 		} | ||||||
|  | 		return new HashSet<String>(); | ||||||
|  | 
 | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue