java110-bean/src/main/java/com/java110/dto/fee/FeeDto.java
@@ -132,6 +132,8 @@ private List<FeeAttrDto> feeAttrDtos; private Date payEndDate; //当前时间 private Date nowDate; @@ -446,6 +448,14 @@ this.computingFormula = computingFormula; } public Date getPayEndDate() { return payEndDate; } public void setPayEndDate(Date payEndDate) { this.payEndDate = payEndDate; } public String getIsDefault() { return isDefault; } java110-bean/src/main/java/com/java110/po/car/CarInoutFeeHistoryPo.java
New file @@ -0,0 +1,105 @@ package com.java110.po.car; import java.io.Serializable; import java.util.Date; /** * @ClassName CarInoutFeeHistoryPo * @Description * @Author wuxw * @Date 2020/5/27 14:31 * @Version 1.0 * add by wuxw 2020/5/27 **/ public class CarInoutFeeHistoryPo implements Serializable { private String id; private String inoutId; private String payAmount; private String primeRate; private String payerName; private String invoiceNo; private String receiptNo; private String payTime; private String primeRateName; public String getPrimeRateName() { return primeRateName; } public void setPrimeRateName(String primeRateName) { this.primeRateName = primeRateName; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getInoutId() { return inoutId; } public void setInoutId(String inoutId) { this.inoutId = inoutId; } public String getPayAmount() { return payAmount; } public void setPayAmount(String payAmount) { this.payAmount = payAmount; } public String getPrimeRate() { return primeRate; } public void setPrimeRate(String primeRate) { this.primeRate = primeRate; } public String getPayerName() { return payerName; } public void setPayerName(String payerName) { this.payerName = payerName; } public String getInvoiceNo() { return invoiceNo; } public void setInvoiceNo(String invoiceNo) { this.invoiceNo = invoiceNo; } public String getReceiptNo() { return receiptNo; } public void setReceiptNo(String receiptNo) { this.receiptNo = receiptNo; } public String getPayTime() { return payTime; } public void setPayTime(String payTime) { this.payTime = payTime; } } java110-bean/src/main/java/com/java110/po/fee/PayFeeDetailPo.java
@@ -55,6 +55,16 @@ //转账人 private String transferorName; private String b; public String getB() { return b; } public void setB(String b) { this.b = b; } public String getReceiptNo() { return receiptNo; } java110-bean/src/main/java/com/java110/vo/api/carInout/ApiCarInoutDataVo.java
@@ -1,7 +1,10 @@ package com.java110.vo.api.carInout; import com.java110.po.car.CarInoutFeeHistoryPo; import java.io.Serializable; import java.util.Date; import java.util.List; public class ApiCarInoutDataVo implements Serializable { @@ -14,6 +17,16 @@ private int inHours; private int inMin; private double money; //缴费记录 private CarInoutFeeHistoryPo carInoutFeeHistory; public CarInoutFeeHistoryPo getCarInoutFeeHistory() { return carInoutFeeHistory; } public void setCarInoutFeeHistory(CarInoutFeeHistoryPo carInoutFeeHistory) { this.carInoutFeeHistory = carInoutFeeHistory; } public String getInoutId() { return inoutId; java110-bean/src/main/java/com/java110/vo/api/fee/ApiFeeDataVo.java
@@ -89,6 +89,25 @@ private String decimalPlace; private String units; private Date payStartDate; private Date payEndDate; public Date getPayEndDate() { return payEndDate; } public void setPayEndDate(Date payEndDate) { this.payEndDate = payEndDate; } public Date getPayStartDate() { return payStartDate; } public void setPayStartDate(Date payStartDate) { this.payStartDate = payStartDate; } public String getMaxEndTime() { return maxEndTime; } java110-db/src/main/resources/mapper/common/CarInoutFeeHistoryServiceDaoImplMapper.xml
New file @@ -0,0 +1,36 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="carInoutFeeHistoryDaoImpl"> <insert id="saveCarInoutFeeHistory" parameterType="Map"> insert into car_inout_fee_history(id,inout_id,receipt_no,invoice_no,pay_amount,payer_name,prime_rate,pay_time) values (#{id}, #{inoutId}, #{receiptNo}, #{invoiceNo}, #{payAmount}, #{payerName}, #{primeRate}, #{payTime}) </insert> <select id="getCarInoutFeeHistory" parameterType="Map" resultType="Map"> select t.id, t.inout_id as inoutId, t.receipt_no as receiptNo, t.invoice_no as invoiceNo, t.pay_amount as payAmount, t.payer_name as payerName, t.prime_rate as primeRate, t.pay_time as payTime, td.`name` as primeRateName from car_inout_fee_history t left join t_dict td on t.prime_rate = td.status_cd and td.table_name = 'pay_fee_detail' and td.table_columns = 'prime_rate' where 1 =1 <if test="inoutId !=null and inoutId != ''"> and t.inout_id= #{inoutId} </if> </select> </mapper> java110-db/src/main/resources/mapper/community/ActivitiesServiceDaoImplMapper.xml
@@ -141,7 +141,10 @@ communityId,t.b_id,t.b_id bId,t.header_img,t.header_img headerImg,t.state,act.type_name typeCdName,t.create_time createTime from activities t left join activities_type act on t.type_cd = act.type_cd and t.community_id = act.community_id left join activities_type act on t.type_cd = act.type_cd <if test="communityId !=null and communityId != ''"> and t.community_id = act.community_id </if> where 1 =1 and t.status_cd= '0' and act.status_cd = '0' <if test="collectCount !=null and collectCount != ''"> @@ -251,7 +254,11 @@ <select id="queryActivitiessCount" parameterType="Map" resultType="Map"> select count(1) count from activities t left join activities_type act on t.type_cd = act.type_cd and t.community_id = act.community_id left join activities_type act on t.type_cd = act.type_cd <if test="communityId !=null and communityId != ''"> and t.community_id = act.community_id </if> where 1 =1 and t.status_cd= '0' and act.status_cd = '0' <if test="collectCount !=null and collectCount != ''"> java110-db/src/main/resources/mapper/fee/FeeDetailServiceDaoImplMapper.xml
@@ -429,6 +429,9 @@ <if test="endTime !=null "> and t.end_time <= #{endTime} </if> <if test="startTime !=null and b != null"> and t.start_time = #{startTime} </if> <if test="cashierId !=null and cashierId != ''"> and t.cashier_id= #{cashierId} </if> java110-interface/src/main/java/com/java110/intf/common/ICarInoutV1InnerServiceSMO.java
@@ -17,6 +17,7 @@ import com.java110.config.feign.FeignConfiguration; import com.java110.dto.machine.CarInoutDto; import com.java110.po.car.CarInoutFeeHistoryPo; import com.java110.po.car.CarInoutPo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestBody; @@ -41,6 +42,12 @@ @RequestMapping(value = "/saveCarInout", method = RequestMethod.POST) public int saveCarInout(@RequestBody CarInoutPo carInoutPo); @RequestMapping(value = "/saveCarInoutFeeHistory", method = RequestMethod.POST) public int saveCarInoutFeeHistory(@RequestBody CarInoutFeeHistoryPo carInoutFeeHistoryPo); @RequestMapping(value = "/queryCarInoutFeeHistoryList", method = RequestMethod.POST) List<CarInoutFeeHistoryPo> queryCarInoutFeeHistoryList(@RequestBody CarInoutFeeHistoryPo carInoutFeeHistoryPo); @RequestMapping(value = "/updateCarInout", method = RequestMethod.POST) public int updateCarInout(@RequestBody CarInoutPo carInoutPo); java110-utils/src/main/java/com/java110/utils/constant/CommonConstant.java
@@ -47,7 +47,7 @@ /** * 鉴权token */ public final static String COOKIE_AUTH_TOKEN = "_java110_token_"; public final static String COOKIE_AUTH_TOKEN = "token"; public final static String DEFAULT_USER_PWD_SECRET = "@java110.com"; service-common/src/main/java/com/java110/common/cmd/carInout/SaveCarInoutFeeHistoryCmd.java
New file @@ -0,0 +1,84 @@ /* * Copyright 2017-2020 吴学文 and java110 team. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.java110.common.cmd.carInout; import com.alibaba.fastjson.JSONObject; import com.java110.core.annotation.Java110Cmd; import com.java110.core.annotation.Java110Transactional; import com.java110.core.context.ICmdDataFlowContext; import com.java110.core.event.cmd.Cmd; import com.java110.core.event.cmd.CmdEvent; import com.java110.core.factory.GenerateCodeFactory; import com.java110.core.log.LoggerFactory; import com.java110.intf.common.ICarInoutV1InnerServiceSMO; import com.java110.po.car.CarInoutFeeHistoryPo; import com.java110.po.car.CarInoutPo; import com.java110.utils.exception.CmdException; import com.java110.utils.util.Assert; import com.java110.utils.util.BeanConvertUtil; import com.java110.vo.ResultVo; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import java.util.Date; /** * 类表述:保存车辆进出补缴费用记录 * 服务编码:carInout.saveCarInout * 请求路劲:/app/carInout.SaveCarInout * add by 吴学文 at 2021-10-13 14:45:52 mail: 928255095@qq.com * open source address: https://gitee.com/wuxw7/MicroCommunity * 官网:http://www.homecommunity.cn * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下 * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行 */ @Java110Cmd(serviceCode = "carInout.saveCarInoutFeeHistory") public class SaveCarInoutFeeHistoryCmd extends Cmd { private static Logger logger = LoggerFactory.getLogger(SaveCarInoutFeeHistoryCmd.class); public static final String CODE_PREFIX_ID = "10"; @Autowired private ICarInoutV1InnerServiceSMO carInoutV1InnerServiceSMOImpl; @Override public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) { Assert.hasKeyAndValue(reqJson, "inoutId", "inoutId不能为空"); Assert.hasKeyAndValue(reqJson, "payAmount", "缴费金额不能为空"); Assert.hasKeyAndValue(reqJson, "primeRate", "缴费方式不能为空"); Assert.hasKeyAndValue(reqJson, "payTime", "缴费时间不能为空"); } @Override @Java110Transactional public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException { CarInoutFeeHistoryPo carInoutFeeHistoryPo = BeanConvertUtil.covertBean(reqJson, CarInoutFeeHistoryPo.class); carInoutFeeHistoryPo.setId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID)); int flag = carInoutV1InnerServiceSMOImpl.saveCarInoutFeeHistory(carInoutFeeHistoryPo); if (flag < 1) { throw new CmdException("缴费插入数据失败"); } //将车辆进出口表更新为补缴成功 CarInoutPo carInoutPo = new CarInoutPo(); carInoutPo.setInoutId(carInoutFeeHistoryPo.getInoutId()); carInoutPo.setState("100700"); carInoutV1InnerServiceSMOImpl.updateCarInout(carInoutPo); cmdDataFlowContext.setResponseEntity(ResultVo.success()); } } service-common/src/main/java/com/java110/common/dao/ICarInoutFeeHistoryServiceDao.java
New file @@ -0,0 +1,52 @@ /* * Copyright 2017-2020 吴学文 and java110 team. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.java110.common.dao; import com.java110.utils.exception.DAOException; import java.util.List; import java.util.Map; /** * 类表述: * add by 吴学文 at 2021-10-13 14:45:52 mail: 928255095@qq.com * open source address: https://gitee.com/wuxw7/MicroCommunity * 官网:http://www.homecommunity.cn * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下 * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行 */ public interface ICarInoutFeeHistoryServiceDao { /** * 保存 车辆进出场信息 * @param info * @throws DAOException DAO异常 */ int saveCarInoutFeeHistory(Map info) throws DAOException; /** * 查询车辆进出场补缴信息 * @param info bId 信息 * @throws DAOException DAO异常 */ List<Map> getCarInoutFeeHistory(Map info) throws DAOException; } service-common/src/main/java/com/java110/common/dao/impl/CarInoutFeeHistoryServiceDaoImpl.java
New file @@ -0,0 +1,80 @@ /* * Copyright 2017-2020 吴学文 and java110 team. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.java110.common.dao.impl; import com.java110.common.dao.ICarInoutFeeHistoryServiceDao; import com.java110.common.dao.ICarInoutV1ServiceDao; import com.java110.core.base.dao.BaseServiceDao; import com.java110.core.log.LoggerFactory; import com.java110.utils.exception.DAOException; import org.slf4j.Logger; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; /** * 类表述: * add by 吴学文 at 2021-10-13 14:45:52 mail: 928255095@qq.com * open source address: https://gitee.com/wuxw7/MicroCommunity * 官网:http://www.homecommunity.cn * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下 * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行 */ @Service("carInoutFeeHistoryDaoImpl") public class CarInoutFeeHistoryServiceDaoImpl extends BaseServiceDao implements ICarInoutFeeHistoryServiceDao { private static Logger logger = LoggerFactory.getLogger(CarInoutFeeHistoryServiceDaoImpl.class); /** * 保存车辆进出场信息 到 instance * @param info bId 信息 * @throws DAOException DAO异常 */ @Override public int saveCarInoutFeeHistory(Map info) throws DAOException { logger.debug("保存 saveCarInoutFeeHistory 入参 info : {}",info); int saveFlag = sqlSessionTemplate.insert("carInoutFeeHistoryDaoImpl.saveCarInoutFeeHistory",info); return saveFlag; } /** * 查询车辆进出场信息(instance) * @param info bId 信息 * @return List<Map> * @throws DAOException DAO异常 */ @Override public List<Map> getCarInoutFeeHistory(Map info) throws DAOException { logger.debug("查询 getCarInoutFeeHistory 入参 info : {}",info); List<Map> businessCarInoutInfos = sqlSessionTemplate.selectList("carInoutFeeHistoryDaoImpl.getCarInoutFeeHistory",info); return businessCarInoutInfos; } } service-common/src/main/java/com/java110/common/smo/impl/CarInoutV1InnerServiceSMOImpl.java
@@ -16,19 +16,19 @@ package com.java110.common.smo.impl; import com.java110.common.dao.ICarInoutFeeHistoryServiceDao; import com.java110.common.dao.ICarInoutV1ServiceDao; import com.java110.core.base.smo.BaseServiceSMO; import com.java110.dto.PageDto; import com.java110.dto.machine.CarInoutDto; import com.java110.intf.common.ICarInoutV1InnerServiceSMO; import com.java110.po.car.CarInoutFeeHistoryPo; import com.java110.po.car.CarInoutPo; import com.java110.utils.util.BeanConvertUtil; import com.java110.core.base.smo.BaseServiceSMO; import com.java110.dto.user.UserDto; import com.java110.dto.PageDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; /** @@ -44,6 +44,8 @@ @Autowired private ICarInoutV1ServiceDao carInoutV1ServiceDaoImpl; @Autowired private ICarInoutFeeHistoryServiceDao carInoutFeeHistoryServiceDao; @Override @@ -52,7 +54,19 @@ return saveFlag; } @Override @Override public int saveCarInoutFeeHistory(CarInoutFeeHistoryPo carInoutFeeHistoryPo) { int saveFlag = carInoutFeeHistoryServiceDao.saveCarInoutFeeHistory(BeanConvertUtil.beanCovertMap(carInoutFeeHistoryPo)); return saveFlag; } @Override public List<CarInoutFeeHistoryPo> queryCarInoutFeeHistoryList(@RequestBody CarInoutFeeHistoryPo carInoutFeeHistoryPo) { List<CarInoutFeeHistoryPo> carInoutFeeHistoryPoList = BeanConvertUtil.covertBeanList(carInoutFeeHistoryServiceDao.getCarInoutFeeHistory(BeanConvertUtil.beanCovertMap(carInoutFeeHistoryPo)), CarInoutFeeHistoryPo.class); return carInoutFeeHistoryPoList; } @Override public int updateCarInout(@RequestBody CarInoutPo carInoutPo) { int saveFlag = carInoutV1ServiceDaoImpl.updateCarInoutInfo(BeanConvertUtil.beanCovertMap(carInoutPo)); return saveFlag; service-community/src/main/java/com/java110/community/cmd/activities/ListActivitiessCmd.java
@@ -62,7 +62,7 @@ @Override public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) { Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含小区信息"); // Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含小区信息"); super.validatePageInfo(reqJson); } service-fee/src/main/java/com/java110/fee/bmo/feeDiscountRuleSpec/impl/ComputeFeeDiscountBMOImpl.java
@@ -66,8 +66,13 @@ feeDetailDto.setPayerObjId(payerObjId); feeDetailDto.setPayerObjType(payerObjType); //缴费开始时间为上月到期时间 feeDetailDto.setStartTime(DateUtil.getDateFromStringB(endTime)); feeDetailDto.setEndTime(DateUtil.getDateFromStringB(custEndTime)); try { feeDetailDto.setStartTime(DateUtil.getDateFromStringA(endTime)); feeDetailDto.setEndTime(DateUtil.getDateFromStringA(custEndTime)); }catch (Exception e){ feeDetailDto.setStartTime(DateUtil.getDateFromStringB(endTime)); feeDetailDto.setEndTime(DateUtil.getDateFromStringB(custEndTime)); } if(Double.parseDouble(feeDetailDto.getCycles())==105){ double cycle = (DateUtil.dayCompare( feeDetailDto.getStartTime(), service-fee/src/main/java/com/java110/fee/bmo/impl/QueryOweFeeImpl.java
@@ -33,6 +33,9 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.*; @Service @@ -224,7 +227,6 @@ Integer.parseInt(feeDto.getDecimalPlace()) ) ); if (!StringUtil.isEmpty(custEndTime)) { Date date = DateUtil.getDateFromStringB(custEndTime); computeFeeSMOImpl.dealRentRateCustEndTime(feeDto, date); @@ -265,6 +267,53 @@ apiFeeDataVo.setEndTime(apiFeeDataVo.getEndTime() == null ? null : apiFeeDataVo.getEndTime().split(" ")[0]); apiFeeDataVo.setMaxEndTime(apiFeeDataVo.getMaxEndTime() == null ? null : apiFeeDataVo.getMaxEndTime().split(" ")[0]); apiFeeDataVo.setDeadlineTime(apiFeeDataVo.getDeadlineTime() == null ? null : apiFeeDataVo.getDeadlineTime().split(" ")[0]); if (cycel != null && !"105".equals(cycel)) { // 修正字符串比较方式 Date date = feeDto.getEndTime(); if (date != null) { // 增加空值检查 LocalDateTime localDateTime; // 处理 java.sql.Date 不支持 toInstant() 的问题 if (date instanceof java.sql.Date) { // 对于 sql.Date,先转换为 LocalDate 再转为 LocalDateTime LocalDate localDate = ((java.sql.Date) date).toLocalDate(); localDateTime = localDate.atStartOfDay(); } else { // 对于 util.Date,正常转换 localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); } try { // 增加x个月 int monthsToAdd = Integer.parseInt(cycel); LocalDateTime newLocalDateTime = localDateTime.plusMonths(monthsToAdd).minusDays(1); // 转换回Date Date newDate = Date.from(newLocalDateTime.atZone(ZoneId.systemDefault()).toInstant()); apiFeeDataVo.setPayStartDate(feeDto.getEndTime()); apiFeeDataVo.setPayEndDate(newDate); } catch (NumberFormatException e) { // 处理cycel无法转换为整数的异常 // 可以根据实际需求记录日志或抛出自定义异常 e.printStackTrace(); } } }else{ apiFeeDataVo.setPayStartDate(DateUtil.getDateFromStringB(feeDto.getCustomStartTime())); // 获取原始日期 Date originalDate = DateUtil.getDateFromStringB(feeDto.getCustomEndTime()); if (originalDate != null) { // 创建Calendar实例并设置日期 Calendar calendar = Calendar.getInstance(); calendar.setTime(originalDate); // 减一天 calendar.add(Calendar.DAY_OF_MONTH, -1); // 获取处理后的日期 Date dateMinusOneDay = calendar.getTime(); apiFeeDataVo.setPayEndDate(dateMinusOneDay); } } return ResultVo.createResponseEntity(apiFeeDataVo); } service-fee/src/main/java/com/java110/fee/cmd/fee/ListFeeObjCmd.java
@@ -9,6 +9,7 @@ import com.java110.fee.bmo.IQueryOweFee; import com.java110.utils.exception.CmdException; import com.java110.utils.util.Assert; import com.java110.utils.util.DateUtil; import com.java110.utils.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; @@ -36,11 +37,13 @@ } if (reqJson.containsKey("custEndTime") && !StringUtil.isEmpty(reqJson.getString("custEndTime"))) { feeDto.setCustEndTime(reqJson.getString("custEndTime")); feeDto.setPayEndDate(DateUtil.getDateFromStringB(feeDto.getCustomEndTime())); } if("105".equals(reqJson.getString("cycle"))){ feeDto.setCustomStartTime(reqJson.getString("customStartTime")); feeDto.setCustomEndTime(reqJson.getString("customEndTime")); feeDto.setPayEndDate(DateUtil.getDateFromStringB(feeDto.getCustomEndTime())); } ResponseEntity<String> result = queryOweFeeImpl.listFeeObj(feeDto); service-fee/src/main/java/com/java110/fee/cmd/fee/ReportFeeCmd.java
@@ -268,7 +268,7 @@ doubles[4] = doubleUse(((BigDecimal) map.get("折扣金额")).doubleValue()); int inde = 0; for (int in : arr){ if(in < currentYear){ if(in < currentYear && (in+"").equals(map.get("费用所属年份"))){ inde++; doubles[in - startYear + 5] = doubleUse(((BigDecimal) map.get(i + "年实缴")).doubleValue()); } service-job/src/main/java/com/java110/job/cmd/importCarInout/QueryCarInout.java
@@ -10,6 +10,8 @@ import com.java110.dto.machine.CarInoutDto; import com.java110.dto.user.UserDownloadFileDto; import com.java110.intf.common.ICarInoutInnerServiceSMO; import com.java110.intf.common.ICarInoutV1InnerServiceSMO; import com.java110.po.car.CarInoutFeeHistoryPo; import com.java110.po.car.CarInoutPo; import com.java110.utils.exception.CmdException; import com.java110.utils.util.BeanConvertUtil; @@ -19,7 +21,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.text.ParseException; import java.util.List; @@ -28,6 +32,8 @@ @Autowired private ICarInoutInnerServiceSMO iCarInoutInnerServiceSMOImpl; @Resource private ICarInoutV1InnerServiceSMO carInoutV1InnerServiceSMOImpl; @Override public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException { @@ -42,6 +48,14 @@ carInoutDto.setTotal(i); carInoutDto.setRecords((int) Math.ceil((double) i / (double) reqJson.getInteger("row"))); List<ApiCarInoutDataVo> carInoutDtos = iCarInoutInnerServiceSMOImpl.queryCarInouts2(carInoutDto); for(ApiCarInoutDataVo apiCarInoutDataVo : carInoutDtos){ CarInoutFeeHistoryPo carInoutFeeHistoryPo = new CarInoutFeeHistoryPo(); carInoutFeeHistoryPo.setInoutId(apiCarInoutDataVo.getInoutId()); List<CarInoutFeeHistoryPo> list = carInoutV1InnerServiceSMOImpl.queryCarInoutFeeHistoryList(carInoutFeeHistoryPo); if(!CollectionUtils.isEmpty(list)){ apiCarInoutDataVo.setCarInoutFeeHistory(list.get(0)); } } i = carInoutDtos.size(); ApiCarInoutVo carInoutVo = new ApiCarInoutVo(); service-job/src/main/java/com/java110/job/importData/adapt/ImportCarHistoryFeeDetailQueueDataAdapt.java
@@ -1,13 +1,16 @@ package com.java110.job.importData.adapt; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.java110.core.factory.GenerateCodeFactory; import com.java110.dto.fee.FeeAttrDto; import com.java110.dto.fee.FeeConfigDto; import com.java110.dto.fee.FeeDetailDto; import com.java110.dto.fee.FeeDto; import com.java110.dto.importData.ImportRoomFee; import com.java110.dto.log.AssetImportLogDetailDto; import com.java110.dto.owner.OwnerRoomRelDto; import com.java110.fee.api.FeeDiscountApi; import com.java110.intf.community.IRoomInnerServiceSMO; import com.java110.intf.fee.*; import com.java110.intf.user.IOwnerCarInnerServiceSMO; @@ -17,14 +20,17 @@ import com.java110.po.fee.FeeAttrPo; import com.java110.po.fee.PayFeeDetailPo; import com.java110.po.fee.PayFeePo; import com.java110.po.payFee.PayFeeDetailDiscountPo; import com.java110.utils.constant.StatusConstant; import com.java110.utils.util.BeanConvertUtil; import com.java110.utils.util.DateUtil; import com.java110.utils.util.ListUtil; import com.java110.utils.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import java.text.ParseException; import java.util.ArrayList; import java.util.Calendar; import java.util.List; @@ -37,6 +43,8 @@ @Service("importCarHistoryFeeDetailQueueData") public class ImportCarHistoryFeeDetailQueueDataAdapt extends DefaultImportData implements IImportDataAdapt { @Autowired private IPayFeeDetailDiscountNewV1InnerServiceSMO payFeeDetailDiscountNewV1InnerServiceSMOImpl; @Autowired private IImportFeeDetailInnerServiceSMO importFeeDetailInnerServiceSMOImpl; @@ -50,6 +58,8 @@ @Autowired private IFeeInnerServiceSMO feeInnerServiceSMOImpl; @Autowired private FeeDiscountApi feeDiscountApi; @Autowired private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl; @@ -139,7 +149,6 @@ feeDto.setPayerObjId(importRoomFee.getCarId()); feeDto.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CAR); List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto); List<PayFeePo> payFeePos = null; if (ListUtil.isNull(feeDtos)) { throw new IllegalArgumentException("不存在对应的缴费记录"); @@ -180,6 +189,9 @@ } for (FeeDto tmpFeeDto : feeDtos) { // if(tmpFeeDto.getEndTime() < importRoomFee.){ // // } doImportFeeDetail(tmpFeeDto, importRoomFee); } @@ -224,7 +236,50 @@ payFeeDetailPo.setPayableAmount(importRoomFee.getAmount()); payFeeDetailPo.setPayOrderId(payFeeDetailPo.getPayOrderId() !=null ? payFeeDetailPo.getPayOrderId() : importRoomFee.getRoomId()); payFeeDetailPo.setbId(importRoomFee.getBatchId()); PayFeeDetailDiscountPo payFeeDetailDiscount = new PayFeeDetailDiscountPo(); ResponseEntity<String> resultVo = null; try { resultVo = feeDiscountApi.computeFeeDiscount(tmpFeeDto.getFeeId(), tmpFeeDto.getCommunityId(), 105, importRoomFee.getPayObjId(), tmpFeeDto.getPayerObjType(), importRoomFee.getEndTime(), importRoomFee.getEndTime(), importRoomFee.getStartTime(), 1, 20); } catch (ParseException e) { throw new RuntimeException(e); } // 2. 从 ResultVo 中获取 data 并强转为目标类型 if (resultVo != null) { // 假设 data 字段存储的是 List<ComputeDiscountDto> JSONArray data = (JSONArray) JSONObject.parseObject(resultVo.getBody()).get("data"); if(data.size() > 0) { JSONObject o = (JSONObject) data.get(0); String discountPrice = o.get("discountPrice").toString(); String discountId = o.get("discountId").toString(); payFeeDetailPo.setDiscountAmount(discountPrice); payFeeDetailPo.setReceivableAmount((Double.parseDouble(payFeeDetailPo.getReceivedAmount()) + Double.parseDouble(payFeeDetailPo.getDiscountAmount()))+""); payFeeDetailDiscount.setDiscountId(discountId); payFeeDetailDiscount.setDiscountPrice(discountPrice); } } int saved = feeDetailInnerServiceSMOImpl.saveFeeDetail(payFeeDetailPo); FeeDetailDto feeDetailDto = new FeeDetailDto(); feeDetailDto.setDetailId(payFeeDetailPo.getDetailId()); List<FeeDetailDto> feeDtos = feeDetailInnerServiceSMOImpl.queryFeeDetails(feeDetailDto); if (payFeeDetailDiscount.getDiscountId() != null) { payFeeDetailDiscount.setDetailId(payFeeDetailPo.getDetailId()); payFeeDetailDiscount.setStatusCd("0"); payFeeDetailDiscount.setCommunityId(feeDtos.get(0).getCommunityId()); payFeeDetailDiscount.setFeeId(feeDtos.get(0).getFeeId()); payFeeDetailDiscount.setDetailDiscountId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_discountId)); } payFeeDetailDiscountNewV1InnerServiceSMOImpl.savePayFeeDetailDiscountNew(payFeeDetailDiscount); if (saved < 1) { return; @@ -233,7 +288,6 @@ if (tmpFeeDto.getEndTime().getTime() >= DateUtil.getDateFromStringB(importRoomFee.getEndTime()).getTime()) { return; } //如果结束时间小于 缴费结束时间则延期 PayFeePo payFeePo = new PayFeePo(); payFeePo.setCommunityId(importRoomFee.getCommunityId()); @@ -243,9 +297,6 @@ if (FeeDto.FEE_FLAG_ONCE.equals(tmpFeeDto.getFeeFlag())) { payFeePo.setState(FeeDto.STATE_FINISH); } feeInnerServiceSMOImpl.updateFee(payFeePo); } } service-job/src/main/java/com/java110/job/importData/adapt/ImportHistoryFeeDetailQueueDataAdapt.java
@@ -6,13 +6,11 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.java110.core.factory.GenerateCodeFactory; import com.java110.dto.PropertyWhiteListFlowDto; import com.java110.dto.fee.ComputeDiscountDto; import com.java110.dto.fee.FeeAttrDto; import com.java110.dto.fee.FeeConfigDto; import com.java110.dto.fee.FeeDto; import com.java110.dto.fee.*; import com.java110.dto.importData.ImportRoomFee; import com.java110.dto.log.AssetImportLogDetailDto; import com.java110.dto.owner.OwnerRoomRelDto; import com.java110.dto.payFee.PayFeeDetailDiscountDto; import com.java110.dto.room.RoomDto; import com.java110.dto.system.ComponentValidateResult; import com.java110.fee.api.FeeDiscountApi; @@ -29,6 +27,7 @@ import com.java110.po.fee.FeeAttrPo; import com.java110.po.fee.PayFeeDetailPo; import com.java110.po.fee.PayFeePo; import com.java110.po.payFee.PayFeeDetailDiscountPo; import com.java110.utils.constant.StatusConstant; import com.java110.utils.exception.DAOException; import com.java110.utils.util.BeanConvertUtil; @@ -92,6 +91,8 @@ @Autowired private ImportCarHistoryFeeDetailQueueDataAdapt importCarHistoryFeeDetailQueueDataAdapt; @Autowired private IPayFeeDetailDiscountNewV1InnerServiceSMO payFeeDetailDiscountNewV1InnerServiceSMOImpl; @Override public void importData(List<AssetImportLogDetailDto> assetImportLogDetailDtos) { @@ -368,6 +369,9 @@ throw new IllegalArgumentException("该初始化缴费记录信息中包含多个费用记录"+importRoomFee.getFeeName()+startDate+endDate); } for (FeeDto tmpFeeDto : feeDtos) { if(DateUtil.getDateFromStringB(importRoomFee.getEndTime()).getTime() > tmpFeeDto.getEndTime().getTime()){ throw new IllegalArgumentException("该费用记录结束时间大于费用记录最大缴费时间"); } doImportFeeDetail(tmpFeeDto, importRoomFee); } @@ -391,7 +395,6 @@ PayFeeDetailPo payFeeDetailPo = new PayFeeDetailPo(); payFeeDetailPo.setCommunityId(importRoomFee.getCommunityId()); payFeeDetailPo.setReceivedAmount(importRoomFee.getAmount()); payFeeDetailPo.setReceivableAmount(importRoomFee.getAmount()); payFeeDetailPo.setCycles(importRoomFee.getCycle()); payFeeDetailPo.setPrimeRate("1.0"); payFeeDetailPo.setFeeId(tmpFeeDto.getFeeId()); @@ -401,27 +404,41 @@ payFeeDetailPo.setCreateTime(importRoomFee.getCreateTime()); payFeeDetailPo.setState("1400"); payFeeDetailPo.setCashierName(importRoomFee.getStaffName()); payFeeDetailPo.setPayableAmount(importRoomFee.getAmount()); payFeeDetailPo.setPayOrderId(importRoomFee.getPayObjId()); payFeeDetailPo.setB("T"); double cycle = (DateUtil.dayCompare( DateUtil.getDateFromStringA(payFeeDetailPo.getStartTime()), DateUtil.getDateFromStringA(payFeeDetailPo.getEndTime()) )); payFeeDetailPo.setCycles(cycle+""); int count = feeDetailInnerServiceSMOImpl.queryFeeDetailsCountByVo(payFeeDetailPo); payFeeDetailPo.setPayableAmount(importRoomFee.getAmount()); if (count > 0) { throw new IllegalStateException("重复的缴费记录"); } PayFeeDetailDiscountPo payFeeDetailDiscount = new PayFeeDetailDiscountPo(); try { ResponseEntity<String> resultVo = feeDiscountApi.computeFeeDiscount(tmpFeeDto.getFeeId(), tmpFeeDto.getCommunityId(), Double.parseDouble(importRoomFee.getCycle()), importRoomFee.getPayObjId(), ResponseEntity<String> resultVo = feeDiscountApi.computeFeeDiscount(tmpFeeDto.getFeeId(), tmpFeeDto.getCommunityId(), 105, importRoomFee.getPayObjId(), tmpFeeDto.getPayerObjType(), importRoomFee.getEndTime(), importRoomFee.getEndTime(), importRoomFee.getStartTime(), 1, 20); // 2. 从 ResultVo 中获取 data 并强转为目标类型 if (resultVo != null) { // 假设 data 字段存储的是 List<ComputeDiscountDto> JSONArray data = (JSONArray) JSONObject.parseObject(resultVo.getBody()).get("data"); JSONObject o = (JSONObject) data.get(0); String discountPrice = o.get("discountPrice").toString(); String discountId = o.get("discountId").toString(); if(data.size() > 0) { JSONObject o = (JSONObject) data.get(0); String discountPrice = o.get("discountPrice").toString(); String discountId = o.get("discountId").toString(); payFeeDetailPo.setDiscountAmount(discountPrice); payFeeDetailPo.setReceivableAmount((Double.parseDouble(payFeeDetailPo.getReceivedAmount()) + Double.parseDouble(payFeeDetailPo.getDiscountAmount()))+""); payFeeDetailDiscount.setDiscountId(discountId); payFeeDetailDiscount.setDiscountPrice(discountPrice); } } } catch (ParseException e) { throw new RuntimeException(e); @@ -433,6 +450,21 @@ payFeeDetailPo.setOpenInvoice(importRoomFee.getOpenInv()); } int saved = feeDetailInnerServiceSMOImpl.saveFeeDetail(payFeeDetailPo); FeeDetailDto feeDetailDto = new FeeDetailDto(); feeDetailDto.setDetailId(payFeeDetailPo.getDetailId()); List<FeeDetailDto> feeDtos = feeDetailInnerServiceSMOImpl.queryFeeDetails(feeDetailDto); if (payFeeDetailDiscount.getDiscountId() != null) { payFeeDetailDiscount.setDetailId(payFeeDetailPo.getDetailId()); payFeeDetailDiscount.setStatusCd("0"); payFeeDetailDiscount.setCommunityId(feeDtos.get(0).getCommunityId()); payFeeDetailDiscount.setFeeId(feeDtos.get(0).getFeeId()); payFeeDetailDiscount.setDetailDiscountId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_discountId)); } payFeeDetailDiscountNewV1InnerServiceSMOImpl.savePayFeeDetailDiscountNew(payFeeDetailDiscount); if (saved < 1) { return; @@ -456,9 +488,8 @@ payFeePo.setFeeId(tmpFeeDto.getFeeId()); String[] arr = importRoomFee.getEndTime().split(" "); if (arr.length >= 2 &&arr[1].equals("23:59:59")){ importRoomFee.setEndTime(arr[0] + " 00:00:00"); payFeePo.setEndTime(DateUtil.getNextSecTime(importRoomFee.getEndTime())); } payFeePo.setEndTime(DateUtil.getNextSecTime(importRoomFee.getEndTime())); if (FeeDto.FEE_FLAG_ONCE.equals(tmpFeeDto.getFeeFlag())) { payFeePo.setState(FeeDto.STATE_FINISH); } service-user/src/main/java/com/java110/user/cmd/user/UserLogoutServiceCmd.java
@@ -21,7 +21,7 @@ @Override public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException { ResponseEntity responseEntity= null; String token = CmdContextUtils.getTokenId(context); String token = JSONObject.parseObject(context.getReqData()).get("token").toString(); try { //删除 token 信息 AuthenticationFactory.deleteToken(token); springboot/src/main/resources/application.yml
@@ -1,6 +1,6 @@ spring: profiles: active: debug active: devlocal # docker build -t lx .