Procházet zdrojové kódy

解决作废发票统计到原发票打印人的报表问题

hurugang před 4 roky
rodič
revize
6e9d8fa352

+ 9 - 0
src/main/java/cn/hnthyy/thmz/entity/his/mz/MzReceiptSerial.java

@@ -104,6 +104,15 @@ public class MzReceiptSerial implements Serializable {
     //发票日结状态 1:已结帐;0:未结 收费的人的日结状态
     private Integer chargeDcountNo;
 
+    //作废结算时间  收费的人的日结时间
+    private Date obsoleteDcountDate;
+    //作废结算状态 1:已结帐;0:未结 收费的人的日结状态
+    private Integer obsoleteDcountNo;
+    //作废人id
+    private String obsoleteId;
+    //作废时间
+    private Date obsoleteDate;
+
     private Integer totalCount;
     //病人姓名
     private String name;

+ 17 - 6
src/main/java/cn/hnthyy/thmz/mapper/his/mz/ChargeFeeVoMapper.java

@@ -472,7 +472,7 @@ public interface ChargeFeeVoMapper {
      * @return
      */
     @Select({"<script>",
-            "select count ( distinct receipt_bill ) from mz_receipt_serial where operator_id =#{userIdCode} and len(receipt_bill)=8 and receipt_bill <![CDATA[<>]]> '00000000' ",
+            "select count ( distinct receipt_bill ) from mz_receipt_serial where case pay_mark when '2' then obsolete_id else operator_id end =#{userIdCode} and len(receipt_bill)=8 and receipt_bill <![CDATA[<>]]> '00000000' ",
             "<when test='payMark!=null and payMark == 1'>",
             " and receipt_no  <![CDATA[<]]> 0 and pay_mark =1",
             "</when>",
@@ -483,10 +483,10 @@ public interface ChargeFeeVoMapper {
             " and receipt_no <![CDATA[>]]> 0 and pay_mark =2 ",
             "</when>",
             "<when test='dcountDate!=null'>",
-            " and dcount_date=#{dcountDate,jdbcType=TIMESTAMP} ",
+            " and case pay_mark when '2' then obsolete_dcount_date else dcount_date end =#{dcountDate,jdbcType=TIMESTAMP} ",
             "</when>",
             "<when test='dcountDate == null'>",
-            " and dcount_no =0 ",
+            " and case pay_mark when '2' then obsolete_dcount_date else dcount_no end  =0 ",
             "</when>",
             "</script>"})
     Integer countReceipt(@Param("userIdCode") String userIdCode, @Param("payMark") String payMark, @Param("dcountDate") Date dcountDate);
@@ -520,12 +520,12 @@ public interface ChargeFeeVoMapper {
                     "       flag=''," +
                     "      total_charge= b.total_charge " +
                     "from mz_receipt_serial b left join  mz_patient_mi a on b.patient_id = a.patient_id " +
-                    "where operator_id=#{userIdCode} and pay_mark='2' ",
+                    "where obsolete_id=#{userIdCode} and pay_mark='2' ",
             "<when test='dcountDate!=null'>",
-            " and dcount_date=#{dcountDate,jdbcType=TIMESTAMP} ",
+            " and obsolete_dcount_date=#{dcountDate,jdbcType=TIMESTAMP} ",
             "</when>",
             "<when test='dcountDate == null'>",
-            " and dcount_no =0 ",
+            " and obsolete_dcount_no =0 ",
             "</when>",
             "</script>"})
     List<ReceiptVo> selectReceiptVo(@Param("userIdCode") String userIdCode, @Param("dcountDate") Date dcountDate);
@@ -770,6 +770,17 @@ public interface ChargeFeeVoMapper {
     @Update("update mz_receipt_serial set charge_dcount_no =1 , charge_dcount_date =#{dcountDate} where pay_id =#{userIdCode} and (charge_dcount_no =0 or charge_dcount_no is null) ")
     int dcountReceiptChargeCount(@Param("userIdCode") String userIdCode, @Param("dcountDate") Date dcountDate);
 
+
+    /**
+     * 发票表结算  作废发票结算
+     *
+     * @param userIdCode
+     * @param dcountDate
+     * @return
+     */
+    @Update("update mz_receipt_serial set obsolete_dcount_no =1 , obsolete_dcount_date =#{dcountDate} where obsolete_id =#{userIdCode} and (obsolete_dcount_no =0 or obsolete_dcount_no is null) ")
+    int dcountReceiptObsoleteCount(@Param("userIdCode") String userIdCode, @Param("dcountDate") Date dcountDate);
+
     /**
      * 收费方式表结算
      *

+ 22 - 10
src/main/java/cn/hnthyy/thmz/mapper/his/mz/MzReceiptSerialMapper.java

@@ -18,7 +18,7 @@ public interface MzReceiptSerialMapper {
     @Select(" select rtrim(patient_id) patient_id,times,receipt_no,serial_no,rtrim(operator_id) operator_id,charge1,charge2,charge3,charge4,charge5,charge6,charge7,charge8,charge9," +
             "charge10,charge11,charge12,charge13,charge14,charge15,charge16,charge17,charge18,charge19,charge20,rtrim(pay_mark) pay_mark,total_charge,charge_date,rtrim(receipt_bill) receipt_bill," +
             "receipt_sn,dcount_date,rtrim(windows_no) windows_no,dcount_no,serial_yb,rtrim(fp_flag) fp_flag,rtrim(responce_type) responce_type,rtrim(cheque_type) cheque_type," +
-            "cheque_no,rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no from mz_receipt_serial where patient_id =#{patientId,jdbcType=CHAR} and cheque_type ='Y' and operator_id <> '99999' " +
+            "cheque_no,rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no,obsolete_id,obsolete_date,obsolete_dcount_date,obsolete_dcount_no from mz_receipt_serial where patient_id =#{patientId,jdbcType=CHAR} and cheque_type ='Y' and operator_id <> '99999' " +
             "and receipt_sn not in ( select 0 - receipt_sn from mz_receipt_serial where cheque_type ='Y' and patient_id =#{patientId,jdbcType=CHAR} and tf_flag =1 and operator_id <> '99999' ) " +
             "and receipt_sn not in ( select receipt_sn from mz_receipt_serial where cheque_type ='Y' and patient_id =#{patientId,jdbcType=CHAR} and tf_flag =1 and operator_id <> '99999' ) ")
     List<MzReceiptSerial> selectTallyReceiptSerial(@Param("patientId") String patientId);
@@ -33,7 +33,7 @@ public interface MzReceiptSerialMapper {
     @Select(" select rtrim(patient_id) patient_id,times,receipt_no,serial_no,rtrim(operator_id) operator_id,charge1,charge2,charge3,charge4,charge5,charge6,charge7,charge8,charge9," +
             "charge10,charge11,charge12,charge13,charge14,charge15,charge16,charge17,charge18,charge19,charge20,rtrim(pay_mark) pay_mark,total_charge,charge_date,rtrim(receipt_bill) receipt_bill," +
             "receipt_sn,dcount_date,rtrim(windows_no) windows_no,dcount_no,serial_yb,rtrim(fp_flag) fp_flag,rtrim(responce_type) responce_type,rtrim(cheque_type) cheque_type," +
-            "cheque_no,rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no from mz_receipt_serial where patient_id =#{patientId,jdbcType=CHAR} and times = #{times} and receipt_no = #{receiptNo} and cheque_type ='Y' and operator_id <> '99999' " +
+            "cheque_no,rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no,obsolete_id,obsolete_date,obsolete_dcount_date,obsolete_dcount_no from mz_receipt_serial where patient_id =#{patientId,jdbcType=CHAR} and times = #{times} and receipt_no = #{receiptNo} and cheque_type ='Y' and operator_id <> '99999' " +
             "and receipt_sn not in ( select 0 - receipt_sn from mz_receipt_serial where cheque_type ='Y' and patient_id =#{patientId,jdbcType=CHAR} and times = #{times} and receipt_no = #{receiptNo} and tf_flag =1 and operator_id <> '99999' ) " +
             "and receipt_sn not in ( select receipt_sn from mz_receipt_serial where cheque_type ='Y' and patient_id =#{patientId,jdbcType=CHAR} and times = #{times}  and receipt_no = #{receiptNo} and tf_flag =1 and operator_id <> '99999' ) ")
     List<MzReceiptSerial> selectTallyReceiptSerialByIdAndTimes(@Param("patientId") String patientId, @Param("times") Integer times,@Param("receiptNo") Integer receiptNo);
@@ -108,7 +108,7 @@ public interface MzReceiptSerialMapper {
             "select rtrim(patient_id) patient_id,times,receipt_no,serial_no,rtrim(operator_id) operator_id,charge1,charge2,charge3,charge4,charge5,charge6,charge7,charge8,charge9,",
             "charge10,charge11,charge12,charge13,charge14,charge15,charge16,charge17,charge18,charge19,charge20,rtrim(pay_mark) pay_mark,total_charge,charge_date,rtrim(receipt_bill) receipt_bill,",
             "receipt_sn,dcount_date,rtrim(windows_no) windows_no,dcount_no,serial_yb,rtrim(fp_flag) fp_flag,rtrim(responce_type) responce_type,rtrim(cheque_type) cheque_type,cheque_no," +
-                    "rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no",
+                    "rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no,obsolete_id,obsolete_date,obsolete_dcount_date,obsolete_dcount_no",
             "from ${tableName} where patient_id =#{patientId,jdbcType=CHAR} and pay_mark=0  and times =#{times}  ",
             "<when test='receiptNo!=null'>",
             " and receipt_no=#{receiptNo}",
@@ -128,7 +128,7 @@ public interface MzReceiptSerialMapper {
             "select top 1 rtrim(patient_id) patient_id,times,receipt_no,serial_no,rtrim(operator_id) operator_id,charge1,charge2,charge3,charge4,charge5,charge6,charge7,charge8,charge9,",
             "charge10,charge11,charge12,charge13,charge14,charge15,charge16,charge17,charge18,charge19,charge20,rtrim(pay_mark) pay_mark,total_charge,charge_date,rtrim(receipt_bill) receipt_bill,",
             "receipt_sn,dcount_date,rtrim(windows_no) windows_no,dcount_no,serial_yb,rtrim(fp_flag) fp_flag,rtrim(responce_type) responce_type,rtrim(cheque_type) cheque_type,cheque_no," +
-                    "rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no",
+                    "rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no,obsolete_id,obsolete_date,obsolete_dcount_date,obsolete_dcount_no",
             "from mz_receipt_serial where patient_id=#{patientId,jdbcType=CHAR} and times = #{times,jdbcType=INTEGER} and receipt_no = #{receiptNo,jdbcType=INTEGER} and ((cheque_type  <![CDATA[<>]]> 'Y' and cheque_type  <![CDATA[<>]]> '2' ) or cheque_type is null or operator_id =99999) order by receipt_no desc",
             "</script>"})
     MzReceiptSerial selectAllSerialForThisTime(@Param(value = "patientId") String patientId, @Param("times") Integer times,@Param("receiptNo") Integer receiptNo);
@@ -145,7 +145,7 @@ public interface MzReceiptSerialMapper {
             "select rtrim(patient_id) patient_id,times,receipt_no,serial_no,rtrim(operator_id) operator_id,charge1,charge2,charge3,charge4,charge5,charge6,charge7,charge8,charge9,",
             "charge10,charge11,charge12,charge13,charge14,charge15,charge16,charge17,charge18,charge19,charge20,rtrim(pay_mark) pay_mark,total_charge,charge_date,rtrim(receipt_bill) receipt_bill,",
             "receipt_sn,dcount_date,rtrim(windows_no) windows_no,dcount_no,serial_yb,rtrim(fp_flag) fp_flag,rtrim(responce_type) responce_type,rtrim(cheque_type) cheque_type,cheque_no,rtrim(tf_flag) tf_flag," +
-                    "dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no",
+                    "dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no,obsolete_id,obsolete_date,obsolete_dcount_date,obsolete_dcount_no",
             "from ${tableName} where patient_id=#{patientId,jdbcType=CHAR} and times = #{times,jdbcType=INTEGER} and (cheque_type <![CDATA[<>]]>  'Y' or cheque_type is null or operator_id ='99999' ) ",
             "<when test='receiptBill!=null'>",
             " and receipt_bill =#{receiptBill}",
@@ -167,7 +167,7 @@ public interface MzReceiptSerialMapper {
             "select rtrim(patient_id) patient_id,times,receipt_no,serial_no,rtrim(operator_id) operator_id,charge1,charge2,charge3,charge4,charge5,charge6,charge7,charge8,charge9,",
             "charge10,charge11,charge12,charge13,charge14,charge15,charge16,charge17,charge18,charge19,charge20,rtrim(pay_mark) pay_mark,total_charge,charge_date,rtrim(receipt_bill) receipt_bill,",
             "receipt_sn,dcount_date,rtrim(windows_no) windows_no,dcount_no,serial_yb,rtrim(fp_flag) fp_flag,rtrim(responce_type) responce_type,rtrim(cheque_type) cheque_type,cheque_no," +
-                    "rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no",
+                    "rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no,obsolete_id,obsolete_date,obsolete_dcount_date,obsolete_dcount_no",
             "from mz_receipt_serial where  patient_id=#{patientId,jdbcType=CHAR} and times = #{times,jdbcType=INTEGER} and receipt_no = #{receiptNo,jdbcType=INTEGER}",
             "</script>"})
     List<MzReceiptSerial> selectSerialForThisTime(@Param(value = "patientId") String patientId, @Param("times") Integer times, @Param("receiptNo") Integer receiptNo);
@@ -186,7 +186,7 @@ public interface MzReceiptSerialMapper {
             "select rtrim(patient_id) patient_id,times,receipt_no,serial_no,rtrim(operator_id) operator_id,charge1,charge2,charge3,charge4,charge5,charge6,charge7,charge8,charge9,",
             "charge10,charge11,charge12,charge13,charge14,charge15,charge16,charge17,charge18,charge19,charge20,rtrim(pay_mark) pay_mark,total_charge,charge_date,rtrim(receipt_bill) receipt_bill,",
             "receipt_sn,dcount_date,rtrim(windows_no) windows_no,dcount_no,serial_yb,rtrim(fp_flag) fp_flag,rtrim(responce_type) responce_type,rtrim(cheque_type) cheque_type,cheque_no," +
-                    "rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no",
+                    "rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no,obsolete_id,obsolete_date,obsolete_dcount_date,obsolete_dcount_no",
             "from ${tableName} where  patient_id=#{patientId,jdbcType=CHAR} and times = #{times,jdbcType=INTEGER} and receipt_no = #{receiptNo,jdbcType=INTEGER} and receipt_bill is not null",
             "</script>"})
     MzReceiptSerial selectReceiptBillForThisTime(@Param(value = "patientId") String patientId, @Param("times") Integer times, @Param("receiptNo") Short receiptNo,@Param(value = "tableName") String tableName);
@@ -202,7 +202,7 @@ public interface MzReceiptSerialMapper {
             "select rtrim(patient_id) patient_id,times,receipt_no,serial_no,rtrim(operator_id) operator_id,charge1,charge2,charge3,charge4,charge5,charge6,charge7,charge8,charge9,",
             "charge10,charge11,charge12,charge13,charge14,charge15,charge16,charge17,charge18,charge19,charge20,rtrim(pay_mark) pay_mark,total_charge,charge_date,rtrim(receipt_bill) receipt_bill,",
             "receipt_sn,dcount_date,rtrim(windows_no) windows_no,dcount_no,serial_yb,rtrim(fp_flag) fp_flag,rtrim(responce_type) responce_type,rtrim(cheque_type) cheque_type,cheque_no," +
-                    "rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no",
+                    "rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no,obsolete_id,obsolete_date,obsolete_dcount_date,obsolete_dcount_no",
             "from mz_receipt_serial where serial_no =#{serialNo}  ",
             "</script>"})
     MzReceiptSerial selectReceiptDetailsBySerialNo(@Param(value = "serialNo") Integer serialNo);
@@ -272,6 +272,18 @@ public interface MzReceiptSerialMapper {
             "<when test='chargeDcountNo!=null'>",
             ",charge_dcount_no =#{chargeDcountNo}",
             "</when>",
+            "<when test='obsoleteId!=null'>",
+            ",obsolete_id =#{obsoleteId}",
+            "</when>",
+            "<when test='obsoleteDate!=null'>",
+            ",obsolete_date =#{obsoleteDate}",
+            "</when>",
+            "<when test='obsoleteDcountDate!=null'>",
+            ",obsolete_dcount_date =#{obsoleteDcountDate,jdbcType=TIMESTAMP}",
+            "</when>",
+            "<when test='obsoleteDcountNo!=null'>",
+            ",obsolete_dcount_no =#{obsoleteDcountNo}",
+            "</when>",
             "</trim>",
             "</script>"})
     int updateMzReceiptSerialByReceiptNo(MzReceiptSerial mzReceiptSerial);
@@ -287,7 +299,7 @@ public interface MzReceiptSerialMapper {
             "select top 1 rtrim(patient_id) patient_id,times,receipt_no,serial_no,rtrim(operator_id) operator_id,charge1,charge2,charge3,charge4,charge5,charge6,charge7,charge8,charge9,",
             "charge10,charge11,charge12,charge13,charge14,charge15,charge16,charge17,charge18,charge19,charge20,rtrim(pay_mark) pay_mark,total_charge,charge_date,rtrim(receipt_bill) receipt_bill,",
             "receipt_sn,dcount_date,rtrim(windows_no) windows_no,dcount_no,serial_yb,rtrim(fp_flag) fp_flag,rtrim(responce_type) responce_type,rtrim(cheque_type) cheque_type,cheque_no," +
-                    "rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no",
+                    "rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no,obsolete_id,obsolete_date,obsolete_dcount_date,obsolete_dcount_no",
             "from ${tableName} where receipt_sn =#{receiptSn}  and receipt_bill is not null and receipt_bill  <![CDATA[<>]]>  '' ",
             "</script>"})
     MzReceiptSerial selectReceiptDetailsByReceiptSn(@Param(value = "receiptSn") Integer receiptSn,@Param("tableName") String tableName);
@@ -324,7 +336,7 @@ public interface MzReceiptSerialMapper {
             "select rtrim(patient_id) patient_id,times,receipt_no,serial_no,rtrim(operator_id) operator_id,charge1,charge2,charge3,charge4,charge5,charge6,charge7,charge8,charge9,",
             "charge10,charge11,charge12,charge13,charge14,charge15,charge16,charge17,charge18,charge19,charge20,rtrim(pay_mark) pay_mark,total_charge,charge_date,rtrim(receipt_bill) receipt_bill,",
             "receipt_sn,dcount_date,rtrim(windows_no) windows_no,dcount_no,serial_yb,rtrim(fp_flag) fp_flag,rtrim(responce_type) responce_type,rtrim(cheque_type) cheque_type,cheque_no," +
-                    "rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no",
+                    "rtrim(tf_flag) tf_flag,dept_no,rtrim(pay_id) pay_id,charge_dcount_date,charge_dcount_no,obsolete_id,obsolete_date,obsolete_dcount_date,obsolete_dcount_no",
             "from mz_receipt_serial where  patient_id=#{patientId,jdbcType=CHAR} and times = #{times,jdbcType=INTEGER} and cheque_type ='Y' and tf_flag = 1 ",
             "</script>"})
     List<MzReceiptSerial> selectSerialForJzTfThisTime(@Param(value = "patientId") String patientId, @Param("times") Integer times);

+ 1 - 0
src/main/java/cn/hnthyy/thmz/service/impl/his/mz/ChargeFeeVoServiceImpl.java

@@ -144,6 +144,7 @@ public class ChargeFeeVoServiceImpl implements ChargeFeeVoService {
         Date dcountDate = new Date();
         chargeFeeVoMapper.dcountReceipt(userIdCode, dcountDate);
         chargeFeeVoMapper.dcountReceiptChargeCount(userIdCode, dcountDate);
+        chargeFeeVoMapper.dcountReceiptObsoleteCount(userIdCode, dcountDate);
         chargeFeeVoMapper.dcountDeposit(userIdCode, dcountDate);
         chargeFeeVoMapper.dcountReqrec(userIdCode, dcountDate);
         chargeFeeVoMapper.dcountReqrecReceipt(userIdCode, dcountDate);

+ 3 - 1
src/main/java/cn/hnthyy/thmz/service/impl/his/mz/MzReceiptSerialServiceImpl.java

@@ -201,9 +201,12 @@ public class MzReceiptSerialServiceImpl implements MzReceiptSerialService {
         Integer receiptNo = mzVisitTable.getReceiptNo() + 1;
         Integer oriSerialNo = mzReceiptSerial.getSerialNo();
         int serialNo = mzSerialNoService.getSerialNo();
+        Date now = new Date();
         //将原发票作废
         MzReceiptSerial updateMzReceiptSerial = new MzReceiptSerial(mzReceiptSerial.getPatientId(), mzReceiptSerial.getTimes());
         updateMzReceiptSerial.setPayMark(PayMarkEnum.CANCELLATION.code);
+        updateMzReceiptSerial.setObsoleteId(user.getUserIdCode());
+        updateMzReceiptSerial.setObsoleteDate(now);
         updateMzReceiptSerial.setReceiptNo(mzReceiptSerial.getReceiptNo());
         updateMzReceiptSerial.setChequeType(mzReceiptSerial.getChequeType());
         mzReceiptSerialMapper.updateMzReceiptSerialByReceiptNo(updateMzReceiptSerial);
@@ -218,7 +221,6 @@ public class MzReceiptSerialServiceImpl implements MzReceiptSerialService {
         mzReceiptSerial.setDcountNo(YesNoEnum.NO.code);
         mzReceiptSerialMapper.insertMzReceiptSerial(mzReceiptSerial);
         //更新收费明细表发票流水号
-        Date now = new Date();
         mzChargeDetailMapper.updateBySerialNo(receiptNo, mzReceiptSerial.getSerialNo(), oriSerialNo);
         List<MzDepositFile> mzDepositFiles = mzDepositFileMapper.selectMzDepositFileBySerialNo(oriSerialNo,null);
         //原收费方式记录设置为作废