Jelajahi Sumber

模块开发2

wwh 2 bulan lalu
induk
melakukan
458d096c3e
18 mengubah file dengan 554 tambahan dan 81 penghapusan
  1. 13 2
      huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyOverdueController.java
  2. 71 0
      huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyWriteOverdueController.java
  3. 83 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyWriteOverdue.java
  4. 1 1
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/vo/MoneyBorrowUserVo.java
  5. 1 1
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyOverdueMapper.java
  6. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyWriteOverdueMapper.java
  7. 44 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyOverdueDetailPageParam.java
  8. 5 5
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyOverdueParam.java
  9. 74 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyWriteOverdueAddParam.java
  10. 7 2
      huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyOverdueService.java
  11. 34 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyWriteOverdueService.java
  12. 81 64
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyOverdueServiceImpl.java
  13. 67 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyWriteOverdueServiceImpl.java
  14. 36 1
      huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProductionYieldServiceImpl.java
  15. 0 1
      huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteCheckController.java
  16. 0 1
      huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteListController.java
  17. 16 3
      huimv-farm/src/main/resources/mapper/MoneyOverdueMapper.xml
  18. 5 0
      huimv-farm/src/main/resources/mapper/MoneyWriteOverdueMapper.xml

+ 13 - 2
huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyOverdueController.java

@@ -18,12 +18,16 @@ import org.springframework.web.bind.annotation.RestController;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.money.entity.MoneyBorrowWarning;
 import vip.xiaonuo.money.entity.MoneyOverdue;
+import vip.xiaonuo.money.entity.MoneyWriteOverdue;
+import vip.xiaonuo.money.entity.vo.MoneyBorrowUserVo;
 import vip.xiaonuo.money.param.MoneyInOutParam;
+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 java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -60,14 +64,21 @@ public class MoneyOverdueController {
     @ApiOperationSupport(order = 3)
     @ApiOperation("客户应收/逾期分析--客户逾期金额共用")
     @PostMapping("/money-overdue/userRank")
-    public CommonResult<JSONArray> userRank(@RequestBody MoneyOverdueParam overdueParam) {
+    public CommonResult<List<MoneyBorrowUserVo>> userRank(@RequestBody MoneyOverdueParam overdueParam) {
         return CommonResult.data(overdueService.userRank(overdueParam));
     }
 
     @ApiOperationSupport(order = 4)
     @ApiOperation("逾期明细表")
     @PostMapping("/money-overdue/overdueDetail")
-    public CommonResult<Page<MoneyOverdue>> overdueDetail(@RequestBody MoneyOverduePageParam overduePageParam) {
+    public CommonResult<Page<MoneyWriteOverdue>> overdueDetail(@RequestBody MoneyOverdueDetailPageParam overduePageParam) {
         return CommonResult.data(overdueService.overdueDetail(overduePageParam));
     }
+
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("客户列表")
+    @PostMapping("/money-overdue/listUserName")
+    public CommonResult<List<MoneyOverdue>> listUserName(@RequestBody Map<String,String> paramsMap) {
+        return CommonResult.data(overdueService.listUserName(paramsMap));
+    }
 }

+ 71 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyWriteOverdueController.java

@@ -0,0 +1,71 @@
+package vip.xiaonuo.money.controller;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.money.entity.MoneyProducePrice;
+import vip.xiaonuo.money.entity.MoneyWriteOverdue;
+import vip.xiaonuo.money.param.MoneyBusinessPageParam;
+import vip.xiaonuo.money.param.MoneyInOutParam;
+import vip.xiaonuo.money.param.MoneyWriteOverdueAddParam;
+import vip.xiaonuo.money.service.IMoneyWriteOverdueService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 财务应收分析逾期填报 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2025-02-26
+ */
+@RestController
+@Api(tags = "财务应收分析逾期填报")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@Validated
+public class MoneyWriteOverdueController {
+
+    @Autowired
+    private IMoneyWriteOverdueService writeOverdueService;
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("财务应收分析逾期填报新增")
+    @PostMapping("/money-write-overdue/add")
+    public CommonResult<CommonResult> listProduceProfit(@RequestBody MoneyWriteOverdueAddParam param) {
+        return CommonResult.data(writeOverdueService.add(param));
+    }
+
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("财务应收分析逾期填报分页")
+    @PostMapping("/money-write-overdue/page")
+    public CommonResult<Page<MoneyWriteOverdue>> page(@RequestBody MoneyBusinessPageParam pageParam) {
+        return CommonResult.data(writeOverdueService.page(pageParam));
+    }
+
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("财务应收分析逾期填报修改")
+    @PostMapping("/money-write-overdue/edit")
+    public CommonResult<CommonResult> edit(@RequestBody MoneyWriteOverdue writeOverdue) {
+        return CommonResult.data(writeOverdueService.edit(writeOverdue));
+    }
+
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("财务应收分析逾期填报删除")
+    @PostMapping("/money-write-overdue/delete")
+    public CommonResult<CommonResult> delete(@RequestBody Map<String, String> paramsMap) {
+        return CommonResult.data(writeOverdueService.delete(paramsMap));
+    }
+}

+ 83 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyWriteOverdue.java

@@ -0,0 +1,83 @@
+package vip.xiaonuo.money.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 财务应收分析逾期填报
+ * </p>
+ *
+ * @author author
+ * @since 2025-02-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("money_write_overdue")
+public class MoneyWriteOverdue implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 单据编号
+     */
+    @ApiModelProperty(value = "单据编号", position = 1)
+    private String documentNumber;
+
+    /**
+     * 单据类型
+     */
+    @ApiModelProperty(value = "单据类型", position = 2)
+    private String documentType;
+
+    /**
+     * 单据状态
+     */
+    @ApiModelProperty(value = "单据状态", position = 3)
+    private String documentStatus;
+
+    /**
+     * 客户
+     */
+    @ApiModelProperty(value = "客户", position = 4)
+    private String userName;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间", position = 5)
+    private Date createTime;
+
+    /**
+     * 到期日
+     */
+    @ApiModelProperty(value = "到期日", position = 6)
+    private Date endTime;
+
+    /**
+     * 逾期金额
+     */
+    @ApiModelProperty(value = "逾期金额", position = 7)
+    private String money;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id", position = 8)
+    private String orgId;
+
+
+}

+ 1 - 1
huimv-farm/src/main/java/vip/xiaonuo/money/entity/vo/MoneyBorrowUserVo.java

@@ -6,7 +6,7 @@ import lombok.Data;
 @Data
 public class MoneyBorrowUserVo {
 
-    @ApiModelProperty(value = "借款金额", position = 1)
+    @ApiModelProperty(value = "客户", position = 1)
     private String userName;
 
     @ApiModelProperty(value = "逾期金额", position = 2)

+ 1 - 1
huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyOverdueMapper.java

@@ -19,5 +19,5 @@ import java.util.List;
  */
 public interface MoneyOverdueMapper extends BaseMapper<MoneyOverdue> {
 
-    List<MoneyBorrowUserVo> getUserRank(@Param(Constants.WRAPPER) QueryWrapper<MoneyOverdue> queryWrapper);
+    List<MoneyBorrowUserVo> getUserRank(String startTime,String endTime,String orgId);
 }

+ 16 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyWriteOverdueMapper.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.money.mapper;
+
+import vip.xiaonuo.money.entity.MoneyWriteOverdue;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 财务应收分析逾期填报 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-02-26
+ */
+public interface MoneyWriteOverdueMapper extends BaseMapper<MoneyWriteOverdue> {
+
+}

+ 44 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyOverdueDetailPageParam.java

@@ -0,0 +1,44 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.money.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 人员明细Id参数
+ *
+ * @author 余
+ * @date  2024/11/14 15:02
+ **/
+@Getter
+@Setter
+public class MoneyOverdueDetailPageParam {
+
+
+    @ApiModelProperty(value = "orgId")
+    private String orgId;
+
+    @ApiModelProperty(value = "客户")
+    private String userName;
+
+    @ApiModelProperty(value = "类型")
+    private Integer type;
+
+    @ApiModelProperty(value = "当前页码", required = true)
+    private Integer pageNum;
+
+    @ApiModelProperty(value = "页大小", required = true)
+    private Integer pageSize;
+}

+ 5 - 5
huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyOverdueParam.java

@@ -27,15 +27,15 @@ import lombok.Setter;
 public class MoneyOverdueParam {
 
 
-    @ApiModelProperty(value = "orgId", required = true)
+    @ApiModelProperty(value = "orgId")
     private String orgId;
 
-    @ApiModelProperty(value = "时间,格式为'2024-10'", required = true)
+    @ApiModelProperty(value = "时间,格式为'2024-10'")
     private String time;
 
-    @ApiModelProperty(value = "客户", required = true)
+    @ApiModelProperty(value = "客户")
     private String userName;
 
-    @ApiModelProperty(value = "类型", required = true)
-    private String documentStatus;
+    @ApiModelProperty(value = "类型")
+    private Integer documentStatus;
 }

+ 74 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyWriteOverdueAddParam.java

@@ -0,0 +1,74 @@
+package vip.xiaonuo.money.param;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 财务应收分析逾期填报
+ * </p>
+ *
+ * @author author
+ * @since 2025-02-26
+ */
+@Data
+public class MoneyWriteOverdueAddParam  {
+
+    /**
+     * 单据编号
+     */
+    @ApiModelProperty(value = "单据编号", position = 1)
+    private String documentNumber;
+
+    /**
+     * 单据类型
+     */
+    @ApiModelProperty(value = "单据类型", position = 2)
+    private String documentType;
+
+    /**
+     * 单据状态
+     */
+    @ApiModelProperty(value = "单据状态", position = 3)
+    private String documentStatus;
+
+    /**
+     * 客户
+     */
+    @ApiModelProperty(value = "客户", position = 4)
+    private String userName;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间", position = 5)
+    private Date createTime;
+
+    /**
+     * 到期日
+     */
+    @ApiModelProperty(value = "到期日", position = 6)
+    private Date endTime;
+
+    /**
+     * 逾期金额
+     */
+    @ApiModelProperty(value = "逾期金额", position = 7)
+    private String money;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id", position = 8)
+    private String orgId;
+
+
+}

+ 7 - 2
huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyOverdueService.java

@@ -5,11 +5,14 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import vip.xiaonuo.money.entity.MoneyOverdue;
 import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.money.entity.MoneyWriteOverdue;
 import vip.xiaonuo.money.entity.vo.MoneyBorrowUserVo;
+import vip.xiaonuo.money.param.MoneyOverdueDetailPageParam;
 import vip.xiaonuo.money.param.MoneyOverduePageParam;
 import vip.xiaonuo.money.param.MoneyOverdueParam;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -28,10 +31,12 @@ public interface IMoneyOverdueService extends IService<MoneyOverdue> {
     JSONObject overdueRank(MoneyOverdueParam overdueParam);
 
     //客户应收/逾期分析
-    JSONArray userRank(MoneyOverdueParam overdueParam);
+    List<MoneyBorrowUserVo> userRank(MoneyOverdueParam overdueParam);
 
     //逾期明细表
-    Page<MoneyOverdue> overdueDetail(MoneyOverduePageParam overduePageParam);
+    Page<MoneyWriteOverdue> overdueDetail(MoneyOverdueDetailPageParam overduePageParam);
 
 
+    //客户列表
+    List<MoneyOverdue> listUserName(Map<String,String> paramsMap);
 }

+ 34 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyWriteOverdueService.java

@@ -0,0 +1,34 @@
+package vip.xiaonuo.money.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.money.entity.MoneyWriteOverdue;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.money.param.MoneyBusinessPageParam;
+import vip.xiaonuo.money.param.MoneyWriteOverdueAddParam;
+import vip.xiaonuo.production.entity.ProductionWritePlan;
+import vip.xiaonuo.production.param.ProductionPageParam;
+import vip.xiaonuo.production.param.ProductionWritePlanAddParam;
+
+import java.text.ParseException;
+import java.util.Map;
+
+/**
+ * <p>
+ * 财务应收分析逾期填报 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-02-26
+ */
+public interface IMoneyWriteOverdueService extends IService<MoneyWriteOverdue> {
+
+    CommonResult add(MoneyWriteOverdueAddParam param) ;
+
+    Page<MoneyWriteOverdue> page(MoneyBusinessPageParam pageParam);
+
+    CommonResult edit(MoneyWriteOverdue writeOverdue);
+
+    CommonResult delete(Map<String, String> paramsMap);
+
+}

+ 81 - 64
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyOverdueServiceImpl.java

@@ -9,8 +9,11 @@ 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;
@@ -20,6 +23,7 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -35,53 +39,45 @@ public class MoneyOverdueServiceImpl extends ServiceImpl<MoneyOverdueMapper, Mon
 
     @Autowired
     private MoneyOverdueMapper overdueMapper;
+    @Autowired
+    private MoneyWriteOverdueMapper writeOverdueMapper;
 
     @Override
     public JSONObject getOverdueCount(MoneyOverdueParam overdueParam) {
         String orgId = overdueParam.getOrgId();
-        String userName = overdueParam.getUserName();
-        QueryWrapper<MoneyOverdue> queryWrapper = new QueryWrapper<>();
+        QueryWrapper<MoneyWriteOverdue> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        queryWrapper.eq(StringUtils.isNotBlank(userName), "user_name", userName);
-        queryWrapper.eq("is_overdue", 1);
-        List<MoneyOverdue> list = overdueMapper.selectList(queryWrapper);
-        Double money = 0.00;
-        if (list.size() != 0) {
-            for (MoneyOverdue moneyOverdue : list) {
-                Date overdueTime = moneyOverdue.getOverdueTime();
-                Date endTime = moneyOverdue.getEndTime();
-                long l = (overdueTime.getTime() - endTime.getTime()) / (24 * 60 * 60 * 1000);
-                if (l > 30) {
-                    money = money + Double.valueOf(moneyOverdue.getOverduePrice());
-                }
-            }
-        }
-        DecimalFormat def = new DecimalFormat("0.00");
+        Date date = new Date();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.MONTH, -1);
+        queryWrapper.ge("end_time", calendar.getTime());
+        queryWrapper.select("convert(IFNULL(sum(money),'0'),decimal(10,2)) money");
+        MoneyWriteOverdue writeOverdue = writeOverdueMapper.selectOne(queryWrapper);
         JSONObject jsonObject = new JSONObject();
-        jsonObject.put("money", def.format(money));
+        jsonObject.put("money", writeOverdue.getMoney());
         return jsonObject;
     }
 
     @Override
     public JSONObject overdueRank(MoneyOverdueParam overdueParam) {
         String orgId = overdueParam.getOrgId();
-        String userName = overdueParam.getUserName();
-        QueryWrapper<MoneyOverdue> queryWrapper = new QueryWrapper<>();
+        QueryWrapper<MoneyWriteOverdue> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        queryWrapper.eq(StringUtils.isNotBlank(userName), "user_name", userName);
-        queryWrapper.groupBy("is_overdue");
-        List<MoneyOverdue> overdues = overdueMapper.selectList(queryWrapper);
+        queryWrapper.select("convert(IFNULL(sum(money),'0'),decimal(10,2)) money,end_time endTime");
+        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 (overdues.size() != 0) {
-            for (MoneyOverdue overdue : overdues) {
-                if (overdue.getIsOverdue() == 0) {
-                    disOverdue = disOverdue + Double.valueOf(overdue.getCollectPrice());
-                } else {
-                    isOverdue = isOverdue + Double.valueOf(overdue.getOverduePrice());
+
+        if (writeOverdues.size() != 0) {
+            for (MoneyWriteOverdue overdue : writeOverdues) {
+                if (overdue.getEndTime().before(new Date())) {
+                    isOverdue = isOverdue + Double.valueOf(overdue.getMoney());
+                }else {
+                    disOverdue = disOverdue + Double.valueOf(overdue.getMoney());
                 }
                 count = isOverdue + disOverdue;
             }
@@ -100,54 +96,75 @@ public class MoneyOverdueServiceImpl extends ServiceImpl<MoneyOverdueMapper, Mon
     }
 
     @Override
-    public JSONArray userRank(MoneyOverdueParam overdueParam) {
+    public List<MoneyBorrowUserVo> userRank(MoneyOverdueParam overdueParam) {
         String orgId = overdueParam.getOrgId();
-        QueryWrapper<MoneyOverdue> queryWrapper = new QueryWrapper<>();
         String time = overdueParam.getTime();
-        if ("".equals(time) || null == time) {
-            queryWrapper.ge("date_time", DateUtil.beginOfMonth(new Date()));
-        } else {
-            queryWrapper.between("date_time", time + "-01 00:00:00", time + "-31 23:59:59");
-        }
-        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        queryWrapper.eq(StringUtils.isNotBlank(overdueParam.getUserName()), "user_name", overdueParam.getUserName());
-        JSONArray jsonArray = new JSONArray();
-        List<MoneyBorrowUserVo> userRank = overdueMapper.getUserRank(queryWrapper);
+        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) {
-            for (MoneyBorrowUserVo moneyBorrowUserVo : userRank) {
-                JSONObject jsonObject = new JSONObject();
-                BigDecimal bg = new BigDecimal(moneyBorrowUserVo.getCollectPrice());
-                bg = bg.divide(math, 2, RoundingMode.HALF_UP);
-                BigDecimal bg1 = new BigDecimal( moneyBorrowUserVo.getOverduePrice());
-                bg1 = bg1.divide(math, 2, RoundingMode.HALF_UP);
-                jsonObject.put("collectPrice",bg.toString());
-                jsonObject.put("overduePrice", bg1.toString());
-                jsonObject.put("userName", moneyBorrowUserVo.getUserName());
-                jsonArray.add(jsonObject);
+            Double collect = 0.00;
+            Double overdue = 0.00;
+            for (int i = 0; i < userRank.size(); i++) {
+                if (i < 15) {
+                    BigDecimal bg = new BigDecimal(userRank.get(i).getCollectPrice());
+                    bg = bg.divide(math, 2, RoundingMode.HALF_UP);
+                    BigDecimal bg1 = new BigDecimal(userRank.get(i).getOverduePrice());
+                    bg1 = bg1.divide(math, 2, RoundingMode.HALF_UP);
+                    userRank.get(i).setCollectPrice(bg.toString());
+                    userRank.get(i).setOverduePrice(bg1.toString());
+                    list.add(userRank.get(i));
+                } else {
+                    collect = collect + Double.valueOf(userRank.get(i).getCollectPrice());
+                    overdue = overdue + Double.valueOf(userRank.get(i).getOverduePrice());
+                }
             }
+            MoneyBorrowUserVo vo = new MoneyBorrowUserVo();
+            vo.setUserName("others");
+            BigDecimal c1 = new BigDecimal(collect);
+            c1 = c1.divide(math, 2, RoundingMode.HALF_UP);
+            BigDecimal c2 = new BigDecimal(overdue);
+            c2 = c2.divide(math, 2, RoundingMode.HALF_UP);
+            vo.setCollectPrice(c1.toString());
+            vo.setOverduePrice(c2.toString());
+            list.add(vo);
         }
-        JSONArray jsonArray1 = jsonArraySort(jsonArray, "collectPrice", true);
-        return jsonArray1;
+        return list;
     }
 
     @Override
-    public Page<MoneyOverdue> overdueDetail(MoneyOverduePageParam overduePageParam) {
+    public Page<MoneyWriteOverdue> overdueDetail(MoneyOverdueDetailPageParam overduePageParam) {
         String orgId = overduePageParam.getOrgId();
         Integer pageNum = overduePageParam.getPageNum();
         Integer pageSize = overduePageParam.getPageSize();
-        QueryWrapper<MoneyOverdue> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).orderByDesc("date_time");
-        Page page = new Page<MoneyOverdue>(pageNum, pageSize);
-        Page selectPage = overdueMapper.selectPage(page, queryWrapper);
-        List<MoneyOverdue> records = selectPage.getRecords();
-        BigDecimal math = new BigDecimal("10000");
-        for (MoneyOverdue record : records) {
-            BigDecimal bg = new BigDecimal(record.getCollectPrice());
-            bg = bg.divide(math, 2, RoundingMode.HALF_UP);
-            record.setCollectPrice(bg.toString());
+        Integer type = overduePageParam.getType();
+        String userName = overduePageParam.getUserName();
+
+        QueryWrapper<MoneyWriteOverdue> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).orderByDesc("create_time");
+        queryWrapper.eq(StringUtils.isNotBlank(userName), "user_name", userName);
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.DAY_OF_MONTH, 15);
+        if (0 == type) {
+            queryWrapper.ge("end_time", calendar.getTime());
+        } else if (1 == type) {
+            queryWrapper.le("end_time",DateUtil.beginOfDay(new Date()));
+        } else if (2 == type) {
+            queryWrapper.between("end_time", DateUtil.beginOfDay(new Date()), calendar.getTime());
         }
-        return overdueMapper.selectPage(page, queryWrapper);
+
+        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);
     }
 
     /*数组排序*/

+ 67 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyWriteOverdueServiceImpl.java

@@ -0,0 +1,67 @@
+package vip.xiaonuo.money.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+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.common.pojo.CommonResult;
+import vip.xiaonuo.money.entity.MoneyWriteOverdue;
+import vip.xiaonuo.money.mapper.MoneyWriteOverdueMapper;
+import vip.xiaonuo.money.param.MoneyBusinessPageParam;
+import vip.xiaonuo.money.param.MoneyWriteOverdueAddParam;
+import vip.xiaonuo.money.service.IMoneyWriteOverdueService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * <p>
+ * 财务应收分析逾期填报 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2025-02-26
+ */
+@Service
+public class MoneyWriteOverdueServiceImpl extends ServiceImpl<MoneyWriteOverdueMapper, MoneyWriteOverdue> implements IMoneyWriteOverdueService {
+
+    @Autowired
+    private MoneyWriteOverdueMapper writeOverdueMapper;
+
+    @Override
+    public CommonResult add(MoneyWriteOverdueAddParam param)  {
+        MoneyWriteOverdue writeOverdue = new MoneyWriteOverdue();
+        BeanUtil.copyProperties(param, writeOverdue);
+        writeOverdue.setCreateTime(new Date());
+        writeOverdueMapper.insert(writeOverdue);
+        return CommonResult.ok();
+    }
+
+    @Override
+    public Page<MoneyWriteOverdue> page(MoneyBusinessPageParam pageParam) {
+        String orgId = pageParam.getOrgId();
+        Integer pageNum = pageParam.getPageNum();
+        Integer pageSize = pageParam.getPageSize();
+        Page<MoneyWriteOverdue> page = new Page<>(pageNum, pageSize);
+        QueryWrapper<MoneyWriteOverdue> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        return writeOverdueMapper.selectPage(page, queryWrapper);
+    }
+
+    @Override
+    public CommonResult edit(MoneyWriteOverdue writeOverdue) {
+        writeOverdueMapper.updateById(writeOverdue);
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult delete(Map<String, String> paramsMap) {
+        String id = paramsMap.get("id");
+        writeOverdueMapper.deleteById(id);
+        return CommonResult.ok();
+    }
+}

+ 36 - 1
huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProductionYieldServiceImpl.java

@@ -1,9 +1,11 @@
 package vip.xiaonuo.production.service.impl;
 
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import vip.xiaonuo.production.entity.ProductionWritePlan;
 import vip.xiaonuo.production.entity.ProductionYield;
 import vip.xiaonuo.production.mapper.ProductionWritePlanMapper;
 import vip.xiaonuo.production.mapper.ProductionYieldMapper;
@@ -12,8 +14,11 @@ import vip.xiaonuo.production.service.IProductionYieldService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.lang.reflect.WildcardType;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 
@@ -40,10 +45,12 @@ public class ProductionYieldServiceImpl extends ServiceImpl<ProductionYieldMappe
         String locationName = yieldParam.getLocationName();
         String produceName = yieldParam.getProduceName();
         QueryWrapper<ProductionYield> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).eq(StringUtils.isNotBlank(locationName),"location_name",locationName);
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId)
+                .eq(StringUtils.isNotBlank(locationName),"location_name",locationName);
         if (StringUtils.isNotBlank(locationName)) {
             queryWrapper.like(StringUtils.isNotBlank(produceName), "produce_name", produceName);
         }
+
         queryWrapper.select(" convert(IFNULL(sum(actual_production),'0'),decimal(10,2)) actualProduction,create_time createTime");
         if (0 == timeType) {
             queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')");
@@ -51,11 +58,39 @@ public class ProductionYieldServiceImpl extends ServiceImpl<ProductionYieldMappe
             queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
         }
         queryWrapper.orderByAsc("create_time");
+//        List<ProductionWritePlan> writePlans = writePlanMapper.selectList(queryWrapper);
         List<ProductionYield> productionYields = yieldMapper.selectList(queryWrapper);
         BigDecimal math = new BigDecimal("10000");
+
         for (ProductionYield productionYield : productionYields) {
             BigDecimal bg = new BigDecimal(productionYield.getActualProduction());
             productionYield.setActualProduction(bg.divide(math, 2, RoundingMode.HALF_UP).toString());
+
+            QueryWrapper<ProductionWritePlan> queryWrapper1 = new QueryWrapper<>();
+            if (0 == timeType) {
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
+                String format = sdf.format(productionYield.getCreateTime());
+                queryWrapper1.between("create_time", format + "-01-01 00:00:00", format + "-12-31 23:59:59");
+            } else {
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+                String format = sdf.format(productionYield.getCreateTime());
+                queryWrapper1.between("create_time", format + "-01 00:00:00", format + "-31 23:59:59");
+            }
+            queryWrapper1.select("convert(IFNULL(sum(production_plan),'0'),decimal(10,2)) productionPlan");
+            ProductionWritePlan writePlan = writePlanMapper.selectOne(queryWrapper1);
+            if (ObjectUtil.isEmpty(writePlan) || "0".equals(writePlan.getProductionPlan())) {
+                productionYield.setCompleteRate("0");
+                productionYield.setPlanProduction("0");
+            } else {
+                double v = Double.valueOf(productionYield.getActualProduction()) / Double.valueOf(writePlan.getProductionPlan());
+                DecimalFormat def = new DecimalFormat("0.00");
+                productionYield.setPlanProduction(writePlan.getProductionPlan());
+                if (v > 1.0) {
+                    productionYield.setCompleteRate("100");
+                } else {
+                    productionYield.setCompleteRate(def.format(v * 100));
+                }
+            }
         }
         return productionYields;
     }

+ 0 - 1
huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteCheckController.java

@@ -27,7 +27,6 @@ import java.util.Map;
  * @since 2025-01-08
  */
 @RestController
-@RequestMapping("/write-check")
 @Api(tags = "检验记录发放收回台账")
 @ApiSupport(author = "wang", order = 1)
 @Validated

+ 0 - 1
huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteListController.java

@@ -26,7 +26,6 @@ import vip.xiaonuo.write.service.IWriteListService;
  * @since 2025-01-07
  */
 @RestController
-@RequestMapping("/write-list")
 @Api(tags = "检验记录列表")
 @ApiSupport(author = "wang", order = 1)
 @Validated

+ 16 - 3
huimv-farm/src/main/resources/mapper/MoneyOverdueMapper.xml

@@ -4,8 +4,21 @@
 
 
     <select id="getUserRank" resultType="vip.xiaonuo.money.entity.vo.MoneyBorrowUserVo">
-        select IFNULL(sum(collect_price),'0') 'collectPrice',IFNULL(sum(overdue_price),'0') 'overduePrice',user_name 'userName' from money_overdue
-        ${ew.customSqlSegment}
-        group by user_name
+      SELECT
+    w.`user_name` as userName,
+    w.collect_price as collectPrice,
+    COALESCE(o.money, 0) AS overduePrice
+FROM
+    `money_overdue`  AS w
+LEFT JOIN
+    money_write_overdue AS o
+ON
+    w.user_name = o.user_name
+    WHERE date_time between #{startTime} and #{endTime}
+        <if test="orgId!=null and orgId!=''">
+            and  w.org_id = #{orgId}
+        </if>
+	GROUP BY  w.user_name
+	ORDER BY w.collect_price DESC
     </select>
 </mapper>

+ 5 - 0
huimv-farm/src/main/resources/mapper/MoneyWriteOverdueMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="vip.xiaonuo.money.mapper.MoneyWriteOverdueMapper">
+
+</mapper>