Parcourir la source

模块开发2

wwh il y a 4 mois
Parent
commit
e8bdfecb34
83 fichiers modifiés avec 2835 ajouts et 212 suppressions
  1. 1 0
      huimv-farm/src/main/java/vip/xiaonuo/core/config/GlobalConfigure.java
  2. 56 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/entity/HrBaseEmployeeInfo.java
  3. 54 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/param/HrBaseEmployeeInfoAddParam.java
  4. 20 0
      huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyWarningPeopleController.java
  5. 11 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyProduce.java
  6. 6 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyWarning.java
  7. 57 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyWarningPeople.java
  8. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyWarningPeopleMapper.java
  9. 6 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyWarningParam.java
  10. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyWarningPeopleService.java
  11. 57 48
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyBusinessServiceImpl.java
  12. 1 1
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyCostServiceImpl.java
  13. 81 80
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyProduceServiceImpl.java
  14. 20 0
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyWarningPeopleServiceImpl.java
  15. 38 7
      huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProduceLocationController.java
  16. 76 0
      huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionWriteEnergyController.java
  17. 10 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProduceLocation.java
  18. 156 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionWriteEnergy.java
  19. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/production/mapper/ProductionWriteEnergyMapper.java
  20. 42 0
      huimv-farm/src/main/java/vip/xiaonuo/production/param/ProductionLocationEditParam.java
  21. 39 0
      huimv-farm/src/main/java/vip/xiaonuo/production/param/ProductionLocationParam.java
  22. 143 0
      huimv-farm/src/main/java/vip/xiaonuo/production/param/ProductionWriteEnergyAddParam.java
  23. 15 0
      huimv-farm/src/main/java/vip/xiaonuo/production/service/IProduceLocationService.java
  24. 29 0
      huimv-farm/src/main/java/vip/xiaonuo/production/service/IProductionWriteEnergyService.java
  25. 79 0
      huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProduceLocationServiceImpl.java
  26. 84 0
      huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProductionWriteEnergyServiceImpl.java
  27. 2 1
      huimv-farm/src/main/java/vip/xiaonuo/purchase/controller/PurchaseOrderController.java
  28. 1 1
      huimv-farm/src/main/java/vip/xiaonuo/purchase/entity/vo/PurchaseMaterialVo.java
  29. 2 1
      huimv-farm/src/main/java/vip/xiaonuo/purchase/service/IPurchaseOrderService.java
  30. 12 3
      huimv-farm/src/main/java/vip/xiaonuo/purchase/service/impl/PurchaseContractServiceImpl.java
  31. 156 26
      huimv-farm/src/main/java/vip/xiaonuo/purchase/service/impl/PurchaseOrderServiceImpl.java
  32. 10 1
      huimv-farm/src/main/java/vip/xiaonuo/sale/service/impl/SaleCostServiceImpl.java
  33. 10 1
      huimv-farm/src/main/java/vip/xiaonuo/sale/service/impl/SaleCustomerServiceImpl.java
  34. 10 1
      huimv-farm/src/main/java/vip/xiaonuo/sale/service/impl/SaleDeliverServiceImpl.java
  35. 6 1
      huimv-farm/src/main/java/vip/xiaonuo/sale/service/impl/SaleInvoiceServiceImpl.java
  36. 32 11
      huimv-farm/src/main/java/vip/xiaonuo/sale/service/impl/SaleProduceServiceImpl.java
  37. 1 1
      huimv-farm/src/main/java/vip/xiaonuo/sale/service/impl/SaleTargetServiceImpl.java
  38. 43 22
      huimv-farm/src/main/java/vip/xiaonuo/warehouse/service/impl/WarehouseStockServiceImpl.java
  39. 66 0
      huimv-farm/src/main/java/vip/xiaonuo/write/config/WriteConfigure.java
  40. 20 0
      huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteCheckController.java
  41. 45 0
      huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteListController.java
  42. 56 0
      huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteTravelLogController.java
  43. 20 0
      huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteTravelRouteController.java
  44. 71 0
      huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteUnqualifiedController.java
  45. 124 0
      huimv-farm/src/main/java/vip/xiaonuo/write/entity/WriteCheck.java
  46. 61 0
      huimv-farm/src/main/java/vip/xiaonuo/write/entity/WriteList.java
  47. 122 0
      huimv-farm/src/main/java/vip/xiaonuo/write/entity/WriteTravelLog.java
  48. 51 0
      huimv-farm/src/main/java/vip/xiaonuo/write/entity/WriteTravelRoute.java
  49. 89 0
      huimv-farm/src/main/java/vip/xiaonuo/write/entity/WriteUnqualified.java
  50. 15 0
      huimv-farm/src/main/java/vip/xiaonuo/write/entity/vo/WriteTravelPageVo.java
  51. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/write/mapper/WriteCheckMapper.java
  52. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/write/mapper/WriteListMapper.java
  53. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/write/mapper/WriteTravelLogMapper.java
  54. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/write/mapper/WriteTravelRouteMapper.java
  55. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/write/mapper/WriteUnqualifiedMapper.java
  56. 20 0
      huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteListPageParam.java
  57. 15 0
      huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteTravelAddParam.java
  58. 14 0
      huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteTravelPageParam.java
  59. 84 0
      huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteUnqualifiedEditParam.java
  60. 21 0
      huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteUnqualifiedPageParam.java
  61. 14 0
      huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteUnqualifiedParam.java
  62. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/IWriteCheckService.java
  63. 20 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/IWriteListService.java
  64. 29 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/IWriteTravelLogService.java
  65. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/IWriteTravelRouteService.java
  66. 30 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/IWriteUnqualifiedService.java
  67. 20 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/impl/WriteCheckServiceImpl.java
  68. 41 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/impl/WriteListServiceImpl.java
  69. 75 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/impl/WriteTravelLogServiceImpl.java
  70. 20 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/impl/WriteTravelRouteServiceImpl.java
  71. 91 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/impl/WriteUnqualifiedServiceImpl.java
  72. 5 0
      huimv-farm/src/main/resources/mapper/MoneyWarningPeopleMapper.xml
  73. 5 0
      huimv-farm/src/main/resources/mapper/ProductionWriteEnergyMapper.xml
  74. 1 1
      huimv-farm/src/main/resources/mapper/PurchaseOrderMapper.xml
  75. 5 0
      huimv-farm/src/main/resources/mapper/WriteCheckMapper.xml
  76. 5 0
      huimv-farm/src/main/resources/mapper/WriteListMapper.xml
  77. 5 0
      huimv-farm/src/main/resources/mapper/WriteTravelLogMapper.xml
  78. 5 0
      huimv-farm/src/main/resources/mapper/WriteTravelRouteMapper.xml
  79. 5 0
      huimv-farm/src/main/resources/mapper/WriteUnqualifiedMapper.xml
  80. 1 0
      snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/enums/AuthExceptionEnum.java
  81. 35 3
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/controller/SysOrgController.java
  82. 1 1
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java
  83. 2 1
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java

+ 1 - 0
huimv-farm/src/main/java/vip/xiaonuo/core/config/GlobalConfigure.java

@@ -127,6 +127,7 @@ public class GlobalConfigure implements WebMvcConfigurer {
             "/auth/b/doLogin",
             "/auth/b/doLogin",
             "/auth/b/doLoginScreen",
             "/auth/b/doLoginScreen",
             "/auth/b/doLoginByPhone",
             "/auth/b/doLoginByPhone",
+            "/sys/org/listOrgIds",
 
 
             /* 三方登录相关 */
             /* 三方登录相关 */
             "/auth/third/render",
             "/auth/third/render",

+ 56 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/entity/HrBaseEmployeeInfo.java

@@ -15,9 +15,11 @@ package vip.xiaonuo.hr.modular.baseemployeeinfo.entity;
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.annotation.*;
 import com.fhs.core.trans.anno.Trans;
 import com.fhs.core.trans.anno.Trans;
 import com.fhs.core.trans.constant.TransType;
 import com.fhs.core.trans.constant.TransType;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.Setter;
+import org.checkerframework.checker.units.qual.A;
 import vip.xiaonuo.hr.modular.basedepartment.entity.HrBaseDepartment;
 import vip.xiaonuo.hr.modular.basedepartment.entity.HrBaseDepartment;
 
 
 import java.util.Date;
 import java.util.Date;
@@ -160,4 +162,58 @@ public class HrBaseEmployeeInfo {
     /** 工龄 */
     /** 工龄 */
     @ApiModelProperty(value = "工龄", position = 30)
     @ApiModelProperty(value = "工龄", position = 30)
     private Integer seniority;
     private Integer seniority;
+
+    @ApiModelProperty(value = "orgId", position =31)
+    private String orgId;
+
+    @ApiModelProperty(value = "户口性质", position =32)
+    private String hukouNature;
+
+    @ApiModelProperty(value = "招入集团时间",position = 33)
+    private Date joinGroup;
+
+    @ApiModelProperty(value = "合同开始时间",position = 34)
+    private Date contactStartTime;
+
+    @ApiModelProperty(value = "专业",position = 35)
+    private String major;
+
+    @ApiModelProperty(value = "毕业院校",position =36 )
+    private String almaMater;
+
+    @ApiModelProperty(value = "职称",position = 37)
+    private String title;
+
+    @ApiModelProperty(value = "现任岗位或职务",position = 38)
+    private String current;
+
+    @ApiModelProperty(value = "新级别",position = 39)
+    private String newLevel;
+
+    @ApiModelProperty(value = "新薪档",position = 40)
+    private String newSalary;
+
+    @ApiModelProperty(value = "转正日期",position = 41)
+    private Date confirmationTime;
+
+    @ApiModelProperty(value = "定额工资",position = 42)
+    private String quotaWages;
+
+    @ApiModelProperty(value = "紧急联系人姓名", position = 44)
+    private String emergencyContactName;
+
+    @ApiModelProperty(value = "紧急联系人电话", position = 45)
+    private String emergencyContactPhone;
+
+    @ApiModelProperty(value = "工资发放处", position = 46)
+    private String payroll;
+
+    @ApiModelProperty(value = "社保", position = 47)
+    private String socialSecurity;
+
+    @ApiModelProperty(value = "公积金", position = 48)
+    private String providentFund;
+
+    @ApiModelProperty(value = "岗位", position = 49)
+    private String post;
 }
 }

+ 54 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/param/HrBaseEmployeeInfoAddParam.java

@@ -124,4 +124,58 @@ public class HrBaseEmployeeInfoAddParam {
     @ApiModelProperty(value = "工龄", position = 30)
     @ApiModelProperty(value = "工龄", position = 30)
     private Integer seniority;
     private Integer seniority;
 
 
+    @ApiModelProperty(value = "orgId", position =31)
+    private String orgId;
+
+    @ApiModelProperty(value = "户口性质", position =32)
+    private String hukouNature;
+
+    @ApiModelProperty(value = "招入集团时间",position = 33)
+    private Date joinGroup;
+
+    @ApiModelProperty(value = "合同开始时间",position = 34)
+    private Date contractStartTime;
+
+    @ApiModelProperty(value = "专业",position = 35)
+    private String major;
+
+    @ApiModelProperty(value = "毕业院校",position =36 )
+    private String almaMater;
+
+    @ApiModelProperty(value = "职称",position = 37)
+    private String title;
+
+    @ApiModelProperty(value = "现任岗位或职务",position = 38)
+    private String current;
+
+    @ApiModelProperty(value = "新级别",position = 39)
+    private String newLevel;
+
+    @ApiModelProperty(value = "新薪档",position = 40)
+    private String newSalary;
+
+    @ApiModelProperty(value = "转正日期",position = 41)
+    private Date confirmationTime;
+
+    @ApiModelProperty(value = "定额工资",position = 42)
+    private String quotaWages;
+
+    @ApiModelProperty(value = "紧急联系人姓名", position = 44)
+    private String emergencyContactName;
+
+    @ApiModelProperty(value = "紧急联系人电话", position = 45)
+    private String emergencyContactPhone;
+
+    @ApiModelProperty(value = "工资发放处", position = 46)
+    private String payroll;
+
+    @ApiModelProperty(value = "社保", position = 47)
+    private String socialSecurity;
+
+    @ApiModelProperty(value = "公积金", position = 48)
+    private String providentFund;
+
+    @ApiModelProperty(value = "岗位", position = 49)
+    private String post;
+
 }
 }

+ 20 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyWarningPeopleController.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-24
+ */
+@RestController
+@RequestMapping("/money-warning-people")
+public class MoneyWarningPeopleController {
+
+}

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

@@ -94,4 +94,15 @@ public class MoneyProduce implements Serializable {
     private Integer transactionType;
     private Integer transactionType;
 
 
 
 
+    /**
+     * 收入类型 0为国内 1为国外
+     */
+    @ApiModelProperty(value = "国内收入", position = 11)
+    private String inMoney;
+
+    /**
+     * 收入类型 0为国内 1为国外
+     */
+    @ApiModelProperty(value = "国外收入", position = 12)
+    private String outMoney;
 }
 }

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

@@ -81,5 +81,11 @@ public class MoneyWarning implements Serializable {
     @ApiModelProperty(value = "组织id", position = 9)
     @ApiModelProperty(value = "组织id", position = 9)
     private String orgId;
     private String orgId;
 
 
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "模块预警类型0 财务 1采购 2仓库 3风控 4生产 5销售 6质量", position = 10)
+    private String modelWarningType;
+
 
 
 }
 }

+ 57 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyWarningPeople.java

@@ -0,0 +1,57 @@
+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-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("money_warning_people")
+public class MoneyWarningPeople implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 重要预警人
+     */
+    @ApiModelProperty(value = "重要预警人",position =1 )
+    private String important;
+
+    /**
+     * 普通预警
+     */
+    @ApiModelProperty(value = "普通预警",position = 2)
+    private String ordinary;
+
+    /**
+     * 提醒预警人
+     */
+    @ApiModelProperty(value = "提醒预警人",position = 3)
+    private String remind;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position =4 )
+    private String orgId;
+
+
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.money.mapper;
+
+import vip.xiaonuo.money.entity.MoneyWarningPeople;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 预警提醒人 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-24
+ */
+public interface MoneyWarningPeopleMapper extends BaseMapper<MoneyWarningPeople> {
+
+}

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

@@ -32,4 +32,10 @@ public class MoneyWarningParam {
 
 
     @ApiModelProperty(value = "显示时间", required = true)
     @ApiModelProperty(value = "显示时间", required = true)
     private String time;
     private String time;
+
+    @ApiModelProperty(value = "当前页面", required = true)
+    private Integer pageNum;
+
+    @ApiModelProperty(value = "页面大小", required = true)
+    private Integer pageSize;
 }
 }

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.money.service;
+
+import vip.xiaonuo.money.entity.MoneyWarningPeople;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 预警提醒人 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-24
+ */
+public interface IMoneyWarningPeopleService extends IService<MoneyWarningPeople> {
+
+}

+ 57 - 48
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyBusinessServiceImpl.java

@@ -16,6 +16,8 @@ import vip.xiaonuo.money.service.IMoneyBusinessService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.DecimalFormat;
 import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.Date;
@@ -42,13 +44,9 @@ public class MoneyBusinessServiceImpl extends ServiceImpl<MoneyBusinessMapper, M
         String time = moneyBusinessParam.getTime();//2024-10
         String time = moneyBusinessParam.getTime();//2024-10
         QueryWrapper<MoneyBusiness> queryWrapper = new QueryWrapper<>();
         QueryWrapper<MoneyBusiness> queryWrapper = new QueryWrapper<>();
         QueryWrapper<MoneyBusiness> queryWrapper1 = 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);
-        }
+        queryWrapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId);
+        queryWrapper1.eq(StringUtils.isNotBlank(orgId),"org_id", orgId);
+
         JSONArray jsonArray = new JSONArray();
         JSONArray jsonArray = new JSONArray();
         if ("".equals(time) || null == time) {
         if ("".equals(time) || null == time) {
             DateTime dateTime = DateUtil.beginOfMonth(new Date());
             DateTime dateTime = DateUtil.beginOfMonth(new Date());
@@ -60,53 +58,64 @@ public class MoneyBusinessServiceImpl extends ServiceImpl<MoneyBusinessMapper, M
             queryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
             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");
             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();
         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());
-            }
-        }
+        queryWrapper.select(" IFNULL(sum(business_income),'0') business_income," +
+                "IFNULL(sum(business_cost),'0') businessCost," +
+                "IFNULL(sum(profit),'0') profit," +
+                "IFNULL(sum(taxes),'0') taxes," +
+                "IFNULL(sum(balance),'0') balance");
+        queryWrapper1.select(" IFNULL(sum(business_income),'0') business_income," +
+                "IFNULL(sum(business_cost),'0') businessCost," +
+                "IFNULL(sum(profit),'0') profit," +
+                "IFNULL(sum(taxes),'0') taxes," +
+                "IFNULL(sum(balance),'0') balance");
+        MoneyBusiness selectOne = businessMapper.selectOne(queryWrapper);
+        MoneyBusiness selectOne1 = businessMapper.selectOne(queryWrapper1);
+
+
         JSONObject jsonObject = new JSONObject();
         JSONObject jsonObject = new JSONObject();
+        BigDecimal math = new BigDecimal("10000");
+
+        BigDecimal bd = new BigDecimal(selectOne.getBusinessIncome());
+        BigDecimal bd1 = new BigDecimal(selectOne.getBusinessCost());
+        BigDecimal bd2 = new BigDecimal(selectOne.getProfit());
+        BigDecimal bd3 = new BigDecimal(selectOne.getTaxes());
+        BigDecimal bd4 = new BigDecimal(selectOne.getBalance());
+        bd = bd.divide(math, 2, RoundingMode.HALF_UP);
+        bd1 = bd1.divide(math, 2, RoundingMode.HALF_UP);
+        bd2 = bd2.divide(math, 2, RoundingMode.HALF_UP);
+        bd3 = bd3.divide(math, 2, RoundingMode.HALF_UP);
+        bd4 = bd4.divide(math, 2, RoundingMode.HALF_UP);
+
+
+        moneyBusiness.setBusinessIncome(bd.toString());
+        moneyBusiness.setBusinessCost(bd1.toString());
+        moneyBusiness.setProfit(bd2.toString());
+        moneyBusiness.setTaxes(bd3.toString());
+        moneyBusiness.setBalance(bd4.toString());
         jsonObject.put("type", "month");
         jsonObject.put("type", "month");
         jsonObject.put("object", moneyBusiness);
         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();
         JSONObject jsonObject1 = new JSONObject();
         MoneyBusiness moneyBusiness1 = new MoneyBusiness();
         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));
+        BigDecimal bd5 = new BigDecimal(selectOne1.getBusinessIncome());
+        BigDecimal bd6 = new BigDecimal(selectOne1.getBusinessCost());
+        BigDecimal bd7 = new BigDecimal(selectOne1.getProfit());
+        BigDecimal bd8 = new BigDecimal(selectOne1.getTaxes());
+        BigDecimal bd9 = new BigDecimal(selectOne1.getBalance());
+        BigDecimal divide = bd5.divide(math);
+        divide = divide.setScale(2, RoundingMode.HALF_UP);
+//        bd5 = bd5.divide(math, 2, RoundingMode.HALF_UP);
+        bd6 = bd6.divide(math, 2, RoundingMode.HALF_UP);
+        bd7 = bd7.divide(math, 2, RoundingMode.HALF_UP);
+        bd8 = bd8.divide(math, 2, RoundingMode.HALF_UP);
+        bd9 = bd9.divide(math, 2, RoundingMode.HALF_UP);
+
+        moneyBusiness1.setBusinessIncome(divide.toString());
+        moneyBusiness1.setBusinessCost(bd6.toString());
+        moneyBusiness1.setProfit(bd7.toString());
+        moneyBusiness1.setTaxes(bd8.toString());
+        moneyBusiness1.setBalance(bd9.toString());
         jsonObject1.put("type", "year");
         jsonObject1.put("type", "year");
         jsonObject1.put("object", moneyBusiness1);
         jsonObject1.put("object", moneyBusiness1);
         jsonArray.add(jsonObject);
         jsonArray.add(jsonObject);

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

@@ -40,7 +40,7 @@ public class MoneyCostServiceImpl extends ServiceImpl<MoneyCostMapper, MoneyCost
         QueryWrapper<MoneyCost> queryWrapper = new QueryWrapper<>();
         QueryWrapper<MoneyCost> queryWrapper = new QueryWrapper<>();
         queryWrapper.ge("create_time", currentDateString);
         queryWrapper.ge("create_time", currentDateString);
         queryWrapper.eq(StringUtils.isNotBlank(outParam.getOrgId()), "org_id", outParam.getOrgId());
         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," +
+        queryWrapper.select(" IFNULL(sum(manage),'0') manage,IFNULL(sum(sale),'0') sale,IFNULL(sum(finance),'0') finance," +
                 "create_time createTime");
                 "create_time createTime");
         queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
         queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
         queryWrapper.orderByAsc("create_time");
         queryWrapper.orderByAsc("create_time");

+ 81 - 80
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyProduceServiceImpl.java

@@ -20,6 +20,8 @@ import vip.xiaonuo.money.service.IMoneyProduceService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.DecimalFormat;
 import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.Date;
@@ -56,42 +58,37 @@ public class MoneyProduceServiceImpl extends ServiceImpl<MoneyProduceMapper, Mon
             String year = time.substring(0, 4);
             String year = time.substring(0, 4);
             queryWrapper.between("create_time", year + "-01-01 00:00:00", time + "-31 23:59:59");
             queryWrapper.between("create_time", year + "-01-01 00:00:00", time + "-31 23:59:59");
         }
         }
-        List<MoneyProduce> list = produceMapper.selectList(queryWrapper);
+        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");
+        MoneyProduce produce1 = produceMapper.selectOne(queryWrapper);
+
         MoneyProduce produce = new MoneyProduce();
         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));
-            }
-        }
+        BigDecimal math = new BigDecimal("10000");
+        BigDecimal bd = new BigDecimal(produce1.getNfCholesterol());
+        bd = bd.divide(math, 2, RoundingMode.HALF_UP);
+        BigDecimal bd1 = new BigDecimal(produce1.getBreedCholesterol());
+        bd1 = bd1.divide(math, 2, RoundingMode.HALF_UP);
+        BigDecimal bd2 = new BigDecimal(produce1.getSheepAlcohol());
+        bd2 = bd2.divide(math, 2, RoundingMode.HALF_UP);
+        BigDecimal bd3 = new BigDecimal(produce1.getSheepSour());
+        bd3 = bd3.divide(math, 2, RoundingMode.HALF_UP);
+        BigDecimal bd4 = new BigDecimal(produce1.getSheepSourBing());
+        bd4 = bd4.divide(math, 2, RoundingMode.HALF_UP);
+        BigDecimal bd5 = new BigDecimal(produce1.getOther());
+        bd5 = bd5.divide(math, 2, RoundingMode.HALF_UP);
+
+
+        produce.setNfCholesterol(bd.toString());
+        produce.setBreedCholesterol(bd1.toString());
+        produce.setSheepAlcohol(bd2.toString());
+        produce.setSheepSour(bd3.toString());
+        produce.setSheepSourBing(bd4.toString());
+        produce.setOther(bd5.toString());
+
         return produce;
         return produce;
     }
     }
 
 
@@ -115,31 +112,44 @@ public class MoneyProduceServiceImpl extends ServiceImpl<MoneyProduceMapper, Mon
         }
         }
         List<MoneyProduce> list = produceMapper.selectList(queryWrapper);
         List<MoneyProduce> list = produceMapper.selectList(queryWrapper);
         JSONArray jsonArray = new JSONArray();
         JSONArray jsonArray = new JSONArray();
+        BigDecimal math = new BigDecimal("10000");
         for (MoneyProduce produce : list) {
         for (MoneyProduce produce : list) {
             JSONObject jsonObject = new JSONObject();
             JSONObject jsonObject = new JSONObject();
             switch (moneyProduceParam.getPType()) {
             switch (moneyProduceParam.getPType()) {
                 case 0:
                 case 0:
-                    jsonObject.put("value", produce.getNfCholesterol());
+                    BigDecimal bg=new BigDecimal(produce.getNfCholesterol());
+                    bg = bg.divide(math, 2, RoundingMode.HALF_UP);
+                    jsonObject.put("value", bg.toString());
                     jsonObject.put("createTime", produce.getCreateTime());
                     jsonObject.put("createTime", produce.getCreateTime());
                     break;
                     break;
                 case 1:
                 case 1:
-                    jsonObject.put("value", produce.getBreedCholesterol());
+                    BigDecimal bg1=new BigDecimal(produce.getNfCholesterol());
+                    bg1 = bg1.divide(math, 2, RoundingMode.HALF_UP);
+                    jsonObject.put("value", bg1.toString());
                     jsonObject.put("createTime", produce.getCreateTime());
                     jsonObject.put("createTime", produce.getCreateTime());
                     break;
                     break;
                 case 2:
                 case 2:
-                    jsonObject.put("value", produce.getSheepAlcohol());
+                    BigDecimal bg2=new BigDecimal(produce.getNfCholesterol());
+                    bg2 = bg2.divide(math, 2, RoundingMode.HALF_UP);
+                    jsonObject.put("value", bg2.toString());
                     jsonObject.put("createTime", produce.getCreateTime());
                     jsonObject.put("createTime", produce.getCreateTime());
                     break;
                     break;
                 case 3:
                 case 3:
-                    jsonObject.put("value", produce.getSheepSour());
+                    BigDecimal bg3=new BigDecimal(produce.getNfCholesterol());
+                    bg3 = bg3.divide(math, 2, RoundingMode.HALF_UP);
+                    jsonObject.put("value", bg3.toString());
                     jsonObject.put("createTime", produce.getCreateTime());
                     jsonObject.put("createTime", produce.getCreateTime());
                     break;
                     break;
                 case 4:
                 case 4:
-                    jsonObject.put("value", produce.getSheepSourBing());
+                    BigDecimal bg4=new BigDecimal(produce.getNfCholesterol());
+                    bg4 = bg4.divide(math, 2, RoundingMode.HALF_UP);
+                    jsonObject.put("value",bg4.toString());
                     jsonObject.put("createTime", produce.getCreateTime());
                     jsonObject.put("createTime", produce.getCreateTime());
                     break;
                     break;
                 case 5:
                 case 5:
-                    jsonObject.put("value", produce.getOther());
+                    BigDecimal bg5=new BigDecimal(produce.getNfCholesterol());
+                    bg5 = bg5.divide(math, 2, RoundingMode.HALF_UP);
+                    jsonObject.put("value", bg5.toString());
                     jsonObject.put("createTime", produce.getCreateTime());
                     jsonObject.put("createTime", produce.getCreateTime());
                     break;
                     break;
             }
             }
@@ -152,40 +162,18 @@ public class MoneyProduceServiceImpl extends ServiceImpl<MoneyProduceMapper, Mon
     public JSONObject getInOut(MoneyInOutParam inOutParam) {
     public JSONObject getInOut(MoneyInOutParam inOutParam) {
         String orgId = inOutParam.getOrgId();
         String orgId = inOutParam.getOrgId();
         QueryWrapper<MoneyProduce> queryWrapper = new QueryWrapper<>();
         QueryWrapper<MoneyProduce> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).groupBy("type");
-        List<MoneyProduce> produces = produceMapper.selectList(queryWrapper);
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        queryWrapper.select(" IFNULL(sum(in_money),'0') inMoney,IFNULL(sum(out_money),'0') outMoney");
+        MoneyProduce moneyProduce = produceMapper.selectOne(queryWrapper);
+
         JSONObject jsonObject = new JSONObject();
         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));
+        BigDecimal math = new BigDecimal("10000");
+        BigDecimal bg=new BigDecimal(moneyProduce.getInMoney());
+        bg = bg.divide(math, 2, RoundingMode.HALF_UP);
+        BigDecimal bg1=new BigDecimal(moneyProduce.getOutMoney());
+        bg1 = bg1.divide(math, 2, RoundingMode.HALF_UP);
+        jsonObject.put("in", bg.toString());
+        jsonObject.put("out", bg1.toString());
         return jsonObject;
         return jsonObject;
     }
     }
 
 
@@ -207,31 +195,44 @@ public class MoneyProduceServiceImpl extends ServiceImpl<MoneyProduceMapper, Mon
         }
         }
         List<MoneyProduceIncome> list = incomeMapper.selectList(queryWrapper);
         List<MoneyProduceIncome> list = incomeMapper.selectList(queryWrapper);
         JSONArray jsonArray = new JSONArray();
         JSONArray jsonArray = new JSONArray();
+        BigDecimal math = new BigDecimal("10000");
         for (MoneyProduceIncome produce : list) {
         for (MoneyProduceIncome produce : list) {
             JSONObject jsonObject = new JSONObject();
             JSONObject jsonObject = new JSONObject();
             switch (moneyProduceParam.getPType()) {
             switch (moneyProduceParam.getPType()) {
                 case 0:
                 case 0:
-                    jsonObject.put("value", produce.getNfCholesterol());
+                    BigDecimal bd = new BigDecimal(produce.getNfCholesterol());
+                    bd = bd.divide(math, 2, RoundingMode.HALF_UP);
+                    jsonObject.put("value", bd.toString());
                     jsonObject.put("createTime", produce.getCreateTime());
                     jsonObject.put("createTime", produce.getCreateTime());
                     break;
                     break;
                 case 1:
                 case 1:
-                    jsonObject.put("value", produce.getBreedCholesterol());
+                    BigDecimal bd1 = new BigDecimal(produce.getBreedCholesterol());
+                    bd1 = bd1.divide(math, 2, RoundingMode.HALF_UP);
+                    jsonObject.put("value", bd1.toString());
                     jsonObject.put("createTime", produce.getCreateTime());
                     jsonObject.put("createTime", produce.getCreateTime());
                     break;
                     break;
                 case 2:
                 case 2:
-                    jsonObject.put("value", produce.getSheepAlcohol());
+                    BigDecimal bd2 = new BigDecimal(produce.getSheepAlcohol());
+                    bd2 = bd2.divide(math, 2, RoundingMode.HALF_UP);
+                    jsonObject.put("value", bd2.toString());
                     jsonObject.put("createTime", produce.getCreateTime());
                     jsonObject.put("createTime", produce.getCreateTime());
                     break;
                     break;
                 case 3:
                 case 3:
-                    jsonObject.put("value", produce.getSheepSour());
+                    BigDecimal bd3 = new BigDecimal(produce.getSheepSour());
+                    bd3 = bd3.divide(math, 2, RoundingMode.HALF_UP);
+                    jsonObject.put("value",bd3.toString());
                     jsonObject.put("createTime", produce.getCreateTime());
                     jsonObject.put("createTime", produce.getCreateTime());
                     break;
                     break;
                 case 4:
                 case 4:
-                    jsonObject.put("value", produce.getSheepSourBing());
+                    BigDecimal bd4 = new BigDecimal(produce.getSheepSourBing());
+                    bd4 = bd4.divide(math, 2, RoundingMode.HALF_UP);
+                    jsonObject.put("value", bd4.toString());
                     jsonObject.put("createTime", produce.getCreateTime());
                     jsonObject.put("createTime", produce.getCreateTime());
                     break;
                     break;
                 case 5:
                 case 5:
-                    jsonObject.put("value", produce.getOther());
+                    BigDecimal bd5 = new BigDecimal(produce.getOther());
+                    bd5 = bd5.divide(math, 2, RoundingMode.HALF_UP);
+                    jsonObject.put("value",bd5.toString());
                     jsonObject.put("createTime", produce.getCreateTime());
                     jsonObject.put("createTime", produce.getCreateTime());
                     break;
                     break;
             }
             }

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

@@ -0,0 +1,20 @@
+package vip.xiaonuo.money.service.impl;
+
+import vip.xiaonuo.money.entity.MoneyWarningPeople;
+import vip.xiaonuo.money.mapper.MoneyWarningPeopleMapper;
+import vip.xiaonuo.money.service.IMoneyWarningPeopleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 预警提醒人 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-24
+ */
+@Service
+public class MoneyWarningPeopleServiceImpl extends ServiceImpl<MoneyWarningPeopleMapper, MoneyWarningPeople> implements IMoneyWarningPeopleService {
+
+}

+ 38 - 7
huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProduceLocationController.java

@@ -14,10 +14,13 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.production.entity.ProductionYield;
 import vip.xiaonuo.production.entity.ProductionYield;
+import vip.xiaonuo.production.param.ProductionLocationEditParam;
+import vip.xiaonuo.production.param.ProductionLocationParam;
 import vip.xiaonuo.production.param.ProductionYieldParam;
 import vip.xiaonuo.production.param.ProductionYieldParam;
 import vip.xiaonuo.production.service.IProduceLocationService;
 import vip.xiaonuo.production.service.IProduceLocationService;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -28,7 +31,6 @@ import java.util.List;
  * @since 2024-12-12
  * @since 2024-12-12
  */
  */
 @RestController
 @RestController
-@RequestMapping("/produce-location")
 @Api(tags = "生成管控公司与车间对应表")
 @Api(tags = "生成管控公司与车间对应表")
 @ApiSupport(author = "wang", order = 1)
 @ApiSupport(author = "wang", order = 1)
 @Validated
 @Validated
@@ -37,10 +39,39 @@ public class ProduceLocationController {
     @Autowired
     @Autowired
     private IProduceLocationService locationService;
     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));
-//    }
+    @PostMapping("/produce-location/add")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("车间添加")
+    public CommonResult add(@RequestBody ProductionLocationParam param) {
+        return locationService.add(param);
+    }
+
+    @PostMapping("/produce-location/list")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("车间列表")
+    public CommonResult list(@RequestBody Map<String, String> paramsMap) {
+        return locationService.list(paramsMap);
+    }
+
+    @PostMapping("/produce-location/edit")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("车间修改")
+    public CommonResult edit(@RequestBody ProductionLocationEditParam editParam) {
+        return locationService.edit(editParam);
+    }
+
+    @PostMapping("/produce-location/delete")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("车间删除")
+    public CommonResult delete(@RequestBody Map<String, String> paramsMap) {
+        return locationService.delete(paramsMap);
+    }
+
+    @PostMapping("/produce-location/page")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("车间分页")
+    public CommonResult page(@RequestBody Map<String, String> paramsMap) {
+        return locationService.page(paramsMap);
+    }
+
 }
 }

+ 76 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionWriteEnergyController.java

@@ -0,0 +1,76 @@
+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.ProductionWriteEnergy;
+import vip.xiaonuo.production.param.ProductionLocationEditParam;
+import vip.xiaonuo.production.param.ProductionLocationParam;
+import vip.xiaonuo.production.param.ProductionWriteEnergyAddParam;
+import vip.xiaonuo.production.service.IProductionWriteEnergyService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 车间能耗数据填报 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-07
+ */
+@RestController
+@RequestMapping("/production-write-energy")
+@Api(tags = "车间能耗数据填报")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class ProductionWriteEnergyController {
+
+    @Autowired
+    private IProductionWriteEnergyService energyService;
+
+    @PostMapping("/produce-location/add")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("能耗数据填报添加")
+    public CommonResult add(@RequestBody ProductionWriteEnergyAddParam addParam) {
+        return energyService.add(addParam);
+    }
+
+    @PostMapping("/produce-location/list")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("能耗数据填报列表")
+    public CommonResult list(@RequestBody Map<String,String> paramsMap) {
+        return energyService.list(paramsMap);
+    }
+
+    @PostMapping("/produce-location/edit")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("能耗数据填报修改")
+    public CommonResult edit(@RequestBody ProductionWriteEnergy writeEnergy) {
+        return energyService.edit(writeEnergy);
+    }
+
+    @PostMapping("/produce-location/delete")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("能耗数据填报删除")
+    public CommonResult delete(@RequestBody Map<String, String> paramsMap) {
+        return energyService.delete(paramsMap);
+    }
+
+    @PostMapping("/produce-location/page")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("能耗数据填报列表")
+    public CommonResult page(@RequestBody Map<String,String> paramsMap) {
+        return energyService.page(paramsMap);
+    }
+}

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

@@ -40,6 +40,16 @@ public class ProduceLocation implements Serializable {
      */
      */
     @ApiModelProperty(value = "组织id",position =2 )
     @ApiModelProperty(value = "组织id",position =2 )
     private String orgId;
     private String orgId;
+    /**
+     * 公司名称
+     */
+    @ApiModelProperty(value = "公司名称",position = 3)
+    private String orgName;
 
 
+    /**
+     * 所选能耗列表
+     */
+    @ApiModelProperty(value = "所选能耗列表",position = 4)
+    private String energyId;
 
 
 }
 }

+ 156 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionWriteEnergy.java

@@ -0,0 +1,156 @@
+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 2025-01-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("production_write_energy")
+public class ProductionWriteEnergy implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 车间id
+     */
+    @ApiModelProperty(value = "车间id",position =1 )
+    private Integer locationId;
+
+    /**
+     * 车间名称
+     */
+    @ApiModelProperty(value = "车间名称",position =2 )
+    private String locationName;
+
+    /**
+     * 电量
+     */
+    @ApiModelProperty(value = "电量",position = 3)
+    private String electricity;
+
+    /**
+     * 蒸汽
+     */
+    @ApiModelProperty(value = "蒸汽", position = 4)
+    private String zhengQi;
+
+    /**
+     * 氮气
+     */
+    @ApiModelProperty(value = "氮气",position = 5)
+    private String danQi;
+
+    /**
+     * 压缩空气
+     */
+    @ApiModelProperty(value = "压缩空气",position = 6)
+    private String yaSuo;
+
+    /**
+     * RO水总量
+     */
+    @ApiModelProperty(value = "RO水总量",position = 7)
+    private String roWater;
+
+    /**
+     * 自来水
+     */
+    @ApiModelProperty(value = "自来水",position = 8)
+    private String zlWater;
+
+    /**
+     * 循环水
+     */
+    @ApiModelProperty(value = "循环水",position = 9)
+    private String xhWater;
+
+    /**
+     * 7度水
+     */
+    @ApiModelProperty(value = "7度水",position = 10)
+    private String qdWater;
+
+    /**
+     * 负15度水
+     */
+    @ApiModelProperty(value = "负15度水",position = 11)
+    private String swdWater;
+
+    /**
+     * 负25度水
+     */
+    @ApiModelProperty(value = "负25度水",position = 12)
+    private String eswdWater;
+
+    /**
+     * 产量
+     */
+    @ApiModelProperty(value = "产量",position = 13)
+    private String produce;
+
+    /**
+     * 热水
+     */
+    @ApiModelProperty(value = "热水",position = 14)
+    private String reWater;
+
+    /**
+     * 低温水
+     */
+    @ApiModelProperty(value = "低温水",position = 15)
+    private String diwenWater;
+
+    /**
+     * 负15度乙二醇
+     */
+    @ApiModelProperty(value = "负15度乙二醇",position =16 )
+    private String fuSwdYierchun;
+
+    /**
+     * 负25度乙二醇
+     */
+    @ApiModelProperty(value = "负25度乙二醇",position = 17)
+    private String fuEswdYierchun;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position = 18)
+    private String orgId;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间", position =19)
+    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
+    private Date createTime;
+
+
+    /**
+     * 公司名称
+     */
+    @ApiModelProperty(value = "公司名称",position = 20)
+    private String orgName;
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.production.mapper;
+
+import vip.xiaonuo.production.entity.ProductionWriteEnergy;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 车间能耗数据填报 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-07
+ */
+public interface ProductionWriteEnergyMapper extends BaseMapper<ProductionWriteEnergy> {
+
+}

+ 42 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/param/ProductionLocationEditParam.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.production.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 人员明细Id参数
+ *
+ * @author 余
+ * @date  2024/11/14 15:02
+ **/
+@Getter
+@Setter
+public class ProductionLocationEditParam {
+
+
+    @ApiModelProperty(value = "id", required = true)
+    private Integer id;
+
+    @ApiModelProperty(value = "orgId", required = true)
+    private String orgId;
+
+    @ApiModelProperty(value = "车间名称", required = true)
+    private String locationName;
+
+    @ApiModelProperty(value = "所选能耗列表", required = true)
+    private String energyId;
+
+}

+ 39 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/param/ProductionLocationParam.java

@@ -0,0 +1,39 @@
+/*
+ * 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.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 人员明细Id参数
+ *
+ * @author 余
+ * @date  2024/11/14 15:02
+ **/
+@Getter
+@Setter
+public class ProductionLocationParam {
+
+
+    @ApiModelProperty(value = "orgId", required = true)
+    private String orgId;
+
+    @ApiModelProperty(value = "车间名称", required = true)
+    private String locationName;
+
+    @ApiModelProperty(value = "所选能耗列表", required = true)
+    private String energyId;
+
+}

+ 143 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/param/ProductionWriteEnergyAddParam.java

@@ -0,0 +1,143 @@
+package vip.xiaonuo.production.param;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 车间能耗数据填报
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-07
+ */
+@Data
+public class ProductionWriteEnergyAddParam  {
+
+
+    /**
+     * 车间id
+     */
+    @ApiModelProperty(value = "车间id",position =1 )
+    private Integer locationId;
+
+    /**
+     * 车间名称
+     */
+    @ApiModelProperty(value = "车间名称",position =2 )
+    private String locationName;
+
+    /**
+     * 电量
+     */
+    @ApiModelProperty(value = "电量",position = 3)
+    private String electricity;
+
+    /**
+     * 蒸汽
+     */
+    @ApiModelProperty(value = "蒸汽", position = 4)
+    private String zhengQi;
+
+    /**
+     * 氮气
+     */
+    @ApiModelProperty(value = "氮气",position = 5)
+    private String danQi;
+
+    /**
+     * 压缩空气
+     */
+    @ApiModelProperty(value = "压缩空气",position = 6)
+    private String yaSuo;
+
+    /**
+     * RO水总量
+     */
+    @ApiModelProperty(value = "RO水总量",position = 7)
+    private String roWater;
+
+    /**
+     * 自来水
+     */
+    @ApiModelProperty(value = "自来水",position = 8)
+    private String zlWater;
+
+    /**
+     * 循环水
+     */
+    @ApiModelProperty(value = "循环水",position = 9)
+    private String xhWater;
+
+    /**
+     * 7度水
+     */
+    @ApiModelProperty(value = "7度水",position = 10)
+    private String qdWater;
+
+    /**
+     * 负15度水
+     */
+    @ApiModelProperty(value = "负15度水",position = 11)
+    private String swdWater;
+
+    /**
+     * 负25度水
+     */
+    @ApiModelProperty(value = "负25度水",position = 12)
+    private String eswdWater;
+
+    /**
+     * 产量
+     */
+    @ApiModelProperty(value = "产量",position = 13)
+    private String produce;
+
+    /**
+     * 热水
+     */
+    @ApiModelProperty(value = "热水",position = 14)
+    private String reWater;
+
+    /**
+     * 低温水
+     */
+    @ApiModelProperty(value = "低温水",position = 15)
+    private String diwenWater;
+
+    /**
+     * 负15度乙二醇
+     */
+    @ApiModelProperty(value = "负15度乙二醇",position =16 )
+    private String fuSwdYierchun;
+
+    /**
+     * 负25度乙二醇
+     */
+    @ApiModelProperty(value = "负25度乙二醇",position = 17)
+    private String fuEswdYierchun;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position = 18)
+    private String orgId;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间", position =19)
+    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
+    private Date createTime;
+
+
+}

+ 15 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/service/IProduceLocationService.java

@@ -1,7 +1,12 @@
 package vip.xiaonuo.production.service;
 package vip.xiaonuo.production.service;
 
 
+import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.production.entity.ProduceLocation;
 import vip.xiaonuo.production.entity.ProduceLocation;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.production.param.ProductionLocationEditParam;
+import vip.xiaonuo.production.param.ProductionLocationParam;
+
+import java.util.Map;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -13,4 +18,14 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
  */
 public interface IProduceLocationService extends IService<ProduceLocation> {
 public interface IProduceLocationService extends IService<ProduceLocation> {
 
 
+    CommonResult add(ProductionLocationParam param);
+
+    CommonResult list(Map<String, String> paramsMap);
+
+    CommonResult edit(ProductionLocationEditParam editParam);
+
+    CommonResult delete(Map<String, String> paramsMap);
+
+    CommonResult page(Map<String, String> paramsMap);
+
 }
 }

+ 29 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/service/IProductionWriteEnergyService.java

@@ -0,0 +1,29 @@
+package vip.xiaonuo.production.service;
+
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.production.entity.ProductionWriteEnergy;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.production.param.ProductionWriteEnergyAddParam;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 车间能耗数据填报 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-07
+ */
+public interface IProductionWriteEnergyService extends IService<ProductionWriteEnergy> {
+
+    CommonResult add(ProductionWriteEnergyAddParam addParam);
+
+    CommonResult edit(ProductionWriteEnergy writeEnergy);
+
+    CommonResult delete(Map<String,String> paramsMap);
+
+    CommonResult list(Map<String,String> paramsMap);
+
+    CommonResult page(Map<String,String> paramsMap);
+}

+ 79 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProduceLocationServiceImpl.java

@@ -1,10 +1,21 @@
 package vip.xiaonuo.production.service.impl;
 package vip.xiaonuo.production.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.common.pojo.CommonResult;
 import vip.xiaonuo.production.entity.ProduceLocation;
 import vip.xiaonuo.production.entity.ProduceLocation;
 import vip.xiaonuo.production.mapper.ProduceLocationMapper;
 import vip.xiaonuo.production.mapper.ProduceLocationMapper;
+import vip.xiaonuo.production.param.ProductionLocationEditParam;
+import vip.xiaonuo.production.param.ProductionLocationParam;
 import vip.xiaonuo.production.service.IProduceLocationService;
 import vip.xiaonuo.production.service.IProduceLocationService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import vip.xiaonuo.sys.modular.org.entity.SysOrg;
+import vip.xiaonuo.sys.modular.org.mapper.SysOrgMapper;
+
+import java.util.Map;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -17,4 +28,72 @@ import org.springframework.stereotype.Service;
 @Service
 @Service
 public class ProduceLocationServiceImpl extends ServiceImpl<ProduceLocationMapper, ProduceLocation> implements IProduceLocationService {
 public class ProduceLocationServiceImpl extends ServiceImpl<ProduceLocationMapper, ProduceLocation> implements IProduceLocationService {
 
 
+    @Autowired
+    private ProduceLocationMapper locationMapper;
+    @Autowired
+    private SysOrgMapper orgMapper;
+
+    @Override
+    public CommonResult add(ProductionLocationParam param) {
+        String orgId = param.getOrgId();
+        if ("".equals(orgId) || null == orgId) {
+            return CommonResult.error("未选择车间所属公司");
+        }
+        SysOrg sysOrg = orgMapper.selectById(param.getOrgId());
+        ProduceLocation produceLocation = new ProduceLocation();
+        Long count = locationMapper.selectCount(new QueryWrapper<ProduceLocation>()
+                .eq("org_id", param.getOrgId()).eq("location_name", param.getLocationName()));
+        if (count == null||count==0) {
+            produceLocation.setLocationName(param.getLocationName());
+            produceLocation.setOrgId(param.getOrgId());
+            produceLocation.setOrgName(sysOrg.getName());
+            produceLocation.setEnergyId(param.getEnergyId());
+            locationMapper.insert(produceLocation);
+            return CommonResult.ok();
+        } else {
+            return CommonResult.error("车间名称已存在!");
+        }
+    }
+
+    @Override
+    public CommonResult list(Map<String, String> paramsMap) {
+        String orgId = paramsMap.get("orgId");
+        return CommonResult.data(locationMapper.selectList((new QueryWrapper<ProduceLocation>()
+                .eq(StringUtils.isNotBlank(orgId),"org_id", orgId))));
+    }
+
+    @Override
+    public CommonResult edit(ProductionLocationEditParam editParam) {
+        Integer id = editParam.getId();
+        Long count = locationMapper.selectCount(new QueryWrapper<ProduceLocation>()
+                .eq("org_id", editParam.getOrgId()).eq("location_name", editParam.getLocationName())
+                .ne("id",id));
+        if (count == null||count==0) {
+            ProduceLocation location = locationMapper.selectById(id);
+            location.setLocationName(editParam.getLocationName());
+            location.setEnergyId(editParam.getEnergyId());
+            locationMapper.updateById(location);
+            return CommonResult.ok();
+        } else {
+            return CommonResult.error("车间名称已存在!");
+        }
+    }
+
+    @Override
+    public CommonResult delete(Map<String, String> paramsMap) {
+        locationMapper.deleteById(paramsMap.get("id"));
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult page(Map<String, String> paramsMap) {
+        String orgId = paramsMap.get("orgId");
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        Page<ProduceLocation> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+        QueryWrapper<ProduceLocation> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        return CommonResult.data(locationMapper.selectPage(page,queryWrapper));
+    }
+
 }
 }

+ 84 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProductionWriteEnergyServiceImpl.java

@@ -0,0 +1,84 @@
+package vip.xiaonuo.production.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.production.entity.ProductionWriteEnergy;
+import vip.xiaonuo.production.mapper.ProductionWriteEnergyMapper;
+import vip.xiaonuo.production.param.ProductionWriteEnergyAddParam;
+import vip.xiaonuo.production.service.IProductionWriteEnergyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import vip.xiaonuo.sys.modular.org.entity.SysOrg;
+import vip.xiaonuo.sys.modular.org.mapper.SysOrgMapper;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 车间能耗数据填报 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-07
+ */
+@Service
+public class ProductionWriteEnergyServiceImpl extends ServiceImpl<ProductionWriteEnergyMapper, ProductionWriteEnergy> implements IProductionWriteEnergyService {
+
+    @Autowired
+    private ProductionWriteEnergyMapper energyMapper;
+    @Autowired
+    private SysOrgMapper orgMapper;
+    @Override
+    public CommonResult add(ProductionWriteEnergyAddParam addParam) {
+        String orgId = addParam.getOrgId();
+        if ("".equals(orgId) || null == orgId) {
+            return CommonResult.error("未选择车间所属公司");
+        }
+        SysOrg sysOrg = orgMapper.selectById(addParam.getOrgId());
+        ProductionWriteEnergy energy = new ProductionWriteEnergy();
+        BeanUtil.copyProperties(addParam, energy);
+        energy.setOrgName(sysOrg.getName());
+        energyMapper.insert(energy);
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult edit(ProductionWriteEnergy writeEnergy) {
+        energyMapper.updateById(writeEnergy);
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult delete(Map<String, String> paramsMap) {
+        String id = paramsMap.get("id");
+        energyMapper.deleteById(id);
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult list(Map<String, String> paramsMap) {
+        String orgId = paramsMap.get("orgId");
+        QueryWrapper<ProductionWriteEnergy> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId);
+        return CommonResult.data(energyMapper.selectList( queryWrapper));
+    }
+
+    @Override
+    public CommonResult page(Map<String, String> paramsMap) {
+        String orgId = paramsMap.get("orgId");
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        if ("".equals(pageNum) || null == pageNum) {
+            pageNum = "1";
+            pageSize = "20";
+        }
+        Page<ProductionWriteEnergy> page = new Page(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+        QueryWrapper<ProductionWriteEnergy> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId);
+        return CommonResult.data(energyMapper.selectPage(page, queryWrapper));
+    }
+}

+ 2 - 1
huimv-farm/src/main/java/vip/xiaonuo/purchase/controller/PurchaseOrderController.java

@@ -1,6 +1,7 @@
 package vip.xiaonuo.purchase.controller;
 package vip.xiaonuo.purchase.controller;
 
 
 
 
+import com.alibaba.fastjson.JSONArray;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
@@ -72,7 +73,7 @@ public class PurchaseOrderController {
     @ApiOperationSupport(order = 5)
     @ApiOperationSupport(order = 5)
     @ApiOperation("供应商占比分析")
     @ApiOperation("供应商占比分析")
     @PostMapping("/purchase-order/materialType")
     @PostMapping("/purchase-order/materialType")
-    public CommonResult<List<PurchaseMaterialVo>> materialType(@RequestBody PurchaseParam param) {
+    public CommonResult<JSONArray> materialType(@RequestBody PurchaseParam param) {
         return CommonResult.data(purchaseOrderService.materialType(param));
         return CommonResult.data(purchaseOrderService.materialType(param));
     }
     }
 }
 }

+ 1 - 1
huimv-farm/src/main/java/vip/xiaonuo/purchase/entity/vo/PurchaseMaterialVo.java

@@ -10,5 +10,5 @@ public class PurchaseMaterialVo {
     private String name;
     private String name;
 
 
     @ApiModelProperty(value = "供应商供应数量", position = 2)
     @ApiModelProperty(value = "供应商供应数量", position = 2)
-    private Integer value;
+    private String value;
 }
 }

+ 2 - 1
huimv-farm/src/main/java/vip/xiaonuo/purchase/service/IPurchaseOrderService.java

@@ -1,5 +1,6 @@
 package vip.xiaonuo.purchase.service;
 package vip.xiaonuo.purchase.service;
 
 
+import com.alibaba.fastjson.JSONArray;
 import vip.xiaonuo.purchase.entity.PurchaseOrder;
 import vip.xiaonuo.purchase.entity.PurchaseOrder;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import vip.xiaonuo.purchase.entity.vo.*;
 import vip.xiaonuo.purchase.entity.vo.*;
@@ -31,5 +32,5 @@ public interface IPurchaseOrderService extends IService<PurchaseOrder> {
     List<PurchaseMoneyVo> listMoney(PurchaseParam param);
     List<PurchaseMoneyVo> listMoney(PurchaseParam param);
 
 
     //供应商占比分析
     //供应商占比分析
-    List<PurchaseMaterialVo> materialType(PurchaseParam param);
+    JSONArray materialType(PurchaseParam param);
 }
 }

+ 12 - 3
huimv-farm/src/main/java/vip/xiaonuo/purchase/service/impl/PurchaseContractServiceImpl.java

@@ -15,6 +15,9 @@ import vip.xiaonuo.purchase.service.IPurchaseContractService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.Date;
@@ -39,7 +42,9 @@ public class PurchaseContractServiceImpl extends ServiceImpl<PurchaseContractMap
         String orgId = orderParam.getOrgId();
         String orgId = orderParam.getOrgId();
         QueryWrapper<PurchaseContract> queryWrapper = new QueryWrapper<>();
         QueryWrapper<PurchaseContract> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).orderByAsc("create_time");
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).orderByAsc("create_time");
-        queryWrapper.select(" IFNULL(sum(contract_money),'0') contractMoney,create_time createTime,IFNULL(sum(material_number),'0') materialNumber");
+        queryWrapper.select(" IFNULL(sum(contract_money),'0') contractMoney,create_time createTime,IFNULL(count(*),'0') materialNumber");
+        BigDecimal math = new BigDecimal("10000");
+
         List<PurchaseContractVo> list = new ArrayList<>();
         List<PurchaseContractVo> list = new ArrayList<>();
         if (null == orderParam.getTimeType()||0==orderParam.getTimeType()) {
         if (null == orderParam.getTimeType()||0==orderParam.getTimeType()) {
             if ("".equals(orderParam.getOrderType()) || null == orderParam.getOrderType()) {
             if ("".equals(orderParam.getOrderType()) || null == orderParam.getOrderType()) {
@@ -52,7 +57,9 @@ public class PurchaseContractServiceImpl extends ServiceImpl<PurchaseContractMap
                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
                 for (PurchaseContract contract : contracts) {
                 for (PurchaseContract contract : contracts) {
                     PurchaseContractVo vo = new PurchaseContractVo();
                     PurchaseContractVo vo = new PurchaseContractVo();
-                    vo.setContractMoney(contract.getContractMoney());
+                    BigDecimal bd = new BigDecimal(contract.getContractMoney());
+                    bd = bd.divide(math, 2, RoundingMode.HALF_UP);
+                    vo.setContractMoney(bd.toString());
                     vo.setMaterialNumber(contract.getMaterialNumber());
                     vo.setMaterialNumber(contract.getMaterialNumber());
                     vo.setTime(sdf.format(contract.getCreateTime()));
                     vo.setTime(sdf.format(contract.getCreateTime()));
                     list.add(vo);
                     list.add(vo);
@@ -70,7 +77,9 @@ public class PurchaseContractServiceImpl extends ServiceImpl<PurchaseContractMap
                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
                 for (PurchaseContract contract : contracts) {
                 for (PurchaseContract contract : contracts) {
                     PurchaseContractVo vo = new PurchaseContractVo();
                     PurchaseContractVo vo = new PurchaseContractVo();
-                    vo.setContractMoney(contract.getContractMoney());
+                    BigDecimal bd = new BigDecimal(contract.getContractMoney());
+                    bd = bd.divide(math, 2, RoundingMode.HALF_UP);
+                    vo.setContractMoney(bd.toString());
                     vo.setMaterialNumber(contract.getMaterialNumber());
                     vo.setMaterialNumber(contract.getMaterialNumber());
                     vo.setTime(sdf.format(contract.getCreateTime()));
                     vo.setTime(sdf.format(contract.getCreateTime()));
                     list.add(vo);
                     list.add(vo);

+ 156 - 26
huimv-farm/src/main/java/vip/xiaonuo/purchase/service/impl/PurchaseOrderServiceImpl.java

@@ -3,6 +3,9 @@ package vip.xiaonuo.purchase.service.impl;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONException;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -15,14 +18,13 @@ import vip.xiaonuo.purchase.service.IPurchaseOrderService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.DecimalFormat;
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDate;
 import java.time.temporal.ChronoUnit;
 import java.time.temporal.ChronoUnit;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -48,7 +50,7 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
         if ("".equals(time) || null == time) {
         if ("".equals(time) || null == time) {
             queryWrapper.ge("create_time", dateTime);
             queryWrapper.ge("create_time", dateTime);
         } else {
         } else {
-            queryWrapper.between("create_time", dateTime, time);
+            queryWrapper.between("create_time", time+"-01 00:00:00", time+"-31 23:59:59");
         }
         }
         List<PurchaseOrder> purchaseOrders = purchaseOrderMapper.selectList(queryWrapper);
         List<PurchaseOrder> purchaseOrders = purchaseOrderMapper.selectList(queryWrapper);
         PurchaseOrderVo vo = new PurchaseOrderVo();
         PurchaseOrderVo vo = new PurchaseOrderVo();
@@ -62,29 +64,56 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
         DecimalFormat def = new DecimalFormat("0.00");
         DecimalFormat def = new DecimalFormat("0.00");
         if (purchaseOrders.size() != 0) {
         if (purchaseOrders.size() != 0) {
             for (PurchaseOrder purchaseOrder : purchaseOrders) {
             for (PurchaseOrder purchaseOrder : purchaseOrders) {
-                money = money + Double.valueOf(purchaseOrder.getPurchaseMoney());
-                acceptMoney = acceptMoney + Double.valueOf(purchaseOrder.getMaterialAcceptPrice());
-                acceptNumber = acceptNumber + Double.valueOf(purchaseOrder.getMaterialAcceptNumber());
-                enterNumber = enterNumber + Double.valueOf(purchaseOrder.getEnterNumber());
-                enterMoney = enterMoney + Double.valueOf(purchaseOrder.getEnterPrice());
-                invoiceMoney = invoiceMoney + Double.valueOf(purchaseOrder.getInvoicePrice());
-                invoiceNumber = invoiceNumber + purchaseOrder.getInvoiceNumber();
+                if (purchaseOrder.getPurchaseMoney() != null) {
+                    money = money + Double.valueOf(purchaseOrder.getPurchaseMoney());
+                }
+                if (purchaseOrder.getMaterialAcceptPrice() != null) {
+                    acceptMoney = acceptMoney + Double.valueOf(purchaseOrder.getMaterialAcceptPrice());
+                }
+                if (purchaseOrder.getMaterialAcceptNumber() != null) {
+                    acceptNumber = acceptNumber + Double.valueOf(purchaseOrder.getMaterialAcceptNumber());
+                }
+                if (purchaseOrder.getEnterNumber() != null) {
+                    enterNumber = enterNumber + Double.valueOf(purchaseOrder.getEnterNumber());
+                }
+                if (purchaseOrder.getEnterPrice() != null) {
+                    enterMoney = enterMoney + Double.valueOf(purchaseOrder.getEnterPrice());
+                }
+                if (purchaseOrder.getInvoicePrice() != null) {
+                    invoiceMoney = invoiceMoney + Double.valueOf(purchaseOrder.getInvoicePrice());
+                }
+                if (purchaseOrder.getInvoiceNumber() != null) {
+                    invoiceNumber = invoiceNumber + purchaseOrder.getInvoiceNumber();
+                }
+
             }
             }
-            vo.setMonthRank(purchaseOrders.get(purchaseOrders.size() - 1).getMonthRank());
-            vo.setRank(purchaseOrders.get(purchaseOrders.size() - 1).getRank());
-            vo.setOrderNumber(String.valueOf(purchaseOrders.size()));
+
         } else {
         } else {
             vo.setMonthRank("0");
             vo.setMonthRank("0");
             vo.setRank("0");
             vo.setRank("0");
             vo.setOrderNumber("0");
             vo.setOrderNumber("0");
         }
         }
-        vo.setPurchaseMoney(def.format(money));
-        vo.setMaterialAcceptPrice(def.format(acceptMoney));
+        QueryWrapper<PurchaseOrder> queryWrapper2 = new QueryWrapper<>();
+        queryWrapper2.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).orderByAsc("create_time");
+        if ("".equals(time) || null == time) {
+            queryWrapper2.ge("create_time", dateTime);
+        } else {
+            queryWrapper2.between("create_time", time+"-01 00:00:00", time+"-31 23:59:59");
+        }
+        queryWrapper2.select(" CONVERT(IFNULL(avg(rank),'0'),decimal(10,2)) 'rank',CONVERT(IFNULL(avg(month_rank),'0'),decimal(10,2)) 'monthRank'");
+        PurchaseOrder order = purchaseOrderMapper.selectOne(queryWrapper2);
+
+        vo.setRank(order.getRank());
+        vo.setMonthRank(order.getMonthRank());
+        vo.setOrderNumber(String.valueOf(purchaseOrders.size()));
+
+        vo.setPurchaseMoney(def.format(money/10000));
+        vo.setMaterialAcceptPrice(def.format(acceptMoney/10000));
         vo.setMaterialAcceptNumber(def.format(acceptNumber));
         vo.setMaterialAcceptNumber(def.format(acceptNumber));
         vo.setEnterNumber(def.format(enterNumber));
         vo.setEnterNumber(def.format(enterNumber));
-        vo.setEnterPrice(def.format(enterMoney));
-        vo.setInvoiceNumber(invoiceNumber);
-        vo.setInvoicePrice(def.format(invoiceMoney));
+        vo.setEnterPrice(def.format(enterMoney/10000));
+        vo.setInvoiceNumber(purchaseOrders.size());
+        vo.setInvoicePrice(def.format(invoiceMoney/10000));
 
 
         LocalDate currentDate = LocalDate.now();
         LocalDate currentDate = LocalDate.now();
         int lastYear = currentDate.getYear() - 1;
         int lastYear = currentDate.getYear() - 1;
@@ -94,7 +123,7 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
         queryWrapper1.select(" CONVERT(IFNULL(avg(purchase_money),'0'),decimal(10,2)) 'purchaseMoney'");
         queryWrapper1.select(" CONVERT(IFNULL(avg(purchase_money),'0'),decimal(10,2)) 'purchaseMoney'");
         PurchaseOrder purchaseOrder = purchaseOrderMapper.selectOne(queryWrapper1);
         PurchaseOrder purchaseOrder = purchaseOrderMapper.selectOne(queryWrapper1);
         if (ObjectUtil.isNotEmpty(purchaseOrder)) {
         if (ObjectUtil.isNotEmpty(purchaseOrder)) {
-            vo.setLastAvgPrice(purchaseOrder.getPurchaseMoney());
+            vo.setLastAvgPrice(def.format(Double.valueOf(purchaseOrder.getPurchaseMoney())/10000));
         } else {
         } else {
             vo.setLastAvgPrice("0.00");
             vo.setLastAvgPrice("0.00");
         }
         }
@@ -133,7 +162,7 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
             if ("".equals(orderParam.getOrderType()) || null == orderParam.getOrderType()) {
             if ("".equals(orderParam.getOrderType()) || null == orderParam.getOrderType()) {
                 queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
                 queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
             } else {
             } else {
-                queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')" + "," + orderParam.getOrderType());
+                queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')"/* + "," + orderParam.getOrderType()*/);
             }
             }
             List<PurchaseOrder> orders = purchaseOrderMapper.selectList(queryWrapper);
             List<PurchaseOrder> orders = purchaseOrderMapper.selectList(queryWrapper);
             if (orders.size() != 0) {
             if (orders.size() != 0) {
@@ -189,6 +218,7 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
         List<PurchaseOrder> orders1 = purchaseOrderMapper.selectList(queryWrapper);
         List<PurchaseOrder> orders1 = purchaseOrderMapper.selectList(queryWrapper);
         List<PurchaseMoneyVo> list = new ArrayList<>();
         List<PurchaseMoneyVo> list = new ArrayList<>();
 
 
+        BigDecimal math = new BigDecimal("10000");
         for (int i = 1; i < 13; i++) {
         for (int i = 1; i < 13; i++) {
             PurchaseMoneyVo vo = new PurchaseMoneyVo();
             PurchaseMoneyVo vo = new PurchaseMoneyVo();
             vo.setTime(i + "月");
             vo.setTime(i + "月");
@@ -197,7 +227,9 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
                 cal.setTime(order.getCreateTime());
                 cal.setTime(order.getCreateTime());
                 int month = cal.get(Calendar.MONTH) + 1; // 注意月份是从0开始计数的,所以需要加1
                 int month = cal.get(Calendar.MONTH) + 1; // 注意月份是从0开始计数的,所以需要加1
                 if (i == month) {
                 if (i == month) {
-                    vo.setMoney(order.getPurchaseMoney());
+                    BigDecimal bg = new BigDecimal(order.getPurchaseMoney());
+                    bg = bg.divide(math, 2, RoundingMode.HALF_UP);
+                    vo.setMoney(bg.toString());
                 }
                 }
             }
             }
             for (PurchaseOrder order : orders1) {
             for (PurchaseOrder order : orders1) {
@@ -205,7 +237,9 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
                 cal.setTime(order.getCreateTime());
                 cal.setTime(order.getCreateTime());
                 int month = cal.get(Calendar.MONTH) + 1; // 注意月份是从0开始计数的,所以需要加1
                 int month = cal.get(Calendar.MONTH) + 1; // 注意月份是从0开始计数的,所以需要加1
                 if (i == month) {
                 if (i == month) {
-                    vo.setLastMoney(order.getPurchaseMoney());
+                    BigDecimal bg = new BigDecimal(order.getPurchaseMoney());
+                    bg = bg.divide(math, 2, RoundingMode.HALF_UP);
+                    vo.setLastMoney(bg.toString());
                 }
                 }
             }
             }
             list.add(vo);
             list.add(vo);
@@ -214,7 +248,7 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
     }
     }
 
 
     @Override
     @Override
-    public List<PurchaseMaterialVo> materialType(PurchaseParam param) {
+    public JSONArray materialType(PurchaseParam param) {
         QueryWrapper<PurchaseOrder> queryWrapper = new QueryWrapper<>();
         QueryWrapper<PurchaseOrder> queryWrapper = new QueryWrapper<>();
         String time = param.getTime();
         String time = param.getTime();
         DateTime dateTime = DateUtil.beginOfYear(new Date());
         DateTime dateTime = DateUtil.beginOfYear(new Date());
@@ -224,8 +258,104 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
             queryWrapper.between("create_time", time+"-01 00:00:00", time+"-31 23:59:59");
             queryWrapper.between("create_time", time+"-01 00:00:00", time+"-31 23:59:59");
         }
         }
         queryWrapper.eq(StringUtils.isNotBlank(param.getOrgId()), "org_id", param.getOrgId());
         queryWrapper.eq(StringUtils.isNotBlank(param.getOrgId()), "org_id", param.getOrgId());
+        BigDecimal math = new BigDecimal("10000");
         List<PurchaseMaterialVo> list = purchaseOrderMapper.getSupplier(queryWrapper);
         List<PurchaseMaterialVo> list = purchaseOrderMapper.getSupplier(queryWrapper);
-        return list;
+        for (int i = 0; i < list.size(); i++) {
+            BigDecimal bg = new BigDecimal(list.get(i).getValue());
+//            bg = bg.divide(math, 2, RoundingMode.HALF_UP);
+//            list.get(i).setValue(bg.toString());
+            if (list.get(i).getName() == null) {
+                list.remove(i);
+            }
+        }
+        JSONArray jsonArray = new JSONArray(list);
+        System.out.println("数组的大小"+jsonArray.size());
+        JSONArray array = jsonArraySort(jsonArray, "value", true);
+        return array;
+    }
+
+    /*数组排序*/
+    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
+        if (jsonArr.size() < 6) {
+            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));
+            }
+        } else {
+            for (int i = 0; i < 5; 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 < 5; i++) {
+                sortedJsonArray.add(jsonValues.get(i));
+            }
+        }
+
+        return sortedJsonArray;
     }
     }
 
 
 }
 }

+ 10 - 1
huimv-farm/src/main/java/vip/xiaonuo/sale/service/impl/SaleCostServiceImpl.java

@@ -10,6 +10,8 @@ import vip.xiaonuo.sale.service.ISaleCostService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -38,6 +40,13 @@ public class SaleCostServiceImpl extends ServiceImpl<SaleCostMapper, SaleCost> i
         } else {
         } else {
             queryWrapper.groupBy("sale_cost_name");
             queryWrapper.groupBy("sale_cost_name");
         }
         }
-        return costMapper.selectList(queryWrapper);
+        List<SaleCost> saleCosts = costMapper.selectList(queryWrapper);
+        BigDecimal math = new BigDecimal("10000");
+        for (SaleCost saleCost : saleCosts) {
+            BigDecimal bg = new BigDecimal(saleCost.getSaleCostMoney());
+            bg = bg.divide(math, 2, RoundingMode.HALF_UP);
+            saleCost.setSaleCostMoney(bg.toString());
+        }
+        return saleCosts;
     }
     }
 }
 }

+ 10 - 1
huimv-farm/src/main/java/vip/xiaonuo/sale/service/impl/SaleCustomerServiceImpl.java

@@ -10,6 +10,8 @@ import vip.xiaonuo.sale.service.ISaleCustomerService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -33,7 +35,14 @@ public class SaleCustomerServiceImpl extends ServiceImpl<SaleCustomerMapper, Sal
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         queryWrapper.select(" customer customer,IFNULL(sum(sale_money),'0') saleMoney,create_time createTime");
         queryWrapper.select(" customer customer,IFNULL(sum(sale_money),'0') saleMoney,create_time createTime");
         queryWrapper.groupBy("customer,DATE_FORMAT(create_time,'%Y-%m')");
         queryWrapper.groupBy("customer,DATE_FORMAT(create_time,'%Y-%m')");
-        return customerMapper.selectList(queryWrapper);
+        List<SaleCustomer> saleCustomers = customerMapper.selectList(queryWrapper);
+        BigDecimal math = new BigDecimal("10000");
+        for (SaleCustomer saleCustomer : saleCustomers) {
+            BigDecimal bg = new BigDecimal(saleCustomer.getSaleMoney());
+            bg = bg.divide(math, 2, RoundingMode.HALF_UP);
+            saleCustomer.setSaleMoney(bg.toString());
+        }
+        return saleCustomers;
     }
     }
 
 
 }
 }

+ 10 - 1
huimv-farm/src/main/java/vip/xiaonuo/sale/service/impl/SaleDeliverServiceImpl.java

@@ -11,6 +11,8 @@ import vip.xiaonuo.sale.service.ISaleDeliverService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -40,6 +42,13 @@ public class SaleDeliverServiceImpl extends ServiceImpl<SaleDeliverMapper, SaleD
             queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
             queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
         }
         }
         queryWrapper.orderByAsc("create_time");
         queryWrapper.orderByAsc("create_time");
-        return deliverMapper.selectList(queryWrapper);
+        List<SaleDeliver> saleDelivers = deliverMapper.selectList(queryWrapper);
+        BigDecimal math = new BigDecimal("10000");
+        for (SaleDeliver saleDeliver : saleDelivers) {
+            BigDecimal bg = new BigDecimal(saleDeliver.getSaleDeliverMoney());
+            bg = bg.divide(math, 2, RoundingMode.HALF_UP);
+            saleDeliver.setSaleDeliverMoney(bg.toString());
+        }
+        return saleDelivers;
     }
     }
 }
 }

+ 6 - 1
huimv-farm/src/main/java/vip/xiaonuo/sale/service/impl/SaleInvoiceServiceImpl.java

@@ -12,6 +12,8 @@ import vip.xiaonuo.sale.service.ISaleInvoiceService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 
 
@@ -44,11 +46,14 @@ public class SaleInvoiceServiceImpl extends ServiceImpl<SaleInvoiceMapper, SaleI
         queryWrapper.orderByAsc("create_time");
         queryWrapper.orderByAsc("create_time");
         List<SaleInvoiceVo> list = new ArrayList<>();
         List<SaleInvoiceVo> list = new ArrayList<>();
         List<SaleInvoice> saleInvoices = invoiceMapper.selectList(queryWrapper);
         List<SaleInvoice> saleInvoices = invoiceMapper.selectList(queryWrapper);
+        BigDecimal math = new BigDecimal("10000");
         if (saleInvoices.size() != 0) {
         if (saleInvoices.size() != 0) {
             for (SaleInvoice saleInvoice : saleInvoices) {
             for (SaleInvoice saleInvoice : saleInvoices) {
                 SaleInvoiceVo vo = new SaleInvoiceVo();
                 SaleInvoiceVo vo = new SaleInvoiceVo();
+                BigDecimal bg = new BigDecimal(saleInvoice.getSaleInvoiceMoney());
+                bg = bg.divide(math, 2, RoundingMode.HALF_UP);
                 vo.setCreateTime(saleInvoice.getCreateTime());
                 vo.setCreateTime(saleInvoice.getCreateTime());
-                vo.setSaleInvoiceMoney(saleInvoice.getSaleInvoiceMoney());
+                vo.setSaleInvoiceMoney(bg.toString());
                 vo.setSaleInvoiceNumber(saleInvoice.getSaleInvoiceOrder());
                 vo.setSaleInvoiceNumber(saleInvoice.getSaleInvoiceOrder());
                 list.add(vo);
                 list.add(vo);
             }
             }

+ 32 - 11
huimv-farm/src/main/java/vip/xiaonuo/sale/service/impl/SaleProduceServiceImpl.java

@@ -13,6 +13,7 @@ import vip.xiaonuo.sale.service.ISaleProduceService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDate;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
@@ -63,7 +64,7 @@ public class SaleProduceServiceImpl extends ServiceImpl<SaleProduceMapper, SaleP
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         queryWrapper.eq(StringUtils.isNotBlank(produceName), "produce_name", produceName);
         queryWrapper.eq(StringUtils.isNotBlank(produceName), "produce_name", produceName);
         queryWrapper.ge("create_time", DateUtil.beginOfYear(new Date()));
         queryWrapper.ge("create_time", DateUtil.beginOfYear(new Date()));
-        queryWrapper.select(" IFNULL(sum(sale_money),'0') saleMoney,create_time createTime");
+        queryWrapper.select(" sum(sale_money) saleMoney,create_time createTime");
         queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
         queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
         List<SaleProduce> yearList = produceMapper.selectList(queryWrapper);
         List<SaleProduce> yearList = produceMapper.selectList(queryWrapper);
 
 
@@ -73,18 +74,38 @@ public class SaleProduceServiceImpl extends ServiceImpl<SaleProduceMapper, SaleP
         queryWrapper1.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         queryWrapper1.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         queryWrapper1.eq(StringUtils.isNotBlank(produceName), "produce_name", produceName);
         queryWrapper1.eq(StringUtils.isNotBlank(produceName), "produce_name", produceName);
         queryWrapper1.between("create_time", lastYear + "-01-01 00:00:00", lastYear + "-12-31 23:59:59");
         queryWrapper1.between("create_time", lastYear + "-01-01 00:00:00", lastYear + "-12-31 23:59:59");
-        queryWrapper1.select(" IFNULL(sum(sale_money),'0') saleMoney,create_time createTime");
+        queryWrapper1.select(" sum(sale_money) saleMoney,create_time createTime");
         queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
         queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
-        SaleProduce lastYearList = produceMapper.selectOne(queryWrapper1);
+        List<SaleProduce> lastYearList = produceMapper.selectList(queryWrapper1);
+        SimpleDateFormat sdf = new SimpleDateFormat("MM");
         JSONArray jsonArray = new JSONArray();
         JSONArray jsonArray = new JSONArray();
-        JSONObject jsonObject = new JSONObject();
-        jsonObject.put("type", "year");
-        jsonObject.put("list", yearList);
-        JSONObject jsonObject1 = new JSONObject();
-        jsonObject1.put("type", "lastYear");
-        jsonObject1.put("list", lastYearList);
-        jsonArray.add(jsonObject);
-        jsonArray.add(jsonObject1);
+        for (int i = 1; i <13 ; i++) {
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("time", i+"月");
+            jsonObject.put("year", "0");
+            jsonObject.put("lastYear", "0");
+            if (yearList.size() != 0) {
+                for (SaleProduce produce : yearList) {
+                    String format = sdf.format(produce.getCreateTime());
+                    if (i == Integer.parseInt(format)) {
+                        jsonObject.put("year", produce.getSaleMoney());
+                    }
+                }
+            } else {
+                jsonObject.put("year", "0");
+            }
+            if (lastYearList.size() != 0) {
+                for (SaleProduce produce : lastYearList) {
+                    String format = sdf.format(produce.getCreateTime());
+                    if (i == Integer.parseInt(format)) {
+                        jsonObject.put("lastYear", produce.getSaleMoney());
+                    }
+                }
+            } else {
+                jsonObject.put("lastYear", "0");
+            }
+            jsonArray.add(jsonObject);
+        }
         return jsonArray;
         return jsonArray;
     }
     }
 }
 }

+ 1 - 1
huimv-farm/src/main/java/vip/xiaonuo/sale/service/impl/SaleTargetServiceImpl.java

@@ -45,7 +45,7 @@ public class SaleTargetServiceImpl extends ServiceImpl<SaleTargetMapper, SaleTar
                 "IFNULL(sum(sale_invoice_money),'0') saleInvoiceMoney");
                 "IFNULL(sum(sale_invoice_money),'0') saleInvoiceMoney");
         if (StringUtils.isNotBlank(time)) {
         if (StringUtils.isNotBlank(time)) {
             queryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
             queryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
-            queryWrapper1.between("create_time", DateUtil.beginOfYear(new Date()), time + "-31 23:59:59");
+            queryWrapper1.between("create_time", time+"-01 00:00:00", time + "-31 23:59:59");
         } else {
         } else {
             queryWrapper.ge("create_time", DateUtil.beginOfMonth(new Date()));
             queryWrapper.ge("create_time", DateUtil.beginOfMonth(new Date()));
             queryWrapper1.ge("create_time", DateUtil.beginOfYear(new Date()));
             queryWrapper1.ge("create_time", DateUtil.beginOfYear(new Date()));

+ 43 - 22
huimv-farm/src/main/java/vip/xiaonuo/warehouse/service/impl/WarehouseStockServiceImpl.java

@@ -45,11 +45,12 @@ public class WarehouseStockServiceImpl extends ServiceImpl<WarehouseStockMapper,
     @Override
     @Override
     public WarehouseStockVo getOneTail(WarehouseStockParam stockParam) {
     public WarehouseStockVo getOneTail(WarehouseStockParam stockParam) {
         String orgId = stockParam.getOrgId();
         String orgId = stockParam.getOrgId();
+        DateTime day = DateUtil.beginOfDay(new Date());
         QueryWrapper<WarehouseStock> queryWrapper = new QueryWrapper<>();
         QueryWrapper<WarehouseStock> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        queryWrapper.orderByDesc("create_time").last(" limit 1");
+        queryWrapper.ge("create_time", day);
         WarehouseStock warehouseStock = stockMapper.selectOne(queryWrapper);
         WarehouseStock warehouseStock = stockMapper.selectOne(queryWrapper);
-        DateTime day = DateUtil.beginOfDay(new Date());
+
         QueryWrapper<WarehouseIncomStock> incomQueryWrapper = new QueryWrapper<>();
         QueryWrapper<WarehouseIncomStock> incomQueryWrapper = new QueryWrapper<>();
         incomQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         incomQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         incomQueryWrapper.ge("create_time", day);
         incomQueryWrapper.ge("create_time", day);
@@ -62,7 +63,7 @@ public class WarehouseStockServiceImpl extends ServiceImpl<WarehouseStockMapper,
         if (ObjectUtil.isNotEmpty(warehouseStock)) {
         if (ObjectUtil.isNotEmpty(warehouseStock)) {
             vo.setLanolin(warehouseStock.getLanolin());
             vo.setLanolin(warehouseStock.getLanolin());
             vo.setFishOil(warehouseStock.getFishOil());
             vo.setFishOil(warehouseStock.getFishOil());
-        }else {
+        } else {
             vo.setFishOil("0");
             vo.setFishOil("0");
             vo.setLanolin("0");
             vo.setLanolin("0");
         }
         }
@@ -74,6 +75,14 @@ public class WarehouseStockServiceImpl extends ServiceImpl<WarehouseStockMapper,
             vo.setPackageMaterialIncome(incomeStock.getPackageMaterial());
             vo.setPackageMaterialIncome(incomeStock.getPackageMaterial());
             vo.setLanolinIncome(incomeStock.getLanolin());
             vo.setLanolinIncome(incomeStock.getLanolin());
             vo.setFishOilIncome(incomeStock.getFishOil());
             vo.setFishOilIncome(incomeStock.getFishOil());
+        }else {
+            vo.setMaterialIncome("0");
+            vo.setFinishProduceIncome("0");
+            vo.setHalfProduceIncome("0");
+            vo.setLowValueIncome("0");
+            vo.setPackageMaterialIncome("0");
+            vo.setLanolinIncome("0");
+            vo.setFishOilIncome("0");
         }
         }
         if (ObjectUtil.isNotEmpty(outStock)) {
         if (ObjectUtil.isNotEmpty(outStock)) {
             vo.setMaterialOut(outStock.getMaterial());
             vo.setMaterialOut(outStock.getMaterial());
@@ -83,26 +92,29 @@ public class WarehouseStockServiceImpl extends ServiceImpl<WarehouseStockMapper,
             vo.setPackageMaterialOut(outStock.getPackageMaterial());
             vo.setPackageMaterialOut(outStock.getPackageMaterial());
             vo.setLanolinOut(outStock.getLanolin());
             vo.setLanolinOut(outStock.getLanolin());
             vo.setFishOilOut(outStock.getFishOil());
             vo.setFishOilOut(outStock.getFishOil());
+        }else {
+            vo.setMaterialOut("0");
+            vo.setFinishProduceOut("0");
+            vo.setHalfProduceOut("0");
+            vo.setLowValueOut("0");
+            vo.setPackageMaterialOut("0");
+            vo.setLanolinOut("0");
+            vo.setFishOilOut("0");
         }
         }
         DateTime month = DateUtil.beginOfMonth(new Date());
         DateTime month = DateUtil.beginOfMonth(new Date());
         incomQueryWrapper.clear();
         incomQueryWrapper.clear();
         incomQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         incomQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         incomQueryWrapper.groupBy("lanolin_supplier");
         incomQueryWrapper.groupBy("lanolin_supplier");
-        Long count = incomStockMapper.selectCount(incomQueryWrapper);
+        List<WarehouseIncomStock> incomStocks = incomStockMapper.selectList(incomQueryWrapper);
+
         incomQueryWrapper.clear();
         incomQueryWrapper.clear();
         incomQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         incomQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         incomQueryWrapper.groupBy("fish_oil_supplier");
         incomQueryWrapper.groupBy("fish_oil_supplier");
-        Long count1 = incomStockMapper.selectCount(incomQueryWrapper);
-        if (null==count) {
-            vo.setLanolinSupplier(0);
-        } else {
-            vo.setLanolinSupplier(Integer.parseInt(String.valueOf(count)));
-        }
-        if (null==count1) {
-            vo.setLanolinSupplier(0);
-        } else {
-            vo.setFishOilSupplier(Integer.parseInt(String.valueOf(count1)));
-        }
+        List<WarehouseIncomStock> incomStocks1 = incomStockMapper.selectList(incomQueryWrapper);
+
+        vo.setLanolinSupplier(incomStocks.size());
+
+        vo.setFishOilSupplier(incomStocks1.size());
 
 
 
 
         incomQueryWrapper.clear();
         incomQueryWrapper.clear();
@@ -118,10 +130,16 @@ public class WarehouseStockServiceImpl extends ServiceImpl<WarehouseStockMapper,
         if (ObjectUtil.isNotEmpty(stock)) {
         if (ObjectUtil.isNotEmpty(stock)) {
             vo.setLanolinIncomeMonth(stock.getLanolin());
             vo.setLanolinIncomeMonth(stock.getLanolin());
             vo.setFishOilIncomeMonth(stock.getFishOil());
             vo.setFishOilIncomeMonth(stock.getFishOil());
+        }else {
+            vo.setLanolinIncomeMonth("0");
+            vo.setFishOilIncomeMonth("0");
         }
         }
         if (ObjectUtil.isNotEmpty(outStock1)) {
         if (ObjectUtil.isNotEmpty(outStock1)) {
             vo.setLanolinOutMonth(outStock1.getLanolin());
             vo.setLanolinOutMonth(outStock1.getLanolin());
             vo.setFishOilOutMonth(outStock1.getFishOil());
             vo.setFishOilOutMonth(outStock1.getFishOil());
+        }else {
+            vo.setLanolinOutMonth("0");
+            vo.setFishOilOutMonth("0");
         }
         }
         return vo;
         return vo;
     }
     }
@@ -131,8 +149,9 @@ public class WarehouseStockServiceImpl extends ServiceImpl<WarehouseStockMapper,
         String orgId = stockParam.getOrgId();
         String orgId = stockParam.getOrgId();
         QueryWrapper<WarehouseStock> queryWrapper = new QueryWrapper<>();
         QueryWrapper<WarehouseStock> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        queryWrapper.select(" IFNULL(sum(material),'0') material,IFNULL(sum(finish_produce),'0') finishProduce" +
-                ",IFNULL(sum(half_produce),'0') halfProduce,IFNULL(sum(low_value),'0') lowValue,IFNULL(sum(package_material),'0') packageMaterial,create_time createTime");
+        queryWrapper.select(" CONVERT(IFNULL(sum(material),'0'),decimal(10,2)) material,CONVERT(IFNULL(sum(finish_produce),'0'),decimal(10,2)) finishProduce" +
+                ",CONVERT(IFNULL(sum(half_produce),'0'),decimal(10,2)) halfProduce,CONVERT(IFNULL(sum(low_value),'0'),decimal(10,2)) lowValue" +
+                ",CONVERT(IFNULL(sum(package_material),'0'),decimal(10,2)) packageMaterial,create_time createTime");
         queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
         queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
         queryWrapper.orderByAsc("create_time");
         queryWrapper.orderByAsc("create_time");
         return stockMapper.selectList(queryWrapper);
         return stockMapper.selectList(queryWrapper);
@@ -143,8 +162,9 @@ public class WarehouseStockServiceImpl extends ServiceImpl<WarehouseStockMapper,
         String orgId = stockParam.getOrgId();
         String orgId = stockParam.getOrgId();
         QueryWrapper<WarehouseOutStock> queryWrapper = new QueryWrapper<>();
         QueryWrapper<WarehouseOutStock> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        queryWrapper.select(" IFNULL(sum(material),'0') material,IFNULL(sum(finish_produce),'0') finishProduce" +
-                ",IFNULL(sum(half_produce),'0') halfProduce,IFNULL(sum(low_value),'0') lowValue,IFNULL(sum(package_material),'0') packageMaterial,create_time createTime");
+        queryWrapper.select(" CONVERT(IFNULL(sum(material),'0'),decimal(10,2)) material,CONVERT(IFNULL(sum(finish_produce),'0'),decimal(10,2)) finishProduce" +
+                ",CONVERT(IFNULL(sum(half_produce),'0'),decimal(10,2)) halfProduce,CONVERT(IFNULL(sum(low_value),'0'),decimal(10,2)) lowValue" +
+                ",CONVERT(IFNULL(sum(package_material),'0'),decimal(10,2)) packageMaterial,create_time createTime");
         queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
         queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
         queryWrapper.orderByAsc("create_time");
         queryWrapper.orderByAsc("create_time");
         return outStockMapper.selectList(queryWrapper);
         return outStockMapper.selectList(queryWrapper);
@@ -155,14 +175,14 @@ public class WarehouseStockServiceImpl extends ServiceImpl<WarehouseStockMapper,
         String orgId = param.getOrgId();
         String orgId = param.getOrgId();
         Integer materialName = param.getMaterialType();
         Integer materialName = param.getMaterialType();
         QueryWrapper<WarehouseStockSecond> queryWrapper = new QueryWrapper<>();
         QueryWrapper<WarehouseStockSecond> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq(StringUtils.isNotBlank(orgId),"org_id",orgId);
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         queryWrapper.eq("material_type", materialName);
         queryWrapper.eq("material_type", materialName);
         DateTime month = DateUtil.beginOfMonth(new Date());
         DateTime month = DateUtil.beginOfMonth(new Date());
         queryWrapper.ge("create_time", month);
         queryWrapper.ge("create_time", month);
-        queryWrapper.select(" IFNULL(sum(income_money),'0') incomeMoney,stock stock,IFNULL(sum(income_number),'0') incomeNumber");
+        queryWrapper.select(" IFNULL(sum(income_money),'0') incomeMoney,IFNULL(stock,'0') stock,IFNULL(sum(income_number),'0') incomeNumber");
         WarehouseStockSecond stockSecond = secondMapper.selectOne(queryWrapper);
         WarehouseStockSecond stockSecond = secondMapper.selectOne(queryWrapper);
         queryWrapper.clear();
         queryWrapper.clear();
-        queryWrapper.eq(StringUtils.isNotBlank(orgId),"org_id",orgId);
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         queryWrapper.eq("material_type", materialName);
         queryWrapper.eq("material_type", materialName);
         queryWrapper.select(" IFNULL(sum(income_money),'0') incomeMoney");
         queryWrapper.select(" IFNULL(sum(income_money),'0') incomeMoney");
         WarehouseStockSecond second = secondMapper.selectOne(queryWrapper);
         WarehouseStockSecond second = secondMapper.selectOne(queryWrapper);
@@ -171,6 +191,7 @@ public class WarehouseStockServiceImpl extends ServiceImpl<WarehouseStockMapper,
         vo.setIncomeNumber(stockSecond.getIncomeNumber());
         vo.setIncomeNumber(stockSecond.getIncomeNumber());
         vo.setMoneyCount(second.getIncomeMoney());
         vo.setMoneyCount(second.getIncomeMoney());
         vo.setStock(stockSecond.getStock());
         vo.setStock(stockSecond.getStock());
+
         return vo;
         return vo;
     }
     }
 
 

+ 66 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/config/WriteConfigure.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.write.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 WriteConfigure implements WebMvcConfigurer {
+
+    @Resource
+    private OpenApiExtensionResolver openApiExtensionResolver;
+
+    
+
+
+    @Bean(value = "writeDocApi")
+    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.write"))
+                .paths(PathSelectors.any())
+                .build().extensions(openApiExtensionResolver.buildExtensions("填报模块"));
+    }
+}

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

@@ -0,0 +1,20 @@
+package vip.xiaonuo.write.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 检验记录发放收回台账 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-08
+ */
+@RestController
+@RequestMapping("/write-check")
+public class WriteCheckController {
+
+}

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

@@ -0,0 +1,45 @@
+package vip.xiaonuo.write.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.write.param.WriteListPageParam;
+import vip.xiaonuo.write.param.WriteUnqualifiedParam;
+import vip.xiaonuo.write.service.IWriteListService;
+
+/**
+ * <p>
+ * 检验记录列表 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-07
+ */
+@RestController
+@RequestMapping("/write-list")
+@Api(tags = "检验记录列表")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class WriteListController {
+
+    @Autowired
+    private IWriteListService listService;
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("检验记录列表分页")
+    @PostMapping("/write-list/page")
+    public CommonResult page(@RequestBody WriteListPageParam listPageParam) {
+        listService.page(listPageParam);
+        return CommonResult.ok();
+    }
+}

+ 56 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteTravelLogController.java

@@ -0,0 +1,56 @@
+package vip.xiaonuo.write.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.warehouse.entity.WarehouseAge;
+import vip.xiaonuo.warehouse.param.WarehouseAgeParam;
+import vip.xiaonuo.warehouse.service.IWarehouseAgeService;
+import vip.xiaonuo.write.entity.vo.WriteTravelPageVo;
+import vip.xiaonuo.write.param.WriteTravelAddParam;
+import vip.xiaonuo.write.param.WriteTravelPageParam;
+import vip.xiaonuo.write.service.IWriteTravelLogService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 出差日志 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-25
+ */
+@RestController
+@Api(tags = "出差日志")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class WriteTravelLogController {
+
+    @Autowired
+    private IWriteTravelLogService logService;
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("出差日志添加")
+    @PostMapping("/write-travel-log/add")
+    public CommonResult listAge(@RequestBody WriteTravelAddParam addParam) {
+        return logService.add(addParam);
+    }
+
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("出差日志列表")
+    @PostMapping("/write-travel-log/list")
+    public CommonResult<List<WriteTravelPageVo>> list(@RequestBody WriteTravelPageParam pageParam) {
+        return CommonResult.data(logService.list(pageParam));
+    }
+}

+ 20 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteTravelRouteController.java

@@ -0,0 +1,20 @@
+package vip.xiaonuo.write.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 出差路线 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-25
+ */
+@RestController
+@RequestMapping("/write-travel-route")
+public class WriteTravelRouteController {
+
+}

+ 71 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteUnqualifiedController.java

@@ -0,0 +1,71 @@
+package vip.xiaonuo.write.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.write.entity.vo.WriteTravelPageVo;
+import vip.xiaonuo.write.param.*;
+import vip.xiaonuo.write.service.IWriteUnqualifiedService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 不合格品台账 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-02
+ */
+@RestController
+@Api(tags = "不合格品台账")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class WriteUnqualifiedController {
+
+    @Autowired
+    private IWriteUnqualifiedService unqualifiedService;
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("不合格品台账添加")
+    @PostMapping("/write-unqualified/add")
+    public CommonResult add(@RequestBody WriteUnqualifiedParam param) {
+        unqualifiedService.add(param);
+        return CommonResult.ok();
+    }
+
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("不合格品台账修改")
+    @PostMapping("/write-unqualified/update")
+    public CommonResult update(@RequestBody WriteUnqualifiedEditParam editParam) {
+        unqualifiedService.update(editParam);
+        return CommonResult.ok();
+    }
+
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("不合格品台账分页")
+    @PostMapping("/write-unqualified/page")
+    public CommonResult page(@RequestBody WriteUnqualifiedPageParam pageParam) {
+        return unqualifiedService.page(pageParam);
+    }
+
+
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("不合格品台账删除")
+    @PostMapping("/write-unqualified/delete")
+    public CommonResult delete(@RequestBody Map<String,String> paramsMap) {
+        unqualifiedService.delete(paramsMap);
+        return CommonResult.ok();
+    }
+}

+ 124 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/entity/WriteCheck.java

@@ -0,0 +1,124 @@
+package vip.xiaonuo.write.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 2025-01-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("write_check")
+public class WriteCheck implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 检验原始记录 0为原始记录 1为其他
+     */
+    @ApiModelProperty(value = "检验原始记录 0为原始记录 1为其他",position = 1)
+    private Integer originalRecord;
+
+    /**
+     * 其他内容
+     */
+    @ApiModelProperty(value = "其他内容",position = 2)
+    private String other;
+
+    /**
+     * 记录名称
+     */
+    @ApiModelProperty(value = "记录名称",position = 3)
+    private String recordName;
+
+    /**
+     * 记录编号
+     */
+    @ApiModelProperty(value = "记录编号",position = 4)
+    private String recordCode;
+
+    /**
+     * 样品代码/批号
+     */
+    @ApiModelProperty(value = "样品代码/批号",position = 5)
+    private String batchNum;
+
+    /**
+     * 检验号
+     */
+    @ApiModelProperty(value = "检验号",position = 6)
+    private String inspectionNum;
+
+    /**
+     * 发放人日期
+     */
+    @ApiModelProperty(value = "发放人日期", position = 7)
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date sendDate;
+
+    /**
+     * 接收人日期
+     */
+    @ApiModelProperty(value = "接收人日期",position = 8)
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date receiveDate;
+
+    /**
+     * 收回后去向 0存档 1销毁 2QA 3收发平横
+     */
+    @ApiModelProperty(value = "收回后去向 0存档 1销毁 2QA 3收发平横",position = 9)
+    private Integer withdrawType;
+
+    /**
+     * 收回后数量
+     */
+    @ApiModelProperty(value = "收回后数量",position = 10)
+    private String withdrawNum;
+
+    /**
+     * 收回人日期
+     */
+    @ApiModelProperty(value = "收回人日期",position = 11)
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date withdrawDate;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注",position = 12)
+    private String remark;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position = 13)
+    private String orgId;
+
+    /**
+     * 上级记录id
+     */
+    @ApiModelProperty(value = "上级记录id",position = 14)
+    private Integer listId;
+
+
+}

+ 61 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/entity/WriteList.java

@@ -0,0 +1,61 @@
+package vip.xiaonuo.write.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 2025-01-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("write_list")
+public class WriteList implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 记录类型 0为不合格品台账
+     */
+    @ApiModelProperty(value = "记录类型 0为不合格品台账",position =1 )
+    private Integer type;
+
+    /**
+     * 品名
+     */
+    @ApiModelProperty(value = "品名",position = 2)
+    private String name;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间", position = 3)
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date date;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position = 4)
+    private String orgId;
+
+
+}

+ 122 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/entity/WriteTravelLog.java

@@ -0,0 +1,122 @@
+package vip.xiaonuo.write.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-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("write_travel_log")
+public class WriteTravelLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 编号
+     */
+    @ApiModelProperty(value = "编号",position = 1)
+    private String order;
+
+    /**
+     * 部门名称
+     */
+    @ApiModelProperty(value = "部门名称",position = 2)
+    private String departmentName;
+
+    /**
+     * 出差人
+     */
+    @ApiModelProperty(value = "出差人",position = 3)
+    private String userName;
+
+    /**
+     * 随行人员
+     */
+    @ApiModelProperty(value = "随行人员",position = 4)
+    private String accountName;
+
+    /**
+     * 岗位、职务
+     */
+    @ApiModelProperty(value = "岗位、职务",position = 5)
+    private String entourage;
+
+    /**
+     * 随行人员
+     */
+    @ApiModelProperty(value = "随行人员",position = 6)
+    private String travelDate;
+
+    /**
+     * 报告日期
+     */
+    @ApiModelProperty(value = "报告日期", position = 7)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date reportDate;
+
+    /**
+     * 天数
+     */
+    @ApiModelProperty(value = "天数",position = 8)
+    private String days;
+
+
+    /**
+     * 出差工作描述
+     */
+    @ApiModelProperty(value = "出差工作描述",position =10 )
+    private String describe;
+
+    /**
+     * 出差总结
+     */
+    @ApiModelProperty(value = "出差总结",position = 11)
+    private String summarize;
+
+    /**
+     * 信息备注
+     */
+    @ApiModelProperty(value = "信息备注",position =12 )
+    private String remark;
+
+    /**
+     * 本月次数
+     */
+    @ApiModelProperty(value = "本月次数",position =13 )
+    private String monthTimes;
+
+    /**
+     * 本年度次数
+     */
+    @ApiModelProperty(value = "本年度次数",position = 14)
+    private String yearTimes;
+
+    /**
+     * 组织ID
+     */
+    @ApiModelProperty(value = "组织id",position = 15)
+    private String orgId;
+
+
+}

+ 51 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/entity/WriteTravelRoute.java

@@ -0,0 +1,51 @@
+package vip.xiaonuo.write.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-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("write_travel_route")
+public class WriteTravelRoute implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "出差路线id",position = 6)
+    private Integer logId;
+
+    @ApiModelProperty(value = "时间",position =1 )
+    private String time;
+
+    @ApiModelProperty(value = "地点",position =2 )
+    private String address;
+
+    @ApiModelProperty(value = "同行人员",position =3 )
+    private String accountName;
+
+    @ApiModelProperty(value = "天数",position =4 )
+    private String days;
+
+    @ApiModelProperty(value = "交通",position =5 )
+    private String traffic;
+
+
+}

+ 89 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/entity/WriteUnqualified.java

@@ -0,0 +1,89 @@
+package vip.xiaonuo.write.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 2025-01-02
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("write_unqualified")
+public class WriteUnqualified 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 model;
+
+    /**
+     * 批号(自编批号)
+     */
+    @ApiModelProperty(value = "批号(自编批号)", position =3)
+    private String batchNum;
+
+    /**
+     * 数量/件数
+     */
+    @ApiModelProperty(value = "数量/件数", position =4)
+    private Integer number;
+
+    /**
+     * 不合格原因
+     */
+    @ApiModelProperty(value = "不合格原因", position =5)
+    private String unqualifiedReason;
+
+    /**
+     * 处理意见
+     */
+    @ApiModelProperty(value = "处理意见", position =6)
+    private String dealOpinion;
+
+    /**
+     * 完成情况/时间
+     */
+    @ApiModelProperty(value = "完成情况/时间", position =7)
+    private String complete;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注", position = 8)
+    private String remark;
+
+    @ApiModelProperty(value = "年",position = 9)
+    private String year;
+
+    @ApiModelProperty(value = "组织id",position = 10)
+    private String orgId;
+
+    @ApiModelProperty(value = "上级记录id",position = 11)
+    private Integer listId;
+
+}

+ 15 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/entity/vo/WriteTravelPageVo.java

@@ -0,0 +1,15 @@
+package vip.xiaonuo.write.entity.vo;
+
+import lombok.Data;
+import vip.xiaonuo.write.entity.WriteTravelLog;
+import vip.xiaonuo.write.entity.WriteTravelRoute;
+
+import java.util.List;
+
+@Data
+public class WriteTravelPageVo {
+
+    private WriteTravelLog writeTravelLog;
+
+    private List<WriteTravelRoute> writeTravelRoutes;
+}

+ 16 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/mapper/WriteCheckMapper.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.write.mapper;
+
+import vip.xiaonuo.write.entity.WriteCheck;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 检验记录发放收回台账 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-08
+ */
+public interface WriteCheckMapper extends BaseMapper<WriteCheck> {
+
+}

+ 16 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/mapper/WriteListMapper.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.write.mapper;
+
+import vip.xiaonuo.write.entity.WriteList;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 检验记录列表 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-07
+ */
+public interface WriteListMapper extends BaseMapper<WriteList> {
+
+}

+ 16 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/mapper/WriteTravelLogMapper.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.write.mapper;
+
+import vip.xiaonuo.write.entity.WriteTravelLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 出差日志 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-25
+ */
+public interface WriteTravelLogMapper extends BaseMapper<WriteTravelLog> {
+
+}

+ 16 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/mapper/WriteTravelRouteMapper.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.write.mapper;
+
+import vip.xiaonuo.write.entity.WriteTravelRoute;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 出差路线 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-25
+ */
+public interface WriteTravelRouteMapper extends BaseMapper<WriteTravelRoute> {
+
+}

+ 16 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/mapper/WriteUnqualifiedMapper.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.write.mapper;
+
+import vip.xiaonuo.write.entity.WriteUnqualified;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 不合格品台账 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-02
+ */
+public interface WriteUnqualifiedMapper extends BaseMapper<WriteUnqualified> {
+
+}

+ 20 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteListPageParam.java

@@ -0,0 +1,20 @@
+package vip.xiaonuo.write.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class WriteListPageParam {
+
+    @ApiModelProperty(value = "组织id",position = 1)
+    private String orgId;
+
+    @ApiModelProperty(value = "当前分页",position = 2)
+    private Integer pageNum;
+
+    @ApiModelProperty(value = "分页大小",position = 3)
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "展示类型 0为不合格台账",position = 1)
+    private Integer type;
+}

+ 15 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteTravelAddParam.java

@@ -0,0 +1,15 @@
+package vip.xiaonuo.write.param;
+
+import lombok.Data;
+import vip.xiaonuo.write.entity.WriteTravelLog;
+import vip.xiaonuo.write.entity.WriteTravelRoute;
+
+import java.util.List;
+
+@Data
+public class WriteTravelAddParam {
+
+    private WriteTravelLog travelLog;
+
+    private List<WriteTravelRoute> travelRoutes;
+}

+ 14 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteTravelPageParam.java

@@ -0,0 +1,14 @@
+package vip.xiaonuo.write.param;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
+import lombok.Data;
+
+@Data
+public class WriteTravelPageParam {
+
+    @ApiModelProperty(value = "组织id",position = 1)
+    private String orgId;
+
+}

+ 84 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteUnqualifiedEditParam.java

@@ -0,0 +1,84 @@
+package vip.xiaonuo.write.param;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.sun.istack.NotNull;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 不合格品台账
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-02
+ */
+@Data
+public class WriteUnqualifiedEditParam  {
+
+    @ApiModelProperty(value = "id",required = true,position =1)
+    @NotNull
+    private Integer id;
+
+    /**
+     * 品名
+     */
+    @ApiModelProperty(value = "品名", position =2)
+    private String produceName;
+
+    /**
+     * 规格
+     */
+    @ApiModelProperty(value = "规格", position =3)
+    private String model;
+
+    /**
+     * 批号(自编批号)
+     */
+    @ApiModelProperty(value = "批号(自编批号)", position =4)
+    private String batchNum;
+
+    /**
+     * 数量/件数
+     */
+    @ApiModelProperty(value = "数量/件数", position =5)
+    private Integer number;
+
+    /**
+     * 不合格原因
+     */
+    @ApiModelProperty(value = "不合格原因", position =6)
+    private String unqualifiedReason;
+
+    /**
+     * 处理意见
+     */
+    @ApiModelProperty(value = "处理意见", position =7)
+    private String dealOpinion;
+
+    /**
+     * 完成情况/时间
+     */
+    @ApiModelProperty(value = "完成情况/时间", position =8)
+    private String complete;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注", position = 9)
+    private String remark;
+
+    @ApiModelProperty(value = "年",position = 10)
+    private String year;
+
+    @ApiModelProperty(value = "组织id",position = 11)
+    private String orgId;
+
+
+}

+ 21 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteUnqualifiedPageParam.java

@@ -0,0 +1,21 @@
+package vip.xiaonuo.write.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class WriteUnqualifiedPageParam {
+
+//    @ApiModelProperty(value = "组织id",position = 1)
+//    private String orgId;
+
+    @ApiModelProperty(value = "列表id",position = 2)
+    private Integer listId;
+
+    @ApiModelProperty(value = "当前页码",position = 3)
+    private Integer pageNum;
+
+    @ApiModelProperty(value = "页码大小",position = 4)
+    private Integer pageSize;
+
+}

+ 14 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteUnqualifiedParam.java

@@ -0,0 +1,14 @@
+package vip.xiaonuo.write.param;
+
+import lombok.Data;
+import vip.xiaonuo.write.entity.WriteTravelLog;
+import vip.xiaonuo.write.entity.WriteTravelRoute;
+import vip.xiaonuo.write.entity.WriteUnqualified;
+
+import java.util.List;
+
+@Data
+public class WriteUnqualifiedParam {
+
+    private List<WriteUnqualified> writeUnqualifieds;
+}

+ 16 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/service/IWriteCheckService.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.write.service;
+
+import vip.xiaonuo.write.entity.WriteCheck;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 检验记录发放收回台账 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-08
+ */
+public interface IWriteCheckService extends IService<WriteCheck> {
+
+}

+ 20 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/service/IWriteListService.java

@@ -0,0 +1,20 @@
+package vip.xiaonuo.write.service;
+
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.write.entity.WriteList;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.write.param.WriteListPageParam;
+
+/**
+ * <p>
+ * 检验记录列表 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-07
+ */
+public interface IWriteListService extends IService<WriteList> {
+
+    CommonResult page(WriteListPageParam listPageParam);
+
+}

+ 29 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/service/IWriteTravelLogService.java

@@ -0,0 +1,29 @@
+package vip.xiaonuo.write.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.write.entity.WriteTravelLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.write.entity.vo.WriteTravelPageVo;
+import vip.xiaonuo.write.param.WriteTravelAddParam;
+import vip.xiaonuo.write.param.WriteTravelPageParam;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 出差日志 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-25
+ */
+public interface IWriteTravelLogService extends IService<WriteTravelLog> {
+
+    CommonResult add(WriteTravelAddParam addParam);
+
+
+    List<WriteTravelPageVo> list(WriteTravelPageParam pageParam);
+
+
+}

+ 16 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/service/IWriteTravelRouteService.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.write.service;
+
+import vip.xiaonuo.write.entity.WriteTravelRoute;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 出差路线 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-25
+ */
+public interface IWriteTravelRouteService extends IService<WriteTravelRoute> {
+
+}

+ 30 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/service/IWriteUnqualifiedService.java

@@ -0,0 +1,30 @@
+package vip.xiaonuo.write.service;
+
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.write.entity.WriteUnqualified;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.write.param.WriteUnqualifiedEditParam;
+import vip.xiaonuo.write.param.WriteUnqualifiedPageParam;
+import vip.xiaonuo.write.param.WriteUnqualifiedParam;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 不合格品台账 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-02
+ */
+public interface IWriteUnqualifiedService extends IService<WriteUnqualified> {
+
+    void add(WriteUnqualifiedParam param);
+
+    void update(WriteUnqualifiedEditParam editParam);
+
+    CommonResult page(WriteUnqualifiedPageParam pageParam);
+
+    void delete(Map<String,String> paramsMap);
+}

+ 20 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/service/impl/WriteCheckServiceImpl.java

@@ -0,0 +1,20 @@
+package vip.xiaonuo.write.service.impl;
+
+import vip.xiaonuo.write.entity.WriteCheck;
+import vip.xiaonuo.write.mapper.WriteCheckMapper;
+import vip.xiaonuo.write.service.IWriteCheckService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 检验记录发放收回台账 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-08
+ */
+@Service
+public class WriteCheckServiceImpl extends ServiceImpl<WriteCheckMapper, WriteCheck> implements IWriteCheckService {
+
+}

+ 41 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/service/impl/WriteListServiceImpl.java

@@ -0,0 +1,41 @@
+package vip.xiaonuo.write.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.common.pojo.CommonResult;
+import vip.xiaonuo.write.entity.WriteList;
+import vip.xiaonuo.write.mapper.WriteListMapper;
+import vip.xiaonuo.write.param.WriteListPageParam;
+import vip.xiaonuo.write.service.IWriteListService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 检验记录列表 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-07
+ */
+@Service
+public class WriteListServiceImpl extends ServiceImpl<WriteListMapper, WriteList> implements IWriteListService {
+
+    @Autowired
+    private WriteListMapper listMapper;
+
+    @Override
+    public CommonResult page(WriteListPageParam listPageParam) {
+        Integer type = listPageParam.getType();
+        Page<WriteList> page = new Page<>(listPageParam.getPageNum(), listPageParam.getPageSize());
+        QueryWrapper<WriteList> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(listPageParam.getOrgId()), "org_id", listPageParam.getOrgId())
+                .eq(StringUtils.isNotBlank(String.valueOf(type)), "type", type);
+        if (null != type) {
+            queryWrapper.eq("type", type);
+        }
+        return CommonResult.data(listMapper.selectPage(page, queryWrapper));
+    }
+}

+ 75 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/service/impl/WriteTravelLogServiceImpl.java

@@ -0,0 +1,75 @@
+package vip.xiaonuo.write.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 org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.write.entity.WriteTravelLog;
+import vip.xiaonuo.write.entity.WriteTravelRoute;
+import vip.xiaonuo.write.entity.vo.WriteTravelPageVo;
+import vip.xiaonuo.write.mapper.WriteTravelLogMapper;
+import vip.xiaonuo.write.mapper.WriteTravelRouteMapper;
+import vip.xiaonuo.write.param.WriteTravelAddParam;
+import vip.xiaonuo.write.param.WriteTravelPageParam;
+import vip.xiaonuo.write.service.IWriteTravelLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 出差日志 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-25
+ */
+@Service
+public class WriteTravelLogServiceImpl extends ServiceImpl<WriteTravelLogMapper, WriteTravelLog> implements IWriteTravelLogService {
+
+    @Autowired
+    private WriteTravelLogMapper logMapper;
+    @Autowired
+    private WriteTravelRouteMapper routeMapper;
+
+    @Override
+    @Transactional
+    public CommonResult add(WriteTravelAddParam addParam) {
+        WriteTravelLog travelLog = addParam.getTravelLog();
+        List<WriteTravelRoute> travelRoutes = addParam.getTravelRoutes();
+        Long count = logMapper.selectCount(new QueryWrapper<WriteTravelLog>().eq("order", travelLog.getOrder()));
+        if (null == count || count == 0) {
+            logMapper.insert(travelLog);
+            WriteTravelLog writeTravelLog = logMapper.selectOne(new QueryWrapper<WriteTravelLog>().eq("order", travelLog.getOrder()));
+            for (WriteTravelRoute travelRoute : travelRoutes) {
+                travelRoute.setLogId(writeTravelLog.getId());
+                routeMapper.insert(travelRoute);
+            }
+            return CommonResult.ok();
+        } else {
+            return CommonResult.error("编号已存在!");
+        }
+    }
+
+    @Override
+    public List<WriteTravelPageVo> list(WriteTravelPageParam pageParam) {
+        String orgId = pageParam.getOrgId();
+        QueryWrapper<WriteTravelLog> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        List<WriteTravelLog> writeTravelLogs = logMapper.selectList(queryWrapper);
+        List<WriteTravelPageVo> list = new ArrayList<>();
+        if (writeTravelLogs.size() != 0) {
+            for (WriteTravelLog writeTravelLog : writeTravelLogs) {
+                WriteTravelPageVo vo = new WriteTravelPageVo();
+                vo.setWriteTravelLog(writeTravelLog);
+                List<WriteTravelRoute> routes = routeMapper.selectList(new QueryWrapper<WriteTravelRoute>().eq("log_id", writeTravelLog.getId()));
+                vo.setWriteTravelRoutes(routes);
+                list.add(vo);
+            }
+        }
+        return list;
+    }
+}

+ 20 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/service/impl/WriteTravelRouteServiceImpl.java

@@ -0,0 +1,20 @@
+package vip.xiaonuo.write.service.impl;
+
+import vip.xiaonuo.write.entity.WriteTravelRoute;
+import vip.xiaonuo.write.mapper.WriteTravelRouteMapper;
+import vip.xiaonuo.write.service.IWriteTravelRouteService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 出差路线 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-12-25
+ */
+@Service
+public class WriteTravelRouteServiceImpl extends ServiceImpl<WriteTravelRouteMapper, WriteTravelRoute> implements IWriteTravelRouteService {
+
+}

+ 91 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/service/impl/WriteUnqualifiedServiceImpl.java

@@ -0,0 +1,91 @@
+package vip.xiaonuo.write.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.HrBaseEmployeeInfo;
+import vip.xiaonuo.write.entity.WriteList;
+import vip.xiaonuo.write.entity.WriteUnqualified;
+import vip.xiaonuo.write.mapper.WriteListMapper;
+import vip.xiaonuo.write.mapper.WriteUnqualifiedMapper;
+import vip.xiaonuo.write.param.WriteUnqualifiedEditParam;
+import vip.xiaonuo.write.param.WriteUnqualifiedPageParam;
+import vip.xiaonuo.write.param.WriteUnqualifiedParam;
+import vip.xiaonuo.write.service.IWriteUnqualifiedService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 不合格品台账 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-02
+ */
+@Service
+public class WriteUnqualifiedServiceImpl extends ServiceImpl<WriteUnqualifiedMapper, WriteUnqualified> implements IWriteUnqualifiedService {
+
+    @Autowired
+    private WriteUnqualifiedMapper unqualifiedMapper;
+
+    @Autowired
+    private WriteListMapper listMapper;
+
+    @Override
+    @Transactional
+    public void add(WriteUnqualifiedParam param) {
+        List<WriteUnqualified> unqualifieds = param.getWriteUnqualifieds();
+        WriteList writeList = new WriteList();
+        writeList.setType(0);
+        writeList.setOrgId(param.getWriteUnqualifieds().get(0).getOrgId());
+        writeList.setDate(new Date());
+        String name = "";
+        for (int i = 0; i < unqualifieds.size(); i++) {
+            if (i < unqualifieds.size() - 1) {
+                name = unqualifieds.get(i).getProduceName() + "," + name;
+            } else {
+                name = name + unqualifieds.get(i).getProduceName();
+            }
+        }
+        writeList.setName(name);
+        listMapper.insert(writeList);
+        WriteList writeList1 = listMapper.selectOne(new QueryWrapper<WriteList>().orderByDesc("id").last(" limit 1"));
+        for (WriteUnqualified unqualified : unqualifieds) {
+            unqualified.setListId(writeList1.getId());
+            unqualifiedMapper.insert(unqualified);
+        }
+    }
+
+    @Override
+    @Transactional
+    public void update(WriteUnqualifiedEditParam editParam) {
+        WriteUnqualified unqualified = unqualifiedMapper.selectById(editParam.getId());
+        BeanUtil.copyProperties(editParam, unqualified);
+        unqualifiedMapper.updateById(unqualified);
+    }
+
+    @Override
+    public CommonResult page(WriteUnqualifiedPageParam pageParam) {
+        Integer listId = pageParam.getListId();
+        Page<WriteUnqualified> page = new Page<>(pageParam.getPageNum(), pageParam.getPageSize());
+        QueryWrapper<WriteUnqualified> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("list_id", listId);
+        return CommonResult.data(unqualifiedMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public void delete(Map<String, String> paramsMap) {
+        String id = paramsMap.get("id");
+        unqualifiedMapper.deleteById(id);
+
+    }
+}

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

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

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

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

+ 1 - 1
huimv-farm/src/main/resources/mapper/PurchaseOrderMapper.xml

@@ -17,7 +17,7 @@
     </select>
     </select>
 
 
     <select id="getSupplier" resultType="vip.xiaonuo.purchase.entity.vo.PurchaseMaterialVo">
     <select id="getSupplier" resultType="vip.xiaonuo.purchase.entity.vo.PurchaseMaterialVo">
-        select count(*) as 'value',supplier as 'name' from purchase_order
+        select IFNULL(sum(purchase_money),'0') as 'value',supplier as 'name' from purchase_order
         ${ew.customSqlSegment}
         ${ew.customSqlSegment}
         group by supplier
         group by supplier
     </select>
     </select>

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

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

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

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

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

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

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

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

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

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

+ 1 - 0
snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/enums/AuthExceptionEnum.java

@@ -42,6 +42,7 @@ public enum AuthExceptionEnum {
      * 账号错误
      * 账号错误
      */
      */
     ACCOUNT_ERROR("账号错误"),
     ACCOUNT_ERROR("账号错误"),
+    ACCOUNT_TYEP_ERROR("账号类型不匹配"),
 
 
     /**
     /**
      * 账号已停用
      * 账号已停用

+ 35 - 3
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/controller/SysOrgController.java

@@ -12,11 +12,16 @@
  */
  */
 package vip.xiaonuo.sys.modular.org.controller;
 package vip.xiaonuo.sys.modular.org.controller;
 
 
+import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.lang.tree.Tree;
 import cn.hutool.core.lang.tree.Tree;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
+import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
 import vip.xiaonuo.sys.modular.org.entity.SysOrg;
 import vip.xiaonuo.sys.modular.org.entity.SysOrg;
 import vip.xiaonuo.sys.modular.user.entity.SysUser;
 import vip.xiaonuo.sys.modular.user.entity.SysUser;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
@@ -34,6 +39,7 @@ import vip.xiaonuo.sys.modular.org.param.*;
 import vip.xiaonuo.sys.modular.org.service.SysOrgService;
 import vip.xiaonuo.sys.modular.org.service.SysOrgService;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 import javax.validation.Valid;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotEmpty;
 import java.util.List;
 import java.util.List;
@@ -183,8 +189,34 @@ public class SysOrgController {
     @ApiOperationSupport(order = 10)
     @ApiOperationSupport(order = 10)
     @ApiOperation("获取组织列表")
     @ApiOperation("获取组织列表")
     @GetMapping("/sys/org/listOrgIds")
     @GetMapping("/sys/org/listOrgIds")
-    public CommonResult<List<SysOrg>> listOrgIds() {
-        return CommonResult.data(sysOrgService.list(new QueryWrapper<SysOrg>().eq("PARENT_ID","1543842934270394368")
-                .eq("CATEGORY","COMPANY")));
+    public CommonResult<JSONArray> listOrgIds() {
+        JSONArray jsonArray = new JSONArray();
+        SaBaseLoginUser loginUser =  StpLoginUserUtil.getLoginUser();
+        String orgId = loginUser.getOrgId();//登录账号的orgId
+        SysOrg sysOrg = sysOrgService.getOne(new QueryWrapper<SysOrg>().eq("ID", orgId));
+        if (sysOrg.getParentId().equals("0")) {
+            List<SysOrg> sysOrgs = sysOrgService.list(new QueryWrapper<SysOrg>().eq("PARENT_ID", sysOrg.getId())
+                    .eq("CATEGORY", "COMPANY"));
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("name", "全部");
+            jsonObject.put("id", "");
+            jsonArray.add(jsonObject);
+            for (SysOrg org : sysOrgs) {
+                JSONObject jsonObject1 = new JSONObject();
+                jsonObject1.put("name", org.getName());
+                jsonObject1.put("id", org.getId());
+                jsonArray.add(jsonObject1);
+            }
+        } else {
+//            JSONObject jsonObject = new JSONObject();
+//            jsonObject.put("name", "全部");
+//            jsonObject.put("id", sysOrg.getId());
+            JSONObject jsonObject1 = new JSONObject();
+            jsonObject1.put("name", sysOrg.getName());
+            jsonObject1.put("id", sysOrg.getId());
+//            jsonArray.add(jsonObject);
+            jsonArray.add(jsonObject1);
+        }
+        return CommonResult.data(jsonArray);
     }
     }
 }
 }

+ 1 - 1
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java

@@ -282,7 +282,7 @@ public class SysUser extends CommonEntity implements TransPojo {
     private String directorName;
     private String directorName;
 
 
     @ApiModelProperty(value = "账号类型", position = 51)
     @ApiModelProperty(value = "账号类型", position = 51)
-    @TableField(exist = false)
+//    @TableField(exist = false)
     private Integer accountType;
     private Integer accountType;
 
 
 }
 }

+ 2 - 1
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java

@@ -188,7 +188,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     public SysLoginUser getUserByAccount(String account) {
     public SysLoginUser getUserByAccount(String account) {
         SysUser sysUser = this.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getAccount, account));
         SysUser sysUser = this.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getAccount, account));
         if (ObjectUtil.isNotEmpty(sysUser)) {
         if (ObjectUtil.isNotEmpty(sysUser)) {
-            transService.transOne(sysUser);
+//            transService.transOne(sysUser);
             return BeanUtil.copyProperties(sysUser, SysLoginUser.class);
             return BeanUtil.copyProperties(sysUser, SysLoginUser.class);
         }
         }
         return null;
         return null;
@@ -242,6 +242,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     public void add(SysUserAddParam sysUserAddParam) {
     public void add(SysUserAddParam sysUserAddParam) {
         checkParam(sysUserAddParam);
         checkParam(sysUserAddParam);
         SysUser sysUser = BeanUtil.toBean(sysUserAddParam, SysUser.class);
         SysUser sysUser = BeanUtil.toBean(sysUserAddParam, SysUser.class);
+        sysUser.setAccountType(Integer.parseInt(sysUserAddParam.getPositionId()));
         if (ObjectUtil.isEmpty(sysUser.getAvatar())) {
         if (ObjectUtil.isEmpty(sysUser.getAvatar())) {
             // 设置默认头像
             // 设置默认头像
             sysUser.setAvatar(CommonAvatarUtil.generateImg(sysUser.getName()));
             sysUser.setAvatar(CommonAvatarUtil.generateImg(sysUser.getName()));