123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- package vip.xiaonuo.money.service.impl;
- import cn.hutool.core.date.DateUtil;
- import cn.hutool.core.util.ObjectUtil;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONException;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.StringUtils;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import org.springframework.beans.factory.annotation.Autowired;
- import vip.xiaonuo.money.entity.MoneyOverdue;
- import vip.xiaonuo.money.entity.MoneyWriteOverdue;
- import vip.xiaonuo.money.entity.vo.MoneyBorrowUserVo;
- import vip.xiaonuo.money.mapper.MoneyOverdueMapper;
- import vip.xiaonuo.money.mapper.MoneyWriteOverdueMapper;
- import vip.xiaonuo.money.param.MoneyOverdueDetailPageParam;
- import vip.xiaonuo.money.param.MoneyOverduePageParam;
- import vip.xiaonuo.money.param.MoneyOverdueParam;
- import vip.xiaonuo.money.service.IMoneyOverdueService;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import org.springframework.stereotype.Service;
- import java.math.BigDecimal;
- import java.math.RoundingMode;
- import java.text.DecimalFormat;
- import java.text.SimpleDateFormat;
- import java.util.*;
- /**
- * <p>
- * 财务应收逾期表 服务实现类
- * </p>
- *
- * @author author
- * @since 2024-11-21
- */
- @Service
- public class MoneyOverdueServiceImpl extends ServiceImpl<MoneyOverdueMapper, MoneyOverdue> implements IMoneyOverdueService {
- @Autowired
- private MoneyOverdueMapper overdueMapper;
- @Autowired
- private MoneyWriteOverdueMapper writeOverdueMapper;
- @Override
- public JSONObject getOverdueCount(MoneyOverdueParam overdueParam) {
- String orgId = overdueParam.getOrgId();
- QueryWrapper<MoneyWriteOverdue> queryWrapper = new QueryWrapper<>();
- queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
- queryWrapper.eq("document_type",1);
- Date date = new Date();
- queryWrapper.le("end_time", DateUtil.offsetMonth(date ,-1));
- queryWrapper.select("convert(IFNULL(sum(rmbje),'0') /10000,decimal(10,2)) rmbje");
- MoneyWriteOverdue writeOverdue = writeOverdueMapper.selectOne(queryWrapper);
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("money", writeOverdue.getRmbje());
- return jsonObject;
- }
- @Override
- public JSONObject overdueRank(MoneyOverdueParam overdueParam) {
- String orgId = overdueParam.getOrgId();
- QueryWrapper<MoneyWriteOverdue> queryWrapper = new QueryWrapper<>();
- queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
- queryWrapper.select("rmbje /10000 rmbje ,end_time endTime,document_type");
- queryWrapper.eq(StringUtils.isNotBlank(overdueParam.getUserName()),"user_name" ,overdueParam.getUserName());
- List<MoneyWriteOverdue> writeOverdues = writeOverdueMapper.selectList(queryWrapper);
- double count = 0.00;
- double isOverdue = 0.00;
- double disOverdue = 0.00;
- JSONObject jsonObject = new JSONObject();
- DecimalFormat def = new DecimalFormat("0.00");
- if (ObjectUtil.isNotEmpty(writeOverdues)) {
- for (MoneyWriteOverdue overdue : writeOverdues) {
- if (ObjectUtil.isEmpty(overdue)){
- continue;
- }
- // if (overdue.getEndTime().before(new Date())) {
- if ("1".equals(overdue.getDocumentType())) {
- isOverdue = isOverdue + Double.valueOf(overdue.getRmbje());
- }else {
- disOverdue = disOverdue + Double.valueOf(overdue.getRmbje());
- }
- count = isOverdue + disOverdue;
- }
- if (count == 0) {
- jsonObject.put("isOverdue", "0");
- jsonObject.put("disOverdue", "0");
- } else {
- double v = isOverdue / count;
- System.out.println(v);
- System.out.println(disOverdue / count);
- // jsonObject.put("isOverdue", def.format(isOverdue / count));
- // jsonObject.put("disOverdue", def.format(disOverdue / count));
- // jsonObject.put("isOverdueMoney", def.format(isOverdue ));
- // jsonObject.put("disOverdueMoney", def.format(disOverdue ));
- // jsonObject.put("isOverdue", def.format(isOverdue / count));
- // jsonObject.put("disOverdue", def.format(disOverdue / count));
- jsonObject.put("isOverdue", def.format(isOverdue ));
- jsonObject.put("disOverdue", def.format(disOverdue ));
- }
- } else {
- jsonObject.put("isOverdue", "0");
- jsonObject.put("disOverdue", "100");
- }
- return jsonObject;
- }
- @Override
- public List<MoneyBorrowUserVo> userRank(MoneyOverdueParam overdueParam) {
- String orgId = overdueParam.getOrgId();
- String time = overdueParam.getTime();
- List<MoneyBorrowUserVo> userRank = overdueMapper.getUserRank(time + "-01 00:00:00", time + "-31 23:59:59",orgId);
- // BigDecimal math = new BigDecimal("10000");
- // List<MoneyBorrowUserVo> list = new ArrayList<>();
- //
- // if (userRank.size() != 0) {
- // Double collect = 0.00;
- // Double overdue = 0.00;
- // for (int i = 0; i < userRank.size(); i++) {
- // if (i < 15) {
- //
- // list.add(userRank.get(i));
- // } else {
- // collect = collect + Double.valueOf(userRank.get(i).getCollectPrice());
- // overdue = overdue + Double.valueOf(userRank.get(i).getOverduePrice());
- // }
- // }
- //
- //
- // }
- return userRank;
- }
- @Override
- public Page<MoneyWriteOverdue> overdueDetail(MoneyOverdueDetailPageParam overduePageParam) {
- String orgId = overduePageParam.getOrgId();
- Integer pageNum = overduePageParam.getPageNum();
- Integer pageSize = overduePageParam.getPageSize();
- Integer type = overduePageParam.getType();
- String userName = overduePageParam.getUserName();
- QueryWrapper<MoneyWriteOverdue> queryWrapper = new QueryWrapper<>();
- queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).orderByDesc("id");
- queryWrapper.eq(StringUtils.isNotBlank(userName), "user_name", userName);
- Calendar calendar = Calendar.getInstance();
- calendar.add(Calendar.DAY_OF_MONTH, 15);
- if (ObjectUtil.isNotEmpty(type)){
- if (3 == type) {
- queryWrapper.eq("document_type",1);
- queryWrapper.ge("end_time", calendar.getTime());
- } else if (1 == type) {
- queryWrapper.eq("document_type", 0);
- } else if (2== type) {
- queryWrapper.le("end_time", new Date()).eq("document_type",1);
- }
- }
- Page<MoneyWriteOverdue> page = new Page<>(pageNum, pageSize);
- Page<MoneyWriteOverdue> selectPage = writeOverdueMapper.selectPage(page, queryWrapper);
- return selectPage;
- }
- @Override
- public List<MoneyOverdue> listUserName(Map<String, String> paramsMap) {
- String orgId = paramsMap.get("orgId");
- QueryWrapper<MoneyOverdue> queryWrapper = new QueryWrapper<>();
- queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
- queryWrapper.groupBy("user_name");
- return overdueMapper.selectList(queryWrapper);
- }
- @Override
- public List<MoneyWriteOverdue> keHu(MoneyWriteOverdue moneyOverdue) {
- String orgId = moneyOverdue.getOrgId();
- List<MoneyWriteOverdue> moneyOverdues = writeOverdueMapper.selectList(new QueryWrapper<MoneyWriteOverdue>().select("user_name").eq(StringUtils.isNotBlank(orgId), "org_id", orgId).groupBy("user_name"));
- return moneyOverdues;
- }
- /*数组排序*/
- public static JSONArray jsonArraySort(JSONArray jsonArr, String sortKey, boolean is_desc) {
- //存放排序结果json数组
- JSONArray sortedJsonArray = new JSONArray();
- //用于排序的list
- List<JSONObject> jsonValues = new ArrayList<JSONObject>();
- //将参数json数组每一项取出,放入list
- for (int i = 0; i < jsonArr.size(); i++) {
- jsonValues.add(jsonArr.getJSONObject(i));
- }
- //快速排序,重写compare方法,完成按指定字段比较,完成排序
- Collections.sort(jsonValues, new Comparator<JSONObject>() {
- //排序字段
- private final String KEY_NAME = sortKey;
- //重写compare方法
- @Override
- public int compare(JSONObject a, JSONObject b) {
- //如果用String接会导致一位数和两位数混合比对的时候不能准确比出来,要用int类型接
- //String valA = new String();
- //String valB = new String();
- Float valA = 0.00f;
- Float valB = 0.00f;
- try {
- valA = Float.parseFloat(a.getString(KEY_NAME));
- valB = Float.parseFloat(b.getString(KEY_NAME));
- } catch (JSONException e) {
- e.printStackTrace();
- }
- //是升序还是降序
- if (is_desc) {
- return -valA.compareTo(valB);
- } else {
- return -valB.compareTo(valA);
- }
- }
- });
- //将排序后结果放入结果jsonArray
- for (int i = 0; i < jsonArr.size(); i++) {
- sortedJsonArray.add(jsonValues.get(i));
- }
- return sortedJsonArray;
- }
- }
|