package com.ltkj.web.controller.system;
|
|
import cn.hutool.core.codec.Base64;
|
import cn.hutool.core.date.DateUnit;
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.extra.pinyin.PinyinUtil;
|
import cn.hutool.json.JSONArray;
|
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.google.common.base.Joiner;
|
import com.ltkj.common.annotation.RepeatSubmit;
|
import com.ltkj.common.core.domain.AjaxResult;
|
import com.ltkj.common.core.domain.entity.SysDept;
|
import com.ltkj.common.core.domain.entity.SysDictData;
|
import com.ltkj.common.core.domain.entity.SysUser;
|
import com.ltkj.common.excelConfig.ExcelUtils;
|
import com.ltkj.common.task.TaskService;
|
import com.ltkj.common.utils.SecurityUtils;
|
import com.ltkj.common.utils.StringUtils;
|
import com.ltkj.framework.config.MatchUtils;
|
import com.ltkj.hosp.domain.*;
|
import com.ltkj.hosp.dto.ConfirmDto;
|
import com.ltkj.hosp.idutil.IdUtils;
|
import com.ltkj.hosp.mapper.TjSamplingMapper;
|
import com.ltkj.hosp.service.*;
|
import com.ltkj.hosp.sqlDomain.LtkjMiddleHead;
|
import com.ltkj.mall.domain.MallCheckLog;
|
import com.ltkj.mall.domain.MallOrder;
|
import com.ltkj.mall.mallOrderUtils.TjConstants;
|
import com.ltkj.mall.service.IMallCheckLogService;
|
import com.ltkj.mall.service.IMallOrderService;
|
import com.ltkj.system.service.ISysConfigService;
|
import com.ltkj.system.service.ISysDeptService;
|
import com.ltkj.system.service.ISysDictDataService;
|
import com.ltkj.system.service.ISysUserService;
|
import com.ltkj.web.config.pdfutils.PDFBinaryUtil;
|
import com.ltkj.web.config.task.TjReservationTask;
|
import com.ltkj.web.controller.his.HisApiMethod;
|
import com.ltkj.web.controller.his.HisApiMethodService;
|
import com.ltkj.web.controller.lis.LisApiMethod;
|
import com.ltkj.web.wxUtils.HttpClientUtils;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import jodd.util.StringUtil;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.transaction.NoTransactionException;
|
import org.springframework.transaction.annotation.Isolation;
|
import org.springframework.transaction.annotation.Propagation;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.*;
|
import java.math.BigDecimal;
|
import java.net.URL;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.stream.Collectors;
|
|
/**
|
* @Company: 西安路泰科技有限公司
|
* @Author: zhaowenxuan
|
* @Date: 2025/5/12 14:37
|
*/
|
@Slf4j
|
@RestController
|
@RequestMapping("/zhiye/order")
|
@Api(tags = "职业病相关接口")
|
public class ZhiYeController {
|
@Autowired
|
private ISysUserService userService;
|
@Autowired
|
private ITjCustomerService tjCustomerService;
|
@Autowired
|
private ITjReservationService tjReservationService;
|
@Resource
|
private ITjDwGroupingService dwGroupingService;
|
@Resource
|
private ITjGroupingProService groupingProService;
|
@Autowired
|
private IMallOrderService mallOrderService;
|
@Autowired
|
private ITbTransitionService transitionService;
|
@Autowired
|
private ITjOrderService tjOrderService;
|
@Autowired
|
private ISysConfigService configService;
|
@Resource
|
private IDictCompService compService;
|
@Resource
|
private ITjDwDeptService dwDeptService;
|
@Resource
|
private TjAsyncService asyncService;
|
@Resource
|
private ITjCompPayService compPayService;
|
@Resource
|
private ITjTeamSelectRecordService selectRecordService;
|
@Autowired
|
private IdUtils idUtils;
|
@Autowired
|
private ITjReportGetAddressService tjReportGetAddressService;
|
@Autowired
|
private LtkjMiddleHeadService headService;
|
@Autowired
|
private IMallCheckLogService mallCheckLogService;
|
@Autowired
|
private ITjFlowingWaterService tjFlowingWaterService;
|
@Autowired
|
private HisApiMethodService controller;
|
@Autowired
|
private HisApiMethod hisApiMethod;
|
@Autowired
|
private LisApiMethod lisApiMethod;
|
@Autowired
|
private ITjAskMedicalHistoryService tjAskMedicalHistoryService;
|
@Autowired
|
private ITjOrderDetailService tjOrderDetailService;
|
@Autowired
|
private ITjOrderRemarkService remarkService;
|
@Autowired
|
private ITjXdPictureService xdPictureService;
|
@Autowired
|
private ITjSamplingService samplingService;
|
@Autowired
|
private ITjProjectService projectService;
|
@Autowired
|
private ISysDictDataService sysDictDataService;
|
@Autowired
|
private LisJyflhbService lisJyflhbService;
|
@Autowired
|
private TjSamplingMapper tjSamplingMapper;
|
@Autowired
|
private ITbTransitionService tbTransitionService;
|
@Autowired
|
private ISysDeptService sysDeptService;
|
@Autowired
|
private TjFlowingWaterHisService tjFlowingWaterHisService;
|
@Autowired
|
private ISysDictDataService dictDataService;
|
@Autowired
|
private TaskService taskService;
|
|
ReentrantLock lock = new ReentrantLock();
|
|
@PostMapping
|
@ApiOperation(value = "体检签到登记接口")
|
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED)
|
public AjaxResult addOrderAndDetail(@RequestBody TjOrder tjOrder) throws Exception {
|
Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId());
|
SysUser sysUser = userService.getById(userId);
|
|
LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjCustomer::getCusId, tjOrder.getUserId());
|
TjCustomer tjCustomer = tjCustomerService.getOne(wq);
|
if (tjCustomer == null) return AjaxResult.error("该客户未登记");
|
|
TjFlowingWater tjFlowingWater = new TjFlowingWater();
|
LambdaQueryWrapper<TjReservation> wq1 = new LambdaQueryWrapper<>();
|
wq1.eq(TjReservation::getIdCard, tjCustomer.getCusIdcard());
|
wq1.eq(TjReservation::getIsExpire, 2);
|
TjReservation tjReservation = tjReservationService.getOne(wq1);
|
MallOrder mallOrder = null;
|
if (null != tjReservation) {
|
tjOrder.setReservationId(tjReservation.getId());
|
mallOrder = mallOrderService.getOne(new LambdaQueryWrapper<MallOrder>().eq(MallOrder::getReservationId, tjReservation.getId()));
|
if (DateUtil.endOfDay(DateUtil.offsetDay(tjReservation.getReservationTime(), tjReservation.getYxts())).before(new Date())) {
|
tjReservation.setIsExpire(1);
|
tjReservationService.updateById(tjReservation);
|
return AjaxResult.error("对不起您的预约已超时请重新预约");
|
}
|
if (null != tjReservation.getTeamNo()) tjOrder.setTeamNo(tjReservation.getTeamNo());
|
if (null != tjReservation.getCompanyId()) tjOrder.setFirmId(tjReservation.getCompanyId());
|
if (null != tjReservation.getCompany()) tjOrder.setFirmName(tjReservation.getCompany());
|
if (null != tjReservation.getDepartment()) tjOrder.setFirmDeptName(tjReservation.getDepartment());
|
if (null != tjReservation.getJobNo()) tjOrder.setFirmWorkId(tjReservation.getJobNo());
|
if (null != tjReservation.getPacId()) tjOrder.setPacId(tjReservation.getPacId());
|
if (null != tjReservation.getTjCategory()) tjOrder.setTjCategory(tjReservation.getTjCategory());
|
|
if (null != tjReservation.getZhiyeJhgln()) tjOrder.setZhiyeJhgln(tjReservation.getZhiyeJhgln());
|
if (null != tjReservation.getZhiyeJhgly()) tjOrder.setZhiyeJhgly(tjReservation.getZhiyeJhgly());
|
if (null != tjReservation.getZhiyeKsjhrq()) tjOrder.setZhiyeKsjhrq(tjReservation.getZhiyeKsjhrq());
|
if (null != tjReservation.getZhiyeGh()) tjOrder.setZhiyeGh(tjReservation.getZhiyeGh());
|
if (null != tjReservation.getZhiyeGz()) tjOrder.setZhiyeGz(tjReservation.getZhiyeGz());
|
if (null != tjReservation.getZhiyeZgln()) tjOrder.setZhiyeZgln(tjReservation.getZhiyeZgln());
|
if (null != tjReservation.getZhiyeZgly()) tjOrder.setZhiyeZgly(tjReservation.getZhiyeZgly());
|
if (null != tjReservation.getZhiyeJhys()) tjOrder.setZhiyeJhys(tjReservation.getZhiyeJhys());
|
if (null != tjReservation.getZhiyeRzsj()) tjOrder.setZhiyeRzsj(tjReservation.getZhiyeRzsj());
|
if (null != tjReservation.getZhiyeScdw()) tjOrder.setZhiyeScdw(tjReservation.getZhiyeScdw());
|
if (null != tjReservation.getZhiyeZysksrq()) tjOrder.setZhiyeZysksrq(tjReservation.getZhiyeZysksrq());
|
if (null != tjReservation.getZhiyeZysjsrq()) tjOrder.setZhiyeZysjsrq(tjReservation.getZhiyeZysjsrq());
|
if (null != tjReservation.getZhiyeZysszdw()) tjOrder.setZhiyeZysszdw(tjReservation.getZhiyeZysszdw());
|
|
if (null != tjReservation.getGroupingId()) {
|
TjDwGrouping dwGrouping = dwGroupingService.getById(tjReservation.getGroupingId());
|
tjOrder.setGroupId(tjReservation.getGroupingId());
|
tjOrder.setFirmDeptId(dwGrouping.getDwDeptId());
|
}
|
tjReservation.setIsExpire(1);
|
tjReservationService.updateById(tjReservation);
|
if (null != tjReservation.getTeamNo() && tjOrder.getTjType().equals("1")) {
|
tjOrder.setTjType("1");
|
} else if (tjOrder.getTjType().equals("2")) {
|
tjOrder.setTjType("2");
|
}
|
}
|
if (StringUtil.isBlank(tjOrder.getFirmId())) {
|
tjOrder.setFirmId("0");
|
}
|
|
if (null != tjOrder.getPhoto()) {
|
File file = new File(tjOrder.getPhoto());
|
if (file.isFile()) {
|
FileInputStream fileInputStream = new FileInputStream(file);
|
byte[] bytes = new byte[fileInputStream.available()];
|
fileInputStream.read(bytes); // 读取到 byte 里面
|
fileInputStream.close();
|
// 得到文件 之后转成beye 然后使用base64转码
|
String encode = Base64.encode(bytes);
|
tjOrder.setPhoto(encode);
|
}
|
}
|
|
|
if (null == tjOrder.getPacId() && null != transitionService.getTbTransitionPacIdByCusIdAndPac(String.valueOf(tjOrder.getUserId()))) {
|
tjOrder.setPacId(transitionService.getTbTransitionPacIdByCusIdAndPac(String.valueOf(tjOrder.getUserId())));
|
}
|
//判断小程序上预约是否付钱
|
if (null != mallOrder) tjOrder.setMallOrderId(String.valueOf(mallOrder.getId()));
|
tjOrder.setStatus(TjConstants.TJ_BEGIN);
|
tjOrder.setCardId(tjCustomer.getCardId());
|
if (null != tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")) {
|
tjOrder.setFinishTime(new Date());
|
tjOrder.setCheckStatus(1);
|
tjOrder.setStatus(TjConstants.TJ_WAIT);
|
// tjFlowingWater.setPayStasus(1L);
|
}
|
tjFlowingWater.setPayStasus(0L);
|
|
try {
|
boolean b = lock.tryLock(3, TimeUnit.MINUTES);
|
if (b) {
|
AjaxResult result = processOrderWithTransaction(tjOrder, tjCustomer, tjReservation, tjFlowingWater, mallOrder, sysUser);
|
if (!result.get("code").toString().equals("200"))
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
tjOrderService.tjQiandaodengji(tjOrder.getTjNumber());
|
return result;
|
}
|
}catch (Exception e){
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
log.error(String.valueOf(e),e.getMessage());
|
e.printStackTrace();
|
}
|
finally {
|
lock.unlock();
|
}
|
return AjaxResult.error();
|
}
|
|
|
@Transactional(propagation = Propagation.REQUIRED)
|
public AjaxResult processOrderWithTransaction(TjOrder tjOrder, TjCustomer tjCustomer, TjReservation tjReservation, TjFlowingWater tjFlowingWater, MallOrder mallOrder, SysUser sysUser) {
|
|
//获取拼接前缀
|
String makeLisTmhPrefix = configService.selectConfigByKey("make_lis_tmh_prefix");
|
String tjNumber = null;
|
int a =0;
|
while (tjNumber ==null){
|
if(a>3){
|
throw new RuntimeException("前方拥挤,请稍等!!!");
|
}
|
try {
|
String newTjNumberRedisLockAndMysql = idUtils.getNewTjNumberRedisLockAndMysql();
|
if (StringUtil.isNotBlank(makeLisTmhPrefix)){
|
String tjh= makeLisTmhPrefix + newTjNumberRedisLockAndMysql;
|
int countByTjNum = tjOrderService.getOrderCountByTjNum(tjh);
|
if(countByTjNum==0){
|
tjNumber=tjh;
|
}
|
}else {
|
int countByTjNum = tjOrderService.getOrderCountByTjNum(newTjNumberRedisLockAndMysql);
|
if(countByTjNum==0){
|
tjNumber=newTjNumberRedisLockAndMysql;
|
}
|
}
|
} catch (Exception e) {
|
log.error(e.getMessage());
|
throw new IllegalStateException();
|
}finally {
|
a++;
|
}
|
}
|
|
tjOrder.setTjNumber(tjNumber);
|
|
BigDecimal discount = BigDecimal.valueOf(Double.parseDouble(tjOrder.getTjFlowingWater().getDiscount()));
|
tjOrder.setDiscount(discount.toString());
|
if (tjOrderService.save(tjOrder)) {
|
//保存收货地址
|
if ("2".equals(tjOrder.getGetType())) {
|
final TjReportGetAddress address = tjOrder.getAddAddress();
|
if (address != null) {
|
address.setTjNumber(tjNumber);
|
tjReportGetAddressService.save(address);
|
}
|
}
|
Long cusNumber = tjCustomer.getCusNumber();
|
cusNumber += 1;
|
tjCustomer.setCusNumber(cusNumber);
|
|
if ("1".equals(tjOrder.getTjType())) {
|
if (null != tjReservation && tjReservation.getPayType() == 1) {
|
tjFlowingWater.setPayStasus(3L);
|
}
|
}
|
|
//调用SQL server拿取收费情况
|
//根据配置调取存储过程 将临时表数据存入预约表2023.12.12
|
final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
|
final String isPay = configService.selectConfigByKey("isPay");
|
if ("Y".equals(getInfoFromSqlData)) {
|
LtkjMiddleHead middleHead = headService.getMiddleHeadByPartId(tjCustomer.getCardId());
|
if (null != middleHead) {
|
tjFlowingWater.setPayStasus(1L);
|
}
|
}
|
tjFlowingWater.setOrderId(tjOrder.getOrderId());
|
Date date1 = new Date(System.currentTimeMillis());
|
String s1 = SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmssSSS").format(date1);
|
tjFlowingWater.setWaterId(PinyinUtil.getFirstLetter(tjCustomer.getCusName(), "").toUpperCase() + s1);
|
BigDecimal copeWith = tjOrder.getTjFlowingWater().getCopeWith();
|
BigDecimal paidIn = tjOrder.getTjFlowingWater().getPaidIn();
|
|
tjFlowingWater.setCopeWith(copeWith);
|
tjFlowingWater.setPaidIn(paidIn);
|
tjFlowingWater.setDiscount(discount.toString());
|
|
BigDecimal subtract = paidIn.subtract(copeWith.multiply(discount.divide(BigDecimal.valueOf(10))));
|
log.info("签到登记体检人: " + tjOrder.getTjNumber() + " 应付: " + copeWith);
|
log.info("签到登记体检人: " + tjOrder.getTjNumber() + " 折扣: " + discount);
|
log.info("签到登记体检人: " + tjOrder.getTjNumber() + " 实付: " + paidIn);
|
log.info("签到登记体检人: " + tjOrder.getTjNumber() + " 相差: " + subtract);
|
|
if (isPay.equals("true")) {
|
if (null != mallOrder) {
|
if (mallOrder.getOrderStatus().equals(201L)) {
|
tjFlowingWater.setCopeWith(mallOrder.getActualPrice());
|
tjFlowingWater.setPaidIn(mallOrder.getActualPrice());
|
tjFlowingWater.setDiscount(String.valueOf(1));
|
tjFlowingWater.setPayStasus(1L);
|
tjFlowingWater.setPayType(3L);
|
MallCheckLog checkLog = new MallCheckLog();
|
checkLog.setCheckBy(sysUser.getNickName());
|
checkLog.setUserId(mallOrder.getUserId());
|
checkLog.setConsignee(mallOrder.getConsignee());
|
checkLog.setIdCard(mallOrder.getIdCard());
|
checkLog.setOrderId(String.valueOf(mallOrder.getId()));
|
checkLog.setOrderSn(mallOrder.getOrderSn());
|
checkLog.setCheckTime(new Date());
|
checkLog.setShipSn("HX" + s1);
|
mallCheckLogService.save(checkLog);
|
mallOrder.setOrderStatus(301L);
|
mallOrderService.updateById(mallOrder);
|
}
|
} else {
|
tjFlowingWater.setCopeWith(tjOrder.getTjFlowingWater().getCopeWith());
|
tjFlowingWater.setPaidIn(tjOrder.getTjFlowingWater().getPaidIn());
|
tjFlowingWater.setDiscount(tjOrder.getTjFlowingWater().getDiscount());
|
// tjFlowingWater.setPayStasus(0L);
|
}
|
}
|
|
//修改临时表体检号
|
transitionService.updateTbTransitionTjNumByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber());
|
|
if (tjFlowingWaterService.save(tjFlowingWater)) {
|
tjOrder.setTjSerialNumber(String.valueOf(tjFlowingWater.getTjSerialNumber()));
|
tjOrderService.updateById(tjOrder);
|
}
|
|
/*调用his接口*/
|
String config = configService.selectConfigByKey("sfkqdyhis");
|
if (null != config && config.equals("Y")) {
|
AjaxResult result = null;
|
try {
|
result = hisApiMethod.HisApiMethods(tjCustomer, tjOrder);
|
if (!result.get("code").toString().equals("200")) {
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
Object jzh = result.get("jzh");
|
if (null != jzh && null != jzh.toString()) {
|
hisApiMethod.ZfHisApiMethod(jzh.toString());
|
}
|
log.info("该登记人挂号失败, 就诊号为: " + tjOrder.getCardId());
|
return AjaxResult.error("挂号失败!" + result.get("msg").toString());
|
}
|
} catch (NoTransactionException e) {
|
log.error(e.getMessage());
|
throw new RuntimeException(e);
|
}
|
|
log.info("该登记人的his就诊号是: " + tjOrder.getCardId());
|
// 查询 对接Lis、Pacs申请如果类型包含在配置内则使用对接lis、pacs
|
try {
|
if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
|
// 这是上面个人方法引入数据
|
tjFlowingWater.setPayStasus(1L);
|
newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
|
AjaxResult ajaxResult = hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder, sysUser, result);
|
if (!ajaxResult.get("code").toString().equals("200")) return ajaxResult;
|
tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
|
sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
|
remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
|
List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
|
xdPictureService.saveBatch(xdPictureList);
|
} else {
|
newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
|
List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
|
addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
|
hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId());
|
}
|
return AjaxResult.success(tjNumber);
|
} catch (Exception e) {
|
log.error(e.getMessage());
|
throw new RuntimeException(e);
|
}
|
} else {
|
tjCustomer.setCardId(tjOrder.getTjNumber());
|
tjCustomerService.updateById(tjCustomer);
|
transitionService.updateCardIdByTjNumAndIdCard(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), tjOrder.getTjNumber());
|
tjOrder.setCardId(tjOrder.getTjNumber());
|
tjOrderService.updateById(tjOrder);
|
}
|
String drrysfsf = configService.selectConfigByKey("drrysfsf");
|
try {
|
if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
|
if(StringUtil.isNotBlank(drrysfsf) && drrysfsf.equalsIgnoreCase("Y")){
|
if(null != tjReservation){
|
return isUseLisAndPacsRegister(tjOrder, tjCustomer, tjReservation, tjFlowingWater, sysUser, discount, tjNumber);
|
}else {
|
newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
|
AjaxResult error = isRequestCommonHisApi(tjOrder, tjCustomer, tjFlowingWater);
|
if (error != null) return error;
|
|
return AjaxResult.success(tjNumber);
|
}
|
}
|
return isUseLisAndPacsRegister(tjOrder, tjCustomer, tjReservation, tjFlowingWater, sysUser, discount, tjNumber);
|
|
} else {
|
newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
|
AjaxResult error = isRequestCommonHisApi(tjOrder, tjCustomer, tjFlowingWater);
|
if (error != null) return error;
|
}
|
} catch (Exception e) {
|
log.error(e.getMessage());
|
throw new RuntimeException(e);
|
}
|
|
return AjaxResult.success(tjNumber);
|
}
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
return AjaxResult.error();
|
}
|
|
public void newSaveextracted(TjOrder tjOrder, TjCustomer tjCustomer, BigDecimal discount, SysUser sysUser, TjReservation tjReservation, TjFlowingWater tjFlowingWater) {
|
try {
|
tjAskMedicalHistoryService.updateTjAskMedicalHistoryByCusId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjCustomer.getCusId()));
|
if (null != tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")) {
|
tjOrderDetailService.saveJSYTjOrderDetailsByCusId(tjCustomer.getCusIdcard(),
|
String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId(), String.valueOf(tjFlowingWater.getTjSerialNumber()));
|
} else {
|
tjOrderDetailService.saveTjOrderDetailsByCusId(tjCustomer.getCusIdcard(), String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId());
|
}
|
|
tjOrderDetailService.saveTjPureToneTesByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId());
|
|
//添加remark表数据
|
if (null != tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")) {
|
remarkService.saveJSYTjOrderRemarkByOrderId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjOrder.getOrderId()));
|
|
} else {
|
remarkService.saveTjOrderRemarkByOrderId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjOrder.getOrderId()));
|
|
}
|
//判断是否交钱
|
if ("1".equals(tjOrder.getTjType())) {
|
if (null != tjReservation && tjReservation.getPayType() == 1) {
|
tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
|
sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
|
remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
|
List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
|
xdPictureService.saveBatch(xdPictureList);
|
}
|
}
|
if (tjFlowingWater.getPayStasus() == 1L) {
|
tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
|
sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
|
tjFlowingWater.setPaidIn(tjOrder.getTjFlowingWater().getPaidIn());
|
tjFlowingWater.setCopeWith(tjOrder.getTjFlowingWater().getCopeWith());
|
tjFlowingWater.setPayType(4L);
|
tjFlowingWaterService.updateById(tjFlowingWater);
|
remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
|
// asyncService.addTjChargingStandard(tjOrder, transitionService.getTbTransitionListByCusId(tjCustomer.getCusIdcard(), tjOrder.getCardId()), sysUser);
|
List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
|
xdPictureService.saveBatch(xdPictureList);
|
}
|
} catch (Exception e) {
|
log.error(e.getMessage());
|
throw new RuntimeException(e);
|
}
|
}
|
|
public void addCaiYangDengJi(List<TjOrderDetail> detailList, boolean detailList1, TjOrder order, SysUser sysUser, String jxbz) {
|
String lis_tmh_prefix = configService.selectConfigByKey("make_lis_tmh_prefix");
|
String config = configService.selectConfigByKey("sfkqdyhis");
|
Boolean lisAndPacsRegister = lisApiMethod.isUseLisAndPacsRegister(order);
|
if (null != detailList && detailList1) {
|
Date date = new Date();
|
String format = DateUtil.format(date, "yyMMddHHmmssSSS");
|
for (TjOrderDetail detail : detailList) {
|
int i = samplingService.isExistProId(order.getTjNumber(), String.valueOf(detail.getProId()));
|
if(i>0) continue;
|
TjSampling sampling = new TjSampling();
|
if (null == projectService.getById(detail.getProId())) continue;
|
TjProject project = projectService.getById(detail.getProId());
|
Long proParentId = project.getProParentId();
|
String dictLabel = sysDictDataService.selectDictLabel("sys_dict_specimen", project.getSpecimenType());
|
if (null != proParentId && proParentId == 0) {
|
sampling.setJyxh(idUtils.generateLisID(lis_tmh_prefix));
|
sampling.setSpecimenTypeCode(project.getSpecimenType());
|
sampling.setSpecimenType(dictLabel);
|
if (config.equals("Y") && lisAndPacsRegister)
|
sampling.setJyxmdm(project.getLisXmbm());
|
else sampling.setJyxmdm(project.getProId().toString());
|
} else {
|
TjProject project1 = projectService.getById(proParentId);
|
sampling.setJyxh(idUtils.generateLisID(lis_tmh_prefix));
|
|
sampling.setSpecimenTypeCode(project1.getSpecimenType());
|
sampling.setSpecimenType(dictLabel);
|
if (config.equals("Y") && lisAndPacsRegister)
|
sampling.setJyxmdm(project1.getLisXmbm());
|
else sampling.setJyxmdm(project1.getProId().toString());
|
|
}
|
sampling.setSamplingNumber(format);
|
sampling.setTjNum(order.getTjNumber());
|
sampling.setCusId(String.valueOf(order.getUserId()));
|
if (tjCustomerService.getById(String.valueOf(order.getUserId())) != null) {
|
sampling.setCusName(tjCustomerService.getById(String.valueOf(order.getUserId())).getCusName());
|
}
|
sampling.setApplicationTime(date);
|
sampling.setTjTime(order.getCreateTime());
|
sampling.setProId(String.valueOf(detail.getProId()));
|
sampling.setProName(projectService.getById(detail.getProId()).getProName());
|
sampling.setCreateBy(sysUser.getNickName());
|
sampling.setCreateTime(date);
|
sampling.setUpdateBy(sysUser.getNickName());
|
sampling.setUpdateTime(date);
|
sampling.setCreateId(String.valueOf(sysUser.getUserId()));
|
sampling.setUpdateId(String.valueOf(sysUser.getUserId()));
|
sampling.setJxbz(jxbz);
|
samplingService.save(sampling);
|
}
|
}
|
if (lisApiMethod.isUseLisAndPacsRegister(order) && (null != config && config.equals("Y"))) {
|
AjaxResult ajaxResult = lisApiMethod.getJyFlHb();
|
if (ajaxResult.get("code").toString().equals("200")) {
|
String str = ajaxResult.get("data").toString();
|
str = str.replace("=", ":");
|
JSONArray array = JSONUtil.parseArray(str);
|
for (Object o : array) {
|
JSONObject object = (JSONObject) o;
|
LisJyflhb lisJyflhb = new LisJyflhb();
|
lisJyflhb.setHbhxm(object.getStr("hbhxm"));
|
lisJyflhb.setFlmc(object.getStr("flmc"));
|
lisJyflhb.setMc(object.getStr("mc"));
|
lisJyflhb.setFlbm(object.getStr("flbm"));
|
LambdaQueryWrapper<LisJyflhb> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(LisJyflhb::getFlbm, lisJyflhb.getFlbm());
|
LisJyflhb jyflhb = lisJyflhbService.getOne(wrapper);
|
if (jyflhb == null) {
|
lisJyflhb.setId(IdUtil.getSnowflake().nextId());
|
lisJyflhbService.save(lisJyflhb);
|
} else {
|
lisJyflhb.setId(jyflhb.getId());
|
lisJyflhbService.updateById(lisJyflhb);
|
}
|
}
|
}
|
|
}
|
if (StrUtil.isNotBlank(jxbz)) {
|
tjSamplingMapper.updateUserIdByTjNumAndJxbz(order.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), jxbz);
|
} else {
|
tjSamplingMapper.updateUserIdByTjNum(order.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()));
|
}
|
}
|
|
private AjaxResult isUseLisAndPacsRegister(TjOrder tjOrder, TjCustomer tjCustomer, TjReservation tjReservation, TjFlowingWater tjFlowingWater, SysUser sysUser, BigDecimal discount, String tjNumber) {
|
try {
|
log.info("签到登记进入未收费方法");
|
// 这是上面个人方法引入数据
|
tjFlowingWater.setPayStasus(1L);
|
newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
|
tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
|
sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
|
remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
|
List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
|
xdPictureService.saveBatch(xdPictureList);
|
List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
|
log.info("签到登记:采样数据查询个数"+detailList.size());
|
addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
|
return AjaxResult.success(tjNumber);
|
} catch (Exception e) {
|
log.error(e.getMessage());
|
throw new RuntimeException(e);
|
}
|
}
|
|
private AjaxResult isRequestCommonHisApi(TjOrder tjOrder, TjCustomer tjCustomer, TjFlowingWater tjFlowingWater) {
|
String s = configService.selectConfigByKey("is_request_common_his_api");
|
if (null != s && s.equals("Y")) {
|
String apiUrl = configService.selectConfigByKey("common_api_url");
|
String hospbm = configService.selectConfigByKey("common_api_service_hospbm");
|
HashMap<String, Object> map = new HashMap<>();
|
map.put("pationId", tjCustomer.getPationId());
|
map.put("cardId", tjCustomer.getHisJzkh());
|
map.put("tjNum", tjFlowingWater.getTjSerialNumber());
|
map.put("kaiDanKs", "7805");
|
// 收费标志 1待售费 2待退费
|
map.put("shouTuiStatus", "1");
|
|
JSONArray array = JSONUtil.createArray();
|
LambdaQueryWrapper<TbTransition> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(TbTransition::getTjNum, tjOrder.getTjNumber());
|
wrapper.eq(TbTransition::getCusId, tjCustomer.getCusIdcard());
|
wrapper.eq(TbTransition::getCardId, tjCustomer.getCardId());
|
wrapper.isNotNull(TbTransition::getNowPrice);
|
wrapper.gt(TbTransition::getNowPrice, 0);
|
|
List<TbTransition> list = tbTransitionService.list(wrapper);
|
BigDecimal zongjia = new BigDecimal("0.0");
|
for (TbTransition transition : list) {
|
LambdaQueryWrapper<TjProject> wrapper1 = new LambdaQueryWrapper<>();
|
wrapper1.eq(TjProject::getProId, transition.getProId());
|
TjProject project = projectService.getOne(wrapper1);
|
|
LambdaQueryWrapper<SysDept> wrapper2 = new LambdaQueryWrapper<>();
|
wrapper2.eq(SysDept::getDeptId, project.getDeptId());
|
SysDept dept = sysDeptService.getOne(wrapper2);
|
|
JSONObject obj = JSONUtil.createObj();
|
// Integer sl = project.getSl();
|
int sl = 1;
|
BigDecimal danjia = transition.getNowPrice();
|
BigDecimal allPrice = danjia.multiply(new BigDecimal(sl));
|
obj.putOpt("danJia", danjia);
|
obj.putOpt("jieSuanJe", allPrice);
|
obj.putOpt("shuliang", sl);
|
obj.putOpt("zhiXingKs", dept.getDeptId());
|
obj.putOpt("zhiXingKsMc", dept.getDeptName());
|
obj.putOpt("shouFeiXmId", project.getHisXmbm());
|
obj.putOpt("shouFeiXmMc", project.getHisXmmc());
|
array.add(obj);
|
zongjia = zongjia.add(allPrice);
|
}
|
map.put("feiYongInfoList", array);
|
log.info("调用His接口前 收费总价:{}", zongjia.toString());
|
|
String post = HttpClientUtils.sendPost(apiUrl + "/api/his/" + hospbm + "/creatCostInfo", map);
|
JSONObject object = JSONUtil.parseObj(post);
|
if (object.getInt("code") == 200) {
|
JSONObject data = object.getJSONObject("data");
|
tjFlowingWater.setHisWaterId(data.getStr("feiYongId"));
|
JSONArray mxList = data.getJSONArray("mxList");
|
if (mxList != null && !mxList.isEmpty()) {
|
List<TjFlowingWaterHis> his = mxList.toList(TjFlowingWaterHis.class);
|
tjFlowingWaterHisService.saveBatch(his);
|
}
|
tjFlowingWaterService.updateById(tjFlowingWater);
|
} else {
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
return AjaxResult.error();
|
}
|
}
|
return null;
|
}
|
|
|
|
@PostMapping("/importTemplate")
|
@ApiOperation(value = "导出excel表模板")
|
public void importTemplate(HttpServletResponse response) {
|
String value = configService.selectConfigByKey("path_filePath");
|
//原来的下载模板调用接口
|
try {
|
String base64String = PDFBinaryUtil.getPDFBinary(value + File.separator + "西安路泰机电科技有限公司.xls");
|
if (null != base64String) {
|
PDFBinaryUtil.base64StringToPDF(base64String, FileUtil.mkdir(value).getPath() + File.separator + "团体预约Excel模版.xls");
|
String filePath = value + File.separator + "团体预约Excel模版.xls";
|
File f = new File(filePath);
|
BufferedInputStream br = null;
|
OutputStream out = null;
|
FileInputStream fileInputStream = null;
|
try {
|
fileInputStream = new FileInputStream(f);
|
br = new BufferedInputStream(fileInputStream);
|
byte[] bs = new byte[1024];
|
int len = 0;
|
response.reset(); // 非常重要
|
if (true) {
|
// 在线打开方式
|
URL u = new URL("file:///" + filePath);
|
//System.out.println(u);
|
String contentType = u.openConnection().getContentType();
|
response.setContentType(contentType);
|
response.setHeader("Content-Disposition", "inline;filename=团体预约Excel模版.xls");
|
} else {
|
// 纯下载方式
|
response.setContentType("application/x-msdownload");
|
response.setContentType("application/pdf;charset=utf-8");
|
response.setHeader("Content-Disposition", "attachment;filename=团体预约Excel模版.xls");
|
}
|
out = response.getOutputStream();
|
while ((len = br.read(bs)) > 0) {
|
out.write(bs, 0, len);
|
}
|
out.flush();
|
out.close();
|
br.close();
|
fileInputStream.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
//System.out.println("pdf处理文件异常" + e);
|
} finally {
|
if (out != null) {
|
try {
|
out.close();
|
br.close();
|
fileInputStream.close();
|
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
} catch (Exception e) {
|
ExcelUtils.exportTemplate(response,"团体预约Excel模版",TjReservation.class);
|
throw new RuntimeException(e);
|
}
|
}
|
|
|
@PostMapping("/newExcelImportNotDwDeptId")
|
@ApiOperation(value = "团体excel表导入 (新版本不传单位部门id)")
|
@Transactional
|
public AjaxResult newExcelImportNotDwDeptId(@RequestPart(value = "file") @ApiParam(value = "Excel文件") MultipartFile file,
|
@RequestParam @ApiParam(value = "单位id") String dwId) {
|
List<TjReservation> tjReservations = null;
|
try {
|
tjReservations = ExcelUtils.readMultipartFile(file, TjReservation.class);
|
} catch (Exception e) {
|
return AjaxResult.error("导入文件有误请检查导入文件!");
|
}
|
int grouping = dwGroupingService.selectTjDwGroupingByDwId(dwId);
|
|
if (grouping == 0) {
|
return AjaxResult.error("请检查该单位是否存否存在项目!");
|
}
|
|
List<String> wrongList = new ArrayList<>();
|
List<TjReservation> rightList = new ArrayList<>();
|
List<String> yyList = new ArrayList<>();
|
Map<String, Object> map = new HashMap<>();
|
List<TjDwGrouping> groupingMans = null;//男
|
List<TjDwGrouping> groupingWoMans = null;//女
|
List<TjDwGrouping> groupingWzs = null;//未知(不分性别)
|
try {
|
groupingMans = dwGroupingService.list(new LambdaQueryWrapper<TjDwGrouping>().eq(TjDwGrouping::getDwId, dwId)
|
.eq(TjDwGrouping::getSex, 0));
|
groupingWoMans = dwGroupingService.list(new LambdaQueryWrapper<TjDwGrouping>().eq(TjDwGrouping::getDwId, dwId)
|
.eq(TjDwGrouping::getSex, 1));
|
groupingWzs = dwGroupingService.list(new LambdaQueryWrapper<TjDwGrouping>().eq(TjDwGrouping::getDwId, dwId)
|
.eq(TjDwGrouping::getSex, 2));
|
} catch (Exception e) {
|
return AjaxResult.error("分组信息有误请重新分组!");
|
}
|
|
try {
|
String sfjysfzh = configService.selectConfigByKey("sfjysfzh");
|
String sfjysjh = configService.selectConfigByKey("sfjysjh");
|
|
//计算合计
|
BigDecimal hjMoney = new BigDecimal("0.00");
|
//男组金额
|
BigDecimal manMoney = new BigDecimal("0.00");
|
//女组金额
|
BigDecimal woManMoney = new BigDecimal("0.00");
|
int count = 0;//总计人数
|
int manCount = 0;//男组人数
|
int woManCount = 0;//女组人数
|
List<String> ids = new ArrayList<>();
|
|
// String errMsg = "";
|
for (TjReservation tjReservation : tjReservations) {
|
String name = tjReservation.getName();
|
String idCard = tjReservation.getIdCard();
|
String phoe = tjReservation.getPhoe();
|
name = name.replaceAll("[',,;.。 ‘“]", "").replaceAll(" ", "");
|
phoe = phoe.replaceAll("[',,;.。 ‘“]", "").replaceAll(" ", "");
|
idCard = idCard.replaceAll("[',,;.。 ‘“]", "").replaceAll(" ", "");
|
|
if (!StringUtils.isBlank(idCard) || !StringUtils.isBlank(phoe) || null != tjReservation.getDwxm()) {
|
//将科学计数的手机号转换成文本形式
|
phoe = MatchUtils.translateToPlainStr(tjReservation.getPhoe());
|
|
if (!ids.isEmpty() && ids.contains(idCard)) {
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
return AjaxResult.error("此身份证号: " + tjReservation.getIdCard() + " 重复,请核对后上传!");
|
}
|
|
ids.add(idCard);
|
|
if (!Objects.equals(tjReservation.getSex(), MatchUtils.getSexByIdCard(idCard))){
|
wrongList.add(tjReservation.getName() + " " + tjReservation.getIdCard()+"以下人员性别 不准确");
|
log.info(tjReservation.getName() + " " + idCard);
|
}
|
|
if ((sfjysfzh.equalsIgnoreCase("Y") && !MatchUtils.isIdCard(idCard)) ||
|
(sfjysjh.equalsIgnoreCase("Y") && !MatchUtils.isMobileNO(phoe))) {
|
wrongList.add(tjReservation.getName() + " " + tjReservation.getIdCard()+"身份证号/手机号 格式不准确");
|
// errMsg = "身份证号/手机号 格式不准确";
|
log.info(tjReservation.getName() + " " + idCard + MatchUtils.isIdCard(idCard) + " " + phoe + " " + MatchUtils.isMobileNO(phoe));
|
}
|
// else {
|
|
tjReservation.setPhoe(phoe);
|
|
tjReservation.setName(name);
|
|
tjReservation.setIdCard(idCard);
|
|
//年龄
|
tjReservation.setAge(String.valueOf(MatchUtils.getAgeByIdCard(tjReservation.getIdCard().replaceAll(" ", ""))));
|
//出生日期
|
try {
|
tjReservation.setBirthday(MatchUtils.getBirthDayByIdCard(tjReservation.getIdCard().replaceAll(" ", "")));
|
} catch (Exception e) {
|
// return AjaxResult.error("身份证号不正确");
|
}
|
|
TjDwDept dwDept = dwDeptService.getOne(new LambdaQueryWrapper<TjDwDept>().
|
eq(TjDwDept::getDwDeptName, tjReservation.getDwxm().trim()).eq(TjDwDept::getDwId,dwId));
|
if (null != dwDept) {
|
for (TjDwGrouping groupingMan : groupingMans) {
|
if (null != groupingMan && groupingMan.getSex().equals(String.valueOf(tjReservation.getSex())) && groupingMan.getDwDeptId().equals(dwDept.getId())) {
|
tjReservation.setGroupingId(groupingMan.getId());
|
tjReservation.setGroupingName(groupingMan.getGroupingName());
|
tjReservation.setYsPrice(groupingMan.getYsPrice());
|
//合计
|
hjMoney = hjMoney.add(groupingMan.getYsPrice());
|
count += 1;
|
//男组人数
|
manMoney = manMoney.add(groupingMan.getYsPrice());
|
manCount += 1;
|
}
|
}
|
|
for (TjDwGrouping groupingWoMan : groupingWoMans) {
|
if (null != groupingWoMan && groupingWoMan.getSex().equals(String.valueOf(tjReservation.getSex())) && groupingWoMan.getDwDeptId().equals(dwDept.getId())) {
|
tjReservation.setGroupingId(groupingWoMan.getId());
|
tjReservation.setGroupingName(groupingWoMan.getGroupingName());
|
tjReservation.setYsPrice(groupingWoMan.getYsPrice());
|
//合计
|
hjMoney = hjMoney.add(groupingWoMan.getYsPrice());
|
count += 1;
|
woManMoney = woManMoney.add(groupingWoMan.getYsPrice());
|
woManCount += 1;
|
}
|
}
|
for (TjDwGrouping groupingWz : groupingWzs) {
|
if (null != groupingWz && groupingWz.getDwDeptId().equals(dwDept.getId())) {
|
tjReservation.setGroupingId(groupingWz.getId());
|
tjReservation.setGroupingName(groupingWz.getGroupingName());
|
tjReservation.setYsPrice(groupingWz.getYsPrice());
|
//合计
|
hjMoney = hjMoney.add(groupingWz.getYsPrice());
|
count += 1;
|
if (tjReservation.getSex() == 0) {
|
manMoney = manMoney.add(groupingWz.getYsPrice());
|
manCount += 1;
|
}
|
if (tjReservation.getSex() == 1) {
|
woManMoney = woManMoney.add(groupingWz.getYsPrice());
|
woManCount += 1;
|
}
|
|
}
|
}
|
LambdaQueryWrapper<TjReservation> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjReservation::getIdCard, tjReservation.getIdCard());
|
wq.eq(TjReservation::getIsExpire, 2);
|
TjReservation one = tjReservationService.getOne(wq);
|
if (null != one) {
|
yyList.add(one.getName() + " " + tjReservation.getIdCard());
|
} else {
|
rightList.add(tjReservation);
|
}
|
|
} else {
|
wrongList.add(tjReservation.getName() + " " + tjReservation.getIdCard()+"所填写的套餐分类名 不正确");
|
}
|
// }
|
|
}
|
else {
|
wrongList.add(tjReservation.getName()+"身份证号/手机号/套餐分类名名为空");
|
}
|
}
|
|
|
if (!yyList.isEmpty()) {
|
map.put("list", yyList);
|
map.put("hjMoney", hjMoney);
|
return AjaxResult.error("操作失败,以上人员已经预约无需导入!!!", map);
|
}
|
|
if (!wrongList.isEmpty()) {
|
map.put("list", wrongList);
|
map.put("hjMoney", hjMoney);
|
return AjaxResult.error("操作失败, 请认真核对错误信息后重新导入!!!", map);
|
} else {
|
map.put("list", rightList);
|
map.put("count", count);
|
map.put("hjMoney", hjMoney);
|
map.put("manCount", manCount);
|
map.put("manMoney", manMoney);
|
map.put("woManCount", woManCount);
|
map.put("woManMoney", woManMoney);
|
return AjaxResult.success("操作成功", map);
|
}
|
} catch (NoTransactionException e) {
|
// throw new RuntimeException(e);
|
log.error(String.valueOf(e), e.getMessage());
|
return AjaxResult.error();
|
}
|
}
|
|
|
|
@PostMapping("/newReservationConfirmxbb")
|
@ApiOperation(value = "团体预约确认接口 (新版本)")
|
@Transactional
|
@RepeatSubmit
|
public AjaxResult newReservationConfirmxbb(@RequestBody ConfirmDto dto) {
|
//预约的所有人
|
List<TjReservation> rightList = dto.getReservations();
|
|
//预约时间
|
String reservationTime = dto.getReservationTime();
|
if (null == reservationTime) {
|
return AjaxResult.error("请选择预约时间!");
|
}
|
|
Date date = new Date();
|
|
//异步数据
|
// asyncService.addNewReservationConfirm(rightList);
|
asyncService.saveNewReservationConfirm(rightList);
|
|
//体检单位部门
|
DictComp comp = compService.getById(dto.getDwId());
|
|
String teamNo = PinyinUtil.getFirstLetter(comp.getCnName(), "") + DateUtil.format(date, "yyMMddHHmmss");
|
|
//团体人数合计价格
|
BigDecimal compPay = new BigDecimal("0.00");
|
|
String payTypeGlTjType = configService.selectConfigByKey("reservation_pay_type_gl_tj_type");
|
JSONObject parseObj = JSONUtil.parseObj(payTypeGlTjType);
|
if (null != rightList && !rightList.isEmpty()) {
|
|
List<String> ids=new ArrayList<>();
|
|
for (TjReservation reservation : rightList) {
|
|
if(!ids.isEmpty() && ids.contains(reservation.getIdCard())){
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
return AjaxResult.error("此身份证号: "+reservation.getIdCard()+" 重复,请核对后上传!");
|
|
}
|
reservation.setName(reservation.getName().replaceAll(" ","").replaceAll(" ",""));
|
ids.add(reservation.getIdCard());
|
|
TjDwGrouping dwGrouping = dwGroupingService.getById(reservation.getGroupingId());
|
|
if(null !=dwGrouping){
|
TjDwDept dwDept = dwDeptService.getById(dwGrouping.getDwDeptId());
|
|
LambdaQueryWrapper<TjReservation> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjReservation::getIdCard, reservation.getIdCard());
|
wq.eq(TjReservation::getIsExpire, 2);
|
TjReservation one = tjReservationService.getOne(wq);
|
if (null != one) {
|
continue;
|
}
|
LambdaQueryWrapper<TjGroupingPro> wq1 = new LambdaQueryWrapper<>();
|
wq1.eq(TjGroupingPro::getGroupingId, reservation.getGroupingId());
|
List<String> proIds = groupingProService.list(wq1).stream().map(TjGroupingPro::getProId).collect(Collectors.toList());
|
reservation.setProIds(Joiner.on(",").join(proIds));
|
reservation.setReservationTime(DateUtil.parse(reservationTime, "yyyy-MM-dd"));
|
reservation.setCompanyId(dwGrouping.getDwId());
|
reservation.setCompany(dwGrouping.getDwName());
|
reservation.setPayType(Long.valueOf(dwGrouping.getPayType()));
|
LambdaQueryWrapper<SysDictData> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(SysDictData::getDictType, "reservation_pay_type");
|
wrapper.eq(SysDictData::getDictValue, reservation.getPayType());
|
SysDictData dictData = dictDataService.getOne(wrapper);
|
for (Map.Entry<String, Object> entry : parseObj.entrySet()) {
|
String[] split = entry.getValue().toString().split("-");
|
if (split[0].equals(String.valueOf(dictData.getDictCode()))) {
|
reservation.setTjType(dictDataService.selectDictDataById(Long.valueOf(split[1])).getDictValue());
|
}
|
}
|
|
|
reservation.setPacId(dwDept.getId());
|
compPay = compPay.add(dwGrouping.getYsPrice());
|
// reservation.setTjType(String.valueOf(1));
|
reservation.setTeamNo(teamNo);
|
reservation.setYxts(dto.getYxts());
|
tjReservationService.save(reservation);
|
taskService.addTask(new TjReservationTask(reservation.getId(),
|
DateUtil.between(date, DateUtil.endOfDay(DateUtil.offsetDay(reservation.getReservationTime(), dto.getYxts())), DateUnit.MS)));
|
}
|
}
|
|
LambdaQueryWrapper<TjCompPay> wq0 = new LambdaQueryWrapper<>();
|
wq0.eq(TjCompPay::getCompId, dto.getDwId());
|
wq0.eq(TjCompPay::getTeamNo, teamNo);
|
TjCompPay one = compPayService.getOne(wq0);
|
if (null != one) {
|
one.setCopeWith(compPay);
|
one.setSerialNumber(SecurityUtils.getUsername() + DateUtil.format(date, "yyMMddHHmmssSSS"));
|
one.setInvoiceNo("FP" + DateUtil.format(date, "yyMMddHHmmssSSS"));
|
one.setPaidIn(new BigDecimal("0.00"));
|
compPayService.updateById(one);
|
} else {
|
TjCompPay tjCompPay = new TjCompPay();
|
tjCompPay.setCompId(dto.getDwId());
|
tjCompPay.setTeamNo(teamNo);
|
tjCompPay.setCopeWith(compPay);
|
tjCompPay.setSerialNumber(SecurityUtils.getUsername() + DateUtil.format(date, "yyMMddHHmmssSSS"));
|
tjCompPay.setInvoiceNo("FP" + DateUtil.format(date, "yyMMddHHmmssSSS"));
|
tjCompPay.setPaidIn(new BigDecimal("0.00"));
|
tjCompPay.setDifference(tjCompPay.getCopeWith().subtract(BigDecimal.valueOf(0.00)));
|
compPayService.save(tjCompPay);
|
}
|
|
// .filter(a-> null != a.getPacId())
|
|
Map<String, List<TjReservation>> collect = rightList.stream().collect(Collectors.groupingBy(TjReservation::getPacId));
|
|
if (!collect.isEmpty()) {
|
for (Map.Entry<String, List<TjReservation>> entry : collect.entrySet()) {
|
LambdaQueryWrapper<TjTeamSelectRecord> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjTeamSelectRecord::getTeamNo, teamNo);
|
wq.eq(TjTeamSelectRecord::getCompId, dto.getDwId());
|
TjTeamSelectRecord recordServiceOne = selectRecordService.getOne(wq);
|
if (null != recordServiceOne) {
|
recordServiceOne.setPacId(entry.getKey());
|
recordServiceOne.setCompId(dto.getDwId());
|
recordServiceOne.setTeamNo(teamNo);
|
recordServiceOne.setTransactionAmount(new BigDecimal("0.00"));
|
recordServiceOne.setCount(entry.getValue().size());
|
recordServiceOne.setDifference(compPay);
|
selectRecordService.updateById(recordServiceOne);
|
} else {
|
TjTeamSelectRecord selectRecord = new TjTeamSelectRecord();
|
selectRecord.setCompId(dto.getDwId());
|
selectRecord.setPacId(entry.getKey());
|
selectRecord.setTeamNo(teamNo);
|
selectRecord.setTransactionAmount(new BigDecimal("0.00"));
|
selectRecord.setCount(entry.getValue().size());
|
selectRecord.setDifference(compPay);
|
selectRecordService.save(selectRecord);
|
}
|
}
|
}
|
return AjaxResult.success("预约成功");
|
}
|
return AjaxResult.error("请选择预约对象");
|
}
|
|
}
|