wwh 5 kuukautta sitten
vanhempi
commit
901473df91
100 muutettua tiedostoa jossa 5028 lisäystä ja 0 poistoa
  1. 66 0
      huimv-farm/src/main/java/vip/xiaonuo/money/config/MoneyConfigure.java
  2. 84 0
      huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyBorrowWarningController.java
  3. 47 0
      huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyBusinessController.java
  4. 47 0
      huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyCostController.java
  5. 46 0
      huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyForecastController.java
  6. 57 0
      huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyIncomeController.java
  7. 73 0
      huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyOverdueController.java
  8. 48 0
      huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyPeopleController.java
  9. 74 0
      huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyProduceController.java
  10. 20 0
      huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyProduceIncomeController.java
  11. 54 0
      huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyProducePriceController.java
  12. 48 0
      huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyWarningController.java
  13. 90 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyBorrowWarning.java
  14. 80 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyBusiness.java
  15. 67 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyCost.java
  16. 73 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyForecast.java
  17. 59 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyIncome.java
  18. 112 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyOverdue.java
  19. 62 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyPeople.java
  20. 97 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyProduce.java
  21. 72 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyProduceIncome.java
  22. 73 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyProducePrice.java
  23. 85 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyWarning.java
  24. 15 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/vo/MoneyBankNameVo.java
  25. 17 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/vo/MoneyBorrowPriceVo.java
  26. 17 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/vo/MoneyBorrowUserVo.java
  27. 27 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/vo/MoneyIncomeVo.java
  28. 22 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/vo/MoneyProduceVo.java
  29. 26 0
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyBorrowWarningMapper.java
  30. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyBusinessMapper.java
  31. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyCostMapper.java
  32. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyForecastMapper.java
  33. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyIncomeMapper.java
  34. 23 0
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyOverdueMapper.java
  35. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyPeopleMapper.java
  36. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyProduceIncomeMapper.java
  37. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyProduceMapper.java
  38. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyProducePriceMapper.java
  39. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyWarningMapper.java
  40. 41 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyAnalysisParam.java
  41. 41 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyBorrowDetailParam.java
  42. 37 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyBorrowParam.java
  43. 37 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyBusinessParam.java
  44. 35 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyInOutParam.java
  45. 35 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyIncomeParam.java
  46. 44 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyOverduePageParam.java
  47. 41 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyOverdueParam.java
  48. 52 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyPeopleAddParam.java
  49. 42 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyProduceIncomeParam.java
  50. 45 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyProduceParam.java
  51. 35 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyWarningParam.java
  52. 38 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyBorrowWarningService.java
  53. 25 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyBusinessService.java
  54. 24 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyCostService.java
  55. 21 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyForecastService.java
  56. 28 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyIncomeService.java
  57. 37 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyOverdueService.java
  58. 17 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyPeopleService.java
  59. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyProduceIncomeService.java
  60. 25 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyProducePriceService.java
  61. 37 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyProduceService.java
  62. 24 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyWarningService.java
  63. 124 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyBorrowWarningServiceImpl.java
  64. 114 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyBusinessServiceImpl.java
  65. 54 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyCostServiceImpl.java
  66. 46 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyForecastServiceImpl.java
  67. 94 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyIncomeServiceImpl.java
  68. 175 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyOverdueServiceImpl.java
  69. 44 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyPeopleServiceImpl.java
  70. 20 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyProduceIncomeServiceImpl.java
  71. 64 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyProducePriceServiceImpl.java
  72. 242 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyProduceServiceImpl.java
  73. 36 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyWarningServiceImpl.java
  74. 66 0
      huimv-farm/src/main/java/vip/xiaonuo/production/config/ProductionConfigure.java
  75. 46 0
      huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProduceLocationController.java
  76. 46 0
      huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionCheckController.java
  77. 46 0
      huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionConsumeController.java
  78. 50 0
      huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionEnergyController.java
  79. 47 0
      huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionReceiveController.java
  80. 49 0
      huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionSecondController.java
  81. 49 0
      huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionTargetController.java
  82. 20 0
      huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionUnitCostController.java
  83. 48 0
      huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionWorkstopPlanController.java
  84. 47 0
      huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionYieldController.java
  85. 45 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProduceLocation.java
  86. 109 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionCheck.java
  87. 91 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionConsume.java
  88. 73 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionEnergy.java
  89. 73 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionReceive.java
  90. 85 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionSecond.java
  91. 85 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionTarget.java
  92. 74 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionUnitCost.java
  93. 91 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionWorkstopPlan.java
  94. 85 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionYield.java
  95. 23 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/vo/ProductionPlanVo.java
  96. 17 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/vo/ProductionWorkPlanVo.java
  97. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/production/mapper/ProduceLocationMapper.java
  98. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/production/mapper/ProductionCheckMapper.java
  99. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/production/mapper/ProductionConsumeMapper.java
  100. 0 0
      huimv-farm/src/main/java/vip/xiaonuo/production/mapper/ProductionEnergyMapper.java

+ 66 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/config/MoneyConfigure.java

@@ -0,0 +1,66 @@
+/*
+ * 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.config;
+
+
+import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.Contact;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import vip.xiaonuo.common.pojo.CommonResult;
+
+import javax.annotation.Resource;
+
+/**
+ * SaToken鉴权配置
+ *
+ * @HRor xuyuxiang
+ * @date 2021/10/9 14:24
+ **/
+@Configuration
+public class MoneyConfigure implements WebMvcConfigurer {
+
+    @Resource
+    private OpenApiExtensionResolver openApiExtensionResolver;
+
+    
+
+
+    @Bean(value = "MoneyDocApi")
+    public Docket hrDocApi() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .apiInfo(new ApiInfoBuilder()
+                        .title("财务模块")
+                        .description("财务模块")
+                        .termsOfServiceUrl("https://www.baiduc.com")
+                        .contact(new Contact("SNOWY_TEAM","https://www.baiduc.com", "xuyuxiang29@foxmail.com"))
+                        .version("2.0.0")
+                        .build())
+                .globalResponseMessage(RequestMethod.GET, CommonResult.responseList())
+                .globalResponseMessage(RequestMethod.POST, CommonResult.responseList())
+                .groupName("财务模块")
+                .select()
+                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+                .apis(RequestHandlerSelectors.basePackage("vip.xiaonuo.money"))
+                .paths(PathSelectors.any())
+                .build().extensions(openApiExtensionResolver.buildExtensions("财务模块"));
+    }
+}

+ 84 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyBorrowWarningController.java

@@ -0,0 +1,84 @@
+package vip.xiaonuo.money.controller;
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+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.MoneyBorrowWarning;
+import vip.xiaonuo.money.entity.vo.MoneyBankNameVo;
+import vip.xiaonuo.money.entity.vo.MoneyBorrowPriceVo;
+import vip.xiaonuo.money.param.MoneyBorrowDetailParam;
+import vip.xiaonuo.money.param.MoneyBorrowParam;
+import vip.xiaonuo.money.param.MoneyBusinessParam;
+import vip.xiaonuo.money.param.MoneyInOutParam;
+import vip.xiaonuo.money.service.IMoneyBorrowWarningService;
+import vip.xiaonuo.money.service.IMoneyBusinessService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 财务临近还款期预警 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-20
+ */
+
+@Api(tags = "临近还款期预警控制器")
+@ApiSupport(author = "wang", order = 1)
+@RestController
+@Validated
+public class MoneyBorrowWarningController {
+
+    @Autowired
+    private IMoneyBorrowWarningService borrowWarningService;
+
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("临近还款")
+    @PostMapping("/money-borrow-warning/listBusiness")
+    public CommonResult<List<MoneyBorrowWarning>> listBorrowWarning(@RequestBody MoneyInOutParam inOutParam) {
+        return CommonResult.data(borrowWarningService.listBorrowWarning(inOutParam));
+    }
+
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("借款总金额")
+    @PostMapping("/money-borrow-warning/getMoneyCount")
+    public CommonResult<JSONObject> getMoneyCount(@RequestBody MoneyBorrowParam borrowParam) {
+        return CommonResult.data(borrowWarningService.getMoneyCount(borrowParam));
+    }
+
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("借款金额分析")
+    @PostMapping("/money-borrow-warning/bankRank")
+    public CommonResult<List<MoneyBankNameVo>> bankRank(@RequestBody MoneyBorrowParam borrowParam) {
+        return CommonResult.data(borrowWarningService.bankRank(borrowParam));
+    }
+
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("年月借款分析")
+    @PostMapping("/money-borrow-warning/borrowMoney")
+    public CommonResult<List<MoneyBorrowPriceVo>> borrowMoney(@RequestBody MoneyBorrowParam borrowParam) {
+        return CommonResult.data(borrowWarningService.borrowMoney(borrowParam));
+    }
+
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("借款明细表")
+    @PostMapping("/money-borrow-warning/listBorrowDetail")
+    public CommonResult<Page<MoneyBorrowWarning>> listBorrowDetail(@RequestBody MoneyBorrowDetailParam detailParam) {
+        return CommonResult.data(borrowWarningService.listBorrowDetail(detailParam));
+    }
+}

+ 47 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyBusinessController.java

@@ -0,0 +1,47 @@
+package vip.xiaonuo.money.controller;
+
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.alibaba.fastjson.JSONArray;
+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.*;
+
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.HrBaseEmployeeInfo;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.param.HrBaseEmployeeInfoPageParam;
+import vip.xiaonuo.money.param.MoneyBusinessParam;
+import vip.xiaonuo.money.service.IMoneyBusinessService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 财务营业情况 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-19
+ */
+@Api(tags = "财务指标卡控制器")
+@ApiSupport(author = "wang", order = 1)
+@RestController
+@Validated
+public class MoneyBusinessController {
+    @Autowired
+    private IMoneyBusinessService businessService;
+
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("指标卡")
+    @PostMapping("/money/listBusiness")
+    public CommonResult<JSONArray> listBusiness(@RequestBody  MoneyBusinessParam moneyBusinessParam) {
+        return CommonResult.data(businessService.listBusiness(moneyBusinessParam));
+    }
+
+}

+ 47 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyCostController.java

@@ -0,0 +1,47 @@
+package vip.xiaonuo.money.controller;
+
+
+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.MoneyCost;
+import vip.xiaonuo.money.entity.MoneyProduce;
+import vip.xiaonuo.money.param.MoneyAnalysisParam;
+import vip.xiaonuo.money.param.MoneyInOutParam;
+import vip.xiaonuo.money.service.IMoneyCostService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 财务费用分析 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+@Api(tags = "费用分析控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class MoneyCostController {
+    @Autowired
+    private IMoneyCostService costService;
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("费用分析")
+    @PostMapping("/money-cost/listCost")
+    public CommonResult<List<MoneyCost>> listCost(@RequestBody MoneyInOutParam outParam) {
+        return CommonResult.data(costService.listCost(outParam));
+    }
+
+}

+ 46 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyForecastController.java

@@ -0,0 +1,46 @@
+package vip.xiaonuo.money.controller;
+
+
+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.MoneyCost;
+import vip.xiaonuo.money.entity.MoneyForecast;
+import vip.xiaonuo.money.param.MoneyInOutParam;
+import vip.xiaonuo.money.service.IMoneyForecastService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 财务费用预测 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+@Api(tags = "费用预测控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class MoneyForecastController {
+
+    @Autowired
+    private IMoneyForecastService forecastService;
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("费用预测")
+    @PostMapping("/money-forecast/listForecast")
+    public CommonResult<List<MoneyForecast>> listForecast(@RequestBody MoneyInOutParam outParam) {
+        return CommonResult.data(forecastService.listForecast(outParam));
+    }
+}

+ 57 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyIncomeController.java

@@ -0,0 +1,57 @@
+package vip.xiaonuo.money.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+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.MoneyIncome;
+import vip.xiaonuo.money.entity.vo.MoneyIncomeVo;
+import vip.xiaonuo.money.param.MoneyIncomeParam;
+import vip.xiaonuo.money.param.MoneyOverdueParam;
+import vip.xiaonuo.money.service.IMoneyIncomeService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 财务收入达成 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+@RequestMapping("/money-income")
+@Api(tags = "收入达成控制器")
+@ApiSupport(author = "wang", order = 1)
+@RestController
+@Validated
+public class MoneyIncomeController {
+
+    @Autowired
+    private IMoneyIncomeService incomeService;
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("总览")
+    @PostMapping("/money-overdue/getMoneyIncome")
+    public CommonResult<MoneyIncomeVo> getMoneyIncome(@RequestBody MoneyIncomeParam incomeParam) {
+        return CommonResult.data(incomeService.getMoneyIncome(incomeParam));
+    }
+
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("图表")
+    @PostMapping("/money-overdue/MoneyIncomeList")
+    public CommonResult<List<MoneyIncome>> MoneyIncomeList(@RequestBody MoneyIncomeParam incomeParam) {
+        return CommonResult.data(incomeService.MoneyIncomeList(incomeParam));
+    }
+
+}

+ 73 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyOverdueController.java

@@ -0,0 +1,73 @@
+package vip.xiaonuo.money.controller;
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+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.MoneyBorrowWarning;
+import vip.xiaonuo.money.entity.MoneyOverdue;
+import vip.xiaonuo.money.param.MoneyInOutParam;
+import vip.xiaonuo.money.param.MoneyOverduePageParam;
+import vip.xiaonuo.money.param.MoneyOverdueParam;
+import vip.xiaonuo.money.service.IMoneyOverdueService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 财务应收逾期表 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+
+@Api(tags = "应收逾期分析控制器")
+@ApiSupport(author = "wang", order = 1)
+@RestController
+@Validated
+public class MoneyOverdueController {
+
+    @Autowired
+    private IMoneyOverdueService overdueService;
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("逾期一个月以上总金额")
+    @PostMapping("/money-overdue/getOverdueCount")
+    public CommonResult<JSONObject> getOverdueCount(@RequestBody MoneyOverdueParam overdueParam) {
+        return CommonResult.data(overdueService.getOverdueCount(overdueParam));
+    }
+
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("逾期占比")
+    @PostMapping("/money-overdue/overdueRank")
+    public CommonResult<JSONObject> overdueRank(@RequestBody MoneyOverdueParam overdueParam) {
+        return CommonResult.data(overdueService.overdueRank(overdueParam));
+    }
+
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("客户应收/逾期分析--客户逾期金额共用")
+    @PostMapping("/money-overdue/userRank")
+    public CommonResult<JSONArray> 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) {
+        return CommonResult.data(overdueService.overdueDetail(overduePageParam));
+    }
+}

+ 48 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyPeopleController.java

@@ -0,0 +1,48 @@
+package vip.xiaonuo.money.controller;
+
+
+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.MoneyProduce;
+import vip.xiaonuo.money.param.MoneyAnalysisParam;
+import vip.xiaonuo.money.param.MoneyPeopleAddParam;
+import vip.xiaonuo.money.service.IMoneyPeopleService;
+import vip.xiaonuo.money.service.IMoneyProduceService;
+
+/**
+ * <p>
+ * 财务预警通知 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-22
+ */
+@RequestMapping("/money-people")
+@Api(tags = "预警通用设置控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class MoneyPeopleController {
+
+    @Autowired
+    private IMoneyPeopleService peopleService;
+
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("预警设置添加或修改")
+    @PostMapping("/money-people/add")
+    public CommonResult<String> analysisIncome(@RequestBody MoneyPeopleAddParam addParam) {
+        peopleService.add(addParam);
+        return CommonResult.ok();
+    }
+}

+ 74 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyProduceController.java

@@ -0,0 +1,74 @@
+package vip.xiaonuo.money.controller;
+
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+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.MoneyProduce;
+import vip.xiaonuo.money.param.MoneyAnalysisParam;
+import vip.xiaonuo.money.param.MoneyInOutParam;
+import vip.xiaonuo.money.param.MoneyProduceIncomeParam;
+import vip.xiaonuo.money.param.MoneyProduceParam;
+import vip.xiaonuo.money.service.IMoneyProduceService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 财务产品销售收入 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-19
+ */
+@Api(tags = "财务图表控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class MoneyProduceController {
+
+    @Autowired
+    private IMoneyProduceService produceService;
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("收入占比分析")
+    @PostMapping("/money-produce/analysisIncome")
+    public CommonResult<MoneyProduce> analysisIncome(@RequestBody  MoneyAnalysisParam analysisParam) {
+        return CommonResult.data(produceService.analysisIncome(analysisParam));
+    }
+
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("产品销售分析")
+    @PostMapping("/money-produce/produceAnalysis")
+    public CommonResult<JSONArray> produceAnalysis(@RequestBody MoneyProduceParam moneyProduceParam) {
+        return CommonResult.data(produceService.produceAnalysis(moneyProduceParam));
+    }
+
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("国内外收入分析")
+    @PostMapping("/money-produce/getInOut")
+    public CommonResult<JSONObject> getInOut(@RequestBody MoneyInOutParam inOutParam) {
+        return CommonResult.data(produceService.getInOut(inOutParam));
+    }
+
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("产品销售收入分析")
+    @PostMapping("/money-produce/produceIncomeAnalysis")
+    public CommonResult<JSONArray> produceIncomeAnalysis(@RequestBody MoneyProduceIncomeParam moneyProduceParam) {
+        return CommonResult.data(produceService.produceIncomeAnalysis(moneyProduceParam));
+    }
+}

+ 20 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyProduceIncomeController.java

@@ -0,0 +1,20 @@
+package vip.xiaonuo.money.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 财务产品销售收入 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-09
+ */
+@RestController
+@RequestMapping("/money-produce-income")
+public class MoneyProduceIncomeController {
+
+}

+ 54 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyProducePriceController.java

@@ -0,0 +1,54 @@
+package vip.xiaonuo.money.controller;
+
+
+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.MoneyCost;
+import vip.xiaonuo.money.entity.MoneyProducePrice;
+import vip.xiaonuo.money.entity.vo.MoneyProduceVo;
+import vip.xiaonuo.money.param.MoneyInOutParam;
+import vip.xiaonuo.money.service.IMoneyProducePriceService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 财务产品成本收入 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+@Api(tags = "产品控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class MoneyProducePriceController {
+
+    @Autowired
+    private IMoneyProducePriceService producePriceService;
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("产品利润率")
+    @PostMapping("/money-produce-price/listProduceProfit")
+    public CommonResult<List<MoneyProducePrice>> listProduceProfit(@RequestBody MoneyInOutParam outParam) {
+        return CommonResult.data(producePriceService.listProduceProfit(outParam));
+    }
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("成本和收入情况")
+    @PostMapping("/money-produce-price/listProduce")
+    public CommonResult<List<MoneyProduceVo>> listProduce(@RequestBody MoneyInOutParam outParam) {
+        return CommonResult.data(producePriceService.listProduce(outParam));
+    }
+}

+ 48 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyWarningController.java

@@ -0,0 +1,48 @@
+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.MoneyWarning;
+import vip.xiaonuo.money.param.MoneyOverduePageParam;
+import vip.xiaonuo.money.param.MoneyPeopleAddParam;
+import vip.xiaonuo.money.service.IMoneyPeopleService;
+import vip.xiaonuo.money.service.IMoneyWarningService;
+
+/**
+ * <p>
+ * 财务预警 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-22
+ */
+@RequestMapping("/money-warning")
+@Api(tags = "预警通用控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class MoneyWarningController {
+
+    @Autowired
+    private IMoneyWarningService warningService;
+
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("预警设置添加或修改")
+    @PostMapping("/money-people/add")
+    public CommonResult<Page<MoneyWarning>> page(@RequestBody MoneyOverduePageParam pageParam) {
+        return CommonResult.data(warningService.page(pageParam));
+    }
+}

+ 90 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyBorrowWarning.java

@@ -0,0 +1,90 @@
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 财务临近还款期预警
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("money_borrow_warning")
+public class MoneyBorrowWarning implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+
+    @ApiModelProperty(value = "组织id", position = 1)
+    private String orgId;
+
+    /**
+     * 公司名称
+     */
+    @ApiModelProperty(value = "公司名称", position = 2)
+    private String company;
+
+    /**
+     * 借款时间
+     */
+    @ApiModelProperty(value = "借款时间", position = 3)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date borrowTime;
+
+    /**
+     * 币种
+     */
+    @ApiModelProperty(value = "币种", position = 4)
+    private String moneyType;
+
+    /**
+     * 借款金额
+     */
+    @ApiModelProperty(value = "借款金额", position = 5)
+    private String borrowPrice;
+
+    /**
+     * 截至日期
+     */
+    @ApiModelProperty(value = "截至日期", position = 6)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+
+    @ApiModelProperty(value = "银行名称", position = 7)
+    private String bankName;
+
+
+    @ApiModelProperty(value = "借款利率", position = 8)
+    private String bankRank;
+
+    @ApiModelProperty(value = "借款类型", position = 9)
+    private String bankType;
+
+    @ApiModelProperty(value = "还款时间", position = 10)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date repaymentTime;
+
+
+    @ApiModelProperty(value = "是否还款", position = 11)
+    private Integer isRepayment;
+
+}

+ 80 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyBusiness.java

@@ -0,0 +1,80 @@
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 财务营业情况
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("money_business")
+public class MoneyBusiness implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id", position = 2)
+    private String orgId;
+
+    /**
+     * 营业收入
+     */
+    @ApiModelProperty(value = "营业收入", position = 3)
+    private String businessIncome;
+
+    /**
+     * 营业成本
+     */
+
+    private String businessCost;
+
+    /**
+     * 净利润
+     */
+    private String profit;
+
+    /**
+     * 已交税金
+     */
+    private String taxes;
+
+    /**
+     * 当前资金余额
+     */
+    private String balance;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date createTime;
+
+
+    /**
+     * 营业类型 0为单个公司 1为全部合营
+     */
+    private Integer type;
+
+}

+ 67 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyCost.java

@@ -0,0 +1,67 @@
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 财务费用分析
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("money_cost")
+public class MoneyCost implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id", position = 1)
+    private String orgId;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间", position = 2)
+    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 管理费用
+     */
+    @ApiModelProperty(value = "管理费用", position = 3)
+    private String manage;
+
+    /**
+     * 销售费用
+     */
+    @ApiModelProperty(value = "销售费用", position = 4)
+    private String sale;
+
+    /**
+     * 财务费用
+     */
+    @ApiModelProperty(value = "财务费用", position = 5)
+    private String finance;
+
+
+}

+ 73 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyForecast.java

@@ -0,0 +1,73 @@
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 财务费用预测
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("money_forecast")
+public class MoneyForecast implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 销售额
+     */
+    @ApiModelProperty(value = "销售额", position = 1)
+    private String saleNumber;
+
+    /**
+     * 销售利润
+     */
+    @ApiModelProperty(value = "销售利润", position = 2)
+    private String saleProfit;
+
+    /**
+     * 销售成本
+     */
+    @ApiModelProperty(value = "销售成本", position = 3)
+    private String saleCost;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间", position = 4)
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id", position = 5)
+    private String orgId;
+
+    /**
+     * 预测类型 0为本月预测 1为本月实际
+     */
+    @ApiModelProperty(value = "预测类型 0为本月预测 1为本月实际", position = 6)
+    private Integer type;
+
+
+}

+ 59 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyIncome.java

@@ -0,0 +1,59 @@
+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.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 财务收入达成
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("money_income")
+public class MoneyIncome implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 目标收入
+     */
+    @ApiModelProperty(value = "目标收入", position = 1)
+    private String yearTarget;
+
+    /**
+     * 实际收入
+     */
+    @ApiModelProperty(value = "实际收入", position = 2)
+    private String yearActual;
+
+    @ApiModelProperty(value = "公司名称", position = 3)
+    private String companyName;
+
+    @ApiModelProperty(value = "公司类型", position = 4)
+    private Integer companyType;
+
+    @ApiModelProperty(value = "组织id", position = 5)
+    private String orgId;
+    /**
+     * 年份
+     */
+    @ApiModelProperty(value = "年份", position = 6)
+    private String year;
+
+
+}

+ 112 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyOverdue.java

@@ -0,0 +1,112 @@
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 财务应收逾期表
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("money_overdue")
+public class MoneyOverdue implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id", position = 1)
+    private String orgId;
+
+    /**
+     * 单据编号
+     */
+    @ApiModelProperty(value = "单据编号", position = 2)
+    private String documentNumber;
+
+    /**
+     * 单据类型
+     */
+    @ApiModelProperty(value = "单据类型", position = 3)
+    private String documentType;
+
+    /**
+     * 单据状态
+     */
+    @ApiModelProperty(value = "单据状态", position = 4)
+    private String documentStatus;
+
+    /**
+     * 客户
+     */
+    @ApiModelProperty(value = "客户", position = 5)
+    private String userName;
+
+
+    /**
+     * 应收金额
+     */
+    @ApiModelProperty(value = "应收金额", position = 12)
+    private String  collectPrice;
+
+    /**
+     * 日期
+     */
+    @ApiModelProperty(value = "日期", position = 6)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date dateTime;
+
+    /**
+     * 到期日
+     */
+    @ApiModelProperty(value = "到期日", position = 7)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+    /**
+     * 逾期时间
+     */
+    @ApiModelProperty(value = "逾期时间", position = 8)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date overdueTime;
+
+    /**
+     * 期末余额
+     */
+    @ApiModelProperty(value = "期末余额", position = 9)
+    private String balance;
+
+    /**
+     * 逾期金额
+     */
+    @ApiModelProperty(value = "逾期金额", position = 10)
+    private String overduePrice;
+
+    /**
+     * 是否逾期 0为应收 1为逾期
+     */
+    @ApiModelProperty(value = "是否逾期 0为应收 1为逾期", position = 11)
+    private Integer isOverdue;
+
+
+}

+ 62 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyPeople.java

@@ -0,0 +1,62 @@
+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.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 财务预警通知
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("money_people")
+public class MoneyPeople implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id", position = 1)
+    private String orgId;
+
+    /**
+     * 重要预警通知人
+     */
+    @ApiModelProperty(value = "重要预警通知人", position = 2)
+    private String important;
+
+    /**
+     * 普通预警通知人
+     */
+    @ApiModelProperty(value = "普通预警通知人", position = 3)
+    private String ordinary;
+
+    /**
+     * 提醒预警通知人
+     */
+    @ApiModelProperty(value = "提醒预警通知人", position = 4)
+    private String remind;
+
+    /**
+     * 预警类型 0为财务依次累加
+     */
+    @ApiModelProperty(value = "预警类型 0为财务依次累加", position = 5)
+    private String type;
+
+}

+ 97 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyProduce.java

@@ -0,0 +1,97 @@
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 财务产品销售收入
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("money_produce")
+public class MoneyProduce implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * NF级胆固醇
+     */
+    @ApiModelProperty(value = "NF级胆固醇", position = 1)
+    private String nfCholesterol;
+
+    /**
+     * 饲料级胆固醇
+     */
+    @ApiModelProperty(value = "饲料级胆固醇", position = 2)
+    private String breedCholesterol;
+
+    /**
+     * 羊毛醇
+     */
+    @ApiModelProperty(value = "羊毛醇", position = 3)
+    private String sheepAlcohol;
+
+    /**
+     * 羊毛酸
+     */
+    @ApiModelProperty(value = "羊毛酸", position = 4)
+    private String sheepSour;
+
+    /**
+     * 羊毛酸异丙蜡
+     */
+    @ApiModelProperty(value = "羊毛酸异丙蜡", position = 5)
+    private String sheepSourBing;
+
+    /**
+     * 其他
+     */
+    @ApiModelProperty(value = "其他", position = 6)
+    private String other;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id", position = 7)
+    private String orgId;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间", position = 8)
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 收入类型 0为国内 1为国外
+     */
+    @ApiModelProperty(value = "收入类型 0为国内 1为国外", position = 9)
+    private Integer type;
+
+    /**
+     * 交易类型 0为正常交易 1为关联交易
+     */
+    @ApiModelProperty(value = "交易类型 0为正常交易 1为关联交易", position = 10)
+    private Integer transactionType;
+
+
+}

+ 72 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyProduceIncome.java

@@ -0,0 +1,72 @@
+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 lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 财务产品销售收入
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("money_produce_income")
+public class MoneyProduceIncome implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * NF级胆固醇
+     */
+    private String nfCholesterol;
+
+    /**
+     * 饲料级胆固醇
+     */
+    private String breedCholesterol;
+
+    /**
+     * 羊毛醇
+     */
+    private String sheepAlcohol;
+
+    /**
+     * 羊毛酸
+     */
+    private String sheepSour;
+
+    /**
+     * 羊毛酸异丙蜡
+     */
+    private String sheepSourBing;
+
+    /**
+     * 其他
+     */
+    private String other;
+
+    /**
+     * 组织id
+     */
+    private String orgId;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+
+}

+ 73 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyProducePrice.java

@@ -0,0 +1,73 @@
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 财务产品成本收入
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("money_produce_price")
+public class MoneyProducePrice implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 产品名称
+     */
+    @ApiModelProperty(value = "产品名称", position = 1)
+    private String produceName;
+
+    /**
+     * 利润率
+     */
+    @ApiModelProperty(value = "利润率", position = 2)
+    private String profit;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间", position = 3)
+    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 收入
+     */
+    @ApiModelProperty(value = "收入", position = 4)
+    private String income;
+
+    /**
+     * 成本
+     */
+    @ApiModelProperty(value = "成本", position = 5)
+    private String cost;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id", position = 6)
+    private String orgId;
+
+
+}

+ 85 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyWarning.java

@@ -0,0 +1,85 @@
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 财务预警
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("money_warning")
+public class MoneyWarning implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 预警类型
+     */
+    @ApiModelProperty(value = "预警类型 0银行贷款临近还款预警 1逾期收款提醒", position = 2)
+    private Integer warningType;
+
+    /**
+     * 预警登记
+     */
+    @ApiModelProperty(value = "预警登记 0重要、1普通、2提醒", position = 3)
+    private Integer warningLevel;
+
+    /**
+     * 预警内容
+     */
+    @ApiModelProperty(value = "预警内容", position = 4)
+    private String warningContent;
+
+    /**
+     * 预警时间
+     */
+    @ApiModelProperty(value = "预警时间", position = 5)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date warningDate;
+
+    /**
+     * 处理人
+     */
+    @ApiModelProperty(value = "处理人", position = 6)
+    private String dealUser;
+
+    /**
+     * 处理方法
+     */
+    @ApiModelProperty(value = "处理方法", position = 7)
+    private String dealMethod;
+
+    /**
+     * 处理结果
+     */
+    @ApiModelProperty(value = "处理结果", position = 8)
+    private String dealResult;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id", position = 9)
+    private String orgId;
+
+
+}

+ 15 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/vo/MoneyBankNameVo.java

@@ -0,0 +1,15 @@
+package vip.xiaonuo.money.entity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class MoneyBankNameVo {
+
+
+    @ApiModelProperty(value = "借款金额", position = 1)
+    private String borrowPrice;
+
+    @ApiModelProperty(value = "银行名称", position = 2)
+    private String bankName;
+}

+ 17 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/vo/MoneyBorrowPriceVo.java

@@ -0,0 +1,17 @@
+package vip.xiaonuo.money.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class MoneyBorrowPriceVo {
+
+    @ApiModelProperty(value = "借款金额", position = 1)
+    private String borrowPrice;
+
+    @ApiModelProperty(value = "借款时间", position = 2)
+    private String borrowTime;
+}

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

@@ -0,0 +1,17 @@
+package vip.xiaonuo.money.entity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class MoneyBorrowUserVo {
+
+    @ApiModelProperty(value = "借款金额", position = 1)
+    private String userName;
+
+    @ApiModelProperty(value = "逾期金额", position = 2)
+    private String overduePrice;
+
+    @ApiModelProperty(value = "应收金额", position = 3)
+    private String collectPrice;
+}

+ 27 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/vo/MoneyIncomeVo.java

@@ -0,0 +1,27 @@
+package vip.xiaonuo.money.entity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import vip.xiaonuo.money.entity.MoneyIncome;
+
+@Data
+public class MoneyIncomeVo  {
+
+    @ApiModelProperty(value = "目标收入", position = 1)
+    private String yearTarget;
+
+    @ApiModelProperty(value = "实际收入", position = 2)
+    private String yearActual;
+
+    @ApiModelProperty(value = "目标完成率", position = 3)
+    private String rank;
+
+    @ApiModelProperty(value = "花园生物实际收入", position = 4)
+    private String shengWu;
+
+    @ApiModelProperty(value = "花园营养实际收入", position = 5)
+    private String yingYang;
+
+    @ApiModelProperty(value = "杭州下沙实际收入", position = 6)
+    private String xiaSha;
+}

+ 22 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/vo/MoneyProduceVo.java

@@ -0,0 +1,22 @@
+package vip.xiaonuo.money.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class MoneyProduceVo {
+
+
+    @ApiModelProperty(value = "成本", position = 1)
+    private String cost;
+
+    @ApiModelProperty(value = "收入", position = 2)
+    private String income;
+
+    @ApiModelProperty(value = "时间", position = 3)
+    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
+    private Date time;
+}

+ 26 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyBorrowWarningMapper.java

@@ -0,0 +1,26 @@
+package vip.xiaonuo.money.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Param;
+import vip.xiaonuo.money.entity.MoneyBorrowWarning;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.money.entity.vo.MoneyBankNameVo;
+import vip.xiaonuo.money.entity.vo.MoneyBorrowPriceVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 财务临近还款期预警 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-20
+ */
+public interface MoneyBorrowWarningMapper extends BaseMapper<MoneyBorrowWarning> {
+
+    List<MoneyBankNameVo> getBankRank(@Param(Constants.WRAPPER) QueryWrapper<MoneyBorrowWarning> queryWrapper);
+
+    List<MoneyBorrowPriceVo> getBorrowPrice(@Param(Constants.WRAPPER) QueryWrapper<MoneyBorrowWarning> queryWrapper);
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.money.mapper;
+
+import vip.xiaonuo.money.entity.MoneyBusiness;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 财务营业情况 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-19
+ */
+public interface MoneyBusinessMapper extends BaseMapper<MoneyBusiness> {
+
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.money.mapper;
+
+import vip.xiaonuo.money.entity.MoneyCost;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 财务费用分析 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+public interface MoneyCostMapper extends BaseMapper<MoneyCost> {
+
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.money.mapper;
+
+import vip.xiaonuo.money.entity.MoneyForecast;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 财务费用预测 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+public interface MoneyForecastMapper extends BaseMapper<MoneyForecast> {
+
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.money.mapper;
+
+import vip.xiaonuo.money.entity.MoneyIncome;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 财务收入达成 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+public interface MoneyIncomeMapper extends BaseMapper<MoneyIncome> {
+
+}

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

@@ -0,0 +1,23 @@
+package vip.xiaonuo.money.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Param;
+import vip.xiaonuo.money.entity.MoneyOverdue;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.money.entity.vo.MoneyBorrowUserVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 财务应收逾期表 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+public interface MoneyOverdueMapper extends BaseMapper<MoneyOverdue> {
+
+    List<MoneyBorrowUserVo> getUserRank(@Param(Constants.WRAPPER) QueryWrapper<MoneyOverdue> queryWrapper);
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.money.mapper;
+
+import vip.xiaonuo.money.entity.MoneyPeople;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 财务预警通知 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-22
+ */
+public interface MoneyPeopleMapper extends BaseMapper<MoneyPeople> {
+
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.money.mapper;
+
+import vip.xiaonuo.money.entity.MoneyProduceIncome;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 财务产品销售收入 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-09
+ */
+public interface MoneyProduceIncomeMapper extends BaseMapper<MoneyProduceIncome> {
+
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.money.mapper;
+
+import vip.xiaonuo.money.entity.MoneyProduce;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 财务产品销售收入 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-19
+ */
+public interface MoneyProduceMapper extends BaseMapper<MoneyProduce> {
+
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.money.mapper;
+
+import vip.xiaonuo.money.entity.MoneyProducePrice;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 财务产品成本收入 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+public interface MoneyProducePriceMapper extends BaseMapper<MoneyProducePrice> {
+
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.money.mapper;
+
+import vip.xiaonuo.money.entity.MoneyWarning;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 财务预警 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-22
+ */
+public interface MoneyWarningMapper extends BaseMapper<MoneyWarning> {
+
+}

+ 41 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyAnalysisParam.java

@@ -0,0 +1,41 @@
+/*
+ * 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;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 人员明细Id参数
+ *
+ * @author 余
+ * @date  2024/11/14 15:02
+ **/
+@Getter
+@Setter
+public class MoneyAnalysisParam {
+
+
+    @ApiModelProperty(value = "orgId", required = true)
+    private String orgId;
+
+    @ApiModelProperty(value = "时间,格式为'2024-10'", required = true)
+    private String time;
+
+    @ApiModelProperty(value = "是否包含关联交易0包含 1不包含", required = true)
+    @NotNull
+    private Integer type;
+}

+ 41 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyBorrowDetailParam.java

@@ -0,0 +1,41 @@
+/*
+ * 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 MoneyBorrowDetailParam {
+
+
+    @ApiModelProperty(value = "orgId", required = true)
+    private String orgId;
+
+    @ApiModelProperty(value = "银行名称", required = true)
+    private String bankName;
+
+    @ApiModelProperty(value = "当前页码", required = true)
+    private Integer pageNum;
+
+    @ApiModelProperty(value = "页大小", required = true)
+    private Integer pageSize;
+}

+ 37 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyBorrowParam.java

@@ -0,0 +1,37 @@
+/*
+ * 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;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 人员明细Id参数
+ *
+ * @author 余
+ * @date  2024/11/14 15:02
+ **/
+@Getter
+@Setter
+public class MoneyBorrowParam {
+
+
+    @ApiModelProperty(value = "orgId", required = true)
+    private String orgId;
+
+    @ApiModelProperty(value = "银行名称", required = true)
+    private String bankName;
+}

+ 37 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyBusinessParam.java

@@ -0,0 +1,37 @@
+/*
+ * 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;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 人员明细Id参数
+ *
+ * @author 余
+ * @date  2024/11/14 15:02
+ **/
+@Getter
+@Setter
+public class MoneyBusinessParam {
+
+
+    @ApiModelProperty(value = "orgId", required = true)
+    private String orgId;
+
+    @ApiModelProperty(value = "时间,格式为'2024-10'", required = true)
+    private String time;
+}

+ 35 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyInOutParam.java

@@ -0,0 +1,35 @@
+/*
+ * 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;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 人员明细Id参数
+ *
+ * @author 余
+ * @date  2024/11/14 15:02
+ **/
+@Getter
+@Setter
+public class MoneyInOutParam {
+
+
+    @ApiModelProperty(value = "orgId", required = true)
+    private String orgId;
+
+}

+ 35 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyIncomeParam.java

@@ -0,0 +1,35 @@
+/*
+ * 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;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 人员明细Id参数
+ *
+ * @author 余
+ * @date  2024/11/14 15:02
+ **/
+@Getter
+@Setter
+public class MoneyIncomeParam {
+
+
+    @ApiModelProperty(value = "时间,格式为'2024'", required = true)
+    private String time;
+
+}

+ 44 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyOverduePageParam.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;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 人员明细Id参数
+ *
+ * @author 余
+ * @date  2024/11/14 15:02
+ **/
+@Getter
+@Setter
+public class MoneyOverduePageParam {
+
+
+    @ApiModelProperty(value = "orgId", required = true)
+    private String orgId;
+
+    @ApiModelProperty(value = "当前页码", required = true)
+    private Integer pageNum;
+
+    @ApiModelProperty(value = "页大小", required = true)
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "预警类型", required = true)
+    @NotNull
+    private Integer type;
+}

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

@@ -0,0 +1,41 @@
+/*
+ * 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 MoneyOverdueParam {
+
+
+    @ApiModelProperty(value = "orgId", required = true)
+    private String orgId;
+
+    @ApiModelProperty(value = "时间,格式为'2024-10'", required = true)
+    private String time;
+
+    @ApiModelProperty(value = "客户", required = true)
+    private String userName;
+
+    @ApiModelProperty(value = "类型", required = true)
+    private String documentStatus;
+}

+ 52 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyPeopleAddParam.java

@@ -0,0 +1,52 @@
+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;
+
+/**
+ * <p>
+ * 财务预警通知
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-22
+ */
+@Data
+public class MoneyPeopleAddParam implements Serializable {
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id", position = 1)
+    private String orgId;
+
+    /**
+     * 重要预警通知人
+     */
+    @ApiModelProperty(value = "重要预警通知人", position = 2)
+    private String important;
+
+    /**
+     * 普通预警通知人
+     */
+    @ApiModelProperty(value = "普通预警通知人", position = 3)
+    private String ordinary;
+
+    /**
+     * 提醒预警通知人
+     */
+    @ApiModelProperty(value = "提醒预警通知人", position = 4)
+    private String remind;
+
+    @ApiModelProperty(value = "预警类型 0为财务依次累加", position = 5)
+    private String type;
+
+
+}

+ 42 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyProduceIncomeParam.java

@@ -0,0 +1,42 @@
+/*
+ * 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;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 人员明细Id参数
+ *
+ * @author 余
+ * @date  2024/11/14 15:02
+ **/
+@Getter
+@Setter
+public class MoneyProduceIncomeParam {
+
+
+    @ApiModelProperty(value = "orgId", required = true)
+    private String orgId;
+
+    @ApiModelProperty(value = "产品类型从0开始依次排序", required = true)
+    private Integer pType;
+
+    @ApiModelProperty(value = "0年 1月", required = true)
+    @NotNull
+    private Integer timeType;
+
+}

+ 45 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyProduceParam.java

@@ -0,0 +1,45 @@
+/*
+ * 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;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 人员明细Id参数
+ *
+ * @author 余
+ * @date  2024/11/14 15:02
+ **/
+@Getter
+@Setter
+public class MoneyProduceParam {
+
+
+    @ApiModelProperty(value = "orgId", required = true)
+    private String orgId;
+
+    @ApiModelProperty(value = "产品类型从0开始依次排序", required = true)
+    private Integer pType;
+
+    @ApiModelProperty(value = "0年 1月", required = true)
+    @NotNull
+    private Integer timeType;
+
+    @ApiModelProperty(value = "是否包含关联交易0包含 1不包含", required = true)
+    @NotNull
+    private Integer type;
+}

+ 35 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyWarningParam.java

@@ -0,0 +1,35 @@
+/*
+ * 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 MoneyWarningParam {
+
+
+    @ApiModelProperty(value = "orgId", required = true)
+    private String orgId;
+
+    @ApiModelProperty(value = "显示时间", required = true)
+    private String time;
+}

+ 38 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyBorrowWarningService.java

@@ -0,0 +1,38 @@
+package vip.xiaonuo.money.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import vip.xiaonuo.money.entity.MoneyBorrowWarning;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.money.entity.vo.MoneyBankNameVo;
+import vip.xiaonuo.money.entity.vo.MoneyBorrowPriceVo;
+import vip.xiaonuo.money.param.MoneyBorrowDetailParam;
+import vip.xiaonuo.money.param.MoneyBorrowParam;
+import vip.xiaonuo.money.param.MoneyInOutParam;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 财务临近还款期预警 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-20
+ */
+public interface IMoneyBorrowWarningService extends IService<MoneyBorrowWarning> {
+
+    List<MoneyBorrowWarning> listBorrowWarning(MoneyInOutParam moneyInOutParam);
+
+    //借款总金额
+    JSONObject getMoneyCount(MoneyBorrowParam borrowParam);
+
+    //银行借款金额分析
+    List<MoneyBankNameVo> bankRank(MoneyBorrowParam borrowParam);
+
+    //年月借款分析
+    List<MoneyBorrowPriceVo> borrowMoney(MoneyBorrowParam borrowParam);
+
+    //借款明细表
+    Page<MoneyBorrowWarning> listBorrowDetail(MoneyBorrowDetailParam detailParam);
+}

+ 25 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyBusinessService.java

@@ -0,0 +1,25 @@
+package vip.xiaonuo.money.service;
+
+import com.alibaba.fastjson.JSONArray;
+import vip.xiaonuo.money.entity.MoneyBusiness;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.money.param.MoneyBusinessParam;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 财务营业情况 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-19
+ */
+public interface IMoneyBusinessService extends IService<MoneyBusiness> {
+
+    //财指标卡
+    JSONArray listBusiness(MoneyBusinessParam moneyBusinessParam);
+
+
+}

+ 24 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyCostService.java

@@ -0,0 +1,24 @@
+package vip.xiaonuo.money.service;
+
+import vip.xiaonuo.money.entity.MoneyCost;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.money.entity.MoneyProducePrice;
+import vip.xiaonuo.money.param.MoneyInOutParam;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 财务费用分析 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+public interface IMoneyCostService extends IService<MoneyCost> {
+
+    //费用分析
+    List<MoneyCost> listCost(MoneyInOutParam outParam);
+
+
+}

+ 21 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyForecastService.java

@@ -0,0 +1,21 @@
+package vip.xiaonuo.money.service;
+
+import vip.xiaonuo.money.entity.MoneyForecast;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.money.param.MoneyInOutParam;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 财务费用预测 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+public interface IMoneyForecastService extends IService<MoneyForecast> {
+
+    //费用预测
+    List<MoneyForecast> listForecast(MoneyInOutParam outParam);
+}

+ 28 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyIncomeService.java

@@ -0,0 +1,28 @@
+package vip.xiaonuo.money.service;
+
+import vip.xiaonuo.money.entity.MoneyIncome;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.money.entity.vo.MoneyIncomeVo;
+import vip.xiaonuo.money.param.MoneyIncomeParam;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 财务收入达成 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+public interface IMoneyIncomeService extends IService<MoneyIncome> {
+
+    //总览
+    MoneyIncomeVo getMoneyIncome(MoneyIncomeParam incomeParam);
+
+    //图表
+    List<MoneyIncome> MoneyIncomeList(MoneyIncomeParam incomeParam);
+
+    //各组织实际收入份额
+
+}

+ 37 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyOverdueService.java

@@ -0,0 +1,37 @@
+package vip.xiaonuo.money.service;
+
+import com.alibaba.fastjson.JSONArray;
+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.vo.MoneyBorrowUserVo;
+import vip.xiaonuo.money.param.MoneyOverduePageParam;
+import vip.xiaonuo.money.param.MoneyOverdueParam;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 财务应收逾期表 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+public interface IMoneyOverdueService extends IService<MoneyOverdue> {
+
+    //逾期一个月以上总金额
+    JSONObject getOverdueCount(MoneyOverdueParam overdueParam);
+
+    //逾期占比
+    JSONObject overdueRank(MoneyOverdueParam overdueParam);
+
+    //客户应收/逾期分析
+    JSONArray userRank(MoneyOverdueParam overdueParam);
+
+    //逾期明细表
+    Page<MoneyOverdue> overdueDetail(MoneyOverduePageParam overduePageParam);
+
+
+}

+ 17 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyPeopleService.java

@@ -0,0 +1,17 @@
+package vip.xiaonuo.money.service;
+
+import vip.xiaonuo.money.entity.MoneyPeople;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.money.param.MoneyPeopleAddParam;
+
+/**
+ * <p>
+ * 财务预警通知 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-22
+ */
+public interface IMoneyPeopleService extends IService<MoneyPeople> {
+    void add(MoneyPeopleAddParam addParam);
+}

+ 16 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyProduceIncomeService.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.money.service;
+
+import vip.xiaonuo.money.entity.MoneyProduceIncome;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 财务产品销售收入 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-09
+ */
+public interface IMoneyProduceIncomeService extends IService<MoneyProduceIncome> {
+
+}

+ 25 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyProducePriceService.java

@@ -0,0 +1,25 @@
+package vip.xiaonuo.money.service;
+
+import vip.xiaonuo.money.entity.MoneyProducePrice;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.money.entity.vo.MoneyProduceVo;
+import vip.xiaonuo.money.param.MoneyInOutParam;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 财务产品成本收入 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+public interface IMoneyProducePriceService extends IService<MoneyProducePrice> {
+
+    //产品利润率
+    List<MoneyProducePrice> listProduceProfit(MoneyInOutParam outParam);
+
+    //成本和收入情况
+    List<MoneyProduceVo> listProduce(MoneyInOutParam outParam);
+}

+ 37 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyProduceService.java

@@ -0,0 +1,37 @@
+package vip.xiaonuo.money.service;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import vip.xiaonuo.money.entity.MoneyProduce;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.money.param.MoneyAnalysisParam;
+import vip.xiaonuo.money.param.MoneyInOutParam;
+import vip.xiaonuo.money.param.MoneyProduceIncomeParam;
+import vip.xiaonuo.money.param.MoneyProduceParam;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 财务产品销售收入 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-19
+ */
+public interface IMoneyProduceService extends IService<MoneyProduce> {
+
+    //财务图表收入分析占比
+   MoneyProduce analysisIncome(MoneyAnalysisParam analysisParam);
+
+    //财务图表产品销售趋势分析
+    JSONArray produceAnalysis(MoneyProduceParam moneyProduceParam);
+
+    //收入分析(国内外)
+    JSONObject getInOut(MoneyInOutParam inOutParam);
+
+
+    //财务图表产品销售收入分析
+    JSONArray produceIncomeAnalysis(MoneyProduceIncomeParam moneyProduceParam);
+}

+ 24 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyWarningService.java

@@ -0,0 +1,24 @@
+package vip.xiaonuo.money.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import vip.xiaonuo.money.entity.MoneyWarning;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.money.param.MoneyOverduePageParam;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 财务预警 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-22
+ */
+public interface IMoneyWarningService extends IService<MoneyWarning> {
+
+    //财务预警
+    Page<MoneyWarning> page(MoneyOverduePageParam pageParam);
+
+
+}

+ 124 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyBorrowWarningServiceImpl.java

@@ -0,0 +1,124 @@
+package vip.xiaonuo.money.service.impl;
+
+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.MoneyBorrowWarning;
+import vip.xiaonuo.money.entity.vo.MoneyBankNameVo;
+import vip.xiaonuo.money.entity.vo.MoneyBorrowPriceVo;
+import vip.xiaonuo.money.mapper.MoneyBorrowWarningMapper;
+import vip.xiaonuo.money.param.MoneyBorrowDetailParam;
+import vip.xiaonuo.money.param.MoneyBorrowParam;
+import vip.xiaonuo.money.param.MoneyInOutParam;
+import vip.xiaonuo.money.service.IMoneyBorrowWarningService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 财务临近还款期预警 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-20
+ */
+@Service
+public class MoneyBorrowWarningServiceImpl extends ServiceImpl<MoneyBorrowWarningMapper, MoneyBorrowWarning> implements IMoneyBorrowWarningService {
+
+    @Autowired
+    private MoneyBorrowWarningMapper borrowWarningMapper;
+
+    @Override
+    public List<MoneyBorrowWarning> listBorrowWarning(MoneyInOutParam moneyInOutParam) {
+        String orgId = moneyInOutParam.getOrgId();
+        Date date = new Date();
+        QueryWrapper<MoneyBorrowWarning> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).eq("is_repayment",0);
+        List<MoneyBorrowWarning> list = new ArrayList<>();
+        List<MoneyBorrowWarning> borrowWarnings = borrowWarningMapper.selectList(queryWrapper);
+        if (borrowWarnings.size() != 0) {
+            for (MoneyBorrowWarning borrowWarning : borrowWarnings) {
+                Date endTime = borrowWarning.getEndTime();
+                if (endTime.compareTo(date) < 0) {
+                    System.out.println("超过还款日");
+                } else {
+                    long l = endTime.getTime() - date.getTime();
+                    long l1 = l / (24 * 60 * 60 * 1000);
+                    if (l1 < 16) {
+                        list.add(borrowWarning);
+                    }
+                }
+            }
+        }
+        return list;
+    }
+
+    @Override
+    public JSONObject getMoneyCount(MoneyBorrowParam borrowParam) {
+        QueryWrapper<MoneyBorrowWarning> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(borrowParam.getOrgId()), "org_id", borrowParam.getOrgId());
+        queryWrapper.eq(StringUtils.isNotBlank(borrowParam.getOrgId()), "bank_name", borrowParam.getBankName());
+        List<MoneyBorrowWarning> list = borrowWarningMapper.selectList(queryWrapper);
+        double value = 0.000;
+        if (list.size() != 0) {
+            for (MoneyBorrowWarning moneyBorrowWarning : list) {
+                value = value + Double.valueOf(moneyBorrowWarning.getBorrowPrice());
+            }
+        }
+        DecimalFormat def = new DecimalFormat("0.000");
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("money", def.format(value));
+        return jsonObject;
+    }
+
+    @Override
+    public List<MoneyBankNameVo> bankRank(MoneyBorrowParam borrowParam) {
+        QueryWrapper<MoneyBorrowWarning> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(borrowParam.getOrgId()), "org_id", borrowParam.getOrgId());
+        List<MoneyBankNameVo> bankRank = borrowWarningMapper.getBankRank(queryWrapper);
+        return bankRank;
+    }
+
+    @Override
+    public List<MoneyBorrowPriceVo> borrowMoney(MoneyBorrowParam borrowParam) {
+        QueryWrapper<MoneyBorrowWarning> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(borrowParam.getOrgId()), "org_id", borrowParam.getOrgId());
+        queryWrapper.eq(StringUtils.isNotBlank(borrowParam.getOrgId()), "bank_name", borrowParam.getBankName());
+        List<MoneyBorrowPriceVo> list = new ArrayList<>();
+        List<MoneyBorrowPriceVo> borrowPrice = borrowWarningMapper.getBorrowPrice(queryWrapper);
+        for (int i = 1; i < 13; i++) {
+            MoneyBorrowPriceVo vo = new MoneyBorrowPriceVo();
+            if (i < 10) {
+                vo.setBorrowTime("0"+i+"月");
+                vo.setBorrowPrice("0");
+            } else {
+                vo.setBorrowTime(i+"月");
+                vo.setBorrowPrice("0");
+            }
+            for (MoneyBorrowPriceVo priceVo : borrowPrice) {
+                if (i == Integer.parseInt(priceVo.getBorrowTime().substring(5, 7))) {
+                    vo.setBorrowPrice(priceVo.getBorrowPrice());
+                }
+            }
+            list.add(vo);
+        }
+        return list;
+    }
+
+    @Override
+    public Page<MoneyBorrowWarning> listBorrowDetail(MoneyBorrowDetailParam detailParam) {
+        QueryWrapper<MoneyBorrowWarning> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(detailParam.getOrgId()), "org_id", detailParam.getOrgId());
+        queryWrapper.eq(StringUtils.isNotBlank(detailParam.getOrgId()), "bank_name", detailParam.getBankName());
+        Page page = new Page<MoneyBorrowWarning>(detailParam.getPageNum(), detailParam.getPageSize());
+        return this.page(page, queryWrapper);
+    }
+
+}

+ 114 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyBusinessServiceImpl.java

@@ -0,0 +1,114 @@
+package vip.xiaonuo.money.service.impl;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+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.money.entity.MoneyBusiness;
+import vip.xiaonuo.money.mapper.MoneyBusinessMapper;
+import vip.xiaonuo.money.param.MoneyBusinessParam;
+import vip.xiaonuo.money.service.IMoneyBusinessService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 财务营业情况 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-19
+ */
+@Service
+public class MoneyBusinessServiceImpl extends ServiceImpl<MoneyBusinessMapper, MoneyBusiness> implements IMoneyBusinessService {
+
+    @Autowired
+    private MoneyBusinessMapper businessMapper;
+
+    @Override
+    public JSONArray listBusiness(MoneyBusinessParam moneyBusinessParam) {
+        String orgId = moneyBusinessParam.getOrgId();
+        String time = moneyBusinessParam.getTime();//2024-10
+        QueryWrapper<MoneyBusiness> queryWrapper = new QueryWrapper<>();
+        QueryWrapper<MoneyBusiness> queryWrapper1 = new QueryWrapper<>();
+        if ("".equals(orgId) || null == orgId) {
+            queryWrapper.eq("type", 1);
+            queryWrapper1.eq("type", 1);
+        } else {
+            queryWrapper.eq("org_id", orgId).eq("type", 0);
+            queryWrapper1.eq("org_id", orgId).eq("type", 0);
+        }
+        JSONArray jsonArray = new JSONArray();
+        if ("".equals(time) || null == time) {
+            DateTime dateTime = DateUtil.beginOfMonth(new Date());
+            queryWrapper.ge("create_time", dateTime);
+            DateTime beginOfYear = DateUtil.beginOfYear(new Date());
+            queryWrapper1.ge("create_time", beginOfYear);
+        } else {
+            String year = time.substring(0, 4);
+            queryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
+            queryWrapper1.between("create_time", year + "-01-01 00:00:00", time + "-31 23:59:59");
+        }
+        DecimalFormat def = new DecimalFormat("0.00");
+        MoneyBusiness moneyBusiness = new MoneyBusiness();
+        Double value1 = 0.00;
+        Double value2 = 0.00;
+        Double value3 = 0.00;
+        Double value4 = 0.00;
+        Double value5 = 0.00;
+        Double value6 = 0.00;
+        Double value7 = 0.00;
+        Double value8 = 0.00;
+        Double value9 = 0.00;
+        Double value10 = 0.00;
+        List<MoneyBusiness> businesses = businessMapper.selectList(queryWrapper);
+        List<MoneyBusiness> businessList = businessMapper.selectList(queryWrapper1);
+        if (businesses.size() != 0) {
+            for (MoneyBusiness business : businesses) {
+                value1 = value1 + Double.valueOf(business.getBusinessIncome());
+                value2 = value2 + Double.valueOf(business.getBusinessCost());
+                value3 = value3 + Double.valueOf(business.getProfit());
+                value4 = value4 + Double.valueOf(business.getTaxes());
+                value5 = value5 + Double.valueOf(business.getBalance());
+            }
+        }
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("type", "month");
+        jsonObject.put("object", moneyBusiness);
+        moneyBusiness.setBusinessIncome(def.format(value1));
+        moneyBusiness.setBusinessCost(def.format(value2));
+        moneyBusiness.setProfit(def.format(value3));
+        moneyBusiness.setTaxes(def.format(value4));
+        moneyBusiness.setBalance(def.format(value5));
+        if (businessList.size() != 0) {
+            for (MoneyBusiness business : businessList) {
+                value6 = value6 + Double.valueOf(business.getBusinessIncome());
+                value7 = value7 + Double.valueOf(business.getBusinessCost());
+                value8 = value8 + Double.valueOf(business.getProfit());
+                value9 = value9 + Double.valueOf(business.getTaxes());
+                value10 = value10 + Double.valueOf(business.getBalance());
+            }
+        }
+        JSONObject jsonObject1 = new JSONObject();
+        MoneyBusiness moneyBusiness1 = new MoneyBusiness();
+        moneyBusiness1.setBusinessIncome(def.format(value6));
+        moneyBusiness1.setBusinessCost(def.format(value7));
+        moneyBusiness1.setProfit(def.format(value8));
+        moneyBusiness1.setTaxes(def.format(value9));
+        moneyBusiness1.setBalance(def.format(value10));
+        jsonObject1.put("type", "year");
+        jsonObject1.put("object", moneyBusiness1);
+        jsonArray.add(jsonObject);
+        jsonArray.add(jsonObject1);
+        return jsonArray;
+    }
+}

+ 54 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyCostServiceImpl.java

@@ -0,0 +1,54 @@
+package vip.xiaonuo.money.service.impl;
+
+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.money.entity.MoneyCost;
+import vip.xiaonuo.money.entity.MoneyProducePrice;
+import vip.xiaonuo.money.mapper.MoneyCostMapper;
+import vip.xiaonuo.money.param.MoneyInOutParam;
+import vip.xiaonuo.money.service.IMoneyCostService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 财务费用分析 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+@Service
+public class MoneyCostServiceImpl extends ServiceImpl<MoneyCostMapper, MoneyCost> implements IMoneyCostService {
+
+    @Autowired
+    private MoneyCostMapper costMapper;
+
+    @Override
+    public List<MoneyCost> listCost(MoneyInOutParam outParam) {
+        Calendar calendar = Calendar.getInstance();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        calendar.add(Calendar.MONTH, -11);
+        String currentDateString = sdf.format(calendar.getTime());
+        QueryWrapper<MoneyCost> queryWrapper = new QueryWrapper<>();
+        queryWrapper.ge("create_time", currentDateString);
+        queryWrapper.eq(StringUtils.isNotBlank(outParam.getOrgId()), "org_id", outParam.getOrgId());
+        queryWrapper.select(" IFNULL(sum(manage),'0') manage,IFNULL(sum(manage),'0') manage,IFNULL(sum(manage),'0') manage," +
+                "create_time createTime");
+        queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
+        queryWrapper.orderByAsc("create_time");
+        return costMapper.selectList(queryWrapper);
+
+    }
+
+
+
+
+}

+ 46 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyForecastServiceImpl.java

@@ -0,0 +1,46 @@
+package vip.xiaonuo.money.service.impl;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+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.money.entity.MoneyForecast;
+import vip.xiaonuo.money.mapper.MoneyForecastMapper;
+import vip.xiaonuo.money.param.MoneyInOutParam;
+import vip.xiaonuo.money.service.IMoneyForecastService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 财务费用预测 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+@Service
+public class MoneyForecastServiceImpl extends ServiceImpl<MoneyForecastMapper, MoneyForecast> implements IMoneyForecastService {
+
+    @Autowired
+    private MoneyForecastMapper forecastMapper;
+
+    @Override
+    public List<MoneyForecast> listForecast(MoneyInOutParam outParam) {
+        QueryWrapper<MoneyForecast> queryWrapper = new QueryWrapper<>();
+        if ("".equals(outParam.getOrgId()) || null == outParam.getOrgId()) {
+            queryWrapper.select(" IFNULL(sum(sale_number),'0') saleNumber,IFNULL(sum(sale_profit),'0') saleProfit,IFNULL(sum(sale_cost),'0') saleCost," +
+                    "create_time createTime,type type");
+        } else {
+            queryWrapper.eq( "org_id", outParam.getOrgId());
+        }
+        DateTime dateTime = DateUtil.beginOfMonth(new Date());
+        queryWrapper.ge("create_time", dateTime);
+        List<MoneyForecast> list = forecastMapper.selectList(queryWrapper);
+        return list;
+    }
+}

+ 94 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyIncomeServiceImpl.java

@@ -0,0 +1,94 @@
+package vip.xiaonuo.money.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import vip.xiaonuo.money.entity.MoneyIncome;
+import vip.xiaonuo.money.entity.vo.MoneyIncomeVo;
+import vip.xiaonuo.money.mapper.MoneyIncomeMapper;
+import vip.xiaonuo.money.param.MoneyIncomeParam;
+import vip.xiaonuo.money.service.IMoneyIncomeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 财务收入达成 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+@Service
+public class MoneyIncomeServiceImpl extends ServiceImpl<MoneyIncomeMapper, MoneyIncome> implements IMoneyIncomeService {
+
+    @Autowired
+    private MoneyIncomeMapper incomeMapper;
+
+    @Override
+    public MoneyIncomeVo getMoneyIncome(MoneyIncomeParam incomeParam) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
+        String year = "";
+        if ("".equals(incomeParam.getTime()) || null == incomeParam.getTime()) {
+             year = sdf.format(new Date());
+        } else {
+             year = incomeParam.getTime();
+        }
+        QueryWrapper<MoneyIncome> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("year", year).groupBy("company_type");
+        queryWrapper.select(" IFNULL(sum(year_target),'0') yearTarget,IFNULL(sum(year_actual),'0') yearActual,company_name companyName," +
+                "company_type companyType");
+        List<MoneyIncome> moneyIncomes = incomeMapper.selectList(queryWrapper);
+        DecimalFormat def = new DecimalFormat("0.00");
+        MoneyIncomeVo incomeVo = new MoneyIncomeVo();
+        double target = 0.00;
+        double actual = 0.00;
+        if (moneyIncomes.size() != 0) {
+            for (MoneyIncome moneyIncome : moneyIncomes) {
+                target = target + Double.valueOf(moneyIncome.getYearTarget());
+                actual = actual + Double.valueOf(moneyIncome.getYearActual());
+                if (moneyIncome.getCompanyType() == 1) {
+                    incomeVo.setShengWu(moneyIncome.getYearActual());
+                } else if (moneyIncome.getCompanyType() == 2) {
+                    incomeVo.setYingYang(moneyIncome.getYearActual());
+                } else if (moneyIncome.getCompanyType() == 3) {
+                    incomeVo.setXiaSha(moneyIncome.getYearActual());
+                }
+            }
+            incomeVo.setYearTarget(def.format(target));
+            incomeVo.setYearActual(def.format(actual));
+            incomeVo.setRank(def.format(actual / target));
+        } else {
+            incomeVo.setRank("0");
+            incomeVo.setYearActual("0");
+            incomeVo.setYearTarget("0");
+            incomeVo.setShengWu("0");
+            incomeVo.setYingYang("0");
+            incomeVo.setXiaSha("0");
+        }
+
+        return incomeVo;
+    }
+
+    @Override
+    public List<MoneyIncome> MoneyIncomeList(MoneyIncomeParam incomeParam) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
+        String year = "";
+        if ("".equals(incomeParam.getTime()) || null == incomeParam.getTime()) {
+            year = sdf.format(new Date());
+        } else {
+            year = incomeParam.getTime();
+        }
+        QueryWrapper<MoneyIncome> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("year", year).groupBy("company_type");
+        queryWrapper.select(" IFNULL(sum(year_target),'0') yearTarget,IFNULL(sum(year_actual),'0') yearActual,company_name companyName," +
+                "company_type companyType");
+        List<MoneyIncome> moneyIncomes = incomeMapper.selectList(queryWrapper);
+        return moneyIncomes;
+    }
+
+}

+ 175 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyOverdueServiceImpl.java

@@ -0,0 +1,175 @@
+package vip.xiaonuo.money.service.impl;
+
+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.vo.MoneyBorrowUserVo;
+import vip.xiaonuo.money.mapper.MoneyOverdueMapper;
+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.text.DecimalFormat;
+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;
+
+    @Override
+    public JSONObject getOverdueCount(MoneyOverdueParam overdueParam) {
+        String orgId = overdueParam.getOrgId();
+        String userName = overdueParam.getUserName();
+        QueryWrapper<MoneyOverdue> 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");
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("money", def.format(money));
+        return jsonObject;
+    }
+
+    @Override
+    public JSONObject overdueRank(MoneyOverdueParam overdueParam) {
+        String orgId = overdueParam.getOrgId();
+        String userName = overdueParam.getUserName();
+        QueryWrapper<MoneyOverdue> 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);
+        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());
+                }
+                count = isOverdue + disOverdue;
+            }
+            if (count == 0) {
+                jsonObject.put("isOverdue", "0");
+                jsonObject.put("disOverdue", "100");
+            } else {
+                jsonObject.put("isOverdue", def.format(isOverdue / count));
+                jsonObject.put("disOverdue", def.format(disOverdue / count));
+            }
+        } else {
+            jsonObject.put("isOverdue", "0");
+            jsonObject.put("disOverdue", "100");
+        }
+        return jsonObject;
+    }
+
+    @Override
+    public JSONArray userRank(MoneyOverdueParam overdueParam) {
+        String orgId = overdueParam.getOrgId();
+        QueryWrapper<MoneyOverdue> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        JSONArray jsonArray = new JSONArray();
+        List<MoneyBorrowUserVo> userRank = overdueMapper.getUserRank(queryWrapper);
+        if (userRank.size() != 0) {
+            for (MoneyBorrowUserVo moneyBorrowUserVo : userRank) {
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("collectPrice", moneyBorrowUserVo.getCollectPrice());
+                jsonObject.put("overduePrice", moneyBorrowUserVo.getOverduePrice());
+                jsonObject.put("userName", moneyBorrowUserVo.getUserName());
+                jsonArray.add(jsonObject);
+            }
+        }
+        JSONArray jsonArray1 = jsonArraySort(jsonArray, "collectPrice", true);
+        return jsonArray1;
+    }
+
+    @Override
+    public Page<MoneyOverdue> overdueDetail(MoneyOverduePageParam 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);
+        Page page = new Page<MoneyOverdue>(pageNum, pageSize);
+        return this.page(page, queryWrapper);
+    }
+
+    /*数组排序*/
+    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;
+    }
+}

+ 44 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyPeopleServiceImpl.java

@@ -0,0 +1,44 @@
+package vip.xiaonuo.money.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import vip.xiaonuo.money.entity.MoneyPeople;
+import vip.xiaonuo.money.mapper.MoneyPeopleMapper;
+import vip.xiaonuo.money.param.MoneyPeopleAddParam;
+import vip.xiaonuo.money.service.IMoneyPeopleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 财务预警通知 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-22
+ */
+@Service
+public class MoneyPeopleServiceImpl extends ServiceImpl<MoneyPeopleMapper, MoneyPeople> implements IMoneyPeopleService {
+
+    @Autowired
+    private MoneyPeopleMapper peopleMapper;
+
+    @Override
+    public void add(MoneyPeopleAddParam addParam) {
+        String orgId = addParam.getOrgId();
+        QueryWrapper<MoneyPeople> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("org_id", orgId).eq("type", addParam.getType());
+        MoneyPeople people = peopleMapper.selectOne(queryWrapper);
+        if (ObjectUtil.isNotEmpty(people)) {
+            people.setOrdinary(addParam.getOrdinary());
+            people.setImportant(addParam.getImportant());
+            people.setRemind(addParam.getRemind());
+            peopleMapper.updateById(people);
+        } else {
+            MoneyPeople moneyPeople = BeanUtil.toBean(addParam, MoneyPeople.class);
+            peopleMapper.insert(moneyPeople);
+        }
+    }
+}

+ 20 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyProduceIncomeServiceImpl.java

@@ -0,0 +1,20 @@
+package vip.xiaonuo.money.service.impl;
+
+import vip.xiaonuo.money.entity.MoneyProduceIncome;
+import vip.xiaonuo.money.mapper.MoneyProduceIncomeMapper;
+import vip.xiaonuo.money.service.IMoneyProduceIncomeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 财务产品销售收入 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-09
+ */
+@Service
+public class MoneyProduceIncomeServiceImpl extends ServiceImpl<MoneyProduceIncomeMapper, MoneyProduceIncome> implements IMoneyProduceIncomeService {
+
+}

+ 64 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyProducePriceServiceImpl.java

@@ -0,0 +1,64 @@
+package vip.xiaonuo.money.service.impl;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+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.money.entity.MoneyProducePrice;
+import vip.xiaonuo.money.entity.vo.MoneyProduceVo;
+import vip.xiaonuo.money.mapper.MoneyProducePriceMapper;
+import vip.xiaonuo.money.param.MoneyInOutParam;
+import vip.xiaonuo.money.service.IMoneyProducePriceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 财务产品成本收入 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-21
+ */
+@Service
+public class MoneyProducePriceServiceImpl extends ServiceImpl<MoneyProducePriceMapper, MoneyProducePrice> implements IMoneyProducePriceService {
+
+    @Autowired
+    private MoneyProducePriceMapper producePriceMapper;
+    @Override
+    public List<MoneyProducePrice> listProduceProfit(MoneyInOutParam outParam) {
+        QueryWrapper<MoneyProducePrice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(outParam.getOrgId()), "org_id", outParam.getOrgId());
+        queryWrapper.select(" produce_name produceName,profit profit,create_time createTime");
+        queryWrapper.groupBy("produce_name,DATE_FORMAT(create_time,'%Y-%m')");
+        queryWrapper.orderByAsc("create_time");
+        return producePriceMapper.selectList(queryWrapper);
+    }
+
+    @Override
+    public List<MoneyProduceVo> listProduce(MoneyInOutParam outParam) {
+        DateTime dateTime = DateUtil.beginOfYear(new Date());
+        QueryWrapper<MoneyProducePrice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(outParam.getOrgId()), "org_id", outParam.getOrgId());
+        queryWrapper.ge("create_time",dateTime).groupBy("produce_name,DATE_FORMAT(create_time,'%Y-%m')");
+        queryWrapper.orderByAsc("create_time");
+        List<MoneyProducePrice> prices = producePriceMapper.selectList(queryWrapper);
+        List<MoneyProduceVo> list = new ArrayList<>();
+        if (prices.size() != 0) {
+            for (MoneyProducePrice price : prices) {
+                MoneyProduceVo vo = new MoneyProduceVo();
+                vo.setCost(price.getCost());
+                vo.setIncome(price.getIncome());
+                vo.setTime(price.getCreateTime());
+                list.add(vo);
+            }
+        }
+        return list;
+    }
+
+}

+ 242 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyProduceServiceImpl.java

@@ -0,0 +1,242 @@
+package vip.xiaonuo.money.service.impl;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import org.checkerframework.checker.units.qual.A;
+import org.springframework.beans.factory.annotation.Autowired;
+import vip.xiaonuo.money.entity.MoneyProduce;
+import vip.xiaonuo.money.entity.MoneyProduceIncome;
+import vip.xiaonuo.money.mapper.MoneyProduceIncomeMapper;
+import vip.xiaonuo.money.mapper.MoneyProduceMapper;
+import vip.xiaonuo.money.param.MoneyAnalysisParam;
+import vip.xiaonuo.money.param.MoneyInOutParam;
+import vip.xiaonuo.money.param.MoneyProduceIncomeParam;
+import vip.xiaonuo.money.param.MoneyProduceParam;
+import vip.xiaonuo.money.service.IMoneyProduceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 财务产品销售收入 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-19
+ */
+@Service
+public class MoneyProduceServiceImpl extends ServiceImpl<MoneyProduceMapper, MoneyProduce> implements IMoneyProduceService {
+
+    @Autowired
+    private MoneyProduceMapper produceMapper;
+    @Autowired
+    private MoneyProduceIncomeMapper incomeMapper;
+
+    @Override
+    public MoneyProduce analysisIncome(MoneyAnalysisParam analysisParam) {
+        String orgId = analysisParam.getOrgId();
+        Integer type = analysisParam.getType();//是否包含关联交易
+        String time = analysisParam.getTime();//2024-10
+        QueryWrapper<MoneyProduce> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).eq("transaction_type", type);
+        if ("".equals(time) || null == time) {
+            DateTime dateTime = DateUtil.beginOfYear(new Date());
+            queryWrapper.ge("create_time", dateTime);
+        } else {
+            String year = time.substring(0, 4);
+            queryWrapper.between("create_time", year + "-01-01 00:00:00", time + "-31 23:59:59");
+        }
+        List<MoneyProduce> list = produceMapper.selectList(queryWrapper);
+        MoneyProduce produce = new MoneyProduce();
+        DecimalFormat def = new DecimalFormat("0.00");
+        double v1 = 0.00;
+        double v2 = 0.00;
+        double v3 = 0.00;
+        double v4 = 0.00;
+        double v5 = 0.00;
+        double v6 = 0.00;
+        double count = 0.00;
+        if (list.size() != 0) {
+            for (MoneyProduce moneyProduce : list) {
+                v1 = v1 + Double.valueOf(moneyProduce.getNfCholesterol());
+                v2 = v2 + Double.valueOf(moneyProduce.getBreedCholesterol());
+                v3 = v3 + Double.valueOf(moneyProduce.getSheepAlcohol());
+                v4 = v4 + Double.valueOf(moneyProduce.getSheepSour());
+                v5 = v5 + Double.valueOf(moneyProduce.getSheepSourBing());
+                v6 = v6 + Double.valueOf(moneyProduce.getOther());
+                count = v1 + v2 + v3 + v4 + v5 + v6;
+            }
+            if (count != 0) {
+                produce.setNfCholesterol(def.format(v1 / count));
+                produce.setBreedCholesterol(def.format(v2 / count));
+                produce.setSheepAlcohol(def.format(v3 / count));
+                produce.setSheepSour(def.format(v4 / count));
+                produce.setSheepSourBing(def.format(v5 / count));
+                produce.setOther(def.format(v6 / count));
+            } else {
+                produce.setNfCholesterol(def.format(v1));
+                produce.setBreedCholesterol(def.format(v2));
+                produce.setSheepAlcohol(def.format(v3));
+                produce.setSheepSour(def.format(v4));
+                produce.setSheepSourBing(def.format(v5));
+                produce.setOther(def.format(v6));
+            }
+        }
+        return produce;
+    }
+
+    @Override
+    public JSONArray produceAnalysis(MoneyProduceParam moneyProduceParam) {
+        String orgId = moneyProduceParam.getOrgId();
+        Integer type = moneyProduceParam.getType();//是否包含关联交易
+        Integer timeType = moneyProduceParam.getTimeType();
+        QueryWrapper<MoneyProduce> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId)
+                .eq("transaction_type", type);
+
+        queryWrapper.select(" IFNULL(sum(nf_cholesterol),0) nfCholesterol,IFNULL(sum(breed_cholesterol),0) breedCholesterol," +
+                "IFNULL(sum(sheep_alcohol),0) sheepAlcohol,IFNULL(sum(sheep_sour),0) sheepSour," +
+                "IFNULL(sum(sheep_sour_bing),0) sheepSourBing,IFNULL(sum(other),0) other," +
+                "DATE_FORMAT(create_time,'%Y-%m-%d') createTime");
+        if (0 == timeType) {
+            queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')").orderByAsc("create_time");
+        } else {
+            queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')").orderByAsc("create_time");
+        }
+        List<MoneyProduce> list = produceMapper.selectList(queryWrapper);
+        JSONArray jsonArray = new JSONArray();
+        for (MoneyProduce produce : list) {
+            JSONObject jsonObject = new JSONObject();
+            switch (moneyProduceParam.getPType()) {
+                case 0:
+                    jsonObject.put("value", produce.getNfCholesterol());
+                    jsonObject.put("createTime", produce.getCreateTime());
+                    break;
+                case 1:
+                    jsonObject.put("value", produce.getBreedCholesterol());
+                    jsonObject.put("createTime", produce.getCreateTime());
+                    break;
+                case 2:
+                    jsonObject.put("value", produce.getSheepAlcohol());
+                    jsonObject.put("createTime", produce.getCreateTime());
+                    break;
+                case 3:
+                    jsonObject.put("value", produce.getSheepSour());
+                    jsonObject.put("createTime", produce.getCreateTime());
+                    break;
+                case 4:
+                    jsonObject.put("value", produce.getSheepSourBing());
+                    jsonObject.put("createTime", produce.getCreateTime());
+                    break;
+                case 5:
+                    jsonObject.put("value", produce.getOther());
+                    jsonObject.put("createTime", produce.getCreateTime());
+                    break;
+            }
+            jsonArray.add(jsonObject);
+        }
+        return jsonArray;
+    }
+
+    @Override
+    public JSONObject getInOut(MoneyInOutParam inOutParam) {
+        String orgId = inOutParam.getOrgId();
+        QueryWrapper<MoneyProduce> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).groupBy("type");
+        List<MoneyProduce> produces = produceMapper.selectList(queryWrapper);
+        JSONObject jsonObject = new JSONObject();
+        DecimalFormat def = new DecimalFormat("0.00");
+        double in = 0.00;
+        double out = 0.00;
+        double count = 0.00;
+        if (produces.size() != 0) {
+            for (MoneyProduce produce : produces) {
+                if (produce.getType() == 0) {
+                    in = in + Double.valueOf(produce.getNfCholesterol()) + Double.valueOf(produce.getBreedCholesterol())
+                            + Double.valueOf(produce.getSheepAlcohol())
+                            + Double.valueOf(produce.getSheepSour())
+                            + Double.valueOf(produce.getSheepSourBing())
+                            + Double.valueOf(produce.getOther());
+                } else {
+                    out = out + Double.valueOf(produce.getNfCholesterol()) + Double.valueOf(produce.getBreedCholesterol())
+                            + Double.valueOf(produce.getSheepAlcohol())
+                            + Double.valueOf(produce.getSheepSour())
+                            + Double.valueOf(produce.getSheepSourBing())
+                            + Double.valueOf(produce.getOther());
+                }
+                count = count+in + out;
+            }
+            if (count != 0) {
+                in = in / count;
+                out = out / count;
+            } else {
+                in = 0.00;
+                out = 0.00;
+            }
+        }
+        jsonObject.put("in", def.format(in));
+        jsonObject.put("out", def.format(out));
+        return jsonObject;
+    }
+
+    @Override
+    public JSONArray produceIncomeAnalysis(MoneyProduceIncomeParam moneyProduceParam) {
+        String orgId = moneyProduceParam.getOrgId();
+        Integer timeType = moneyProduceParam.getTimeType();
+        QueryWrapper<MoneyProduceIncome> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+
+        queryWrapper.select(" IFNULL(sum(nf_cholesterol),0) nfCholesterol,IFNULL(sum(breed_cholesterol),0) breedCholesterol," +
+                "IFNULL(sum(sheep_alcohol),0) sheepAlcohol,IFNULL(sum(sheep_sour),0) sheepSour," +
+                "IFNULL(sum(sheep_sour_bing),0) sheepSourBing,IFNULL(sum(other),0) other," +
+                "DATE_FORMAT(create_time,'%Y-%m-%d') createTime");
+        if (0 == timeType) {
+            queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')").orderByAsc("create_time");
+        } else {
+            queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')").orderByAsc("create_time");
+        }
+        List<MoneyProduceIncome> list = incomeMapper.selectList(queryWrapper);
+        JSONArray jsonArray = new JSONArray();
+        for (MoneyProduceIncome produce : list) {
+            JSONObject jsonObject = new JSONObject();
+            switch (moneyProduceParam.getPType()) {
+                case 0:
+                    jsonObject.put("value", produce.getNfCholesterol());
+                    jsonObject.put("createTime", produce.getCreateTime());
+                    break;
+                case 1:
+                    jsonObject.put("value", produce.getBreedCholesterol());
+                    jsonObject.put("createTime", produce.getCreateTime());
+                    break;
+                case 2:
+                    jsonObject.put("value", produce.getSheepAlcohol());
+                    jsonObject.put("createTime", produce.getCreateTime());
+                    break;
+                case 3:
+                    jsonObject.put("value", produce.getSheepSour());
+                    jsonObject.put("createTime", produce.getCreateTime());
+                    break;
+                case 4:
+                    jsonObject.put("value", produce.getSheepSourBing());
+                    jsonObject.put("createTime", produce.getCreateTime());
+                    break;
+                case 5:
+                    jsonObject.put("value", produce.getOther());
+                    jsonObject.put("createTime", produce.getCreateTime());
+                    break;
+            }
+            jsonArray.add(jsonObject);
+        }
+        return jsonArray;
+    }
+}

+ 36 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyWarningServiceImpl.java

@@ -0,0 +1,36 @@
+package vip.xiaonuo.money.service.impl;
+
+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.MoneyWarning;
+import vip.xiaonuo.money.mapper.MoneyWarningMapper;
+import vip.xiaonuo.money.param.MoneyOverduePageParam;
+import vip.xiaonuo.money.service.IMoneyWarningService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 财务预警 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-11-22
+ */
+@Service
+public class MoneyWarningServiceImpl extends ServiceImpl<MoneyWarningMapper, MoneyWarning> implements IMoneyWarningService {
+
+    @Autowired
+    private MoneyWarningMapper warningMapper;
+
+    @Override
+    public Page<MoneyWarning> page(MoneyOverduePageParam pageParam) {
+        QueryWrapper<MoneyWarning> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(pageParam.getOrgId()), "org_id", pageParam.getOrgId());
+        queryWrapper.eq("type", pageParam.getType());
+        Page page = new Page<MoneyWarning>(pageParam.getPageNum(), pageParam.getPageSize());
+        return this.page(page, queryWrapper);
+    }
+}

+ 66 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/config/ProductionConfigure.java

@@ -0,0 +1,66 @@
+/*
+ * 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.production.config;
+
+
+import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.Contact;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import vip.xiaonuo.common.pojo.CommonResult;
+
+import javax.annotation.Resource;
+
+/**
+ * SaToken鉴权配置
+ *
+ * @HRor xuyuxiang
+ * @date 2021/10/9 14:24
+ **/
+@Configuration
+public class ProductionConfigure implements WebMvcConfigurer {
+
+    @Resource
+    private OpenApiExtensionResolver openApiExtensionResolver;
+
+    
+
+
+    @Bean(value = "ProductionDocApi")
+    public Docket hrDocApi() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .apiInfo(new ApiInfoBuilder()
+                        .title("生产模块")
+                        .description("生产模块")
+                        .termsOfServiceUrl("https://www.baiduc.com")
+                        .contact(new Contact("SNOWY_TEAM","https://www.baiduc.com", "xuyuxiang29@foxmail.com"))
+                        .version("2.0.0")
+                        .build())
+                .globalResponseMessage(RequestMethod.GET, CommonResult.responseList())
+                .globalResponseMessage(RequestMethod.POST, CommonResult.responseList())
+                .groupName("生产模块")
+                .select()
+                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+                .apis(RequestHandlerSelectors.basePackage("vip.xiaonuo.production"))
+                .paths(PathSelectors.any())
+                .build().extensions(openApiExtensionResolver.buildExtensions("生产模块"));
+    }
+}

+ 46 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProduceLocationController.java

@@ -0,0 +1,46 @@
+package vip.xiaonuo.production.controller;
+
+
+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.production.entity.ProductionYield;
+import vip.xiaonuo.production.param.ProductionYieldParam;
+import vip.xiaonuo.production.service.IProduceLocationService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 生成管控公司与车间对应表 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@RestController
+@RequestMapping("/produce-location")
+@Api(tags = "生成管控公司与车间对应表")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class ProduceLocationController {
+
+    @Autowired
+    private IProduceLocationService locationService;
+
+//    @PostMapping("/produce-location/getList")
+//    @ApiOperationSupport(order = 1)
+//    @ApiOperation("车间列表")
+//    public CommonResult<List<ProductionYield>> getList(@RequestBody ProductionYieldParam yieldParam) {
+////        return CommonResult.data(locationService.getList(yieldParam));
+//    }
+}

+ 46 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionCheckController.java

@@ -0,0 +1,46 @@
+package vip.xiaonuo.production.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.production.entity.ProductionCheck;
+import vip.xiaonuo.production.param.ProductionCheckParam;
+import vip.xiaonuo.production.service.IProductionCheckService;
+import vip.xiaonuo.quality.entity.QualityEffectice;
+import vip.xiaonuo.quality.param.QualityEffectiveParam;
+
+/**
+ * <p>
+ * 生成管控产品检测 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@RestController
+@Api(tags = "生成管控产品检测")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class ProductionCheckController {
+
+    @Autowired
+    private IProductionCheckService checkService;
+
+    @PostMapping("/production-check/getList")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("生成管控产品检测列表")
+    public CommonResult<Page<ProductionCheck>> getList(@RequestBody ProductionCheckParam checkParam) {
+        return CommonResult.data(checkService.getList(checkParam));
+    }
+}

+ 46 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionConsumeController.java

@@ -0,0 +1,46 @@
+package vip.xiaonuo.production.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.production.entity.ProductionCheck;
+import vip.xiaonuo.production.entity.ProductionConsume;
+import vip.xiaonuo.production.param.ProductionCheckParam;
+import vip.xiaonuo.production.param.ProductionConsumeParam;
+import vip.xiaonuo.production.service.IProductionConsumeService;
+
+/**
+ * <p>
+ * 生产管控单耗 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@RestController
+@Api(tags = "生产管控单耗")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class ProductionConsumeController {
+
+    @Autowired
+    private IProductionConsumeService consumeService;
+
+    @PostMapping("/production-consume/getList")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("生产管控单耗列表")
+    public CommonResult<Page<ProductionConsume>> getList(@RequestBody ProductionConsumeParam consumeParam) {
+        return CommonResult.data(consumeService.getList(consumeParam));
+    }
+}

+ 50 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionEnergyController.java

@@ -0,0 +1,50 @@
+package vip.xiaonuo.production.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.production.entity.ProductionConsume;
+import vip.xiaonuo.production.entity.ProductionEnergy;
+import vip.xiaonuo.production.param.ProductionConsumeParam;
+import vip.xiaonuo.production.param.ProductionEnergyParam;
+import vip.xiaonuo.production.service.IProductionEnergyService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 生成管控能耗分析 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@RestController
+@RequestMapping("/production-energy")
+@Api(tags = "生成管控能耗分析")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class ProductionEnergyController {
+
+    @Autowired
+    private IProductionEnergyService energyService;
+
+
+    @PostMapping("/production-energy/getList")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("生成管控能耗分析列表")
+    public CommonResult<List<ProductionEnergy>> getList(@RequestBody ProductionEnergyParam energyParam) {
+        return CommonResult.data(energyService.getList(energyParam));
+    }
+}

+ 47 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionReceiveController.java

@@ -0,0 +1,47 @@
+package vip.xiaonuo.production.controller;
+
+
+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.production.entity.ProductionEnergy;
+import vip.xiaonuo.production.entity.ProductionReceive;
+import vip.xiaonuo.production.param.ProductionEnergyParam;
+import vip.xiaonuo.production.param.ProductionReceiveParam;
+import vip.xiaonuo.production.service.IProductionReceiveService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 生成管控收率情况 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@RestController
+@Api(tags = "生成管控收率情况")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class ProductionReceiveController {
+
+    @Autowired
+    private IProductionReceiveService receiveService;
+
+    @PostMapping("/production-receive/getList")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("生成管控收率情况列表")
+    public CommonResult<List<ProductionReceive>> getList(@RequestBody ProductionReceiveParam receiveParam) {
+        return CommonResult.data(receiveService.getList(receiveParam));
+    }
+}

+ 49 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionSecondController.java

@@ -0,0 +1,49 @@
+package vip.xiaonuo.production.controller;
+
+
+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.production.entity.ProductionReceive;
+import vip.xiaonuo.production.entity.ProductionSecond;
+import vip.xiaonuo.production.param.ProductionReceiveParam;
+import vip.xiaonuo.production.param.ProductionSecondParam;
+import vip.xiaonuo.production.service.IProductionSecondService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 生产管控二级页面 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@RestController
+@RequestMapping("/production-second")
+@Api(tags = "生产管控二级页面")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class ProductionSecondController {
+
+    @Autowired
+    private IProductionSecondService secondService;
+
+
+    @PostMapping("/production-second/getSecond")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("生产管控二级页面指标")
+    public CommonResult<ProductionSecond> getSecond(@RequestBody ProductionSecondParam secondParam) {
+        return CommonResult.data(secondService.getSecond(secondParam));
+    }
+}

+ 49 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionTargetController.java

@@ -0,0 +1,49 @@
+package vip.xiaonuo.production.controller;
+
+
+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.production.entity.ProductionReceive;
+import vip.xiaonuo.production.entity.ProductionTarget;
+import vip.xiaonuo.production.param.ProductionParam;
+import vip.xiaonuo.production.param.ProductionReceiveParam;
+import vip.xiaonuo.production.service.IProductionTargetService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 生产管控指标 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@RestController
+@RequestMapping("/production-target")
+@Api(tags = "生产管控指标")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class ProductionTargetController {
+
+    @Autowired
+    private IProductionTargetService targetService;
+
+
+    @PostMapping("/production-target/getList")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("生产管控指标卡")
+    public CommonResult<ProductionTarget> getList(@RequestBody ProductionParam productionParam) {
+        return CommonResult.data(targetService.getTarget(productionParam));
+    }
+}

+ 20 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionUnitCostController.java

@@ -0,0 +1,20 @@
+package vip.xiaonuo.production.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 生成管控单位产品加工成本 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@RestController
+@RequestMapping("/production-unit-cost")
+public class ProductionUnitCostController {
+
+}

+ 48 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionWorkstopPlanController.java

@@ -0,0 +1,48 @@
+package vip.xiaonuo.production.controller;
+
+
+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.production.entity.ProductionReceive;
+import vip.xiaonuo.production.entity.vo.ProductionPlanVo;
+import vip.xiaonuo.production.param.ProductionPlanParam;
+import vip.xiaonuo.production.param.ProductionReceiveParam;
+import vip.xiaonuo.production.service.IProductionWorkstopPlanService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 生成管控车间计划 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@RestController
+@RequestMapping("/production-workstop-plan")
+@Api(tags = "生成管控车间计划")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class ProductionWorkstopPlanController {
+
+    @Autowired
+    private IProductionWorkstopPlanService workstopPlanService;
+
+    @PostMapping("/production-workstop-plan/getList")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("生成管控车间计划列表")
+    public CommonResult<List<ProductionPlanVo>> getList(@RequestBody ProductionPlanParam planParam) {
+        return CommonResult.data(workstopPlanService.getList(planParam));
+    }
+}

+ 47 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionYieldController.java

@@ -0,0 +1,47 @@
+package vip.xiaonuo.production.controller;
+
+
+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.production.entity.ProductionReceive;
+import vip.xiaonuo.production.entity.ProductionYield;
+import vip.xiaonuo.production.param.ProductionReceiveParam;
+import vip.xiaonuo.production.param.ProductionYieldParam;
+import vip.xiaonuo.production.service.IProductionYieldService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 生成管控产量情况 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@RestController
+@Api(tags = "生成管控产量情况")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class ProductionYieldController {
+
+    @Autowired
+    private IProductionYieldService yieldService;
+
+    @PostMapping("/production-yield/getList")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("生成管控产量情况列表")
+    public CommonResult<List<ProductionYield>> getList(@RequestBody ProductionYieldParam yieldParam) {
+        return CommonResult.data(yieldService.getList(yieldParam));
+    }
+}

+ 45 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProduceLocation.java

@@ -0,0 +1,45 @@
+package vip.xiaonuo.production.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 生成管控公司与车间对应表
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("produce_location")
+public class ProduceLocation implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 车间名称
+     */
+    @ApiModelProperty(value = "车间名称",position =1 )
+    private String locationName;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position =2 )
+    private String orgId;
+
+
+}

+ 109 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionCheck.java

@@ -0,0 +1,109 @@
+package vip.xiaonuo.production.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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 生成管控产品检测
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("production_check")
+public class ProductionCheck implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 物料产品
+     */
+    @ApiModelProperty(value = "物料产品",position =1 )
+    private String material;
+
+    /**
+     * 产品级别
+     */
+    @ApiModelProperty(value = "产品级别",position =2 )
+    private String produceLevel;
+
+    /**
+     * 批号
+     */
+    @ApiModelProperty(value = "批号",position =3 )
+    private String batchNum;
+
+    /**
+     * 批量
+     */
+    @ApiModelProperty(value = "批量",position =4 )
+    private String batchValue;
+
+    /**
+     * 吸收系数
+     */
+    @ApiModelProperty(value = "吸收系数",position =5 )
+    private String coefficient;
+
+    /**
+     * 含量
+     */
+    @ApiModelProperty(value = "含量",position = 6)
+    private String content;
+
+    /**
+     * 比旋度
+     */
+    @ApiModelProperty(value = "比旋度",position =7 )
+    private String specificRotation;
+
+    /**
+     * 杂质
+     */
+    @ApiModelProperty(value = "杂质",position = 8)
+    private String impurity;
+
+    /**
+     * 结论
+     */
+    @ApiModelProperty(value = "结论",position =9 )
+    private String conclusion;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间",position =10 )
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position = 11)
+    private String orgId;
+
+    /**
+     * 车间名称
+     */
+    @ApiModelProperty(value = "车间名称",position =13 )
+    private String locationName;
+
+
+}

+ 91 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionConsume.java

@@ -0,0 +1,91 @@
+package vip.xiaonuo.production.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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 生产管控单耗
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("production_consume")
+public class ProductionConsume implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 物料产品
+     */
+    @ApiModelProperty(value = "物料产品",position = 1)
+    private String material;
+
+    /**
+     * 数量
+     */
+    @ApiModelProperty(value = "数量",position = 2)
+    private String weight;
+
+    /**
+     * 单耗
+     */
+    @ApiModelProperty(value = "单耗",position = 3)
+    private String consume;
+
+    /**
+     * 单价
+     */
+    @ApiModelProperty(value = "单价",position =4 )
+    private String price;
+
+    /**
+     * 单位收率
+     */
+    @ApiModelProperty(value = "单位收率",position =5 )
+    private String rate;
+
+    /**
+     * 比例
+     */
+    @ApiModelProperty(value = "比例",position =6 )
+    private String rank;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间",position = 7)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position = 8)
+    private String orgId;
+
+    /**
+     * 车间名称
+     */
+    @ApiModelProperty(value = "车间名称",position =9 )
+    private String locationName;
+
+
+}

+ 73 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionEnergy.java

@@ -0,0 +1,73 @@
+package vip.xiaonuo.production.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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 生成管控能耗分析
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("production_energy")
+public class ProductionEnergy implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 用水
+     */
+    @ApiModelProperty(value = "用水",position = 1)
+    private String water;
+
+    /**
+     * 用电
+     */
+    @ApiModelProperty(value = "用电",position = 2)
+    private String electricity;
+
+    /**
+     * 用气
+     */
+    @ApiModelProperty(value = "用气",position =3 )
+    private String gas;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间",position =4 )
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position =5 )
+    private String orgId;
+
+    /**
+     * 车间名称
+     */
+    @ApiModelProperty(value = "车间名称",position =6 )
+    private String locationName;
+
+
+}

+ 73 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionReceive.java

@@ -0,0 +1,73 @@
+package vip.xiaonuo.production.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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 生成管控收率情况
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("production_receive")
+public class ProductionReceive implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 公司名称
+     */
+    @ApiModelProperty(value = "公司名称",position =1 )
+    private String companyName;
+
+    /**
+     * 车间名称
+     */
+    @ApiModelProperty(value = "车间名称",position =2 )
+    private String locationName;
+
+    /**
+     * 产品名称
+     */
+    @ApiModelProperty(value = "产品名称",position =3 )
+    private String produceName;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间",position =4 )
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 收率
+     */
+    @ApiModelProperty(value = "收率",position =5 )
+    private String rate;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position =6 )
+    private String orgId;
+
+
+}

+ 85 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionSecond.java

@@ -0,0 +1,85 @@
+package vip.xiaonuo.production.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 生产管控二级页面
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("production_second")
+public class ProductionSecond implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 当月标准用量
+     */
+    @ApiModelProperty(value = "当月标准用量",position = 1)
+    private String monthStandard;
+
+    /**
+     * 当月实际用量
+     */
+    @ApiModelProperty(value = "当月实际用量",position =2 )
+    private String monthActual;
+
+    /**
+     * 超标用量
+     */
+    @ApiModelProperty(value = "超标用量",position = 3)
+    private String exceed;
+
+    /**
+     * 不合格批次
+     */
+    @ApiModelProperty(value = "不合格批次",position = 4)
+    private String unqualifiedBatch;
+
+    /**
+     * 合格率
+     */
+    @ApiModelProperty(value = "合格率",position =5 )
+    private String qualifiedRate;
+
+    /**
+     * 车间名称
+     */
+    @ApiModelProperty(value = "车间名称",position =6 )
+    private String locationName;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间", position = 7)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position = 8)
+    private String orgId;
+
+
+}

+ 85 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionTarget.java

@@ -0,0 +1,85 @@
+package vip.xiaonuo.production.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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 生产管控指标
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("production_target")
+public class ProductionTarget implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 计划生产量
+     */
+    @ApiModelProperty(value = "计划生产量",position =1 )
+    private String planProduction;
+
+    /**
+     * 计划完成率
+     */
+    @ApiModelProperty(value = "计划完成率",position =2 )
+    private String planCompleteRate;
+
+    /**
+     * 实际产量
+     */
+    @ApiModelProperty(value = "实际产量",position =3 )
+    private String actualProduction;
+
+    /**
+     * 收率
+     */
+    @ApiModelProperty(value = "收率",position = 4)
+    private String receiveRate;
+
+    /**
+     * 生成能耗情况
+     */
+    @ApiModelProperty(value = "生成能耗情况",position =5 )
+    private String productionEnergy;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间", position = 6)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position =7 )
+    private String orgId;
+
+    /**
+     * 车间名称
+     */
+    @ApiModelProperty(value = "车间名称",position =8 )
+    private String locationName;
+
+
+}

+ 74 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionUnitCost.java

@@ -0,0 +1,74 @@
+package vip.xiaonuo.production.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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 生成管控单位产品加工成本
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("production_unit_cost")
+public class ProductionUnitCost implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 产品名称
+     */
+    @ApiModelProperty(value = "产品名称",position = 1)
+    private String produceName;
+
+    /**
+     * 单位成本
+     */
+    @ApiModelProperty(value = "单位成本",position = 2)
+    private String unitCost;
+
+    /**
+     * 均值
+     */
+    @ApiModelProperty(value = "均值",position = 3)
+    private String avgValue;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间", position = 4)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position =5 )
+    private String orgId;
+
+    /**
+     * 车间名称
+     */
+    @ApiModelProperty(value = "车间名称",position = 6)
+    private String locationName;
+
+
+}

+ 91 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionWorkstopPlan.java

@@ -0,0 +1,91 @@
+package vip.xiaonuo.production.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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 生成管控车间计划
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("production_workstop_plan")
+public class ProductionWorkstopPlan implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 车间名称
+     */
+    @ApiModelProperty(value = "车间id", position =7 )
+    private String locationId;
+    /**
+     * 车间名称
+     */
+    @ApiModelProperty(value = "车间名称", position =1 )
+    private String locationName;
+
+    /**
+     * 产品名称
+     */
+    @ApiModelProperty(value = "产品名称", position =2 )
+    private String produceName;
+
+    /**
+     * 计划量
+     */
+    @ApiModelProperty(value = "计划量", position = 3)
+    private String planProduction;
+
+    /**
+     * 实际完成量
+     */
+    @ApiModelProperty(value = "实际完成量", position =4 )
+    private String actualProduction;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间", position = 5)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id", position =6 )
+    private String orgId;
+
+    /**
+     * 单位成本
+     */
+    @ApiModelProperty(value = "单位成本",position = 8)
+    private String unitCost;
+
+    /**
+     * 均值
+     */
+    @ApiModelProperty(value = "均值",position = 9)
+    private String avgValue;
+
+
+}

+ 85 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionYield.java

@@ -0,0 +1,85 @@
+package vip.xiaonuo.production.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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 生成管控产量情况
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("production_yield")
+public class ProductionYield implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 公司名称
+     */
+    @ApiModelProperty(value = "公司名称",position = 1)
+    private String companyName;
+
+    /**
+     * 车间名称
+     */
+    @ApiModelProperty(value = "车间名称",position =2)
+    private String locationName;
+
+    /**
+     * 产品名称
+     */
+    @ApiModelProperty(value = "产品名称",position =3 )
+    private String produceName;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间",position = 4)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 计划产量
+     */
+    @ApiModelProperty(value = "计划产量",position =5 )
+    private String planProduction;
+
+    /**
+     * 实际产量
+     */
+    @ApiModelProperty(value = "实际产量",position = 6)
+    private String actualProduction;
+
+    /**
+     * 完成率
+     */
+    @ApiModelProperty(value = "完成率",position =7 )
+    private String completeRate;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position =8 )
+    private String orgId;
+
+
+}

+ 23 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/entity/vo/ProductionPlanVo.java

@@ -0,0 +1,23 @@
+package vip.xiaonuo.production.entity.vo;
+
+import lombok.Data;
+import vip.xiaonuo.production.entity.ProductionUnitCost;
+import vip.xiaonuo.production.entity.ProductionWorkstopPlan;
+
+import java.util.List;
+
+@Data
+public class ProductionPlanVo {
+
+
+    private String locationName;
+
+    private String produceName;
+
+    private String planProduction;
+
+    private String actualProduction;
+
+    private List<ProductionWorkPlanVo> workPlanVo;
+
+}

+ 17 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/entity/vo/ProductionWorkPlanVo.java

@@ -0,0 +1,17 @@
+package vip.xiaonuo.production.entity.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ProductionWorkPlanVo {
+
+    private String unitCost;
+
+    private String avgValue;
+
+    private Date createTime;
+
+    private String produceName;
+}

+ 16 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/mapper/ProduceLocationMapper.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.production.mapper;
+
+import vip.xiaonuo.production.entity.ProduceLocation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 生成管控公司与车间对应表 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+public interface ProduceLocationMapper extends BaseMapper<ProduceLocation> {
+
+}

+ 16 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/mapper/ProductionCheckMapper.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.production.mapper;
+
+import vip.xiaonuo.production.entity.ProductionCheck;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 生成管控产品检测 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+public interface ProductionCheckMapper extends BaseMapper<ProductionCheck> {
+
+}

+ 16 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/mapper/ProductionConsumeMapper.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.production.mapper;
+
+import vip.xiaonuo.production.entity.ProductionConsume;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 生产管控单耗 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-12
+ */
+public interface ProductionConsumeMapper extends BaseMapper<ProductionConsume> {
+
+}

+ 0 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/mapper/ProductionEnergyMapper.java


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä