1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212
| @Service("saveBillRule") public class SaveBillRule extends AbstractCommonRule { private static final Logger log = LoggerFactory.getLogger(SaveBillRule.class);
public SaveBillRule() { }
@ResubmitAnnotations public RuleExecuteResult execute(BillContext billContext, Map<String, Object> paramMap) throws Exception { return this.executeCommon(billContext, paramMap); }
public RuleExecuteResult executeCommon(BillContext billContext, Map<String, Object> paramMap) throws Exception { List<BizObject> bills = this.getBills(billContext, paramMap); Entity entity = StringUtils.isBlank(billContext.getFullname()) ? null : IMetaUtils.entity(billContext.getFullname()); ServiceSupportHolder holder = new ServiceSupportHolder(billContext, paramMap, bills, entity); holder.setcBillNo(billContext.getBillnum()); this.extendEnhance(holder); IServiceSupportApi iServiceSupportApi = (IServiceSupportApi)AppContext.getBean(SaveBillSupportService.class); return (RuleExecuteResult)iServiceSupportApi.execute(holder); }
protected void extendEnhance(ServiceSupportHolder holder) { holder.getAttribute().setAttr("saveRealAutoCode", false); } }
### com.yonyou.ucf.mdd.support.abs.AbstractServiceSupport public Object execute(ServiceSupportHolder holder) throws Exception { beforeHandler(holder); Object resultHandler = doExecute(holder); afterExecute(holder, resultHandler); return resultHandler; }
protected abstract Object doExecute(ServiceSupportHolder holder) throws Exception;
### com.yonyou.ucf.mdd.support.support.SaveBillSupportService @Override protected Object doExecute(ServiceSupportHolder holder) throws Exception { IDoBillService iDoBillService = getBeanDo(ServiceSupportStatic.Save.DO); return iDoBillService.doExecute(holder); }
### com.yonyou.ucf.mdd.support.support.save.DoExecuteSaveBillService
@Override public Object doExecute(ServiceSupportHolder holder) throws Exception { List<BizObject> bills = holder.getBillList(); for (BizObject bill : bills) { checkRelevantRuleVerify(holder,bill); executeOneBill(holder, bill); } return new RuleExecuteResult(); }
@Override public void executeOneBill(ServiceSupportHolder holder, BizObject bill) throws Exception { BillContext billContext = holder.getBillContext(); boolean isInsert = EntityStatus.Insert == bill.getEntityStatus() ? true : false; setAudit(isInsert, bill, holder.getEntity().fullname()); BarCodeSupport.generateBarCode(billContext, holder.getEntity(), bill); setStatusInfoWhenInsert(holder,Status.newopen, bill, isInsert); dealSupportBpm(bill, billContext, isInsert); String code = getAndDealCode(holder, billContext, bill, isInsert);
Object result = saveBillServiceImpl.executeSave(billContext, bill, holder.getParamMap(), holder.getEntity(), isInsert);
if (null != code) { bill.set("code", code); }
BillSaveResult billSaveResult = (BillSaveResult) result; String partitionWhereCondition = saveBillServiceImpl.buildQueryWhere4UpdateTree(holder.getEntity(), billContext); updateTree(bill, billContext.getFullname(), AppContext.getTenantId(), billSaveResult, partitionWhereCondition);
}
### com.yonyou.ucf.mdd.ext.bill.service.SaveBillServiceImpl
@Override public Object executeSave(BillContext billContext, BizObject bill, Map<String, Object> paramMap, Entity entity, Boolean isInert) throws Exception { try { if (isInert) { return executeInsert(billContext, bill, paramMap, entity); } return executeUpdate(billContext, bill, entity); }catch (MddZeroResultMsgException zr){ throw new MddVouchStateMsgException(MsgExceptionCode.BILL_CHANGED_PLEASE_REFRESH); } }
private Object executeInsert(BillContext billContext, BizObject bill, Map<String, Object> paramMap, Entity entity) throws Exception { fillPubts4Insert(bill); new InsertSqlExecutor(AppContext.getSqlSession()).execute(entity, bill); return new BillSaveResult(); }
### com.yonyou.ucf.mdd.ext.dao.meta.crud.InsertSqlExecutor
@SuppressWarnings("DuplicatedCode") public class InsertSqlExecutor extends MetaDaoSupport { ... public <T extends BizObject> void execute(Entity entity, T data) throws Exception { List<T> list = new ArrayList<T>(1); list.add(data); execute(entity, list, true); }
private <T extends BizObject> void execute(Entity entity, List<T> list, boolean isPartition) throws Exception { if (true) { new InsertSqlExecutorNew(getSqlSession()).execute(entity, list); return; } printLogWHenEntityNull(entity, list); String fullname = entity.fullname(); MddMultilingualUtil.setEnableI18n2Imeta(); EntityStatusWalker statusWalker = new EntityStatusWalker(); for (BizObject bill : list) { bill.setEntityStatus(EntityStatus.Insert); ObjectWalker.walk(statusWalker, bill, fullname); } if (isPartition) { setTenantandCorpWhenSave(entity, list); }
InsertCheckWalker insertCheck = new InsertCheckWalker(); insertCheck.setNext(new FormatCheckWalker()); SqlBuilder<BizObject> builder = new InsertSqlBuilder(); for (BizObject bill : list) { ObjectHierarchyBuilder.build(bill, entity); ObjectFullWalker.walk(insertCheck, bill, fullname); try { batchSaveExecute(builder.build(entity, bill)); } catch (Throwable throwable) { logger.error(throwable.getMessage()); throw new MddOrmErrorException(throwable.getMessage(),throwable); } } }
|