diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java index 30dbffcc6..00d57e6aa 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java @@ -864,6 +864,66 @@ public class EmisBaseService { } + /** + * 增加财务中心结算记录 + * @param emisSiteSettleRecord + */ + public void addCenterSettleRecord(EmisSiteSettleRecord emisSiteSettleRecord) throws EmisBizError { + + String lockKey="LOCK:CENTERACCOUNT:CHANGE-"+emisSiteSettleRecord.getAccCode(); + // 加锁操作 + redissonService.lock(lockKey,300); + + try { + // 调整账户总余额 + EmisSiteAccount emisSiteAccount = getSiteAccountBySiteCode(emisSiteSettleRecord.getSiteCode()); + if (emisSiteAccount == null) { + throw new EmisBizError(EmisBizErrorType.FAIL, "网点账户不存在,请先建立网点账户"); + } + + BigDecimal curMoney=emisSiteAccount.getCurMoney(); + BigDecimal confirmMoney=emisSiteAccount.getConfirmMoney(); + + // 变动前余额 + emisSiteSettleRecord.setPreBalance(curMoney); + emisSiteSettleRecord.setPreConfirmBalance(confirmMoney); + + // 总账户变动 + + // 增加 + if("1".equals(emisSiteSettleRecord.getChangeType())){ + curMoney=curMoney.add(emisSiteSettleRecord.getCurMoney()); + confirmMoney=confirmMoney.add(emisSiteSettleRecord.getCurConfirmMoney()); + } + // 减少 + else if("2".equals(emisSiteSettleRecord.getChangeType())){ + curMoney=curMoney.subtract(emisSiteSettleRecord.getCurMoney()); + confirmMoney=confirmMoney.subtract(emisSiteSettleRecord.getCurConfirmMoney()); + } + else{ + throw new EmisBizError(EmisBizErrorType.FAIL, "费用增减类型错误!"); + } + + // 变动后余额 + emisSiteSettleRecord.setBackBalance(curMoney); + emisSiteSettleRecord.setBackConfirmBalance(confirmMoney); + emisSiteSettleRecord.setDataFrom(WaybillHelper.getDataFrom()); + + // 插入明细记录 + emisSiteSettleRecordMapper.insertEmisSiteSettleRecord(emisSiteSettleRecord); + + // 调整总账户余额 + emisSiteAccount.setCurMoney(curMoney); + emisSiteAccount.setConfirmMoney(confirmMoney); + emisSiteAccountMapper.updateSiteAccountBalance(emisSiteAccount); + + }catch(Exception ex){ + ex.printStackTrace(); + } + redissonService.unlock(lockKey); + + } + /** * 更新打印状态 * @param billCode diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java index 380a71100..8d0a7f872 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java @@ -747,6 +747,9 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb emisWaybillSave.setDestinationCenterCode(destSite.getParentSiteCode()); } + // 初始 派件网点=目的网点 + emisWaybillSave.setDispatchSiteCode(emisWaybillSave.getDispatchUnderlingSiteName()); + // 目的地名称 EmisDestination destination=getDestinationByCode(emisWaybillSave.getDestinationCode()); @@ -1110,8 +1113,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb Map scanDateItem = new HashMap<>(); scanDateItem.put("billCode",emisWaybillSave.getBillCode()); -// scanDateItem.put("scanSiteCode",emisWaybillSave.getSendSiteCode()); -// scanDateItem.put("scanManCode",dispatchOrSendManCode); scanDateItem.put("dispatchOrSendManCode",dispatchOrSendManCode); scanDateItem.put("scanDate", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,emisWaybillSave.getSendDate())); scanDateItem.put("scanWeight", "0.0");