This commit is contained in:
LiJianZhao 2025-04-27 14:21:53 +08:00
parent e6f9eab4f8
commit 253190d255
7 changed files with 120 additions and 22 deletions

View File

@ -40,9 +40,8 @@ public class StatisticsController extends BaseController {
LocalDateTime beginTime = DateUtil.getDateTime(begin); LocalDateTime beginTime = DateUtil.getDateTime(begin);
LocalDateTime endTime = DateUtil.getDateTime(end); LocalDateTime endTime = DateUtil.getDateTime(end);
// RevenueOverviewVo revenueOverview = statisticsService.getRevenueOverview(beginTime, endTime); RevenueOverviewVo revenueOverview = statisticsService.getRevenueOverview(beginTime, endTime);
// return success(revenueOverview); return success(revenueOverview);
return success();
} }
@ -56,15 +55,8 @@ public class StatisticsController extends BaseController {
@RequestMapping("expiryDateWarning") @RequestMapping("expiryDateWarning")
public Result<List<Map<String, Object>>> expiryDateWarning() { public Result<List<Map<String, Object>>> expiryDateWarning() {
// QueryWrapper<InventoryGoodsView> inventoryQuery = new QueryWrapper<>(); List<Map<String, Object>> maps = inventoryService.expiryDateWarning();
// inventoryQuery.select("*,EXTRACT(EPOCH FROM AGE(expiry_date,CURRENT_DATE))/" + Constants.OneDaySecond + " as remaining_days"); return success(maps);
// inventoryQuery.apply("CURRENT_DATE + INTERVAL '1 day' * expiry_warn_days >= expiry_date");
// inventoryQuery.orderByAsc("expiry_date");
//
// List<Map<String, Object>> maps = iInventoryGoodsViewService.listMaps(inventoryQuery);
inventoryService.expiryDateWarning();
// return success(maps);
return success();
} }
@RequestMapping("getPersonPayOverview") @RequestMapping("getPersonPayOverview")

View File

@ -2,6 +2,10 @@ package com.syjiaer.clinic.server.mapper.inventory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.syjiaer.clinic.server.entity.inventory.Inventory; import com.syjiaer.clinic.server.entity.inventory.Inventory;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
/** /**
@ -13,6 +17,10 @@ import com.syjiaer.clinic.server.entity.inventory.Inventory;
* @since 2025-04-17 * @since 2025-04-17
*/ */
public interface InventoryMapper extends BaseMapper<Inventory> { public interface InventoryMapper extends BaseMapper<Inventory> {
@Select("SELECT" +
" inventory.*,goods.expiry_warn_days,goods.unit_price,EXTRACT(EPOCH FROM AGE(expiry_date, CURRENT_DATE)) / 86400 AS remaining_days" +
" FROM inventory LEFT JOIN goods ON inventory.good_id = goods.id" +
" WHERE CURRENT_DATE + INTERVAL '1 day' * goods.expiry_warn_days >= inventory.expiry_date AND inventory.whole_number !=0")
List<Map<String, Object>> selectExpiryWarn();
} }

View File

@ -245,10 +245,13 @@ public class InventoryService extends BaseService {
} }
/**
public void expiryDateWarning() { * 查询即将过期的库存
// inventoryMapper.selectListB * @return
*/
public List<Map<String, Object>> expiryDateWarning() {
List<Map<String, Object>> maps = inventoryMapper.selectExpiryWarn();
return maps;
} }

View File

@ -98,7 +98,7 @@ public class PatientRegistrationService extends BaseService {
registration.setOrganizationSectionId(section.getId()); registration.setOrganizationSectionId(section.getId());
patientRegistrationMapper.insert(registration); patientRegistrationMapper.insert(registration);
//医保挂号 //医保挂号
if (mdtrtCertType == null && mdtrtCertNo == null){ if (mdtrtCertType == null || mdtrtCertNo == null || mdtrtCertType.isEmpty() || mdtrtCertNo.isEmpty()){
return registration; return registration;
} }

View File

@ -39,8 +39,12 @@ public class SocialIcpcDiagnoseService extends BaseService {
List<String> code_list = new ArrayList<>(); List<String> code_list = new ArrayList<>();
DateTimeFormatter dateTimeFormatter = DateUtil.getDateTimeFormatter(DateUtil.DATE_TIME_FORMAT); DateTimeFormatter dateTimeFormatter = DateUtil.getDateTimeFormatter(DateUtil.DATE_TIME_FORMAT);
List<SocialIcpcDiagnosis> list = new ArrayList<>(); List<SocialIcpcDiagnosis> list = new ArrayList<>();
String next_version_name = "";
for (int i = 0; i < jsonArray.size(); i++) { for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i); JSONObject jsonObject = jsonArray.getJSONObject(i);
if (i==0){
next_version_name = jsonObject.getString("ver");
}
if (!jsonObject.getString("vali_flag").equals("1")) { if (!jsonObject.getString("vali_flag").equals("1")) {
continue; continue;
} }
@ -75,12 +79,19 @@ public class SocialIcpcDiagnoseService extends BaseService {
list.add(socialIcpcDiagnosis); list.add(socialIcpcDiagnosis);
code_list.add(socialIcpcDiagnosis.getCode()); code_list.add(socialIcpcDiagnosis.getCode());
} }
if (next_version_name.isEmpty()){
return next_version_name;
}
socialDirectoryVersionService.saveVersion(1361, pre_version_name, next_version_name, list.size());
if(list.isEmpty()){
return null;
}
QueryWrapper<SocialIcpcDiagnosis> queryWrapper = new QueryWrapper<>(); QueryWrapper<SocialIcpcDiagnosis> queryWrapper = new QueryWrapper<>();
queryWrapper.in("code", code_list); queryWrapper.in("code", code_list);
socialIcpcDiagnosisMapper.delete(queryWrapper); socialIcpcDiagnosisMapper.delete(queryWrapper);
socialIcpcDiagnosisMapper.insert(list, 100); socialIcpcDiagnosisMapper.insert(list, 100);
socialDirectoryVersionService.saveVersion(1361, pre_version_name, list.get(0).getVer(), list.size());
return list.get(0).getVer(); return next_version_name;
}catch (JSONException e){ }catch (JSONException e){
log.error(e.toString()); log.error(e.toString());
return null; return null;

View File

@ -38,8 +38,12 @@ public class SocialIcpcItemService extends BaseService {
List<String> code_list = new ArrayList<>(); List<String> code_list = new ArrayList<>();
DateTimeFormatter dateTimeFormatter = DateUtil.getDateTimeFormatter(DateUtil.DATE_TIME_FORMAT); DateTimeFormatter dateTimeFormatter = DateUtil.getDateTimeFormatter(DateUtil.DATE_TIME_FORMAT);
List<SocialIcpcItem> list = new ArrayList<>(); List<SocialIcpcItem> list = new ArrayList<>();
String next_version_name = "";
for (int i = 0; i < jsonArray.size(); i++) { for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i); JSONObject jsonObject = jsonArray.getJSONObject(i);
if (i==0){
next_version_name = jsonObject.getString("ver");
}
if (!jsonObject.getString("vali_flag").equals("1")) { if (!jsonObject.getString("vali_flag").equals("1")) {
continue; continue;
} }
@ -77,12 +81,18 @@ public class SocialIcpcItemService extends BaseService {
list.add(socialIcpcItem); list.add(socialIcpcItem);
code_list.add(socialIcpcItem.getCode()); code_list.add(socialIcpcItem.getCode());
} }
if (next_version_name.isEmpty()){
return next_version_name;
}
socialDirectoryVersionService.saveVersion(1362, pre_version_name, next_version_name, list.size());
if (list.isEmpty()){
return null;
}
QueryWrapper<SocialIcpcItem> queryWrapper = new QueryWrapper<>(); QueryWrapper<SocialIcpcItem> queryWrapper = new QueryWrapper<>();
queryWrapper.in("code", code_list); queryWrapper.in("code", code_list);
socialIcpcItemMapper.delete(queryWrapper); socialIcpcItemMapper.delete(queryWrapper);
socialIcpcItemMapper.insert(list, 100); socialIcpcItemMapper.insert(list, 100);
socialDirectoryVersionService.saveVersion(1362, pre_version_name, list.get(0).getVer(), list.size()); return next_version_name;
return list.get(0).getVer();
}catch (JSONException e){ }catch (JSONException e){
log.error(e.toString()); log.error(e.toString());
return null; return null;

View File

@ -1,6 +1,17 @@
package com.syjiaer.clinic.server.service.statistics; package com.syjiaer.clinic.server.service.statistics;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.syjiaer.clinic.server.common.enums.GoodsTypeEnum;
import com.syjiaer.clinic.server.common.enums.RetailOrderPayTypeEnum;
import com.syjiaer.clinic.server.common.enums.RetailOrderStatusEnum;
import com.syjiaer.clinic.server.entity.charge.ChargeGoodsList;
import com.syjiaer.clinic.server.entity.charge.ChargeItemList;
import com.syjiaer.clinic.server.entity.charge.ChargeOrder;
import com.syjiaer.clinic.server.entity.statistics.GoodsTypeRevenue;
import com.syjiaer.clinic.server.entity.statistics.PayTypeRevenue;
import com.syjiaer.clinic.server.entity.statistics.RevenueOverviewVo;
import com.syjiaer.clinic.server.mapper.charge.ChargeGoodsListMapper;
import com.syjiaer.clinic.server.mapper.charge.ChargeOrderMapper;
import com.syjiaer.clinic.server.service.BaseService; import com.syjiaer.clinic.server.service.BaseService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -13,7 +24,70 @@ import java.util.Map;
@Service @Service
public class StatisticsService extends BaseService { public class StatisticsService extends BaseService {
@Autowired
private ChargeOrderMapper chargeOrderMapper;
@Autowired
private ChargeGoodsListMapper chargeGoodsListMapper;
public RevenueOverviewVo getRevenueOverview(LocalDateTime begin, LocalDateTime end) {
RevenueOverviewVo overviewVo = new RevenueOverviewVo();
QueryWrapper<ChargeOrder> queryWrapper = new QueryWrapper<>();
queryWrapper.select("sum(total_price) as total_revenue,count(*) as total_order_count");
queryWrapper.ge("pay_time", begin);
queryWrapper.le("pay_time", end);
queryWrapper.eq("status", RetailOrderStatusEnum.FINISHED.getCode());
Map<String, Object> map = chargeOrderMapper.selectMaps(queryWrapper).get(0);
overviewVo.setTotalRevenue((BigDecimal) map.getOrDefault("total_revenue",new BigDecimal(0)));
overviewVo.setTotalOrderCount((Long) map.getOrDefault("total_order_count",new BigDecimal(0)));
//
// queryWrapper.isNotNull("vip_id");
// Map<String, Object> vipMap = retailOrderService.getMap(queryWrapper);
// overviewVo.setVipRevenue((BigDecimal) vipMap.getOrDefault("total_revenue",new BigDecimal(0)));
// overviewVo.setVipOrderCount((Long) vipMap.getOrDefault("total_order_count",new BigDecimal(0)));
QueryWrapper<ChargeOrder> payTypeQuery = new QueryWrapper<>();
payTypeQuery.ge("pay_time", begin);
payTypeQuery.le("pay_time", end);
payTypeQuery.eq("status", RetailOrderStatusEnum.FINISHED.getCode());
List<ChargeOrder> chargeOrders = chargeOrderMapper.selectList(payTypeQuery);
payTypeQuery.select("pay_type,sum(total_price) as total_revenue");
payTypeQuery.groupBy("pay_type");
List<Map<String, Object>> payTypeMaps = chargeOrderMapper.selectMaps(payTypeQuery);
List<PayTypeRevenue> payTypeRevenueList = new ArrayList<>();
for (Map<String, Object> payTypeMap : payTypeMaps) {
PayTypeRevenue revenue = new PayTypeRevenue();
revenue.setName(RetailOrderPayTypeEnum.getByCode((Integer) payTypeMap.get("pay_type")).getDesc());
revenue.setTotalRevenue((BigDecimal) payTypeMap.getOrDefault("total_revenue",new BigDecimal(0)));
payTypeRevenueList.add(revenue);
}
overviewVo.setPayTypeRevenue(payTypeRevenueList);
List<String> retailOrderCodes = chargeOrders.stream().map(ChargeOrder::getCode).toList();
QueryWrapper<ChargeGoodsList> retailListQuery = new QueryWrapper<>();
retailListQuery.select("type,sum(sub_total_price) as total_revenue");
retailListQuery.groupBy("type");
retailListQuery.ge("create_time", begin);
retailListQuery.le("create_time", end);
List<Map<String, Object>> goodsTypeMaps = new ArrayList<>();
if (!retailOrderCodes.isEmpty() ){
retailListQuery.in("charge_order_code",retailOrderCodes);
goodsTypeMaps = chargeGoodsListMapper.selectMaps(retailListQuery);
}
List<GoodsTypeRevenue> goodsTypeRevenuesList = new ArrayList<>();
for (Map<String, Object> goodsTypeMap : goodsTypeMaps) {
GoodsTypeRevenue goodsTypeRevenue = new GoodsTypeRevenue();
goodsTypeRevenue.setName(GoodsTypeEnum.getByType((Integer) goodsTypeMap.get("type")).getDesc());
goodsTypeRevenue.setTotalRevenue((BigDecimal) goodsTypeMap.getOrDefault("total_revenue",new BigDecimal(0)));
goodsTypeRevenuesList.add(goodsTypeRevenue);
}
overviewVo.setGoodsTypeRevenue(goodsTypeRevenuesList);
return overviewVo;
}
} }