结算收款功能(未完)

This commit is contained in:
czx 2020-12-02 14:34:36 +08:00
parent 81a2e5578e
commit 85716eb8d8
13 changed files with 241 additions and 51 deletions

View File

@ -35,11 +35,28 @@ public class FtPrepaymentDaoController extends BaseController {
@GetMapping("/getCountById/{patientId}") @GetMapping("/getCountById/{patientId}")
public AjaxResult getCountById(@PathVariable("patientId") Long patiendId) { public AjaxResult getCountById(@PathVariable("patientId") Long patientId) {
FtPrepaymentVo dao = iFtPrepaymentDaoService.getCountById(patiendId); FtPrepaymentVo dao = iFtPrepaymentDaoService.getCountById(patientId);
if (dao == null)
return AjaxResult.error("无该记录");
return AjaxResult.success("操作成功", dao); return AjaxResult.success("操作成功", dao);
} }
/**
* 通过病人id查询收费管理详细
* 作者陈智兴
* 日期2020年12月2日
* 功能 前端查询预付款情况
* @param patientId
* @return
*/
@GetMapping("/getPrepaymentByPatientId/{patientId}")
public AjaxResult getPrepaymentByPatientId(@PathVariable("patientId") Long patientId) {
FtPrepaymentVo dao = iFtPrepaymentDaoService.getCountById(patientId);
if (dao == null)
return AjaxResult.error("无该记录");
return AjaxResult.success("操作成功", dao);
}
// 查询所有待缴费列表 // 查询所有待缴费列表
@PreAuthorize("@ss.hasPermi('fantang:prepayment:list')") @PreAuthorize("@ss.hasPermi('fantang:prepayment:list')")

View File

@ -1,5 +1,7 @@
package com.ruoyi.system.fantang.controller; package com.ruoyi.system.fantang.controller;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -10,6 +12,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.fantang.domain.FtReportMealsDao; import com.ruoyi.system.fantang.domain.FtReportMealsDao;
import com.ruoyi.system.fantang.domain.FtSettleDao;
import com.ruoyi.system.fantang.entity.ReportMealsDayEntity; import com.ruoyi.system.fantang.entity.ReportMealsDayEntity;
import com.ruoyi.system.fantang.service.IFtReportMealsDaoService; import com.ruoyi.system.fantang.service.IFtReportMealsDaoService;
import com.ruoyi.system.fantang.vo.FtReportMealVo; import com.ruoyi.system.fantang.vo.FtReportMealVo;
@ -35,21 +38,22 @@ public class FtReportMealsDaoController extends BaseController {
private final IFtReportMealsDaoService iFtReportMealsDaoService; private final IFtReportMealsDaoService iFtReportMealsDaoService;
/**
/**
* 查询指定用户上一次结算的日期并通过这个日期计算未结算的天数 * 查询指定用户上一次结算的日期并通过这个日期计算未结算的天数
*/ */
@GetMapping("/getLastSettlementDate/{patientId}") @GetMapping("/getLastSettlementDate/{patientId}")
public AjaxResult getLastSettlementDate(@PathVariable("patiendId") Long patiendId) { public AjaxResult getLastSettlementDate(@PathVariable("patientId") Long patientId) {
QueryWrapper<FtReportMealsDao> wrapper = new QueryWrapper<>(); QueryWrapper<FtReportMealsDao> wrapper = new QueryWrapper<>();
wrapper.eq("patient_id", patiendId); wrapper.eq("patient_id", patientId);
wrapper.orderByDesc("settlement_at"); wrapper.orderByDesc("settlement_at");
wrapper.last("limit 1"); wrapper.last("limit 1");
FtReportMealsDao ftReportMealsDao = iFtReportMealsDaoService.getOne(wrapper); FtReportMealsDao ftReportMealsDao = iFtReportMealsDaoService.getOne(wrapper);
Date settlementAt = ftReportMealsDao.getSettlementAt(); Date settlementAt = ftReportMealsDao.getSettlementAt();
int days = (int) (new Date().getTime() - settlementAt.getTime()) / (1000 * 3600 * 24); long days = DateUtil.between(settlementAt, new Date(), DateUnit.DAY);
ReportMealsDayEntity reportMealsDayEntity = new ReportMealsDayEntity(); ReportMealsDayEntity reportMealsDayEntity = new ReportMealsDayEntity();
reportMealsDayEntity.setCreateAt(settlementAt); reportMealsDayEntity.setSettlementAt(settlementAt);
reportMealsDayEntity.setDays(days); reportMealsDayEntity.setDays(days);
return AjaxResult.success(reportMealsDayEntity); return AjaxResult.success(reportMealsDayEntity);
@ -128,6 +132,17 @@ public class FtReportMealsDaoController extends BaseController {
return util.exportExcel(list, "meals"); return util.exportExcel(list, "meals");
} }
/**
* 计算两个日期之间的未结算数据
* @param dao
* @return
*/
@GetMapping("/countBillingBetween")
public AjaxResult countBillingBetween(ReportMealsDayEntity dao) {
iFtReportMealsDaoService.countBillingBetween(dao);
}
/** /**
* 获取报餐管理详细信息 * 获取报餐管理详细信息
*/ */

View File

@ -33,7 +33,6 @@ public class FtSettleDaoController extends BaseController {
private final IFtSettleDaoService iFtSettleDaoService; private final IFtSettleDaoService iFtSettleDaoService;
/** /**
* 查询结算报列表 * 查询结算报列表
*/ */

View File

@ -1,5 +1,6 @@
package com.ruoyi.system.fantang.entity; package com.ruoyi.system.fantang.entity;
import com.ruoyi.system.fantang.domain.FtReportMealsDao;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@ -9,9 +10,9 @@ import java.util.Date;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class ReportMealsDayEntity { public class ReportMealsDayEntity extends FtReportMealsDao {
// 用户自定义结算日期
private Date createAt; private Date selectBillingDate;
// 自上一次结算累计未结算天数
private int days; private Long days;
} }

View File

@ -2,6 +2,10 @@ package com.ruoyi.system.fantang.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.fantang.domain.FtReportMealsDao; import com.ruoyi.system.fantang.domain.FtReportMealsDao;
import com.ruoyi.system.fantang.entity.ReportMealsDayEntity;
import org.apache.ibatis.annotations.Select;
import java.util.Date;
/** /**
* 报餐管理Mapper接口 * 报餐管理Mapper接口
@ -11,4 +15,6 @@ import com.ruoyi.system.fantang.domain.FtReportMealsDao;
*/ */
public interface FtReportMealsDaoMapper extends BaseMapper<FtReportMealsDao> { public interface FtReportMealsDaoMapper extends BaseMapper<FtReportMealsDao> {
@Select("SELECT sum(price) as price from ft_report_meals where patient_id = #{patientId} and settlement_flag = 0 and create_at BETWEEN #{createAt} and #{selectBillingDate}")
Long countBillingBetween(Long patientId, Date createAt, Date selectBillingDate);
} }

View File

@ -2,6 +2,7 @@ package com.ruoyi.system.fantang.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.fantang.domain.FtSettleDao; import com.ruoyi.system.fantang.domain.FtSettleDao;
import org.apache.ibatis.annotations.Select;
/** /**
* 结算报Mapper接口 * 结算报Mapper接口
@ -10,5 +11,4 @@ import com.ruoyi.system.fantang.domain.FtSettleDao;
* @date 2020-11-19 * @date 2020-11-19
*/ */
public interface FtSettleDaoMapper extends BaseMapper<FtSettleDao> { public interface FtSettleDaoMapper extends BaseMapper<FtSettleDao> {
} }

View File

@ -2,6 +2,8 @@ package com.ruoyi.system.fantang.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.system.fantang.domain.FtReportMealsDao; import com.ruoyi.system.fantang.domain.FtReportMealsDao;
import com.ruoyi.system.fantang.domain.FtSettleDao;
import com.ruoyi.system.fantang.entity.ReportMealsDayEntity;
import com.ruoyi.system.fantang.vo.FtReportMealVo; import com.ruoyi.system.fantang.vo.FtReportMealVo;
import java.util.List; import java.util.List;
@ -19,4 +21,6 @@ public interface IFtReportMealsDaoService extends IService<FtReportMealsDao> {
List<FtReportMealVo> listNoPay(); List<FtReportMealVo> listNoPay();
List<FtReportMealVo> listPayoff(); List<FtReportMealVo> listPayoff();
Long countBillingBetween(ReportMealsDayEntity dao);
} }

View File

@ -1,7 +1,9 @@
package com.ruoyi.system.fantang.service.impl; package com.ruoyi.system.fantang.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.fantang.domain.FtReportMealsDao; import com.ruoyi.system.fantang.domain.FtReportMealsDao;
import com.ruoyi.system.fantang.entity.ReportMealsDayEntity;
import com.ruoyi.system.fantang.mapper.FtReportMealVoMapper; import com.ruoyi.system.fantang.mapper.FtReportMealVoMapper;
import com.ruoyi.system.fantang.mapper.FtReportMealsDaoMapper; import com.ruoyi.system.fantang.mapper.FtReportMealsDaoMapper;
import com.ruoyi.system.fantang.service.IFtReportMealsDaoService; import com.ruoyi.system.fantang.service.IFtReportMealsDaoService;
@ -37,4 +39,18 @@ public class FtReportMealsDaoServiceImpl extends ServiceImpl<FtReportMealsDaoMap
public List<FtReportMealVo> listPayoff() { public List<FtReportMealVo> listPayoff() {
return ftReportMealVoMapper.listPayoff(); return ftReportMealVoMapper.listPayoff();
} }
@Override
public Long countBillingBetween(ReportMealsDayEntity dao) {
this.baseMapper.countBillingBetween(dao.getPatientId(), dao.getCreateAt(), dao.getSelectBillingDate());
// FtReportMealsDao ftReportMealsDao = new FtReportMealsDao();
// QueryWrapper<FtReportMealsDao> wrapper = new QueryWrapper<>();
// wrapper
// .eq("patient_id", dao.getPatientId())
// .eq("settlement_flag", 0)
// .between("create_at", dao.getCreateAt(), dao.getSelectBillingDate());
// List<FtReportMealsDao> mealsDaoList = this.baseMapper.selectList(wrapper);
return null;
}
} }

View File

@ -47,23 +47,27 @@
"echarts": "4.2.1", "echarts": "4.2.1",
"element-ui": "2.13.2", "element-ui": "2.13.2",
"file-saver": "2.0.1", "file-saver": "2.0.1",
"js-beautify": "1.10.2",
"fuse.js": "3.4.4", "fuse.js": "3.4.4",
"js-beautify": "1.10.2",
"js-cookie": "2.2.0", "js-cookie": "2.2.0",
"jsencrypt": "3.0.0-rc.1", "jsencrypt": "3.0.0-rc.1",
"less": "^3.12.2",
"less-loader": "^7.1.0",
"normalize.css": "7.0.0", "normalize.css": "7.0.0",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"path-to-regexp": "2.4.0", "path-to-regexp": "2.4.0",
"quill": "1.3.7",
"screenfull": "4.2.0", "screenfull": "4.2.0",
"sortablejs": "1.8.4", "sortablejs": "1.8.4",
"vue": "2.6.10", "vue": "2.6.10",
"vue-count-to": "1.0.13", "vue-count-to": "1.0.13",
"quill": "1.3.7",
"vue-cropper": "0.4.9", "vue-cropper": "0.4.9",
"vue-router": "3.0.2", "vue-router": "3.0.2",
"vue-splitpane": "1.0.4", "vue-splitpane": "1.0.4",
"vuedraggable": "2.20.0", "vuedraggable": "2.20.0",
"vuex": "3.1.0" "vuex": "3.1.0",
"vux": "^2.9.4",
"vux-loader": "^1.2.9"
}, },
"devDependencies": { "devDependencies": {
"@vue/cli-plugin-babel": "4.4.4", "@vue/cli-plugin-babel": "4.4.4",

View File

@ -87,3 +87,13 @@ export function getLastSettlementDate(patientId) {
method: 'get', method: 'get',
}) })
} }
// 计算两个日期之间的结算数据
export function countBillingBetween(query) {
return request({
url: '/fantang/meals/countBillingBetween',
method: 'get',
params: query
})
}

View File

@ -57,6 +57,14 @@ export function getPrepayment(prepaymentId) {
}) })
} }
// 通过病人id查询收费管理详细
export function getPrepaymentByPatientId(patientId) {
return request({
url: '/fantang/prepayment/getPrepaymentByPatientId/' + patientId,
method: 'get'
})
}
// 新增收费管理 // 新增收费管理
export function addPrepayment(data) { export function addPrepayment(data) {
return request({ return request({

View File

@ -1,5 +1,21 @@
import request from '@/utils/request' import request from '@/utils/request'
/**
* 获取指定用户最后一次结算日期
* 作者 czx
* 日期2020年12月2日
* 功能向后台获取指定用户最后一次结算日期显示在收费弹出层
* @param patientId
*/
export function getLastBillingDateByPatientId(patientId) {
return request({
url: '/fantang/settle/getLastBillingDateByPatientId/' + patientId,
method: 'get'
})
}
// 查询结算报列表 // 查询结算报列表
export function listSettle(query) { export function listSettle(query) {
return request({ return request({

View File

@ -160,39 +160,65 @@
/> />
<!-- 日常收费弹出层对话框--> <!-- 日常收费弹出层对话框-->
<el-dialog title="伙食费结算窗口" :visible.sync="flagAddNewSettlementOpen" width="600px" append-to-body> <el-dialog title="伙食费结算窗口" :visible.sync="flagAddNewSettlementOpen" width="1000px" append-to-body>
<el-form ref="form" :model="formAddNewSettlement" :rules="rules" label-width="160px"> <el-form ref="form" :model="formAddNewSettlement" :rules="rules" label-width="160px">
<el-form-item label="住院号" prop="hospitalId"> <el-form-item label="住院号" prop="hospitalId">
<el-input v-model="formAddNewSettlement.hospitalId" readonly/> <el-input v-model="formAddNewSettlement.hospitalId" readonly/>
</el-form-item> </el-form-item>
<el-form-item label="姓名" prop="name"> <el-row :gutter="10">
<el-input v-model="formAddNewSettlement.name" readonly/> <el-col :span="8">
</el-form-item> <el-form-item label="姓名" prop="name">
<el-form-item label="科室" prop="name"> <el-input v-model="formAddNewSettlement.name" readonly/>
<el-input v-model="formAddNewSettlement.departName" readonly/> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="床号" prop="name"> <el-col :span="8">
<el-input v-model="formAddNewSettlement.bedId" readonly/> <el-form-item label="科室" prop="departName">
</el-form-item> <el-input v-model="formAddNewSettlement.departName" readonly/>
<el-form-item label="上次结算日期" prop="name"> </el-form-item>
<el-input v-model="formAddNewSettlement.name" readonly/> </el-col>
</el-form-item> <el-col :span="8">
<el-form-item label="应收" prop="name"> <el-form-item label="床号" prop="bedId">
<el-input v-model="formAddNewSettlement.price" readonly/> <el-input v-model="formAddNewSettlement.bedId" readonly/>
</el-form-item> </el-form-item>
<el-form-item label="用餐天数" prop="name"> </el-col>
<el-input v-model="formAddNewSettlement.name" readonly/> </el-row>
</el-form-item> <el-row :gutter="10">
<el-col :span="8">
<el-form-item label="上次结算日期" prop="lastBillingDate">
<el-input v-model="formAddNewSettlement.lastBillingDate" readonly/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="未结算天数" prop="settlementDays">
<el-input v-model="formAddNewSettlement.settlementDays" readonly/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="应收" prop="name">
<el-input v-model="formAddNewSettlement.price" readonly/>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="已收预付伙食费" prop="name" v-if="flagAddPrepaymentShow"> <el-form-item label="已收预付伙食费" prop="name" v-if="flagAddPrepaymentShow">
<el-input v-model="formAddNewSettlement.prepayment" readonly/> <el-input v-model="formAddNewSettlement.prepayment" readonly/>
</el-form-item> </el-form-item>
<el-form-item label="结算日期" prop="field106">
<el-date-picker
v-model="formAddNewSettlement.selectBillingDate"
align="right"
type="date"
placeholder="选择日期"
@change="changeBillingDate"
:picker-options="pickerOptions">
</el-date-picker>
</el-form-item>
<el-form-item label="实收" prop="receipts"> <el-form-item label="实收" prop="receipts">
<el-input v-model="form.receipts" placeholder="请输入实收"/> <el-input v-model="formAddNewSettlement.netPeceipt" placeholder="请输入实收"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button> <el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button> <el-button @click="clickFormAddNewSettlementCancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
@ -234,12 +260,40 @@
import {addSettle, delSettle, exportSettle, getSettle, listSettle, updateSettle} from "@/api/fantang/settle"; import {addSettle, delSettle, exportSettle, getSettle, listSettle, updateSettle} from "@/api/fantang/settle";
import {listAll, listNoPay, listPayoff} from "@/api/fantang/meals"; import {listAll, listNoPay, listPayoff} from "@/api/fantang/meals";
import {getUserProfile} from "../../../api/system/user"; import {getUserProfile} from "../../../api/system/user";
import {getPrepaymentByPatientId} from "../../../api/fantang/prepayment";
import {getLastSettlementDate} from "../../../api/fantang/meals";
import { dateFormat } from 'vux'
export default { export default {
name: "Settle", name: "Settle",
components: {}, components: {},
data() { data() {
return { return {
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now();
},
shortcuts: [{
text: '今天',
onClick(picker) {
picker.$emit('pick', new Date());
}
}, {
text: '昨天',
onClick(picker) {
const date = new Date();
date.setTime(date.getTime() - 3600 * 1000 * 24);
picker.$emit('pick', date);
}
}, {
text: '一周前',
onClick(picker) {
const date = new Date();
date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit('pick', date);
}
}]
},
// //
userName: null, userName: null,
roleGroup: null, roleGroup: null,
@ -256,12 +310,23 @@ export default {
name: null, name: null,
departName: null, departName: null,
bedId: null, bedId: null,
price: null, price: null,
receivable: null, receivable: null,
//
netPeceipt: null, netPeceipt: null,
//
prepayment: null, prepayment: null,
settlementDate: null, //
settlementDays: null,
//
userName: null, userName: null,
//
billingCycle: null,
//
lastBillingDate: null,
//
selectBillingDate: null,
}, },
// //
@ -343,6 +408,20 @@ export default {
}); });
}, },
methods: { methods: {
//
changeBillingDate(value) {
var dateSpan, iDays;
let sDate1 = Date.parse(this.formAddNewSettlement.lastBillingDate);
let sDate2 = Date.parse(value);
dateSpan = sDate2 - sDate1;
if(dateSpan <=0){
this.msgError("你现在的结算日期小于上一次结算日期!!");
} else {
dateSpan = Math.abs(dateSpan);
iDays = Math.floor(dateSpan / (24 * 3600 * 1000));
this.formAddNewSettlement.settlementDays = iDays;
}
},
// //
myGetUser() { myGetUser() {
getUserProfile().then(response => { getUserProfile().then(response => {
@ -354,17 +433,26 @@ export default {
// //
clickAddNewSettlement(row) { clickAddNewSettlement(row) {
this.flagAddNewSettlementOpen = true; getLastSettlementDate(row.patientId).then(response =>{
this.flagAddPrepaymentShow = false; console.log("getLastBillingDateByPatientId-->", response);
this.formAddNewSettlement.hospitalId = row.hospitalId; this.formAddNewSettlement.lastBillingDate = response.data.settlementAt;
this.formAddNewSettlement.name = row.name; this.formAddNewSettlement.settlementDays = response.data.days;
this.formAddNewSettlement.departName = row.departName; });
this.formAddNewSettlement.bedId = row.bedId;
this.formAddNewSettlement.patientId = row.patientId; getPrepaymentByPatientId(row.patientId).then(response => {
this.formAddNewSettlement.price = row.price; console.log("row-->", response);
this.formAddNewSettlement.prepayment = row.prepayment; this.flagAddNewSettlementOpen = true;
this.formAddNewSettlement.netPeceipt = null; this.flagAddPrepaymentShow = false;
this.formAddNewSettlement.userName = this.userName; this.formAddNewSettlement.hospitalId = row.hospitalId;
this.formAddNewSettlement.name = row.name;
this.formAddNewSettlement.departName = row.departName;
this.formAddNewSettlement.bedId = row.bedId;
this.formAddNewSettlement.patientId = row.patientId;
this.formAddNewSettlement.price = row.price;
this.formAddNewSettlement.prepayment = response.data.prepaid;
this.formAddNewSettlement.netPeceipt = null;
this.formAddNewSettlement.userName = this.userName;
});
}, },
// //
@ -407,6 +495,12 @@ export default {
this.loading = false; this.loading = false;
}); });
}, },
//
clickFormAddNewSettlementCancel() {
this.flagAddNewSettlementOpen = false;
this.reset();
},
// //
cancel() { cancel() {
this.open = false; this.open = false;