Commit 8568297d authored by zhangwanglin's avatar zhangwanglin

批量退回和基金申报导出

parent ce9e3c26
......@@ -119,6 +119,17 @@ public class AccountController {
return result;
}
/**
* 批量退回
*
* @return
*/
@PostMapping("/batchAccountReturn")
public Result batchAccountReturn(AccountTaskReqVO accountTaskReqVO){
List<AccountTaskExecuteReqVO> accountTaskExecuteReqVOS = accountTaskReqVO.getAccountTaskList();
Result result = accountService.batchAccountReturn(accountTaskExecuteReqVOS);
return result;
}
@GetMapping("/getOtherPlace")
public Result otherPlaceHandler(String programId){
......@@ -223,8 +234,11 @@ public class AccountController {
*/
@GetMapping("/queryAccountsDeclareList")
public Result<Page<ChDisabDetailAccountsResp>> queryAccountsDeclareList(@RequestHeader("Authorization") String token,Integer pageNum, Integer pageSize,SrvOrganListReq srvOrganListReq) {
List<String> accountsStatusList = Arrays.asList("0", "1","2");
String accountsStatus = srvOrganListReq.getAccountsStatus();
if(StringUtils.isEmpty(accountsStatus)) {
List<String> accountsStatusList = Arrays.asList("0", "1", "2");
srvOrganListReq.setAccountsStatusList(accountsStatusList);
}
long srvOrganId = TokenParsingUtil.TokenParsing(token, "srvOrganId");
if(srvOrganId !=0) {
srvOrganListReq.setSrvOrganId(srvOrganId);
......@@ -236,6 +250,23 @@ public class AccountController {
}
/**
* 基金申报导出
* @param
* @return
*/
@GetMapping("/accountsDeclareExport")
public void accountsDeclareExport(@RequestHeader("Authorization") String token,SrvOrganListReq req,HttpServletResponse response){
long srvOrganId = TokenParsingUtil.TokenParsing(token, "srvOrganId");
if(srvOrganId !=0) {
req.setSrvOrganId(srvOrganId);
}
Workbook workbook = accountService.accountsDeclareExport(req);
// 命名表格
String fileName = "accountsDeclare.xlsx";
FileUtils.exportResponse(workbook,fileName,response);
}
/**
* 暂缓列表查询
* @param
* @return
......@@ -387,7 +418,7 @@ public class AccountController {
}
@RequestMapping("/accountReturn")
public Result accountReturn(SrvTaskRespVO srvTaskRespVO) {
public Result accountReturn(AccountTaskExecuteReqVO srvTaskRespVO) {
Result result = accountService.accountReturn(srvTaskRespVO);
return result;
......
......@@ -46,4 +46,7 @@ public interface ChDisabAccountsDetailMapper extends BaseMapper<ChDisabDetailAcc
int queryTaskDetailDisable(TaskDetailDisableVO taskDetailDisableVO);
List<AccountDeclareExportResp> queryAccountsDeclareExport(SrvOrganListReq req);
}
\ No newline at end of file
......@@ -37,6 +37,8 @@ public interface AccountService extends IService<ChDisabAccounts> {
Workbook accountsDeclareExport(SrvOrganListReq req);
Page<NursingRecordsRespVO> queryNursingRecords(NursingReqVO nursingReqVO);
......@@ -72,5 +74,7 @@ public interface AccountService extends IService<ChDisabAccounts> {
void placeOtherTaskQuery();
//退回
Result accountReturn(SrvTaskRespVO srvTaskRespVO);
Result accountReturn(AccountTaskExecuteReqVO srvTaskRespVO);
Result batchAccountReturn(List<AccountTaskExecuteReqVO> srvTaskListRespVO);
}
......@@ -488,6 +488,16 @@ public class AccountServiceImpl extends ServiceImpl<ChDisabAccountsMapper, ChDis
return workbook;
}
@Override
public Workbook accountsDeclareExport(SrvOrganListReq req) {
List<AccountDeclareExportResp> accountDeclareExportResps = chDisabAccountsDetailMapper.queryAccountsDeclareExport(req);
ExportParams exportParams = new ExportParams();
exportParams.setType(ExcelType.XSSF); //对应xlsx
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, AccountDeclareExportResp.class, accountDeclareExportResps);
return workbook;
}
@Override
public Page<ChDisabDetailAccountsResp> queryOrganAccountsDetail(Integer pageNum, Integer pageSize,SrvOrganListReq srvOrganListReq) {
......@@ -1104,21 +1114,33 @@ public class AccountServiceImpl extends ServiceImpl<ChDisabAccountsMapper, ChDis
}
}
//退回
/**
*@desc 退回
* 1、根据服务机构,时间,失能人员,服务方式查询结算明细表
* 2、删除完成项目表的数据
* 3、查询计划表是否还有已完成的任务,有就只更新状态,
* 只有一条记录结算明细表需要退回费用,并更新服务计划详情表状态
**/
@Override
@Transactional(rollbackFor = Exception.class)
public Result accountReturn(SrvTaskRespVO srvTaskRespVO){
Long taskDetailId = srvTaskRespVO.getTaskDetailId();
public Result accountReturn(AccountTaskExecuteReqVO srvTaskRespVO){
Result result = accountReturnHandler(srvTaskRespVO);
return result;
}
public Result accountReturnHandler(AccountTaskExecuteReqVO srvTaskRespVO) {
Long taskDetailId = Long.valueOf(srvTaskRespVO.getTaskDetailId());
String disabInfoId = srvTaskRespVO.getDisabInfoId();
String srvModeName = srvTaskRespVO.getSrvModeName();
String srvPlanTime = srvTaskRespVO.getSrvDate();
Date date = DateUtils.strToDate(srvPlanTime);
String srvOrganId = srvTaskRespVO.getSrvOrganId();
Long itemId = srvTaskRespVO.getItemId();
log.info("AccountServiceImpl====accountReturn===taskDetailId:{},disabInfoId:{},srvPlanTime:{},itemId:{}",taskDetailId,disabInfoId,srvPlanTime,itemId);
String itemId = srvTaskRespVO.getItemId();
log.info("AccountServiceImpl====accountReturn===taskDetailId:{},disabInfoId:{},srvPlanTime:{},itemId:{}", taskDetailId, disabInfoId, srvPlanTime, itemId);
ChDisabDetailAccounts chDisabDetailAccounts = chDisabAccountsDetailMapper.queryDisabDetailAccounts(String.valueOf(srvOrganId), DateUtils.dateToStrYm(date), disabInfoId, srvModeName);
Short status = chDisabDetailAccounts.getStatus();
if(status != 0){
if (status != 0) {
return Result.failed("此任务已提交申报,不可再操作,请联系管理员");
}
// 删除 chSrvTaskFinishItemStream
......@@ -1126,21 +1148,24 @@ public class AccountServiceImpl extends ServiceImpl<ChDisabAccountsMapper, ChDis
.eq(ChSrvTaskFinishItem::getTaskDetailId, taskDetailId)
.eq(ChSrvTaskFinishItem::getItemId, itemId);
int delete = chSrvTaskFinishItemMapper.delete(chSrvTaskFinishItem);
LambdaQueryWrapper<ChSrvPlan> queryWrapper= new LambdaQueryWrapper<>();
queryWrapper.eq(ChSrvPlan::getTaskDetailId,taskDetailId);
LambdaQueryWrapper<ChSrvPlan> queryWrapper = new LambdaQueryWrapper<>();
// 一个失能人员对应多个护理人员的情况,需要用时间统计
//queryWrapper.eq(ChSrvPlan::getTaskDetailId,taskDetailId);
queryWrapper.eq(ChSrvPlan::getSrvPlanTime, date);
queryWrapper.eq(ChSrvPlan::getDisabInfoId, disabInfoId);
queryWrapper.eq(ChSrvPlan::getIsStatus, (short) 4);
List<ChSrvPlan> srvPlanList = chSrvPlanMapper.selectList(queryWrapper);
int size = srvPlanList.size();
log.info("accountReturn===paln===size:{}",size);
log.info("accountReturn===paln===size:{}", size);
// 大于1说明还有已完成的任务,不退回,只更新状态 等于1结算退回费用
try {
ChSrvPlan chSrvPlan = new ChSrvPlan();
chSrvPlan.setIsStatus(0L);
chSrvPlan.setIsBill(0L);
chSrvPlan.setLcd(new Date());
chSrvPlan.setPlanID(srvTaskRespVO.getPlanId());
chSrvPlan.setPlanID(Long.valueOf(srvTaskRespVO.getPlanId()));
chSrvPlanMapper.updateById(chSrvPlan);
if(size == 1){
if (size == 1) {
BigDecimal accountsAllCost = chDisabDetailAccounts.getAccountsAllCost();
if (accountsAllCost.compareTo(BigDecimal.ZERO) == 0) {
return Result.success("当前费用为0,不再进行费用退回");
......@@ -1148,7 +1173,7 @@ public class AccountServiceImpl extends ServiceImpl<ChDisabAccountsMapper, ChDis
BigDecimal accountsOverallCost = chDisabDetailAccounts.getAccountsOverallCost();
BigDecimal accountsPersonalCost = chDisabDetailAccounts.getAccountsPersonalCost();
BigDecimal allCost = new BigDecimal(0);
BigDecimal overCost= new BigDecimal(0);
BigDecimal overCost = new BigDecimal(0);
BigDecimal personCost = new BigDecimal(0);
if ("养老".equals(srvModeName)) {
allCost = BigDecimal.valueOf(50);
......@@ -1181,7 +1206,21 @@ public class AccountServiceImpl extends ServiceImpl<ChDisabAccountsMapper, ChDis
ca.setStatus((short) 0);
ca.setTaskDetailId(Long.valueOf(taskDetailId));
chSrvTaskDetailMapper.updateById(ca);
}
return Result.success();
}
@Override
@Transactional(rollbackFor = Exception.class)
public Result batchAccountReturn(List<AccountTaskExecuteReqVO> srvTaskListRespVO){
try {
for (AccountTaskExecuteReqVO srvTaskRespVO : srvTaskListRespVO) {
Result result = accountReturnHandler(srvTaskRespVO);
if(!ResultCode.SUCCESS.getCode().equals(result.getCode())){
return result;
}
}
} catch (Exception e) {
log.error("==============accountReturn error:{}",e);
......@@ -1191,3 +1230,5 @@ public class AccountServiceImpl extends ServiceImpl<ChDisabAccountsMapper, ChDis
}
}
......@@ -64,6 +64,62 @@
order by info.DISAB_INFO_ID
</select>
<select id="queryAccountsDeclareExport" resultType="com.hungraim.ltc.pojo.vo.account.AccountDeclareExportResp">
select
d.MODE_NAME modeName,
to_char(d.ACCOUNTS_START_TIME,'yyyy-MM-dd') accountsStartTime,
to_char(d.ACCOUNTS_END_TIME,'yyyy-MM-dd') accountsEndTime,
to_char(d.ACCOUNTS_TIME,'yyyy-MM') accountsTime,
d.ACCOUNTS_ALL_COST accountsAllCost,
d.ACCOUNTS_OVERALL_COST accountsOverallCost,
d.ACCOUNTS_PERSONAL_COST accountsPersonalCost,
d.TASK_DETAIL_ID taskDetailId,
(select district_name from ch_fnd_district dis where apply.MEDICAL_AREA = dis.district_code) medicalArea,
o.SRV_ORGAN_NAME srvOrganName,
o.SRV_ORGAN_ID srvOrganId,
info.REAL_NAME realName,
info.DISAB_INFO_ID disabInfoId,
d.DEDUCTION_AMOUNT deductionAmount,
d.REISSUE_AMOUNT reissueAmount,
d.ACCOUNTS_DETAIL_ID accountsDetailId,
DECODE(d.STATUS, '0','未申报','1', '已申报','2','已暂缓') status,
d.ACCOUNTS_ID accountsId
from CH_DISAB_ACCOUNTS_DETAIL d
left join CH_DISABLE_INFO info on d.DISAB_INFO_ID = info.DISAB_INFO_ID
left join CH_DISABLE_APPLY apply on info.APPLY_ID=apply.APPLY_ID
left join CH_SRV_ORGAN o on d.SRV_ORGAN_ID = o.SRV_ORGAN_ID
<where>
d.mode_name <![CDATA[ <>]]> '异地'
<if test="modeId != null and modeId != ''">
and DECODE(d.mode_name, '医疗','1','养老', '2','上门','3', '异地', '4') = #{modeId}
</if>
<if test="accountsStatus != null and accountsStatus != ''">
and d.status = #{accountsStatus}
</if>
<if test="realName != null and realName != ''">
AND info.real_name LIKE CONCAT('%',CONCAT(#{realName},'%'))
</if>
<if test="srvOrganId != null and srvOrganId != '' and srvOrganId!=0">
and d.SRV_ORGAN_ID = #{srvOrganId}
</if>
<if test="accountsTime != null and accountsTime != ''">
AND to_char(d.ACCOUNTS_TIME,'yyyy-MM') = #{accountsTime}
</if>
<if test='accountsStatusList != null and accountsStatusList.size()>0'>
AND d.status IN
<foreach collection="accountsStatusList" open="(" close=")" item="accountsStatusList" separator=",">
#{accountsStatusList}
</foreach>
</if>
</where>
order by info.DISAB_INFO_ID
</select>
<select id="queryNursingRecords" resultType="com.hungraim.ltc.pojo.entity.account.NursingRecordsRespVO">
select organ.SRV_ORGAN_NAME srvOrganName,
to_char(plan.SRV_PLAN_TIME,'yyyy-MM-dd') srvPlanTime,
......
package com.hungraim.ltc.pojo.vo.account;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
/**
* @author zwl
* @ClassName AccountDeclareExportResp
* @description 基金申报导出
* @date 2023/7/19 17:04
**/
@Data
public class AccountDeclareExportResp {
@Excel(name = "统筹区",width = 20)
private String medicalArea;
@Excel(name = "账单月份",width = 20)
private String accountsTime;
@Excel(name = "失能人员",width = 20)
private String realName;
/**
* 护理机构名称
*/
@Excel(name = "护理机构名称",width = 20)
private String srvOrganName;
/**
* 护理机构名称
*/
@Excel(name = "服务方式",width = 20)
private String modeName;
/**
* 总费用
*/
@Excel(name = "总费用合计",width = 20)
private String accountsAllCost;
/**
* 统筹费用
*/
@Excel(name = "统筹支出合计",width = 20)
private String accountsOverallCost;
/**
* 个人支付
*/
@Excel(name = "自付合计",width = 20)
private String accountsPersonalCost;
@Excel(name = "申报状态")
private String status;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment