44import com .alibaba .fastjson .JSONObject ;
55import com .java110 .core .annotation .Java110Cmd ;
66import com .java110 .core .annotation .Java110Transactional ;
7+ import com .java110 .core .context .CmdContextUtils ;
78import com .java110 .core .context .ICmdDataFlowContext ;
89import com .java110 .core .event .cmd .Cmd ;
910import com .java110 .core .event .cmd .CmdEvent ;
@@ -142,7 +143,7 @@ public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSO
142143 feeDto = feeDtos .get (0 );
143144
144145 if (FeeDto .STATE_FINISH .equals (feeDto .getState ())) {
145- throw new IllegalArgumentException ("收费已经结束,不能再缴费" );
146+ throw new CmdException ("收费已经结束,不能再缴费" );
146147 }
147148
148149 Date endTime = feeDto .getEndTime ();
@@ -151,22 +152,15 @@ public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSO
151152 feeConfigDto .setConfigId (feeDto .getConfigId ());
152153 feeConfigDto .setCommunityId (reqJson .getString ("communityId" ));
153154 List <FeeConfigDto > feeConfigDtos = feeConfigInnerServiceSMOImpl .queryFeeConfigs (feeConfigDto );
154-
155- if (feeConfigDtos == null || feeConfigDtos .size () != 1 ) {
156- throw new IllegalArgumentException ("费用项不存在" );
155+ if (ListUtil .isNull (feeConfigDtos )) {
156+ throw new CmdException ("费用项不存在" );
157157 }
158- //一次性费用 和间接性费用
158+ // 获取费用结束时间
159159 Date maxEndTime = feeDtos .get (0 ).getDeadlineTime ();
160160 //周期性费用
161- if (maxEndTime == null || FeeDto . FEE_FLAG_CYCLE . equals ( feeConfigDtos . get ( 0 ). getFeeFlag ()) ) {
161+ if (maxEndTime == null ) {
162162 maxEndTime = DateUtil .getDateFromStringA (feeConfigDtos .get (0 ).getEndTime ());
163163 }
164- // Date maxEndTime = null;
165- // if (!StringUtil.isEmpty(feeDto.getFeeFlag()) && feeDto.getFeeFlag().equals(FeeDto.FEE_FLAG_CYCLE)) { //周期性费用
166- // maxEndTime = DateUtil.getDateFromStringA(feeConfigDtos.get(0).getEndTime());
167- // } else { //一次性费用 和间接性费用
168- // maxEndTime = feeDtos.get(0).getDeadlineTime();
169- // }
170164
171165 if (maxEndTime != null && endTime != null && !FeeDto .FEE_FLAG_ONCE .equals (feeDtos .get (0 ).getFeeFlag ())) {
172166 Date newDate = DateUtil .stepMonth (endTime , reqJson .getDouble ("cycles" ).intValue ());
@@ -179,17 +173,15 @@ public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSO
179173 for (int paramIndex = 0 ; paramIndex < selectUserAccount .size (); paramIndex ++) {
180174 JSONObject param = selectUserAccount .getJSONObject (paramIndex );
181175 String maximumNumber = param .getString ("maximumNumber" );
182-
183176 }
184177
185178
186-
187179 //todo 是否按缴费时间段缴费
188180 validateIfPayFeeStartEndDate (reqJson , feeConfigDtos .get (0 ));
189181
190182 //todo 校验 优惠
191183 JSONArray selectDiscounts = reqJson .getJSONArray ("selectDiscount" );
192- if (!ListUtil .isNull (selectDiscounts )) {
184+ if (!ListUtil .isNull (selectDiscounts )) {
193185 for (int discountIndex = 0 ; discountIndex < selectDiscounts .size (); discountIndex ++) {
194186 JSONObject param = selectDiscounts .getJSONObject (discountIndex );
195187 Assert .hasKeyAndValue (param , "discountId" , "未包含优惠ID" );
@@ -205,7 +197,7 @@ public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONOb
205197 logger .debug ("paramObj : {}" , paramObj );
206198 String payOrderId = paramObj .getString ("payOrderId" );
207199
208- String userId = cmdDataFlowContext . getReqHeaders (). get ( "user-id" );
200+ String userId = CmdContextUtils . getUserId ( cmdDataFlowContext );
209201 UserDto userDto = new UserDto ();
210202 userDto .setUserId (userId );
211203 List <UserDto > userDtos = userV1InnerServiceSMOImpl .queryUsers (userDto );
@@ -227,16 +219,18 @@ public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONOb
227219 FeeDto feeInfo = (FeeDto ) paramObj .get ("feeInfo" );
228220 endTime = feeInfo .getEndTime ();
229221 feeDetail .put ("payableAmount" , feeDetail .getString ("receivableAmount" ));
230- //todo 封装 修改费用时间报文
231- JSONObject fee = modifyFee (paramObj );
232- payFeePo = BeanConvertUtil .covertBean (fee , PayFeePo .class );
222+
233223 PayFeeDetailPo payFeeDetailPo = BeanConvertUtil .covertBean (feeDetail , PayFeeDetailPo .class );
234224 payFeeDetailPo .setReceivableAmount (feeDetail .getString ("totalFeePrice" ));
235225 //todo 缓存收据编号
236226 CommonCache .setValue (payFeeDetailPo .getDetailId () + CommonCache .RECEIPT_CODE , receiptCode , CommonCache .DEFAULT_EXPIRETIME_TWO_MIN );
237227
228+ //todo 封装 修改费用时间报文
229+ JSONObject fee = modifyFee (paramObj , payFeeDetailPo );
230+ payFeePo = BeanConvertUtil .covertBean (fee , PayFeePo .class );
231+
238232 //todo 判断是否有折扣规则
239- hasDiscount (paramObj , payFeePo , payFeeDetailPo ,feeInfo );
233+ hasDiscount (paramObj , payFeePo , payFeeDetailPo , feeInfo );
240234
241235 // todo 处理用户账户
242236 dealUserAccount (paramObj , payFeeDetailPo );
@@ -450,7 +444,7 @@ private void dealUserAccount(JSONObject paramObj, PayFeeDetailPo payFeeDetailPo)
450444 * @param payFeeDetailPo
451445 * @throws ParseException
452446 */
453- private void hasDiscount (JSONObject paramObj , PayFeePo payFeePo , PayFeeDetailPo payFeeDetailPo ,FeeDto feeDto ) throws ParseException {
447+ private void hasDiscount (JSONObject paramObj , PayFeePo payFeePo , PayFeeDetailPo payFeeDetailPo , FeeDto feeDto ) throws ParseException {
454448 if (!paramObj .containsKey ("selectDiscount" )) {
455449 return ;
456450 }
@@ -596,7 +590,7 @@ private void updateCarEndTime(JSONObject paramObj) {
596590 feeDto .setCommunityId (paramObj .getString ("communityId" ));
597591 List <FeeDto > feeDtos = feeInnerServiceSMOImpl .queryFees (feeDto );
598592
599- if (feeDtos == null || feeDtos . size () < 1 ) {
593+ if (ListUtil . isNull ( feeDtos ) ) {
600594 return ;
601595 }
602596 if (!FeeDto .PAYER_OBJ_TYPE_CAR .equals (feeDtos .get (0 ).getPayerObjType ())) {
@@ -609,7 +603,7 @@ private void updateCarEndTime(JSONObject paramObj) {
609603 ownerCarDto .setCarTypeCd ("1001" ); //业主车辆
610604 List <OwnerCarDto > ownerCarDtos = ownerCarInnerServiceSMOImpl .queryOwnerCars (ownerCarDto );
611605
612- if (ownerCarDtos == null || ownerCarDtos . size () < 1 ) {
606+ if (ListUtil . isNull ( ownerCarDtos ) ) {
613607 return ;
614608 }
615609 //获取车位id
@@ -778,7 +772,6 @@ public JSONObject addFeeDetail(JSONObject paramInJson) {
778772 }
779773 feeDto = feeDtos .get (0 );
780774 businessFeeDetail .put ("startTime" , DateUtil .getFormatTimeStringA (feeDto .getEndTime ()));
781- int hours = 0 ;
782775 Date targetEndTime = null ;
783776 BigDecimal cycles = null ;
784777 Map feePriceAll = computeFeeSMOImpl .getFeePrice (feeDto );
@@ -871,60 +864,15 @@ public JSONObject addFeeDetail(JSONObject paramInJson) {
871864 return businessFeeDetail ;
872865 }
873866
874- public JSONObject modifyFee (JSONObject paramInJson ) {
867+ public JSONObject modifyFee (JSONObject paramInJson , PayFeeDetailPo payFeeDetailPo ) {
875868
876869 JSONObject businessFee = new JSONObject ();
877870 FeeDto feeInfo = (FeeDto ) paramInJson .get ("feeInfo" );
878- Date endTime = feeInfo .getEndTime ();
879- Calendar endCalender = Calendar .getInstance ();
880- endCalender .setTime (endTime );
881- int hours = 0 ;
882- //-101自定义金额 -102自定义周期 -103 自定义结束时间
883- if ("-101" .equals (paramInJson .getString ("cycles" ))) {
884- endCalender = getTargetEndTime (endCalender , Double .parseDouble (paramInJson .getString ("tmpCycles" )));
885- } else if ("-103" .equals (paramInJson .getString ("cycles" ))) {
886- String custEndTime = paramInJson .getString ("custEndTime" );
887- Date endDates = DateUtil .getDateFromStringB (custEndTime );
888- Calendar c = Calendar .getInstance ();
889- c .setTime (endDates );
890- c .add (Calendar .DAY_OF_MONTH , 1 );
891- endDates = c .getTime ();//这是明天
892- endCalender .setTime (endDates );
893- } else if ("-105" .equals (paramInJson .getString ("cycles" ))) {
894- String customEndTime = paramInJson .getString ("customEndTime" );
895- Date endDates = DateUtil .getDateFromStringB (customEndTime );
896- Calendar c = Calendar .getInstance ();
897- c .setTime (endDates );
898- c .add (Calendar .DAY_OF_MONTH , 1 );
899- endDates = c .getTime ();//这是明天
900- endCalender .setTime (endDates );
901- } else {
902- endCalender .add (Calendar .MONTH , Integer .parseInt (paramInJson .getString ("cycles" )));
903- }
904- if (FeeDto .FEE_FLAG_ONCE .equals (feeInfo .getFeeFlag ())) {
905- if (feeInfo .getDeadlineTime () != null ) {
906- endCalender .setTime (feeInfo .getDeadlineTime ());
907- } else if (!StringUtil .isEmpty (feeInfo .getCurDegrees ())) {
908- endCalender .setTime (feeInfo .getCurReadingTime ());
909- } else if (feeInfo .getImportFeeEndTime () == null ) {
910- endCalender .setTime (feeInfo .getConfigEndTime ());
911- } else {
912- endCalender .setTime (feeInfo .getImportFeeEndTime ());
913- }
914- //businessFee.put("state",FeeDto.STATE_FINISH);
915- feeInfo .setState (FeeDto .STATE_FINISH );
916- }
917- feeInfo .setEndTime (endCalender .getTime ());
918- Date maxEndTime = feeInfo .getDeadlineTime ();
919- if (FeeDto .FEE_FLAG_CYCLE .equals (feeInfo .getFeeFlag ())) {
920- maxEndTime = feeInfo .getConfigEndTime ();
921- }
922871
923- if (FeeDto .FEE_FLAG_CYCLE_ONCE .equals (feeInfo .getFeeFlag ())) {
924- maxEndTime = feeInfo .getMaxEndTime ();
925- }
872+ String endTime = DateUtil .getNextSecTime (payFeeDetailPo .getEndTime ());
873+ feeInfo .setEndTime (DateUtil .getDateFromStringA (endTime ));
926874
927- //如果间歇性费用没有设置结束时间 则取费用项的
875+ Date maxEndTime = feeInfo . getMaxEndTime ();
928876 if (maxEndTime == null ) {
929877 maxEndTime = feeInfo .getConfigEndTime ();
930878 }
@@ -965,7 +913,7 @@ public JSONObject modifyFee(JSONObject paramInJson) {
965913 public void dealAccount (JSONObject paramObj ) {
966914 //判断选择的账号
967915 JSONArray jsonArray = paramObj .getJSONArray ("selectUserAccount" );
968- if (jsonArray == null || jsonArray . size () < 1 ) {
916+ if (ListUtil . isNull ( jsonArray ) ) {
969917 return ;
970918 }
971919 List <AccountDto > accountDtos = new ArrayList <>();
0 commit comments