java110 лет назад: 2
Родитель
Сommit
1443021923

+ 0 - 8
java110-bean/src/main/java/com/java110/po/fee/PayFeeDetailPo.java

@@ -37,7 +37,6 @@ public class PayFeeDetailPo implements Serializable {
     private String cashierId;
     private String cashierName;
 
-    private String receiptCode;
 
 
     public String getDetailId() {
@@ -184,11 +183,4 @@ public class PayFeeDetailPo implements Serializable {
         this.cashierName = cashierName;
     }
 
-    public String getReceiptCode() {
-        return receiptCode;
-    }
-
-    public void setReceiptCode(String receiptCode) {
-        this.receiptCode = receiptCode;
-    }
 }

+ 5 - 0
java110-utils/src/main/java/com/java110/utils/cache/CommonCache.java

@@ -15,9 +15,14 @@ public class CommonCache extends BaseCache {
     public final static int defaultExpireTime = 5 * 60;
     public final static int RESEND_DEFAULT_EXPIRETIME = 1 * 60;
 
+    public final static int DEFAULT_EXPIRETIME_TWO_MIN = 1 * 60;
+
+
     //支付默认回话
     public final static int PAY_DEFAULT_EXPIRE_TIME = 2 * 60 * 60;
 
+    public static final String RECEIPT_CODE = "_RECEIPT_CODE";// 收据编号
+
 
 
     /**

+ 3 - 1
service-fee/src/main/java/com/java110/fee/bmo/fee/impl/FeeBMOImpl.java

@@ -27,6 +27,7 @@ import com.java110.po.fee.PayFeeDetailPo;
 import com.java110.po.fee.PayFeePo;
 import com.java110.po.fee.FeeReceiptPo;
 import com.java110.po.fee.FeeReceiptDetailPo;
+import com.java110.utils.cache.CommonCache;
 import com.java110.utils.constant.*;
 import com.java110.utils.exception.ListenerExecuteException;
 import com.java110.utils.util.Assert;
@@ -426,7 +427,8 @@ public class FeeBMOImpl extends ApiBaseBMO implements IFeeBMO {
             payFeeDetail.setPayableAmount("0.0");
         }
         payFeeDetail.setPayOrderId(paramInJson.getString("oId"));
-        payFeeDetail.setReceiptCode(receiptCode);
+        //todo 缓存收据编号
+        CommonCache.setValue(payFeeDetail.getDetailId()+CommonCache.RECEIPT_CODE,receiptCode,CommonCache.DEFAULT_EXPIRETIME_TWO_MIN);
         // todo 刷入收银人员信息
         freshCashierInfo(payFeeDetail, paramInJson);
 

+ 3 - 1
service-fee/src/main/java/com/java110/fee/cmd/fee/PayBatchFeeCmd.java

@@ -29,6 +29,7 @@ import com.java110.po.fee.PayFeeDetailPo;
 import com.java110.po.fee.PayFeePo;
 import com.java110.po.owner.RepairPoolPo;
 import com.java110.po.owner.RepairUserPo;
+import com.java110.utils.cache.CommonCache;
 import com.java110.utils.constant.FeeFlagTypeConstant;
 import com.java110.utils.constant.FeeConfigConstant;
 import com.java110.utils.constant.ResponseConstant;
@@ -210,7 +211,8 @@ public class PayBatchFeeCmd extends Cmd {
             payFeeDetailPo.setPayOrderId(oId);
             payFeeDetailPo.setCashierId(userDto.getUserId());
             payFeeDetailPo.setCashierName(userDto.getName());
-            payFeeDetailPo.setReceiptCode(receiptCode);
+            //todo 缓存收据编号
+            CommonCache.setValue(payFeeDetailPo.getDetailId()+CommonCache.RECEIPT_CODE,receiptCode,CommonCache.DEFAULT_EXPIRETIME_TWO_MIN);
             int flag = payFeeDetailNewV1InnerServiceSMOImpl.savePayFeeDetailNew(payFeeDetailPo);
             if (flag < 1) {
                 throw new CmdException("缴费失败");

+ 4 - 2
service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeCmd.java

@@ -237,8 +237,10 @@ public class PayFeeCmd extends Cmd {
             payFeePo = BeanConvertUtil.covertBean(fee, PayFeePo.class);
             PayFeeDetailPo payFeeDetailPo = BeanConvertUtil.covertBean(feeDetail, PayFeeDetailPo.class);
             payFeeDetailPo.setReceivableAmount(feeDetail.getString("totalFeePrice"));
-            payFeeDetailPo.setReceiptCode(receiptCode);
-            //判断是否有赠送规则
+            //todo 缓存收据编号
+            CommonCache.setValue(payFeeDetailPo.getDetailId()+CommonCache.RECEIPT_CODE,receiptCode,CommonCache.DEFAULT_EXPIRETIME_TWO_MIN);
+
+            //todo 判断是否有赠送规则
             hasDiscount(paramObj, payFeePo, payFeeDetailPo);
 
             // todo 处理用户账户

+ 12 - 3
service-fee/src/main/java/com/java110/fee/cmd/fee/PayMonthFeeCmd.java

@@ -29,6 +29,7 @@ import com.java110.po.fee.PayFeeDetailPo;
 import com.java110.po.fee.PayFeePo;
 import com.java110.po.owner.RepairPoolPo;
 import com.java110.po.owner.RepairUserPo;
+import com.java110.utils.cache.CommonCache;
 import com.java110.utils.constant.FeeConfigConstant;
 import com.java110.utils.constant.FeeFlagTypeConstant;
 import com.java110.utils.constant.ResponseConstant;
@@ -95,6 +96,9 @@ public class PayMonthFeeCmd extends Cmd {
     @Autowired
     private IRepairInnerServiceSMO repairInnerServiceSMO;
 
+    @Autowired
+    private IFeeReceiptInnerServiceSMO feeReceiptInnerServiceSMOImpl;
+
 
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
@@ -157,6 +161,10 @@ public class PayMonthFeeCmd extends Cmd {
         List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
         Assert.listOnlyOne(userDtos, "用户未登录");
 
+
+        //todo 生成收据编号
+        String receiptCode = feeReceiptInnerServiceSMOImpl.generatorReceiptCode(reqJson.getString("communityId"));
+
         List<PayFeeDetailMonthDto> payFeeDetailMonthDtos = (List<PayFeeDetailMonthDto>) reqJson.get("payFeeDetailMonthDtos");
 
         Calendar createTimeCal = Calendar.getInstance();
@@ -179,7 +187,7 @@ public class PayMonthFeeCmd extends Cmd {
             }
             createTimeCal.add(Calendar.SECOND, 1);
             try {
-                doMonthFee(payFeeDetailMonthDto, context, userDtos.get(0), reqJson, createTimeCal.getTime(), feeDtoMap);
+                doMonthFee(payFeeDetailMonthDto, context, userDtos.get(0), reqJson, createTimeCal.getTime(), feeDtoMap,receiptCode);
             } catch (Exception e) {
                 logger.error("处理异常", e);
                 throw new CmdException(e.getMessage());
@@ -201,7 +209,7 @@ public class PayMonthFeeCmd extends Cmd {
      * @param userDto
      * @param reqJson
      */
-    private void doMonthFee(PayFeeDetailMonthDto payFeeDetailMonthDto, ICmdDataFlowContext context, UserDto userDto, JSONObject reqJson, Date createTime, Map<String, FeeDto> feeDtoMap) {
+    private void doMonthFee(PayFeeDetailMonthDto payFeeDetailMonthDto, ICmdDataFlowContext context, UserDto userDto, JSONObject reqJson, Date createTime, Map<String, FeeDto> feeDtoMap,String receiptCode) {
         //todo 计算结束时间
         Date startTime = DateUtil.getDateFromStringB(payFeeDetailMonthDto.getCurMonthTime());
         Calendar calendar = Calendar.getInstance();
@@ -228,7 +236,8 @@ public class PayMonthFeeCmd extends Cmd {
             payFeeDetailPo.setEndTime(endTime);
             // todo 按月交费时 主要按时间顺序排序时 能够整齐
             payFeeDetailPo.setCreateTime(DateUtil.getFormatTimeStringA(createTime));
-
+            //todo 缓存收据编号
+            CommonCache.setValue(payFeeDetailPo.getDetailId()+CommonCache.RECEIPT_CODE,receiptCode,CommonCache.DEFAULT_EXPIRETIME_TWO_MIN);
             int flag = payFeeDetailNewV1InnerServiceSMOImpl.savePayFeeDetailNew(payFeeDetailPo);
             if (flag < 1) {
                 throw new CmdException("缴费失败");

+ 3 - 2
service-fee/src/main/java/com/java110/fee/cmd/fee/PayOweFeeCmd.java

@@ -35,6 +35,7 @@ import com.java110.po.fee.FeeReceiptPo;
 import com.java110.po.fee.FeeReceiptDetailPo;
 import com.java110.po.owner.RepairPoolPo;
 import com.java110.po.owner.RepairUserPo;
+import com.java110.utils.cache.CommonCache;
 import com.java110.utils.constant.ResponseConstant;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.exception.ListenerExecuteException;
@@ -385,8 +386,8 @@ public class PayOweFeeCmd extends Cmd {
         }
         payFeeDetailPo.setCashierId(userDto.getUserId());
         payFeeDetailPo.setCashierName(userDto.getName());
-        payFeeDetailPo.setReceiptCode(receiptCode);
-
+        //todo 缓存收据编号
+        CommonCache.setValue(payFeeDetailPo.getDetailId()+CommonCache.RECEIPT_CODE,receiptCode,CommonCache.DEFAULT_EXPIRETIME_TWO_MIN);
         int flag = payFeeDetailV1InnerServiceSMOImpl.savePayFeeDetailNew(payFeeDetailPo);
 
         if (flag < 1) {

+ 16 - 1
service-job/src/main/java/com/java110/job/adapt/fee/asyn/impl/UpdateFeeOwnerInfoImpl.java

@@ -103,7 +103,6 @@ public class UpdateFeeOwnerInfoImpl implements IUpdateFeeOwnerInfo {
     private void doDealFeeDto(FeeDto tmpFeeDto, OwnerDto ownerDto) {
 
         //判断是否存在 业主名称
-
         FeeAttrDto ownerNameAttr = getOwnerFeeAttr(tmpFeeDto, FeeAttrDto.SPEC_CD_OWNER_NAME);
         FeeAttrPo tmpFeeAttrPo = new FeeAttrPo();
         if (ownerNameAttr == null) {
@@ -135,6 +134,22 @@ public class UpdateFeeOwnerInfoImpl implements IUpdateFeeOwnerInfo {
             feeAttrInnerServiceSMOImpl.updateFeeAttr(tmpFeeAttrPo);
         }
 
+        // todo 是否存在 业主ID
+        ownerNameAttr = getOwnerFeeAttr(tmpFeeDto, FeeAttrDto.SPEC_CD_OWNER_ID);
+        tmpFeeAttrPo = new FeeAttrPo();
+        if (ownerNameAttr == null) {
+            tmpFeeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+            tmpFeeAttrPo.setCommunityId(ownerDto.getCommunityId());
+            tmpFeeAttrPo.setFeeId(tmpFeeDto.getFeeId());
+            tmpFeeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID);
+            tmpFeeAttrPo.setValue(ownerDto.getOwnerId());
+            feeAttrInnerServiceSMOImpl.saveFeeAttr(tmpFeeAttrPo);
+        } else {
+            tmpFeeAttrPo.setAttrId(ownerNameAttr.getAttrId());
+            tmpFeeAttrPo.setValue(ownerDto.getOwnerId());
+            feeAttrInnerServiceSMOImpl.updateFeeAttr(tmpFeeAttrPo);
+        }
+
     }
 
     private FeeAttrDto getOwnerFeeAttr(FeeDto tmpFeeDto, String specCd) {

+ 9 - 1
service-job/src/main/java/com/java110/job/adapt/payment/receipt/PayFeeReceiptAdapt.java

@@ -29,6 +29,7 @@ import com.java110.po.fee.FeeReceiptPo;
 import com.java110.po.fee.FeeReceiptDetailPo;
 import com.java110.po.log.LogSystemErrorPo;
 import com.java110.service.smo.ISaveSystemErrorSMO;
+import com.java110.utils.cache.CommonCache;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.factory.ApplicationContextFactory;
 import com.java110.utils.util.Assert;
@@ -150,6 +151,13 @@ public class PayFeeReceiptAdapt extends DatabusAdaptImpl {
                     && businessPayFeeDetail.getDoubleValue("receivedAmount") < 0) {
                 return;
             }
+
+            String receiptCode = CommonCache.getValue(payFeeDetailPo.getDetailId()+CommonCache.RECEIPT_CODE);
+            //todo 如果为空重新生成收据编号
+            if(StringUtil.isEmpty(receiptCode)){
+                receiptCode = feeReceiptInnerServiceSMOImpl.generatorReceiptCode(payFeeDetailPo.getCommunityId());
+            }
+
             //添加收据和收据详情
             FeeReceiptPo feeReceiptPo = new FeeReceiptPo();
             FeeReceiptDetailPo feeReceiptDetailPo = new FeeReceiptDetailPo();
@@ -176,7 +184,7 @@ public class PayFeeReceiptAdapt extends DatabusAdaptImpl {
             feeReceiptPo.setPayObjId(ownerDto.getOwnerId());
             feeReceiptPo.setPayObjName(ownerDto.getName());
             feeReceiptPo.setCreateTime(payFeeDetailPo.getCreateTime());
-            feeReceiptPo.setReceiptCode(businessPayFeeDetail.getString("receiptCode"));
+            feeReceiptPo.setReceiptCode(receiptCode);
             //这里只是写入 收据表,暂不考虑 事务一致性问题,就算写入失败 也只是影响 收据打印,如果 贵公司对 收据要求 比较高,不能有失败的情况 请加入事务管理
             feeReceiptDetailInnerServiceSMOImpl.saveFeeReceiptDetail(feeReceiptDetailPo);
             feeReceiptInnerServiceSMOImpl.saveFeeReceipt(feeReceiptPo);