|
@@ -106,13 +106,13 @@ public class MzReceiptSerialServiceImpl implements MzReceiptSerialService {
|
|
|
|
|
|
@Override
|
|
|
public List<MzReceiptSerial> queryPrintedSerialForThisTime(String patientId, Integer times, String receiptBill) {
|
|
|
- String receiptSerialTableName="mz_receipt_serial";
|
|
|
- List<MzReceiptSerial> mzReceiptSerialList= mzReceiptSerialMapper.selectPrintedSerialForThisTime(patientId, times, receiptBill,receiptSerialTableName);
|
|
|
- if(mzReceiptSerialList!=null && mzReceiptSerialList.size()>0){
|
|
|
+ String receiptSerialTableName = "mz_receipt_serial";
|
|
|
+ List<MzReceiptSerial> mzReceiptSerialList = mzReceiptSerialMapper.selectPrintedSerialForThisTime(patientId, times, receiptBill, receiptSerialTableName);
|
|
|
+ if (mzReceiptSerialList != null && mzReceiptSerialList.size() > 0) {
|
|
|
return mzReceiptSerialList;
|
|
|
}
|
|
|
- receiptSerialTableName="mz_receipt_serial_b";
|
|
|
- return mzReceiptSerialMapper.selectPrintedSerialForThisTime(patientId, times, receiptBill,receiptSerialTableName);
|
|
|
+ receiptSerialTableName = "mz_receipt_serial_b";
|
|
|
+ return mzReceiptSerialMapper.selectPrintedSerialForThisTime(patientId, times, receiptBill, receiptSerialTableName);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -141,19 +141,19 @@ public class MzReceiptSerialServiceImpl implements MzReceiptSerialService {
|
|
|
}
|
|
|
//如果是手机缴费,设置缴费方式为自助缴费
|
|
|
if (Constants.BRZZJF_CODE.equals(mzReceiptSerial.getOperatorId()) && Constants.BYJZ.equals(mzReceiptSerial.getChequeType())) {
|
|
|
- MzDepositFile mzDepositFile = mzDepositFileMapper.selectMzDepositFileBySerialNo(mzReceiptSerial.getSerialNo(),null).get(0);
|
|
|
+ MzDepositFile mzDepositFile = mzDepositFileMapper.selectMzDepositFileBySerialNo(mzReceiptSerial.getSerialNo(), null).get(0);
|
|
|
if (Constants.WX.equals(mzDepositFile.getChequeType())) {
|
|
|
updateMzReceiptSerial.setNewChequeType(Constants.ZZWX);
|
|
|
} else if (Constants.ZFB.equals(mzDepositFile.getChequeType())) {
|
|
|
updateMzReceiptSerial.setNewChequeType(Constants.ZZZFB);
|
|
|
}
|
|
|
- mzDepositFileMapper.updateChequeType(updateMzReceiptSerial.getNewChequeType(), mzDepositFile.getReceiptSn(),null);
|
|
|
+ mzDepositFileMapper.updateChequeType(updateMzReceiptSerial.getNewChequeType(), mzDepositFile.getReceiptSn(), null);
|
|
|
}
|
|
|
int num = mzReceiptSerialMapper.updateBzByReceiptNo(updateMzReceiptSerial);
|
|
|
if (num == 0) {
|
|
|
throw new MzException("已经打印过发票,请勿重复打印,如果需要重新打印,请点击重新打印或者作废打印");
|
|
|
}
|
|
|
- mzReceiptSerialMapper.updateMzReceiptSerialByReceiptNo(updateMzReceiptSerial);
|
|
|
+ mzReceiptSerialMapper.updateMzReceiptSerialByReceiptNoAndChueType(updateMzReceiptSerial);
|
|
|
if (receipt.getReceiptCurrent() == receipt.getReceiptEnd()) {
|
|
|
//此时发票号已经用完,当前发票号是最后一个
|
|
|
receipt.setReceiptCurrent(null);
|
|
@@ -180,11 +180,11 @@ public class MzReceiptSerialServiceImpl implements MzReceiptSerialService {
|
|
|
*/
|
|
|
@Override
|
|
|
public MzReceiptSerial queryReceiptDetailsByReceiptSn(Integer receiptSn) {
|
|
|
- MzReceiptSerial mzReceiptSerial= mzReceiptSerialMapper.selectReceiptDetailsByReceiptSn(receiptSn,"mz_receipt_serial");
|
|
|
- if(mzReceiptSerial!=null){
|
|
|
+ MzReceiptSerial mzReceiptSerial = mzReceiptSerialMapper.selectReceiptDetailsByReceiptSn(receiptSn, "mz_receipt_serial");
|
|
|
+ if (mzReceiptSerial != null) {
|
|
|
return mzReceiptSerial;
|
|
|
}
|
|
|
- return mzReceiptSerialMapper.selectReceiptDetailsByReceiptSn(receiptSn,"mz_receipt_serial_b");
|
|
|
+ return mzReceiptSerialMapper.selectReceiptDetailsByReceiptSn(receiptSn, "mz_receipt_serial_b");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -198,6 +198,8 @@ public class MzReceiptSerialServiceImpl implements MzReceiptSerialService {
|
|
|
if (mzVisitTable == null) {
|
|
|
throw new MzException("当前病人就诊基础资料【MzVisitTable】不存在,请检查");
|
|
|
}
|
|
|
+ //先查询出所有发票
|
|
|
+ List<MzReceiptSerial> mzReceiptSerialList = mzReceiptSerialMapper.selectReceiptDetails(mzReceiptSerial.getPatientId(), mzReceiptSerial.getTimes(), mzReceiptSerial.getReceiptNo(), "mz_receipt_serial");
|
|
|
Integer receiptNo = mzVisitTable.getReceiptNo() + 1;
|
|
|
Integer oriSerialNo = mzReceiptSerial.getSerialNo();
|
|
|
int serialNo = mzSerialNoService.getSerialNo();
|
|
@@ -208,31 +210,38 @@ public class MzReceiptSerialServiceImpl implements MzReceiptSerialService {
|
|
|
updateMzReceiptSerial.setObsoleteId(user.getUserIdCode());
|
|
|
updateMzReceiptSerial.setObsoleteDate(now);
|
|
|
updateMzReceiptSerial.setReceiptNo(mzReceiptSerial.getReceiptNo());
|
|
|
- updateMzReceiptSerial.setChequeType(mzReceiptSerial.getChequeType());
|
|
|
mzReceiptSerialMapper.updateMzReceiptSerialByReceiptNo(updateMzReceiptSerial);
|
|
|
- //创建新发票
|
|
|
- mzReceiptSerial.setReceiptNo(receiptNo);
|
|
|
- mzReceiptSerial.setSerialNo(serialNo);
|
|
|
- mzReceiptSerial.setReceiptSn(serialNo);
|
|
|
- mzReceiptSerial.setReceiptBill(receipt.getReceiptCurrent());
|
|
|
- mzReceiptSerial.setDeptNo(YesNoEnum.NO.code.toString());
|
|
|
- mzReceiptSerial.setOperatorId(user.getUserIdCode());
|
|
|
- mzReceiptSerial.setDcountDate(null);
|
|
|
- mzReceiptSerial.setDcountNo(YesNoEnum.NO.code);
|
|
|
- mzReceiptSerialMapper.insertMzReceiptSerial(mzReceiptSerial);
|
|
|
+ if (mzReceiptSerialList != null && mzReceiptSerialList.size() > 0) {
|
|
|
+ for (MzReceiptSerial mr : mzReceiptSerialList) {
|
|
|
+ if (mzReceiptSerial.getReceiptBill().equals(mr.getReceiptBill())) {
|
|
|
+ mr.setReceiptBill(receipt.getReceiptCurrent());
|
|
|
+ }
|
|
|
+ //创建新发票
|
|
|
+ mr.setReceiptNo(receiptNo);
|
|
|
+ mr.setSerialNo(serialNo);
|
|
|
+ mr.setReceiptSn(serialNo);
|
|
|
+ mr.setDeptNo(YesNoEnum.NO.code.toString());
|
|
|
+ mr.setOperatorId(user.getUserIdCode());
|
|
|
+ mr.setDcountDate(null);
|
|
|
+ mr.setDcountNo(YesNoEnum.NO.code);
|
|
|
+ mzReceiptSerialMapper.insertMzReceiptSerial(mr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//更新收费明细表发票流水号
|
|
|
mzChargeDetailMapper.updateBySerialNo(receiptNo, mzReceiptSerial.getSerialNo(), oriSerialNo);
|
|
|
- List<MzDepositFile> mzDepositFiles = mzDepositFileMapper.selectMzDepositFileBySerialNo(oriSerialNo,null);
|
|
|
+ List<MzDepositFile> mzDepositFiles = mzDepositFileMapper.selectMzDepositFileBySerialNo(oriSerialNo, null);
|
|
|
//原收费方式记录设置为作废
|
|
|
- mzDepositFileMapper.updatePayMark(PayMarkEnum.CANCELLATION.code, oriSerialNo,mzReceiptSerial.getChequeType());
|
|
|
+ //mzDepositFileMapper.updatePayMark(PayMarkEnum.CANCELLATION.code, oriSerialNo,mzReceiptSerial.getChequeType());
|
|
|
+ mzDepositFileMapper.updatePayMark(PayMarkEnum.CANCELLATION.code, oriSerialNo);
|
|
|
for (MzDepositFile mzDepositFile : mzDepositFiles) {
|
|
|
- if(Constants.BYJZ.equals(mzDepositFile.getChequeType())){
|
|
|
- continue;
|
|
|
- }
|
|
|
+// if(Constants.BYJZ.equals(mzDepositFile.getChequeType())){
|
|
|
+// continue;
|
|
|
+// }
|
|
|
//新增新的收费方式记录
|
|
|
- mzDepositFile.setReceiptNo(mzReceiptSerial.getReceiptNo());
|
|
|
- mzDepositFile.setReceiptSn(mzReceiptSerial.getSerialNo());
|
|
|
- mzDepositFile.setSerialNo(mzReceiptSerial.getSerialNo());
|
|
|
+ mzDepositFile.setReceiptNo(receiptNo);
|
|
|
+ mzDepositFile.setReceiptSn(serialNo);
|
|
|
+ mzDepositFile.setSerialNo(serialNo);
|
|
|
mzDepositFile.setChargeDate(now);
|
|
|
//mzDepositFile.setDcountNo(YesNoEnum.NO.code);
|
|
|
//mzDepositFile.setDcountDate(null);
|
|
@@ -257,44 +266,44 @@ public class MzReceiptSerialServiceImpl implements MzReceiptSerialService {
|
|
|
|
|
|
@Override
|
|
|
public List<Map<String, Object>> queryChargeListByPatient(List<String> patientIds, String serialNo, Date beginDate, Date endDate, String tableName) {
|
|
|
- List<Map<String, Object>> list= mzReceiptSerialMapper.selectChargeListByPatient(patientIds,serialNo,beginDate,endDate,tableName);
|
|
|
- Map<String,String> patientIdMap = new HashMap<>();
|
|
|
+ List<Map<String, Object>> list = mzReceiptSerialMapper.selectChargeListByPatient(patientIds, serialNo, beginDate, endDate, tableName);
|
|
|
+ Map<String, String> patientIdMap = new HashMap<>();
|
|
|
for (Map<String, Object> map : list) {
|
|
|
String patientIdTemp = (String) map.get("patient_id");
|
|
|
- String name =patientIdMap.get(patientIdTemp);
|
|
|
- if(StringUtils.isBlank(name)){
|
|
|
- MzPatientMi mzPatientMi= mzPatientMiService.queryByPatientId(patientIdTemp);
|
|
|
- name=mzPatientMi.getName();
|
|
|
- patientIdMap.put(patientIdTemp,name);
|
|
|
+ String name = patientIdMap.get(patientIdTemp);
|
|
|
+ if (StringUtils.isBlank(name)) {
|
|
|
+ MzPatientMi mzPatientMi = mzPatientMiService.queryByPatientId(patientIdTemp);
|
|
|
+ name = mzPatientMi.getName();
|
|
|
+ patientIdMap.put(patientIdTemp, name);
|
|
|
}
|
|
|
- map.put("name",name);
|
|
|
+ map.put("name", name);
|
|
|
}
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public BigDecimal querySumByPatientId(String beginDate, String endDate, String patientId) {
|
|
|
- return mzReceiptSerialMapper.selectSumByPatientId(beginDate,endDate,patientId);
|
|
|
+ return mzReceiptSerialMapper.selectSumByPatientId(beginDate, endDate, patientId);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, timeout = 36000, rollbackFor = Exception.class)
|
|
|
public int repairDataFromBack(String patientId, Integer times, Integer receiptNo) {
|
|
|
- Date date=mzReceiptSerialMapper.selectChargeDateThisTime(patientId, times, receiptNo);
|
|
|
- if(date==null){
|
|
|
+ Date date = mzReceiptSerialMapper.selectChargeDateThisTime(patientId, times, receiptNo);
|
|
|
+ if (date == null) {
|
|
|
return 0;
|
|
|
}
|
|
|
- Date beginDate =DateUtil.getFirstSecond(date);
|
|
|
- Date endDate=DateUtil.getLastSecond(date);
|
|
|
- List<MzReceiptSerial> mzReceiptSerialList= mzReceiptSerialMapper.selectAllItemByChargeDate(patientId,beginDate,endDate);
|
|
|
- if (mzReceiptSerialList==null || mzReceiptSerialList.size()==0){
|
|
|
+ Date beginDate = DateUtil.getFirstSecond(date);
|
|
|
+ Date endDate = DateUtil.getLastSecond(date);
|
|
|
+ List<MzReceiptSerial> mzReceiptSerialList = mzReceiptSerialMapper.selectAllItemByChargeDate(patientId, beginDate, endDate);
|
|
|
+ if (mzReceiptSerialList == null || mzReceiptSerialList.size() == 0) {
|
|
|
return 0;
|
|
|
}
|
|
|
MzChargeDetail mzChargeDetail = new MzChargeDetail();
|
|
|
mzChargeDetail.setPatientId(patientId);
|
|
|
- int num =0;
|
|
|
- for (MzReceiptSerial mr:mzReceiptSerialList){
|
|
|
- if(mr==null){
|
|
|
+ int num = 0;
|
|
|
+ for (MzReceiptSerial mr : mzReceiptSerialList) {
|
|
|
+ if (mr == null) {
|
|
|
continue;
|
|
|
}
|
|
|
mzReceiptSerialMapper.repairDataFromBack(patientId, mr.getTimes(), mr.getReceiptNo());
|