浏览代码

收据修改

wangli 4 年之前
父节点
当前提交
1bf2dc778f

+ 3 - 0
smart-city-platform/src/main/java/com/bz/smart_city/entity/Customer.java

@@ -62,4 +62,7 @@ public class Customer implements Serializable {
 
     @ApiModelProperty(value="子客户数量")
     private Integer childrenNum;
+
+    @ApiModelProperty(value="收据类型:0:默认 1:开鲁 2:盖州")
+    private Integer payInvoiceType;
 }

+ 80 - 19
smart-city-platform/src/main/java/com/bz/smart_city/service/impl/pay/PayInvoiceServiceImpl.java

@@ -167,7 +167,7 @@ public class PayInvoiceServiceImpl implements PayinvoiceService {
      * @param payseriesno
      * @return
      */
-    public PrintInvoiceData getPrintDataOfTrans2(String payseriesno){
+    public PrintInvoiceData getPrintDataOfTrans(String payseriesno){
         LoginUser loginUser=UserUtil.getCurrentUser();
         PrintInvoiceData printInvoiceData=payInvoiceMapper.getPrintDataOfTran(payseriesno,loginUser.getSiteId(),loginUser.getCustomerId());
         if(printInvoiceData!=null){
@@ -192,33 +192,89 @@ public class PayInvoiceServiceImpl implements PayinvoiceService {
         return printInvoiceData;
     }
 
-    public PrintInvoiceData getPrintDataOfTrans(String payseriesno){
-        LoginUser loginUser=UserUtil.getCurrentUser();
-        PrintInvoiceData printInvoiceData=payInvoiceMapper.getPrintDataOfTran(payseriesno,loginUser.getSiteId(),loginUser.getCustomerId());
+    public PrintInvoiceData getPrintDataOfTransKailu(String payseriesno){
+        PrintInvoiceData printInvoiceData=payInvoiceMapper.countTransactiondetails(payseriesno);
+        PrintInvoiceData printDataKailu;
         if(printInvoiceData!=null){
-            PrintInvoiceData printDataKailu = payInvoiceMapper.getPrintDataKailu(printInvoiceData.getAccountId());
-
-            printInvoiceData.setWaterPropertyName(printDataKailu.getWaterPropertyName());
-            printInvoiceData.setMetercode(printDataKailu.getMetercode());
-            printInvoiceData.setEleno(printDataKailu.getEleno());
-            printInvoiceData.setPrice1(printDataKailu.getPrice1());
-            printInvoiceData.setPrice4(printDataKailu.getPrice4());
-
+            printDataKailu = payInvoiceMapper.getPrintDataKailu(printInvoiceData.getAccountId());
+            printDataKailu.setTransamount(printInvoiceData.getTransamount());
+            printDataKailu.setCreateBy(printInvoiceData.getCreateBy());
+            printDataKailu.setRemaining(printInvoiceData.getRemaining());
+            printDataKailu.setLastRemaining(printInvoiceData.getLastRemaining());
             DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
             if(printInvoiceData.getCreateDate()!=null){
-                printInvoiceData.setPaydate(df.format(printInvoiceData.getCreateDate()));
+                printDataKailu.setPaydate(df.format(printInvoiceData.getCreateDate()));
             }else{
-                printInvoiceData.setPaydate(df.format(LocalDateTime.now()));
+                printDataKailu.setPaydate(df.format(LocalDateTime.now()));
             }
         }else{
             throw new ServiceException(ResultStatus.OPERATE_RECORD_NOT_EXIT);
         }
-        printInvoiceData.setPrintType(1);
-        printInvoiceData.setPayseriesno(payseriesno);
-        printInvoiceData.setInvoiceNo(
+        printDataKailu.setPrintType(1);
+        printDataKailu.setPayseriesno(payseriesno);
+        printDataKailu.setInvoiceNo(
                 DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS").format(LocalDateTime.now())+""+(int)(Math.random()*1000));
-        return printInvoiceData;
+        return printDataKailu;
+    }
+
+    public PrintInvoiceData getPrintDataOfTransGaizhou(String payseriesno){
+
+        //查询交易
+        PrintInvoiceData printInvoiceData=payInvoiceMapper.countTransactiondetails(payseriesno);
+        if(printInvoiceData == null){
+            //没有查询到交易信息
+            throw new ServiceException(ResultStatus.OPERATE_RECORD_NOT_EXIT);
+        }
+        BigInteger accountId=printInvoiceData.getAccountId();
+        //查询账期信息
+        PrintInvoiceData printInvoiceDataPeriod=payInvoiceMapper.getAmountPeriod(payseriesno);
+        Integer maxPeriod;
+        Integer minPeriod;
+        if(printInvoiceDataPeriod != null){
+            maxPeriod=printInvoiceDataPeriod.getMaxPeriod();
+            minPeriod=printInvoiceDataPeriod.getMinPeriod();
+        }else{
+            maxPeriod=printInvoiceData.getMinPeriod();
+            minPeriod=printInvoiceData.getMinPeriod();
+        }
+        //查询水量应收信息
+        PrintInvoiceData printInvoiceDataReceivablefee=payInvoiceMapper.getAmountInfoAndReceivablefee(accountId,maxPeriod,minPeriod);
+        //查询客户基础信息
+        PrintInvoiceData printInvoiceDataAccountBaseInfo=payInvoiceMapper.getAccountBaseInfo(accountId);
+
+        //拼装数据
+        printInvoiceDataAccountBaseInfo.setReading(printInvoiceDataReceivablefee.getReading());
+        printInvoiceDataAccountBaseInfo.setRecorddate(printInvoiceDataReceivablefee.getRecorddate());
+        printInvoiceDataAccountBaseInfo.setLastreading(printInvoiceDataReceivablefee.getLastreading());
+        printInvoiceDataAccountBaseInfo.setLastrecorddate(printInvoiceDataReceivablefee.getLastrecorddate());
+        printInvoiceDataAccountBaseInfo.setPayamount(printInvoiceDataReceivablefee.getPayamount());
+        printInvoiceDataAccountBaseInfo.setReceivablefee(printInvoiceDataReceivablefee.getReceivablefee());
+        if(printInvoiceData.getRemaining().compareTo(BigDecimal.ZERO) == 1 ){
+            printInvoiceDataAccountBaseInfo.setRemaining(printInvoiceData.getRemaining());
+        }
+        printInvoiceDataAccountBaseInfo.setCreateBy(printInvoiceData.getCreateBy());
+        printInvoiceDataAccountBaseInfo.setCreateDate(printInvoiceData.getCreateDate());
+        printInvoiceDataAccountBaseInfo.setTransamount(printInvoiceData.getTransamount());
+
+        BigDecimal lastRemaining = printInvoiceDataAccountBaseInfo.getRemaining()
+                                    .add(printInvoiceDataAccountBaseInfo.getReceivablefee())
+                                    .subtract(printInvoiceDataAccountBaseInfo.getTransamount());
+        printInvoiceDataAccountBaseInfo.setLastRemaining(lastRemaining);
+
+        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        if(printInvoiceData.getCreateDate()!=null){
+            printInvoiceDataAccountBaseInfo.setPaydate(df.format(printInvoiceData.getCreateDate()));
+        }else{
+            printInvoiceDataAccountBaseInfo.setPaydate(df.format(LocalDateTime.now()));
+        }
+
+        printInvoiceDataAccountBaseInfo.setPrintType(1);
+        printInvoiceDataAccountBaseInfo.setPayseriesno(payseriesno);
+        printInvoiceDataAccountBaseInfo.setInvoiceNo(
+                DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS").format(LocalDateTime.now())+""+(int)(Math.random()*1000));
+        return printInvoiceDataAccountBaseInfo;
     }
+
     /**
      * 打印收据——缴纳欠费(transtype == null || (transtype ==2 ||transtype ==4))
      * @param payseriesno
@@ -228,7 +284,7 @@ public class PayInvoiceServiceImpl implements PayinvoiceService {
     public PrintInvoiceData getPrintDataOfReceived(String payseriesno){
         LoginUser loginUser=UserUtil.getCurrentUser();
         //收费区间信息和抄表信息
-        PrintInvoiceData printInvoiceData=payInvoiceMapper.getDateRangeInfoPrint(payseriesno,loginUser.getSiteId(),loginUser.getCustomerId());
+        PrintInvoiceData printInvoiceData=payInvoiceMapper.getDateRangeInfoPrint(payseriesno);
         DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         if(printInvoiceData.getCreateDate()!=null){
             printInvoiceData.setPaydate(df.format(printInvoiceData.getCreateDate()));
@@ -297,4 +353,9 @@ public class PayInvoiceServiceImpl implements PayinvoiceService {
         payInvoiceMapper.deleteReceivedPrint(id);
         payInvoiceMapper.cancelPayInvoice(id,LocalDateTime.now(),BigInteger.valueOf(loginUser.getId()));
     }
+
+    public PrintInvoiceData getPayInvoiceType(String payseriesno){
+        return payInvoiceMapper.getPayInvoiceType(payseriesno);
+    }
+
 }

+ 11 - 2
smart-city-platform/src/main/java/com/bz/smart_city/service/pay/PayinvoiceService.java

@@ -52,13 +52,15 @@ public interface PayinvoiceService {
     void savePrintInfo(String payseriesno,String invoiceno);
 
     /**
-     * 打印收据——仅充值(payway==4 && transtype ==1)
+     * 打印收据——仅充值
      * @param payseriesno
      * @return
      */
-    PrintInvoiceData getPrintDataOfTrans2(String payseriesno);
     PrintInvoiceData getPrintDataOfTrans(String payseriesno);
 
+    PrintInvoiceData getPrintDataOfTransKailu(String payseriesno);
+
+    PrintInvoiceData getPrintDataOfTransGaizhou(String payseriesno);
     /**
      * 打印收据——缴纳欠费(transtype == null || (transtype ==2 ||transtype ==4))
      * @param payseriesno
@@ -78,4 +80,11 @@ public interface PayinvoiceService {
      * @param id
      */
     void cancelPrintInfo(BigInteger id);
+
+    /**
+     * 获取票据打印类型
+     * @param payseriesno
+     * @return
+     */
+    PrintInvoiceData getPayInvoiceType(String payseriesno  );
 }

+ 18 - 6
smart-city-platform/src/main/resources/mapper/CustomerMapper.xml

@@ -20,6 +20,7 @@
         <result column="update_by" property="updateBy" jdbcType="VARCHAR"/>
         <result column="parent_id" property="parentId" jdbcType="INTEGER"/>
         <result column="children_num" property="childrenNum" jdbcType="INTEGER"/>
+        <result column="pay_invoice_type" property="payInvoiceType" jdbcType="INTEGER"/>
     </resultMap>
 
     <!--auto generated Code-->
@@ -40,7 +41,8 @@
         create_by,
         update_by,
         parent_id,
-        children_num
+        children_num,
+        pay_invoice_type
     </sql>
 
     <!--auto generated Code-->
@@ -62,7 +64,8 @@
             create_by,
             update_by,
             parent_id,
-            children_num
+            children_num,
+            pay_invoice_type
         ) VALUES (
             #{customer.id,jdbcType=INTEGER},
             #{customer.siteId,jdbcType=INTEGER},
@@ -80,7 +83,8 @@
             #{customer.createBy,jdbcType=VARCHAR},
             #{customer.updateBy,jdbcType=VARCHAR},
             #{customer.parentId,jdbcType=INTEGER},
-            #{customer.childrenNum,jdbcType=INTEGER}
+            #{customer.childrenNum,jdbcType=INTEGER},
+            #{customer.payInvoiceType,jdbcType=INTEGER}
         )
     </insert>
 
@@ -105,6 +109,9 @@
             <if test="customer.updateBy!=null"> update_by,</if>
             <if test="customer.parentId!=null"> parent_id,</if>
             <if test="customer.childrenNum!=null"> children_num,</if>
+            <if test="customer.childrenNum!=null"> children_num,</if>
+            <if test="customer.childrenNum!=null"> children_num,</if>
+            <if test="customer.payInvoiceType!=null"> pay_invoice_type,</if>
         </trim>
         VALUES
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -142,6 +149,8 @@
             </if>
             <if test="customer.childrenNum!=null">#{customer.childrenNum,jdbcType=INTEGER},
             </if>
+            <if test="customer.payInvoiceType!=null">#{customer.pay_invoice_type,jdbcType=INTEGER},
+            </if>
         </trim>
     </insert>
 
@@ -164,7 +173,8 @@
             create_by,
             update_by,
             parent_id,
-            children_num
+            children_num,
+            pay_invoice_type
         )VALUES
         <foreach collection="customers" item="customer" index="index" separator=",">
             (
@@ -184,7 +194,8 @@
             #{customer.createBy,jdbcType=VARCHAR},
             #{customer.updateBy,jdbcType=VARCHAR},
             #{customer.parentId,jdbcType=INTEGER},
-            #{customer.childrenNum,jdbcType=INTEGER}
+            #{customer.childrenNum,jdbcType=INTEGER},
+            #{customer.payInvoiceType,jdbcType=INTEGER}
             )
         </foreach>
     </insert>
@@ -208,7 +219,8 @@
             <if test="customer.createBy != null"> create_by= #{customer.createBy,jdbcType=VARCHAR},</if>
             <if test="customer.updateBy != null"> update_by= #{customer.updateBy,jdbcType=VARCHAR},</if>
             <if test="customer.parentId != null"> parent_id= #{customer.parentId,jdbcType=INTEGER},</if>
-            <if test="customer.childrenNum != null"> children_num= #{customer.childrenNum,jdbcType=INTEGER}</if>
+            <if test="customer.childrenNum != null"> children_num= #{customer.childrenNum,jdbcType=INTEGER},</if>
+            <if test="customer.payInvoiceType != null"> pay_invoice_type= #{customer.payInvoiceType,jdbcType=INTEGER}</if>
         </set>
         WHERE id = #{customer.id,jdbcType=INTEGER}
     </update>

+ 110 - 3
smart-city-platform/src/main/resources/mapper/pay/PayInvoiceMapper.xml

@@ -55,6 +55,7 @@
         select
         a.id,
         a.invoiceno as "invoiceno",
+        a.account_id as "accountId",
         a.accountnumber as "accountnumber",
         a.accountname as "accountname",
         a.invoiceamount as "invoiceamount",
@@ -72,6 +73,7 @@
         select
         a.id,
         a.invoiceno as "invoiceno",
+        a.account_id as "accountId",
         a.accountnumber as "accountnumber",
         a.accountname as "accountname",
         a.invoiceamount as "invoiceamount",
@@ -178,22 +180,29 @@
             ,account.accountnumber
             ,account.address
             ,u.name AS "createBy"
+            ,a.year
+            ,a.month
             ,(select  customer_name from sc_customer where id=#{customerId}) as "customerName"
         from pay_pay_transactiondetails a
         left join pay_base_account account on account.id=a.account_id
         left join sc_user u on u.id=a.create_by
         where a.payseriesno =#{payseriesno} and a.site_id=#{siteId} and a.customer_id=#{customerId}
-            and a.canceledrecord_id is null and a.iscanceled=0
+            and a.canceledrecord_id is null and a.iscanceled=0 and payway != 5
     </select>
 
     <select id="getPrintDataKailu" resultType="com.bz.smart_city.dto.pay.payfee.PrintInvoiceData">
      select
             d.water_meter_no as eleno
+            ,account.id AS "accountId"
+            ,account.name AS "accountname"
+            ,account.accountnumber
+            ,account.address
             ,c.metercode
             ,p.name as waterPropertyName
             ,p.price1 as price1
             ,p.price4 as price4
         from pay_base_customerandmeterrela c
+        left join pay_base_account account on account.id=c.account_id
         left join sc_device d on c.watermeter_id=d.id
         left join (
                 select
@@ -229,12 +238,13 @@
             max(amount.reading) as "reading",
             min(amount.lastreading) as "lastreading",
             max(reced.create_date) as "createDate",
+            sum(amount.payamount) as "payamount",
             (select name from sc_user where id=max(reced.create_by)) as "createBy",
-            (select  customer_name from sc_customer where id=#{customerId}) as "customerName"
+            (select  customer_name from sc_customer where id=max(reced.customer_id)) as "customerName"
         from pay_pay_received reced
         left join pay_pay_receivable rece on reced.receivable_id=rece.id
         left join pay_amount_waterusedamount amount on amount.id=rece.usedamount_id
-        where reced.payseriesno=#{payseriesno} and reced.site_id=#{siteId} and reced.customer_id=#{customerId}
+        where reced.payseriesno=#{payseriesno}
         group by amount.account_id
 
     </select>
@@ -344,4 +354,101 @@
         where id=#{id}
 
     </update>
+
+
+    <select id="countTransactiondetails" resultType="com.bz.smart_city.dto.pay.payfee.PrintInvoiceData">
+         select
+            account_id as "accountId"
+            ,max(minPeriod) minPeriod
+            ,max(remaining)  remaining
+            ,max(lastRemaining)	 lastRemaining
+            ,max(createBy) createBy
+            ,max(createDate)  createDate
+            ,sum(transamount) transamount
+        from (
+            select
+                account_id
+                ,max(year*12 + month ) minPeriod
+                ,max(lastrecreamaing)  remaining
+                ,max(remaining)	 lastRemaining
+                ,(select u.name from sc_user u where id = max(t.create_by)) createBy
+                ,max(create_date)  createDate
+                ,sum(case when payway != 5 then transamount else 0 end ) transamount
+            from pay_pay_transactiondetails t
+            where payseriesno=#{payseriesno}
+            group by account_id
+            union all
+            select
+                account_id
+                ,0 minPeriod
+                ,0  remaining
+                ,0	lastRemaining
+                ,(select u.name from sc_user u where id = max(r.create_by)) createBy
+                ,max(create_date)  createDate
+                ,sum(case when payway != 5 then r.receivedamount else 0 end ) transamount
+            from pay_pay_received r
+            where payseriesno=#{payseriesno}
+            group by account_id
+        ) t
+        group by account_id
+
+    </select>
+
+    <select id="getAmountPeriod" resultType="com.bz.smart_city.dto.pay.payfee.PrintInvoiceData">
+        select
+            max(amount.year*12+amount.`month`) as  "maxPeriod",
+            min(amount.year*12+amount.`month`) as  "minPeriod"
+        from pay_pay_received reced
+        left join pay_pay_receivable rece on reced.receivable_id=rece.id
+        left join pay_amount_waterusedamount amount on amount.id=rece.usedamount_id
+        where reced.payseriesno=#{payseriesno}
+    </select>
+    <select id="getAmountInfoAndReceivablefee" resultType="com.bz.smart_city.dto.pay.payfee.PrintInvoiceData">
+        select
+        amount.account_id
+        ,sum(rece.receivablefee) receivablefee
+        ,sum(amount.payamount) payamount
+        ,min(amount.lastreading) lastreading
+        ,min(amount.lastrecorddate) lastrecorddate
+        ,max(amount.reading) reading
+        ,max(amount.recorddate) recorddate
+        from pay_amount_waterusedamount amount
+        left join pay_pay_receivable rece on rece.usedamount_id =amount.id
+        where amount.account_id =#{accountId}
+        and  amount.year*12 + amount.month &lt;= #{maxPeriod}
+        and  amount.year*12 + amount.month >= #{minPeriod}
+        group by amount.account_id
+    </select>
+    <select id="getAccountBaseInfo" resultType="com.bz.smart_city.dto.pay.payfee.PrintInvoiceData">
+        select
+            a.accountnumber
+            ,a.name as accountname
+            ,a.address as address
+            ,p.totalprice_l1 as totalPrice
+            ,d.water_meter_no as eleno
+            ,l.`name` as livingareaName
+            ,re.remaining
+        from pay_base_account a
+        left join pay_base_customerandmeterrela c on c.account_id=a.id
+        left join pay_pay_rechargeaccount re on re.account_id =a.id
+        left join pay_base_waterproperty p on p.id=c.waterproperty_id
+        left join sc_device d on d.id=c.watermeter_id
+        left join sc_building bd on bd.id=d.building_id
+        left join sc_community l on l.id=bd.community
+        where a.id= #{accountId}
+    </select>
+
+
+    <select id="getPayInvoiceType" resultType="com.bz.smart_city.dto.pay.payfee.PrintInvoiceData">
+        select
+            max(printType) printType
+            ,max(c.pay_invoice_type) payInvoiceType
+        from (
+        select account_id , 1 printType ,customer_id from pay_pay_transactiondetails   where payseriesno = #{payseriesno}
+        union all
+        select account_id , 2 printType ,customer_id from pay_pay_received   where payseriesno = #{payseriesno}
+        ) t
+        left join sc_customer c on c.id =t.customer_id
+
+    </select>
 </mapper>

+ 1 - 0
smart-city-platform/src/main/resources/mapper/pay/payFeeMapper.xml

@@ -290,6 +290,7 @@
         select
         a.id,
         a.invoiceno as "invoiceno",
+        a.account_id as "accountId",
         a.accountnumber as "accountnumber",
         a.accountname as "accountname",
         a.invoiceamount as "invoiceamount",