523096025 hace 6 días
padre
commit
7b17511d76
Se han modificado 100 ficheros con 3171 adiciones y 1011 borrados
  1. 8 2
      get-data/src/main/java/com/huimv/getdata/controller/ErpBdOrgController.java
  2. 30 0
      get-data/src/main/java/com/huimv/getdata/controller/ErpFengKongCongroller.java
  3. 36 0
      get-data/src/main/java/com/huimv/getdata/entity/ErpBdMaterialGroup.java
  4. 4 1
      get-data/src/main/java/com/huimv/getdata/entity/ErpBdOrg.java
  5. 1 0
      get-data/src/main/java/com/huimv/getdata/entity/ErpQualiQm.java
  6. 33 0
      get-data/src/main/java/com/huimv/getdata/entity/fengkong/FengKongKuanDao.java
  7. 7 0
      get-data/src/main/java/com/huimv/getdata/entity/xiaoshou/XiaoShouFaHuoJinEKeHuGongXian.java
  8. 6 0
      get-data/src/main/java/com/huimv/getdata/entity/xiaoshou/XiaoShouWanChenLvJinE.java
  9. 4 1
      get-data/src/main/java/com/huimv/getdata/mapper/ErpBdDepartmentMapper.java
  10. 14 0
      get-data/src/main/java/com/huimv/getdata/mapper/ErpFengKongMapper.java
  11. 2 1
      get-data/src/main/java/com/huimv/getdata/service/IErpBdOrgService.java
  12. 9 2
      get-data/src/main/java/com/huimv/getdata/service/impl/ErpBdOrgServiceImpl.java
  13. 5 2
      get-data/src/main/resources/application-prod.yml
  14. 10 1
      get-data/src/main/resources/com/huimv/getdata/mapper/ErpBdDepartmentMapper.xml
  15. 5 19
      get-data/src/main/resources/com/huimv/getdata/mapper/ErpCaiGouMapper.xml
  16. 42 0
      get-data/src/main/resources/com/huimv/getdata/mapper/ErpFengKongMapper.xml
  17. 11 7
      get-data/src/main/resources/com/huimv/getdata/mapper/ErpKuCunMapper.xml
  18. 0 0
      get-data/src/main/resources/com/huimv/getdata/mapper/ErpShengChanMapper.xml
  19. 7 0
      get-data/src/main/resources/com/huimv/getdata/mapper/ErpVoucherMapper.xml
  20. 40 18
      get-data/src/main/resources/com/huimv/getdata/mapper/ErpXiaoShouMapper.xml
  21. 2 0
      huimv-farm/src/main/java/vip/xiaonuo/erp/controller/ErpBdMaterialController.java
  22. 72 0
      huimv-farm/src/main/java/vip/xiaonuo/erp/controller/ErpBdRawMaterialController.java
  23. 1 0
      huimv-farm/src/main/java/vip/xiaonuo/erp/entity/ErpBdRawMaterial.java
  24. 1 1
      huimv-farm/src/main/java/vip/xiaonuo/erp/entity/center/YangMaoZhiCaiGouJinE.java
  25. 33 0
      huimv-farm/src/main/java/vip/xiaonuo/erp/entity/fengkong/FengKongKuanDao.java
  26. 9 0
      huimv-farm/src/main/java/vip/xiaonuo/erp/entity/xiaoshou/XiaoShouFaHuoJinEKeHuGongXian.java
  27. 4 0
      huimv-farm/src/main/java/vip/xiaonuo/erp/entity/xiaoshou/XiaoShouWanChenLvJinE.java
  28. 35 0
      huimv-farm/src/main/java/vip/xiaonuo/erp/param/ErpBdMaterialEdParam.java
  29. 11 0
      huimv-farm/src/main/java/vip/xiaonuo/erp/param/ErpBdMaterialParentParam.java
  30. 12 25
      huimv-farm/src/main/java/vip/xiaonuo/erp/service/IErpCaiGouService.java
  31. 8 14
      huimv-farm/src/main/java/vip/xiaonuo/erp/service/IErpCaiWuService.java
  32. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/erp/service/IErpFengKongService.java
  33. 8 24
      huimv-farm/src/main/java/vip/xiaonuo/erp/service/IErpKuCunService.java
  34. 3 1
      huimv-farm/src/main/java/vip/xiaonuo/erp/service/IErpShengChanService.java
  35. 13 10
      huimv-farm/src/main/java/vip/xiaonuo/erp/service/IErpXiaoShouService.java
  36. 22 0
      huimv-farm/src/main/java/vip/xiaonuo/erp/service/IErpZhiLiangService.java
  37. 11 2
      huimv-farm/src/main/java/vip/xiaonuo/erp/service/impl/ErpBdMaterialServiceImpl.java
  38. 138 196
      huimv-farm/src/main/java/vip/xiaonuo/erp/service/impl/ErpCaiGouServiceImpl.java
  39. 156 62
      huimv-farm/src/main/java/vip/xiaonuo/erp/service/impl/ErpCaiWuServiceImpl.java
  40. 152 0
      huimv-farm/src/main/java/vip/xiaonuo/erp/service/impl/ErpFengKongServiceImpl.java
  41. 359 169
      huimv-farm/src/main/java/vip/xiaonuo/erp/service/impl/ErpKuCunServiceImpl.java
  42. 59 3
      huimv-farm/src/main/java/vip/xiaonuo/erp/service/impl/ErpShengChanServiceImpl.java
  43. 398 25
      huimv-farm/src/main/java/vip/xiaonuo/erp/service/impl/ErpXiaoShouServiceImpl.java
  44. 357 0
      huimv-farm/src/main/java/vip/xiaonuo/erp/service/impl/ErpZhiLiangServiceImpl.java
  45. 8 1
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/controller/DongShiEmployeeInfoController.java
  46. 2 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/entity/HrBaseEmployeeInfo.java
  47. 4 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/entity/vo/EoucationVo.java
  48. 2 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/service/HrBaseEmployeeInfoService.java
  49. 32 43
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/service/impl/HrBaseEmployeeInfoServiceImpl.java
  50. 4 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/mapper/HrCountMapper.java
  51. 2 2
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/write/entity/HrPeopleWrite.java
  52. 5 0
      huimv-farm/src/main/java/vip/xiaonuo/importData/entity/HrData.java
  53. 15 5
      huimv-farm/src/main/java/vip/xiaonuo/importData/service/impl/ImportDataImpl.java
  54. 3 1
      huimv-farm/src/main/java/vip/xiaonuo/importData/utils/ExcelImportSheet.java
  55. 0 1
      huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyBusinessController.java
  56. 2 1
      huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyProduceController.java
  57. 8 3
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyBorrowWarning.java
  58. 1 2
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyProducePrice.java
  59. 2 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyWriteOverdue.java
  60. 49 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/vo/MoneyProduce0422Vo.java
  61. 2 0
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyBusinessMapper.java
  62. 8 0
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyProduce0422Mapper.java
  63. 6 0
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyProducePriceMapper.java
  64. 5 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyBorrowDetailParam.java
  65. 3 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyBusinessPageParam.java
  66. 2 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyInOutPageParam.java
  67. 3 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyInOutParam.java
  68. 2 1
      huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyProduceService.java
  69. 35 10
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyBorrowWarningServiceImpl.java
  70. 29 4
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyBusinessServiceImpl.java
  71. 11 2
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyCostServiceImpl.java
  72. 54 31
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyForecastServiceImpl.java
  73. 35 24
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyProducePriceServiceImpl.java
  74. 112 84
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyProduceServiceImpl.java
  75. 12 1
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyWriteOverdueServiceImpl.java
  76. 7 0
      huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionEnergyController.java
  77. 1 1
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionConsume.java
  78. 1 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/vo/ProductionWriteEnergyVo.java
  79. 31 0
      huimv-farm/src/main/java/vip/xiaonuo/production/mapper/ProductionWriteEnergyMapper.java
  80. 2 0
      huimv-farm/src/main/java/vip/xiaonuo/production/param/ProductionPageParam.java
  81. 1 0
      huimv-farm/src/main/java/vip/xiaonuo/production/service/IProductionEnergyService.java
  82. 146 0
      huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProductionEnergyServiceImpl.java
  83. 132 9
      huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProductionWorkstopPlanServiceImpl.java
  84. 1 1
      huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProductionWritePlanServiceImpl.java
  85. 14 0
      huimv-farm/src/main/java/vip/xiaonuo/purchase/controller/PurchaseDongShiController.java
  86. 5 1
      huimv-farm/src/main/java/vip/xiaonuo/purchase/entity/vo/PurchasePriceVo.java
  87. 8 0
      huimv-farm/src/main/java/vip/xiaonuo/purchase/mapper/PurchaseOrderMapper.java
  88. 9 0
      huimv-farm/src/main/java/vip/xiaonuo/purchase/mapper/PurchasePriceMapper.java
  89. 2 0
      huimv-farm/src/main/java/vip/xiaonuo/purchase/param/PurchasePayParam.java
  90. 4 0
      huimv-farm/src/main/java/vip/xiaonuo/purchase/service/IPurchaseOrderService.java
  91. 48 140
      huimv-farm/src/main/java/vip/xiaonuo/purchase/service/impl/PurchaseOrderServiceImpl.java
  92. 8 6
      huimv-farm/src/main/java/vip/xiaonuo/purchase/service/impl/PurchasePayServiceImpl.java
  93. 106 49
      huimv-farm/src/main/java/vip/xiaonuo/purchase/service/impl/PurchasePriceServiceImpl.java
  94. 14 0
      huimv-farm/src/main/java/vip/xiaonuo/quality/controller/QualityFenxibaogaoController.java
  95. 2 0
      huimv-farm/src/main/java/vip/xiaonuo/quality/entity/ErpBdQuail.java
  96. 3 2
      huimv-farm/src/main/java/vip/xiaonuo/quality/entity/QualityEffectice.java
  97. 1 0
      huimv-farm/src/main/java/vip/xiaonuo/quality/entity/QualityFenxibaogao.java
  98. 4 0
      huimv-farm/src/main/java/vip/xiaonuo/quality/entity/vo/ErpQualiQm.java
  99. 9 0
      huimv-farm/src/main/java/vip/xiaonuo/quality/param/QualityFenxibaogaoPageParam.java
  100. 0 0
      huimv-farm/src/main/java/vip/xiaonuo/quality/service/impl/QualityFenxibaogaoServiceImpl.java

+ 8 - 2
get-data/src/main/java/com/huimv/getdata/controller/ErpBdOrgController.java

@@ -42,6 +42,12 @@ public class ErpBdOrgController {
         return erpBdService.getMaterial();
     }
 
+    @RequestMapping(value = "/getMaterialGruop",method = RequestMethod.GET)
+    public List<ErpBdMaterialGroup> getMaterialGruop(){
+        return erpBdService.getMaterialGruop();
+    }
+
+
 
     @RequestMapping(value = "/getMaterialDetail",method = RequestMethod.GET)
     public List<ErpMaterial> getMaterialDetail(@RequestParam(value = "fnumber" ,required = false) String fnumber){
@@ -59,8 +65,8 @@ public class ErpBdOrgController {
     }
 
     @RequestMapping(value = "/getQuailIbit",method = RequestMethod.GET)
-    public List<ErpQualiQm> getQuailIbit(){
-        return erpBdService.getQuailIbit();
+    public List<ErpQualiQm> getQuailIbit(String date){
+        return erpBdService.getQuailIbit(date );
     }
 
     //原材料

+ 30 - 0
get-data/src/main/java/com/huimv/getdata/controller/ErpFengKongCongroller.java

@@ -0,0 +1,30 @@
+package com.huimv.getdata.controller;
+
+import com.huimv.getdata.entity.caigou.CaiGouRuKu;
+import com.huimv.getdata.entity.fengkong.FengKongKuanDao;
+import com.huimv.getdata.mapper.ErpCaiGouMapper;
+import com.huimv.getdata.mapper.ErpFengKongMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/erp-fengKong")
+public class ErpFengKongCongroller {
+    @Autowired
+    private ErpFengKongMapper erpFengKongMapper;
+
+    @RequestMapping(value = "/getKuanDaoFaHuo",method = RequestMethod.GET)
+    public List<FengKongKuanDao> getKuanDaoFaHuo(@RequestParam(value = "date" ,required = false) String date){
+        return erpFengKongMapper.getKuanDaoFaHuo(date);
+    }
+
+    @RequestMapping(value = "/getCaiGouYvQi",method = RequestMethod.GET)
+    public List<FengKongKuanDao> getCaiGouYvQi(@RequestParam(value = "date" ,required = false) String date){
+        return erpFengKongMapper.getCaiGouYvQi(date);
+    }
+}

+ 36 - 0
get-data/src/main/java/com/huimv/getdata/entity/ErpBdMaterialGroup.java

@@ -0,0 +1,36 @@
+package com.huimv.getdata.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-04
+ */
+@Data
+public class ErpBdMaterialGroup implements Serializable {
+
+
+
+    private Integer fid;
+
+    private String fnumber;
+
+    private Integer fparentid;
+
+    private String ffullparentid;
+
+    private String fname;
+
+
+}

+ 4 - 1
get-data/src/main/java/com/huimv/getdata/entity/ErpBdOrg.java

@@ -1,10 +1,13 @@
 package com.huimv.getdata.entity;
 
+import cn.hutool.db.DaoTemplate;
 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 lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -31,7 +34,7 @@ public class ErpBdOrg implements Serializable {
 
     private Integer forgid;
 
-    private LocalDateTime fcreatedate;
+    private Date fcreatedate;
 
     private String fname;
 

+ 1 - 0
get-data/src/main/java/com/huimv/getdata/entity/ErpQualiQm.java

@@ -87,4 +87,5 @@ public class ErpQualiQm {
      * 物料名称
      */
     private String fname;
+    private String fnumber;
 }

+ 33 - 0
get-data/src/main/java/com/huimv/getdata/entity/fengkong/FengKongKuanDao.java

@@ -0,0 +1,33 @@
+package com.huimv.getdata.entity.fengkong;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FengKongKuanDao {
+
+    //合同号
+    private String FBILLNO;
+
+    //要货日期
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date FDELIVERYDATE;
+    //合同日期
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date FDATE;
+    //出库日期
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date chukuDate;
+
+    private String FNAME;
+
+    private String keHuName;
+
+    private Double FQTY;
+    private Double FALLAMOUNT;
+    private Integer FSALEORGID;
+
+
+}

+ 7 - 0
get-data/src/main/java/com/huimv/getdata/entity/xiaoshou/XiaoShouFaHuoJinEKeHuGongXian.java

@@ -26,4 +26,11 @@ public class XiaoShouFaHuoJinEKeHuGongXian {
     private String FNAME;
     private String FBILLNO;
     private String xiaoShouName;
+    private String wuLiaoName;
+    private String FBillAmount;
+    private String FSettleCurrId;
+
+    private String keHuName;
+    private String fdeptname;
+    private String FSoorDerno;
 }

+ 6 - 0
get-data/src/main/java/com/huimv/getdata/entity/xiaoshou/XiaoShouWanChenLvJinE.java

@@ -41,5 +41,11 @@ public class XiaoShouWanChenLvJinE {
     private String keHuName;
     //销售单价
     private Double xiaoShouDanJia;
+    private Double FBillAllAmount;
+    private Double FTaxPrice;
+
+    private int FSettleCurrId;
+    //合同内码
+    private String fentryid;
 
 }

+ 4 - 1
get-data/src/main/java/com/huimv/getdata/mapper/ErpBdDepartmentMapper.java

@@ -28,7 +28,10 @@ public interface ErpBdDepartmentMapper extends BaseMapper<ErpBdDepartment> {
     List<ErpQuali> getQuail();
 
 
-    List<ErpQualiQm> getQuailIbit();
+    List<ErpQualiQm> getQuailIbit(@Param("date") String date );
 
     List<ErpBdMaterial> getMaterialRaw();
+
+    List<ErpBdMaterialGroup> getMaterialGruop();
+
 }

+ 14 - 0
get-data/src/main/java/com/huimv/getdata/mapper/ErpFengKongMapper.java

@@ -0,0 +1,14 @@
+package com.huimv.getdata.mapper;
+
+
+import com.huimv.getdata.entity.fengkong.FengKongKuanDao;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface ErpFengKongMapper  {
+
+    List<FengKongKuanDao> getKuanDaoFaHuo(@Param("date")String date);
+
+    List<FengKongKuanDao> getCaiGouYvQi(@Param("date")String date);
+}

+ 2 - 1
get-data/src/main/java/com/huimv/getdata/service/IErpBdOrgService.java

@@ -18,8 +18,9 @@ public interface IErpBdOrgService extends IService<ErpBdOrg> {
 
     List<ErpQuali> getQuail();
 
-    List<ErpQualiQm> getQuailIbit();
+    List<ErpQualiQm> getQuailIbit(String date);
 
     List<ErpBdMaterial> getMaterialRaw();
 
+    List<ErpBdMaterialGroup> getMaterialGruop();
 }

+ 9 - 2
get-data/src/main/java/com/huimv/getdata/service/impl/ErpBdOrgServiceImpl.java

@@ -7,6 +7,7 @@ import com.huimv.getdata.mapper.ErpBdDepartmentMapper;
 import com.huimv.getdata.mapper.ErpBdOrgMapper;
 import com.huimv.getdata.service.IErpBdOrgService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -62,12 +63,18 @@ public class ErpBdOrgServiceImpl extends ServiceImpl<ErpBdOrgMapper, ErpBdOrg> i
     }
 
     @Override
-    public List<ErpQualiQm> getQuailIbit() {
-        return erpBdDepartmentMapper.getQuailIbit();
+    public List<ErpQualiQm> getQuailIbit(String date) {
+        return erpBdDepartmentMapper.getQuailIbit(date);
     }
 
     @Override
     public List<ErpBdMaterial> getMaterialRaw() {
         return erpBdDepartmentMapper.getMaterialRaw();
     }
+
+    @Override
+    public List<ErpBdMaterialGroup> getMaterialGruop() {
+        return erpBdDepartmentMapper.getMaterialGruop();
+
+    }
 }

+ 5 - 2
get-data/src/main/resources/application-prod.yml

@@ -4,9 +4,12 @@ spring:
   application:
     name: huimv-getdata
   datasource:
-    url: jdbc:sqlserver://115.238.57.190:1433;DatabaseName=AIS20211202120009
+#    url: jdbc:sqlserver://115.238.57.190:1433;DatabaseName=AIS20211202120009
+#    username: sa
+#    password: Hy@2024!
+    url: jdbc:sqlserver://36.134.102.150:1433;DatabaseName=AIS20211202120009
     username: sa
-    password: Hy@2024!
+    password: xy.123456
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
     maxActive: 20
     initialSize: 1

+ 10 - 1
get-data/src/main/resources/com/huimv/getdata/mapper/ErpBdDepartmentMapper.xml

@@ -70,14 +70,19 @@ inner join   T_BD_MATERIAL_L b on a.fmaterialid = b.fmaterialid
         c.FMATERIALID  FMATERIALID
         ,c.FINSPECTRESULT  FINSPECTRESULT
         ,d.fname fname
-
+,f.fnumber
 
          from T_QM_INSPECTBILL a
         inner join  T_QM_INSPECTBILLENTRY b on a.fid = b.fid
         inner  join T_QM_INSPECTBILLENTRY_A  c on a.fid = c.fid
         inner join T_BD_MATERIAL_L d on c.FMATERIALID = d.FMATERIALID
+        inner join T_BD_MATERIAL F on F.FMATERIALID = d.FMATERIALID
         right  join T_QM_IBITEMDETAIL e on e.fentryid = b.fentryid
 
+        <if test="date !=null">
+            where  A.FCREATEDATE >= #{date}
+        </if>
+
     </select>
     <select id="getMaterialRaw" resultType="com.huimv.getdata.entity.ErpBdMaterial">
      SELECT a.fnumber  fnumber   , b.fuseorgid  facctorgid, b.FNAME fname ,b.FSPECIFICATION fspecification  ,a.FMATERIALID  FROM [dbo].[T_BD_MATERIAL]  a
@@ -85,5 +90,9 @@ inner join   T_BD_MATERIAL_L b on a.fmaterialid = b.fmaterialid
      where a.FFORBIDSTATUS = 'A'
     --and  a.fnumber like '10%'
     </select>
+    <select id="getMaterialGruop" resultType="com.huimv.getdata.entity.ErpBdMaterialGroup">
+        select  fname ,a.fid fid ,fnumber,fparentid,ffullparentid from t_BD_MATERIALGROUP A
+inner join t_BD_MATERIALGROUP_L b on a.fid = b.fid
+    </select>
 
 </mapper>

+ 5 - 19
get-data/src/main/resources/com/huimv/getdata/mapper/ErpCaiGouMapper.xml

@@ -14,12 +14,6 @@ INNER JOIN  T_PUR_CONTRACTENTRY_F B ON A.FID = B.FID
     </select>
     <select id="getCaiGouRuku" resultType="com.huimv.getdata.entity.caigou.CaiGouRuKu"
             parameterType="java.util.Date">
-<!--SElECT DISTINCT B.FBILLAMOUNT_LC  FBILLAMOUNTLC ,A.FDATE , A.FDEMANDORGID ,A.FBILLNO FROM  T_STK_INSTOCK A
-        INNER JOIN  T_STK_INSTOCKFIN B ON A.FID = B.FID
-        where  FBILLAMOUNT_LC != 0
-        <if test="date !=null">
-            and   A.FDATE >= #{date}
-        </if>-->
 
         SELECT   A.FSTOCKORGID ,A.FCREATEDATE FDATE  , B.FRealQty   FQTY ,E.FMaterialId materialId ,E.FNAME ,A.FBillNo  FBILLNO, C.FBillAmount_LC FBILLAMOUNTLC,
         B.FPOOrderNo  poorderNo ,
@@ -29,13 +23,16 @@ INNER JOIN  T_PUR_CONTRACTENTRY_F B ON A.FID = B.FID
         inner join T_STK_INSTOCKFIN C on A.fid = C.fid
         INNER JOIN T_BD_MATERIAL_L  E ON  E.FMATERIALID =B.FMATERIALID
         INNER JOIN T_BD_MATERIAL F ON F.FMATERIALID =E.FMATERIALID
-
+        <if test="date !=null">
+            and  A.FDATE >= #{date}
+        </if>
 
     </select>
 
     <select id="getCaiGouFaPiao" resultType="com.huimv.getdata.entity.caigou.FaPiaoJinE"
             parameterType="java.util.Date">
-        SELECT    B.FALLAMOUNT_LC ,A.FDATE ,A.FPURCHASEORGID ,C.FQTY  ,A.FBILLNO FROM  T_PUR_POORDER A
+        SELECT  distinct  B.FALLAMOUNT_LC  FALLAMOUNT,A.FDATE ,A.FPURCHASEORGID ,C.FQTY  ,A.FBILLNO
+        FROM  T_PUR_POORDER A
         INNER JOIN T_PUR_POORDERENTRY C ON A.FID  = C.FID
         INNER JOIN  T_PUR_POORDERENTRY_F B ON B.FENTRYID  = C.FENTRYID
         <if test="date !=null">
@@ -137,17 +134,6 @@ INNER JOIN  T_PUR_POORDERENTRY  B ON A.FID = B.FID
     </select>
     <select id="getYingFuZhangKuang" resultType="com.huimv.getdata.entity.caigou.YingFuZhangKuan"
             parameterType="java.util.Date">
-<!--        SELECT DISTINCT A.FDATE ,A.FBGLSHSJDW ,A.FPURCHASEORGID , A.FPAYORGID, B.FPURPOSEID ,C.FNAME ,B.FNOTVERIFICATEAMOUNT ,B.FQTY  ,D.FNAME wuLiaoName-->
-<!--        ,E.FBOOKINGDATE  FROM  T_AP_PAYBILL 	A-->
-<!--INNER JOIN  T_AP_PAYBILLENTRY B ON A.FID = B.FID-->
-<!--INNER JOIN  T_CN_RECPAYPURPOSE_L C ON C.FID = B.FPURPOSEID-->
-<!--        INNER JOIN  T_BD_MATERIAL_L  D ON B.FMATERIALID =D.FMATERIALID-->
-<!--        LEFT JOIN T_AP_PAYBILL_O  E ON E.FID = A.FID-->
-<!--        WHERE B.FNOTVERIFICATEAMOUNT >0-->
-<!--        <if test="date !=null">-->
-<!--            AND  A.FDATE >= #{date}-->
-<!--        </if>-->
-
 
         SELECT  A.FBILLNO ,A.FDATE,  A.FENDDATE ,A.FPURCHASEORGID, A.FPAYORGID , A.FSUPPLIERID ,b.FSourceBillNo , B.FBGLCONTRACTL
         ,B.FMATERIALID ,B.FPrice,B.FTaxPrice ,A.FALLAMOUNTFOR,

+ 42 - 0
get-data/src/main/resources/com/huimv/getdata/mapper/ErpFengKongMapper.xml

@@ -0,0 +1,42 @@
+<?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="com.huimv.getdata.mapper.ErpFengKongMapper">
+
+
+    <select id="getKuanDaoFaHuo" resultType="com.huimv.getdata.entity.fengkong.FengKongKuanDao">
+--         SELECT   A.FBILLNO    , A.FCREATEDATE  , f.FTaxPrice, B.FSettleCurrId ,B.FBillAllAmount, b.FBillAllAmount_LC,
+--         (B.FBillAllAmount_LC / E.FQTY )  xiaoShouDanJia  , L.FNAME wuLiaoName  , A.FSALEDEPTID ,D.FNAME keHuName  ,E.fqty,H.FNAME ,H.fdeptname
+--         FROM T_CRM_CONTRACT A
+--         inner join T_CRM_CONTRACTENTRY E on a.fid = E.fid
+--         inner  JOIN T_CRM_CONTRACTENTRY_F F  ON F.fentryid  = e.fentryid
+--         inner join T_CRM_CONTRACTFIN B on b.fid  = e.fid
+--         INNER JOIN T_BD_CUSTOMER_L D ON D.FCUSTID=A.FCUSTID
+--         INNER JOIN T_BD_MATERIAL_L L ON L.FMATERIALID  = E.FMATERIALID
+--
+--         LEFT JOIN V_BD_SALESMAN_L H ON H.fid = A.FSALERID
+
+        SELECT distinct A.FBILLNO , E.FDELIVERYDATE,A.FDATE , G.FDATE chuKuDate   ,A.FNAME  , D.FNAME keHuName ,E.FQTY  ,F.FALLAMOUNT_LC FALLAMOUNT   ,A.FSALEORGID FROM T_CRM_CONTRACT A
+        INNER JOIN T_BD_CUSTOMER_L D ON D.FCUSTID=A.FCUSTID
+        INNER JOIN T_CRM_CONTRACTENTRY E  ON E.FID  = A.FID
+        LEFT JOIN T_CRM_CONTRACTENTRY_F F  ON F.fentryid  = E.fentryid
+        left join  T_SAL_ORDER H on E.fentryid =H.FContractId
+        left join  T_SAL_OUTSTOCKENTRY_R  I on I.FSoorDerno = H.FBILLNO
+        LEFT JOIN T_SAL_OUTSTOCK G  ON G.FID  = I.FID
+        <if test="date !=null">
+            where  A.FDATE >= #{date}
+        </if>
+    </select>
+    <select id="getCaiGouYvQi" resultType="com.huimv.getdata.entity.fengkong.FengKongKuanDao">
+        SELECT distinct A.FBILLNO , E.FDELIVERYDATE,A.FDATE , G.FDATE chuKuDate , D.FNAME keHuName ,E.FQTY  ,F.FALLAMOUNT_LC  FALLAMOUNT,A.FPurchaseOrgId  FSALEORGID
+        FROM T_PUR_CONTRACT A
+        INNER JOIN T_BD_SUPPLIER_L D ON D.FSupplierId=A.FSupplierId
+        INNER JOIN T_PUR_CONTRACTENTRY E  ON E.FID  = A.FID
+        LEFT JOIN T_PUR_CONTRACTENTRY_F F  ON F.fentryid  = E.fentryid
+        left join  T_STK_INSTOCKENTRY H on A.FBILLNO =H.FContractNo
+        LEFT JOIN T_STK_INSTOCK G  ON G.FID  = H.FID
+
+        <if test="date !=null">
+            where  A.FDATE >= #{date}
+        </if>
+    </select>
+</mapper>

+ 11 - 7
get-data/src/main/resources/com/huimv/getdata/mapper/ErpKuCunMapper.xml

@@ -12,7 +12,6 @@
         <if test="date !=null">
             where  A.FUPDATETIME >= #{date}
         </if>
-ORDER BY FBASEQTY DESC
 
     </select>
     <select id="getYangMaoZhiKuCun" resultType="com.huimv.getdata.entity.kucun.YangMaoZhiChuKu"
@@ -74,7 +73,7 @@ INNER JOIN T_STK_INSTOCKENTRY B ON A.FID = B.FID
  INNER JOIN t_BD_Stock_L  E ON E.FSTOCKID = B.FSTOCKID
  WHERE E.FNAME IN ('成品库','成品库CW')
         <if test="date !=null">
-            and  A.FDATE >= #{date}
+            where  A.FDATE >= #{date}
         </if>
  UNION ALL
  SELECT DISTINCT B.FREALQTY, A.FDATE , A.FSTOCKORGID , B.FMATERIALID  ,E.FNAME
@@ -83,7 +82,7 @@ INNER JOIN T_PRD_INSTOCKENTRY  B ON A.FID = B.FID
  INNER JOIN t_BD_Stock_L  E ON E.FSTOCKID = B.FSTOCKID
  WHERE E.FNAME IN ('成品库','成品库CW')
         <if test="date !=null">
-            and  A.FDATE >= #{date}
+            where  A.FDATE >= #{date}
         </if>
  UNION ALL
   SELECT DISTINCT B.FQTY FREALQTY, A.FDATE , A.FSTOCKORGID , B.FMATERIALID  ,E.FNAME
@@ -92,7 +91,7 @@ INNER JOIN T_STK_MISCELLANEOUSENTRY  B ON A.FID = B.FID
  INNER JOIN t_BD_Stock_L  E ON E.FSTOCKID = B.FSTOCKID
  WHERE E.FNAME IN ('成品库','成品库CW')
         <if test="date !=null">
-            and  A.FDATE >= #{date}
+            where  A.FDATE >= #{date}
         </if>
     </select>
     <select id="getYangMaoZhiDangRi" resultType="com.huimv.getdata.entity.kucun.ChengPinRuKu"
@@ -203,7 +202,7 @@ INNER JOIN T_STK_MISDELIVERYENTRY B ON A.FID = B.FID
         SELECT DISTINCT A.FBALDATE , A.FBASEENDQTY ,B.FNAME , A.FSTOCKORGID FROM T_STK_INVBAL A
 INNER JOIN T_BD_MATERIAL_L B ON A.FMATERIALID = B.FMATERIALID
         <if test="date !=null">
-            and  A.FBALDATE >= #{date}
+            where   A.FBALDATE >= #{date}
         </if>
     </select>
     <select id="getChuKuShuLiang" resultType="com.huimv.getdata.entity.kucun.YangMaoZhiChuKu"
@@ -216,7 +215,7 @@ INNER JOIN T_SAL_OUTSTOCKENTRY_F B ON F.FENTRYID = B.FENTRYID
  INNER JOIN  T_BD_MATERIAL_L D  ON D.FMATERIALID  = C.FMATERIALID
  INNER JOIN t_BD_Stock_L  E ON E.FSTOCKID = F.FSTOCKID
         <if test="date !=null">
-            and  A.FDATE >= #{date}
+            where  A.FDATE >= #{date}
         </if>
 UNION ALL
   SELECT DISTINCT B.FQTY FSALUNITQTY , A.FDATE , A.FSTOCKORGID , B.FMATERIALID , D.FNAME ,C.FNUMBER  ,E.FNAME
@@ -252,7 +251,7 @@ INNER JOIN t_BD_Supplier_L C ON C.FSUPPLIERID = A.FSUPPLIERID
 INNER JOIN T_BD_MATERIAL_L D ON D.FMATERIALID = B.FMATERIALID
 WHERE D.FNAME  in(' 二氢羊毛甾醇标准品','羊毛甾醇标准品','羊毛粗脂')
         <if test="date !=null">
-            where  A.FDATE >= #{date}
+            and  A.FDATE >= #{date}
         </if>
     </select>
     <select id="getYangMaoZhiGongYingShangLeiJi" resultType="com.huimv.getdata.entity.kucun.YangMaoZhiGongYingShang"
@@ -263,6 +262,10 @@ INNER JOIN T_STK_INSTOCKENTRY B ON A.FID = B.FID
 INNER JOIN t_BD_Supplier_L C ON C.FSUPPLIERID = A.FSUPPLIERID
 INNER JOIN T_BD_MATERIAL_L D ON D.FMATERIALID = B.FMATERIALID
 WHERE D.FNAME  in(' 二氢羊毛甾醇标准品','羊毛甾醇标准品','羊毛粗脂')
+        <if test="date !=null">
+            AND  A.FDATE >= #{date}
+        </if>
+
 
     </select>
     <select id="getWuJinDangRi" resultType="com.huimv.getdata.entity.kucun.ChengPinRuKu"
@@ -434,6 +437,7 @@ inner join T_BD_MATERIAL_L b on a.FMATERIALID = b.FMATERIALID
 INNER JOIN T_BD_MATERIAL c on c.FMATERIALID = b.FMATERIALID
 where  a.FSAFESTOCK > 0
  ORDER BY  a.FSAFESTOCK desc
+
     </select>
 
 </mapper>

+ 0 - 0
get-data/src/main/resources/com/huimv/getdata/mapper/ErpShengChanMapper.xml

@@ -4,11 +4,6 @@
 
     <select id="getShiJiChanLiang" resultType="com.huimv.getdata.entity.shengcan.ShiJiChanLiang"
             parameterType="java.util.Date">
 
         select A.FBILLNO , B.FQTY  FREALQTY , A.FDATE ,A.FPRDORGID  FSTOCKORGID, C.FNAME wuLiaoName , E.FNAME cheJianName ,B.FWORKSHOPID   from  T_PRD_MO   A
         left JOIN T_PRD_MOENTRY  B ON A.FID  = B.FID

+ 7 - 0
get-data/src/main/resources/com/huimv/getdata/mapper/ErpVoucherMapper.xml

@@ -107,6 +107,10 @@ INNER JOIN   T_GL_VOUCHER B ON B.FVOUCHERID  = D.FVOUCHERID
         INNER JOIN T_BD_MATERIAL_L WLL ON B.FFLEX8=WLL.FMATERIALID
         where fcredit != 0
 
+        <if test="date !=null">
+            and  a.FYEARPERIOD >= #{date}
+        </if>
+
     </select>
     <select id="getJingLiRunQuShi" resultType="com.huimv.getdata.entity.voucher.JingLiRunQuShi"
             parameterType="java.util.Date">
@@ -157,5 +161,8 @@ INNER JOIN t_org_organizations_l D ON D.FORGID = C.FACCTORGID
         INNER JOIN T_BD_FLEXITEMDETAILV B ON A.FDETAILID=B.FID
         INNER JOIN T_BD_MATERIAL_L WLL ON B.FFLEX8=WLL.FMATERIALID
         where fcreditqty != 0
+        <if test="date !=null">
+            and  a.FYEARPERIOD >= #{date}
+        </if>
     </select>
 </mapper>

+ 40 - 18
get-data/src/main/resources/com/huimv/getdata/mapper/ErpXiaoShouMapper.xml

@@ -6,28 +6,18 @@
     <select id="getWanChengLv" resultType="com.huimv.getdata.entity.xiaoshou.XiaoShouWanChenLvJinE"
             parameterType="java.util.Date">
 
-        SELECT   A.FBILLNO    ,  A.FSALEORGID ,A.FCREATEDATE FDATE  , L.FNAME wuLiaoName , F.FAllAmount_LC , A.FSALEDEPTID ,D.FNAME keHuName,C.FNAME htName  ,E.fqty,H.FNAME ,H.fdeptname ,G.FDATE chuKuDate,
-        (F.FALLAMOUNT_LC / E.FQTY )  xiaoShouDanJia
+        SELECT  A.FSALEORGID , A.FBILLNO    , A.FCREATEDATE  FDATE, f.FTaxPrice, B.FSettleCurrId ,B.FBillAllAmount, b.FBillAllAmount_LC  FALLAMOUNTLC,
+        E.fentryid ,
+        (B.FBillAllAmount_LC / E.FQTY )  xiaoShouDanJia  , L.FNAME wuLiaoName  , A.FSALEDEPTID ,D.FNAME keHuName  ,E.fqty,H.FNAME ,H.fdeptname
         FROM T_CRM_CONTRACT A
         inner join T_CRM_CONTRACTENTRY E on a.fid = E.fid
         inner  JOIN T_CRM_CONTRACTENTRY_F F  ON F.fentryid  = e.fentryid
-        INNER JOIN T_BAS_BILLTYPE  B ON B.FBILLTYPEID = A.FBILLTYPEID
-        INNER JOIN T_BAS_BILLTYPE_L C ON A.FBILLTYPEID = C.FBILLTYPEID
+        inner join T_CRM_CONTRACTFIN B on b.fid  = e.fid
         INNER JOIN T_BD_CUSTOMER_L D ON D.FCUSTID=A.FCUSTID
         INNER JOIN T_BD_MATERIAL_L L ON L.FMATERIALID  = E.FMATERIALID
-        LEFT JOIN T_SAL_OUTSTOCK G  ON G.FBILLTYPEID  = A.FBILLTYPEID
-        LEFT JOIN V_BD_SALESMAN_L H ON H.fid = A.FSALERID
 
-         --合同
+        LEFT JOIN V_BD_SALESMAN_L H ON H.fid = A.FSALERID
+        --合同
         <if test="date !=null">
             where A.FCREATEDATE >= #{date}
         </if>
@@ -53,17 +43,25 @@
             resultType="com.huimv.getdata.entity.xiaoshou.XiaoShouFaHuoJinEKeHuGongXian"
             parameterType="java.util.Date">
 
-SELECT  DISTINCT A.FSALEORGID ,A.FDATE ,A.FSTOCKORGID ,A.FCUSTOMERID,A.FSALESMANID , B.FREALQTY , C.FALLAMOUNT_LC ,D.FNAME   ,A.FBILLNO
-       , F.FNAME xiaoShouName
-        FROM  T_SAL_OUTSTOCK A
-INNER JOIN  T_SAL_OUTSTOCKENTRY B ON A.FID = B.FID
-INNER JOIN  T_SAL_OUTSTOCKENTRY_F C ON C.FENTRYID = B.FENTRYID
-INNER JOIN T_BD_CUSTOMER_L D ON D.FCUSTID=A.FCUSTOMERID
-        LEFT JOIN V_BD_SALESMAN_L F ON F.fid = A.FSALESMANID
+        SELECT   A.FSTOCKORGID, A.FSALEORGID, A.FBILLNO  , A.FCREATEDATE  FDATE  , L.FNAME wuLiaoName , B.FBillAllAmount_LC FALLAMOUNT_LC  ,
+        B.FSettleCurrId , E.FREALQTY ,
+        B.FBillAllAmount FBillAmount,
+        D.FNAME ,H.FNAME xiaoShouName ,H.fdeptname
+        , F.FSoorDerno
+
+        FROM T_SAL_OUTSTOCK A
+        inner join T_SAL_OUTSTOCKENTRY E on a.fid = E.fid
+        inner  JOIN T_SAL_OUTSTOCKENTRY_R F  ON F.fentryid  = e.fentryid
+        INNER JOIN T_BD_CUSTOMER_L D ON D.FCUSTID=A.FCustomerID
+        INNER JOIN T_BD_MATERIAL_L L ON L.FMATERIALID  = E.FMATERIALID
+        inner join  T_SAL_OUTSTOCKFIN  B on B.fid = a.fid
+        LEFT JOIN V_BD_SALESMAN_L H ON H.fid = A.FSalesManID
         <if test="date !=null">
             where A.FDATE >= #{date}
         </if>
 
+
+
     </select>
     <select id="getXiaoShouFeiYong" resultType="com.huimv.getdata.entity.xiaoshou.XiaoShouFeiYong"
             parameterType="java.util.Date">
@@ -80,14 +78,7 @@ INNER JOIN T_BD_ACCOUNT C ON  C.FACCTID = B.FACCOUNTID
     </select>
     <select id="getYvQiHeTongMingXi" resultType="com.huimv.getdata.entity.xiaoshou.YvQiHeTongMingXi"
             parameterType="java.util.Date">
+
         SELECT    A.FCREATEDATE ,A.FBILLNO    , F.FAllAmount_LC  FALLAMOUNTLC , A.FSALEDEPTID ,D.FNAME keHuName,C.FNAME   ,E.FQTY,G.FDATE chuKuDate
         FROM T_CRM_CONTRACT A
         inner join T_CRM_CONTRACTENTRY E on a.fid = E.fid
@@ -117,10 +108,24 @@ INNER JOIN T_BD_ACCOUNT C ON  C.FACCTID = B.FACCOUNTID
     <select id="getDingDan" resultType="com.huimv.getdata.entity.xiaoshou.XiaoShouWanChenLvJinE"
             parameterType="java.lang.String">
 
- SELECT   A.FBILLNO    , A.FCREATEDATE  FDATE,A.FSALEORGID,B.fqty ,C.FALLAMOUNT_LC
- FROM T_SAL_ORDER A
- inner join T_SAL_ORDERENTRY B on a.fid = B.fid
- inner join T_SAL_ORDERENTRY_F C on B.FENTRYID = c.FENTRYID
+--          SELECT   A.FBILLNO    , A.FCREATEDATE  FDATE,A.FSALEORGID,B.fqty ,C.FALLAMOUNT_LC
+--          FROM T_SAL_ORDER A
+--          inner join T_SAL_ORDERENTRY B on a.fid = B.fid
+--          inner join T_SAL_ORDERENTRY_F C on B.FENTRYID = c.FENTRYID
+
+        SELECT A.FSALEORGID,  A.FBILLNO , G.FSRCBILLNO  fentryid , A.FCREATEDATE  FDATE , L.FNAME wuLiaoName , F.FAllAmount_LC  FALLAMOUNTLC , B.FSettleCurrId ,
+        B.FBillAllAmount  FBillAllAmount, F.FTaxPrice,
+
+        A.FSALEDEPTID ,D.FNAME keHuName,E.fqty,H.FNAME ,H.fdeptname ,
+        (F.FALLAMOUNT_LC / E.FQTY )  xiaoShouDanJia
+        FROM T_SAL_ORDER A
+        inner join T_SAL_ORDERENTRY E on a.fid = E.fid
+        inner  JOIN T_SAL_ORDERENTRY_F F  ON F.fentryid  = e.fentryid
+        INNER JOIN T_BD_CUSTOMER_L D ON D.FCUSTID=A.FCUSTID
+        inner join T_SAL_ORDERENTRY_R G on g.fentryid = e.fentryid
+        INNER JOIN T_BD_MATERIAL_L L ON L.FMATERIALID  = E.FMATERIALID
+        inner join  T_SAL_ORDERFIN  B on B.fid = a.fid
+        LEFT JOIN V_BD_SALESMAN_L H ON H.fid = A.FSALERID
         <if test="date !=null">
             where A.FCREATEDATE >= #{date}
         </if>

+ 2 - 0
huimv-farm/src/main/java/vip/xiaonuo/erp/controller/ErpBdMaterialController.java

@@ -135,6 +135,8 @@ public class ErpBdMaterialController {
     public CommonResult<List<ErpBdMaterialVo>> getTreeParentId(@RequestBody ErpBdMaterialParentParam erpBdMaterial) {
         return CommonResult.data(erpBdMaterialService.getTreeParentId(erpBdMaterial));
     }
+
+
     @ApiOperationSupport(order = 5)
     @ApiOperation("同步")
     @PostMapping("/biz/bdmaterial/sync")

+ 72 - 0
huimv-farm/src/main/java/vip/xiaonuo/erp/controller/ErpBdRawMaterialController.java

@@ -1,9 +1,31 @@
 package vip.xiaonuo.erp.controller;
 
 
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+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.erp.entity.ErpBdMaterial;
+import vip.xiaonuo.erp.entity.ErpBdMaterialGroup;
+import vip.xiaonuo.erp.entity.ErpBdRawMaterial;
+import vip.xiaonuo.erp.mapper.ErpBdMaterialGroupMapper;
+import vip.xiaonuo.erp.mapper.ErpBdRawMaterialMapper;
+import vip.xiaonuo.erp.param.ErpBdMaterialEdParam;
+import vip.xiaonuo.erp.param.ErpBdMaterialParentParam;
+import vip.xiaonuo.erp.service.IErpBdMaterialGroupService;
+import vip.xiaonuo.erp.service.IErpBdRawMaterialService;
+import vip.xiaonuo.write.entity.WriteWarning;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,8 +35,58 @@ import org.springframework.web.bind.annotation.RestController;
  * @author author
  * @since 2025-03-17
  */
+@Api(tags = "物料查询控制器")
 @RestController
 @RequestMapping("/erp-bd-raw-material")
 public class ErpBdRawMaterialController {
+    @Autowired
+    private IErpBdRawMaterialService erpBdRawMaterialService;
+
+    @PostMapping("/getAllChanPin")
+    public CommonResult<List<ErpBdRawMaterial>> edit(@RequestBody ErpBdMaterialParentParam erpBdMaterial) {
+        return CommonResult.data( erpBdRawMaterialService.list(new QueryWrapper<ErpBdRawMaterial>()
+                .eq("org_id","1856160583875837954").likeRight("erp_fnumber","01")));
+    }
+
+
+    @PostMapping("/pageChanPinGuanZhu")
+    @ApiOperation("物料分页")
+    public CommonResult<Page<ErpBdRawMaterial>> pageChanPinGuanZhu(@RequestBody ErpBdMaterialParentParam erpBdMaterial) {
+        Integer pageNum = erpBdMaterial.getPageNum();
+        Integer pageSize = erpBdMaterial.getPageSize();
+        String materialName = erpBdMaterial.getMaterialName();
+        if(ObjectUtil.isEmpty(pageNum)){
+            pageNum =1;
+        }
+        if(ObjectUtil.isEmpty(pageSize)){
+            pageSize =10;
+        }
+
+        Page<ErpBdRawMaterial> page = new Page<>(pageNum,pageSize);
+        QueryWrapper<ErpBdRawMaterial> erpBdRawMaterialQueryWrapper = new QueryWrapper<ErpBdRawMaterial>()
+                .eq(StringUtils.isNotBlank(erpBdMaterial.getOrgId()),"org_id",erpBdMaterial.getOrgId() ).likeRight("erp_fnumber", "01")
+                .eq(ObjectUtil.isNotEmpty(erpBdMaterial.getIsFollow()),"is_follow",erpBdMaterial.getIsFollow())
+                .like(StringUtils.isNotBlank(materialName),"fname",materialName).orderByDesc("is_follow");
+        return CommonResult.data( erpBdRawMaterialService.page(page,erpBdRawMaterialQueryWrapper));
+    }
+
+    @PostMapping("/listChanPinGuanZhu")
+    @ApiOperation("关注列表")
+    public CommonResult<List<ErpBdRawMaterial>> listChanPinGuanZhu(@RequestBody ErpBdMaterialParentParam erpBdMaterial) {
+        return CommonResult.data( erpBdRawMaterialService.list(new QueryWrapper<ErpBdRawMaterial>()
+                .eq(StringUtils.isNotBlank(erpBdMaterial.getOrgId()),"org_id",erpBdMaterial.getOrgId() )
+                .eq("is_follow",1)));
+    }
+
+    @PostMapping("/updateChanPinGuanZhu")
+    @ApiOperation("物料修改")
+    public CommonResult<String> listChanPinGuanZhu(@RequestBody ErpBdMaterialEdParam erpBdMaterial) {
+        ErpBdRawMaterial erpBdMaterial1 = new ErpBdRawMaterial();
+        erpBdMaterial1.setId(erpBdMaterial.getId());
+        erpBdMaterial1.setIsFollow(erpBdMaterial.getIsFollow());
+        erpBdRawMaterialService.updateById(erpBdMaterial1);
+
+        return CommonResult.ok();
+    }
 
 }

+ 1 - 0
huimv-farm/src/main/java/vip/xiaonuo/erp/entity/ErpBdRawMaterial.java

@@ -65,6 +65,7 @@ public class ErpBdRawMaterial implements Serializable {
     private Integer materialType;
     private Integer safeStock;
     private Integer materalId;
+    private Integer isFollow;
 
 
 

+ 1 - 1
huimv-farm/src/main/java/vip/xiaonuo/erp/entity/center/YangMaoZhiCaiGouJinE.java

@@ -7,7 +7,7 @@ import java.util.Date;
 
 @Data
 public class YangMaoZhiCaiGouJinE {
-@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date FDATE;
     //部门
     private int FPURCHASEDEPTID;

+ 33 - 0
huimv-farm/src/main/java/vip/xiaonuo/erp/entity/fengkong/FengKongKuanDao.java

@@ -0,0 +1,33 @@
+package vip.xiaonuo.erp.entity.fengkong;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FengKongKuanDao {
+
+    //合同号
+    private String FBILLNO;
+
+    //要货日期
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date FDELIVERYDATE;
+    //合同日期
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date FDATE;
+    //出库日期
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date chukuDate;
+
+    private String FNAME;
+
+    private String keHuName;
+
+    private Double FQTY;
+    private Double FALLAMOUNT;
+    private Integer FSALEORGID;
+
+
+}

+ 9 - 0
huimv-farm/src/main/java/vip/xiaonuo/erp/entity/xiaoshou/XiaoShouFaHuoJinEKeHuGongXian.java

@@ -24,6 +24,15 @@ public class XiaoShouFaHuoJinEKeHuGongXian {
     private Double FALLAMOUNTLC;
     //客户名字
     private String FNAME;
+
     private String FBILLNO;
     private String xiaoShouName;
+    private String wuLiaoName;
+
+    private Double FBillAmount;
+
+    private String FSettleCurrId;
+    private String keHuName;
+    private String fdeptname;
+    private String FSoorDerno;
 }

+ 4 - 0
huimv-farm/src/main/java/vip/xiaonuo/erp/entity/xiaoshou/XiaoShouWanChenLvJinE.java

@@ -42,4 +42,8 @@ public class XiaoShouWanChenLvJinE {
     //销售单价
     private Double xiaoShouDanJia;
 
+    private Double FBillAllAmount;
+    private Double FTaxPrice;
+    private int FSettleCurrId;
+    private String fentryid;
 }

+ 35 - 0
huimv-farm/src/main/java/vip/xiaonuo/erp/param/ErpBdMaterialEdParam.java

@@ -0,0 +1,35 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.erp.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * erp_bd_material添加参数
+ *
+ * @author 1
+ * @date  2025/03/01 14:50
+ **/
+@Getter
+@Setter
+public class ErpBdMaterialEdParam {
+
+    /** 0是大类 1 是其他 */
+    @ApiModelProperty(value = "0是大类 1 是其他", position = 5)
+    private Integer id;
+
+    private Integer isFollow;
+
+}

+ 11 - 0
huimv-farm/src/main/java/vip/xiaonuo/erp/param/ErpBdMaterialParentParam.java

@@ -34,4 +34,15 @@ public class ErpBdMaterialParentParam {
     @ApiModelProperty(value = "ORG_ID", position = 7)
     private String orgId;
 
+    private Integer type;
+
+    @ApiModelProperty(value = "当前页面", required = true)
+    private Integer pageNum;
+
+    @ApiModelProperty(value = "页面大小", required = true)
+    private Integer pageSize;
+    private String  materialName;
+
+    private Integer isFollow;
+
 }

+ 12 - 25
huimv-farm/src/main/java/vip/xiaonuo/erp/service/IErpCaiGouService.java

@@ -1,35 +1,22 @@
 package vip.xiaonuo.erp.service;
 
-public interface IErpCaiGouService {
-
-
-    void getCaiGouDingDanJinE();
-
-    void getCaiGouRuKuJinE();
-
-    void getCaiGouFaPiaoJinE();
-
-    void getLeiJiRuKu();
+import cn.hutool.core.date.DateTime;
 
-    void getShouLiaoJinE();
+import java.util.Date;
 
-    void getJiaoHuoShuLiang();
-
-    void getCaiGouShuLiang();
-
-    void getCaiGouDingDanShuLiang();
-
-    void getDaiJianShuLiang();
-
-    void getShangNianCaiGou();
+public interface IErpCaiGouService {
 
-    void getYingFuZhangKuanMingXi();
 
-    void getDanPinJiaGe();
+    void getCaiGouDingDanShuLiangJinE(Date date);
+    void getCaiGouRuku(Date date);
+    void getCaiGouFaPiao(Date date);
+    void getLeiJiRuKu(Date date);
+    void getShouLiaoJinE(Date date);
 
-    void getZuiDiKuCun();
 
-    void getCaiGouDingDanShuLiangJinE();
+    void getJiaoHuoShuLiang(Date parse);
 
-    void getCaiGouHeTongShuLiangJinE();
+    void getCaiGouShuLiang(Date parse);
+    void getYingFuZhangKuang(Date parse);
+    void getCaiGouHeTongShuLiangJinE(Date parse);
 }

+ 8 - 14
huimv-farm/src/main/java/vip/xiaonuo/erp/service/IErpCaiWuService.java

@@ -1,5 +1,7 @@
 package vip.xiaonuo.erp.service;
 
+import java.util.Date;
+
 /**
  * <p>
  *  服务类
@@ -11,21 +13,13 @@ package vip.xiaonuo.erp.service;
 public interface IErpCaiWuService {
 
 
-    void getShouRuJinE();
-
-    void getDangQianYueYingYeChengBen();
-
-    void getDagnQianYueLiRun();
-
-    void getDangQianZiJinYvE();
-
-    void getDangYueJieKuan();
-
-    void getGuoNeiWaiShouRu();
+    void getShouRuJinE(Date date);
 
-    void getChanPinZhanBi();
+    void getDangQianYueYingYeE(Date date);
+    void getDangQianYueJingLiRun(Date date);
+    void getDangQianZiJinYvE(Date date);
+    void getChanPinShouRu(String date);
+    void getGuoNeiWaiSouRu(Date date);
 
-    void getLiRunQuShi();
 
-    void getLinJinHuanKuan();
 }

+ 16 - 0
huimv-farm/src/main/java/vip/xiaonuo/erp/service/IErpFengKongService.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.erp.service;
+
+import java.util.Date;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-01-03
+ */
+public interface IErpFengKongService {
+    void getKuanDaoFaHuo(Date date);
+    void getCaiGouYvQi(Date date);
+}

+ 8 - 24
huimv-farm/src/main/java/vip/xiaonuo/erp/service/IErpKuCunService.java

@@ -1,31 +1,15 @@
 package vip.xiaonuo.erp.service;
 
-public interface IErpKuCunService {
-    void getYuanCaiLiaoKuCun();
-
-    void getYangMaoZhiKuCun();
-
-    void getYangMaoZhiGongYingShang();
-
-    void getYuanCaiLiaoDangRi();
-
-    void getChengPinDangRi();
-
-    void getYangMaoZhiDangRi();
+import cn.hutool.core.date.DateTime;
 
-    void getYuanCaiLiaoChuKu();
+import java.util.Date;
 
-    void getChengPinChuKu();
-
-    void getYangMaoZhiChuKu();
-
-    void getKuCunFenXi();
-
-    void getChuKuShuLiang();
-
-    void getWuLiaoMingXi();
+public interface IErpKuCunService {
+    void getFSAFESTOCK();
+    void getYuanCaiLiaoCunLiang(Date date);
+    void getChengPinDangRi(Date date);
 
-    void getAnQuanKuCun();
+    void getChengPinChuKu(Date parse);
 
-    void getYangMaoZhiGongYingShangYueLeiJi();
+    void getWuLiaoMingXi(Date parse);
 }

+ 3 - 1
huimv-farm/src/main/java/vip/xiaonuo/erp/service/IErpShengChanService.java

@@ -1,6 +1,8 @@
 package vip.xiaonuo.erp.service;
 
+import java.util.Date;
+
 public interface IErpShengChanService {
 
-    void getShiJiChanLiang();
+    void getShiJiChanLiang(Date date);
 }

+ 13 - 10
huimv-farm/src/main/java/vip/xiaonuo/erp/service/IErpXiaoShouService.java

@@ -1,18 +1,21 @@
 package vip.xiaonuo.erp.service;
 
-public interface IErpXiaoShouService {
-
-
-    void getWanChengLvDingDanJinE();
+import java.util.Date;
 
-    void getBaiFangKeHu();
-
-    void getFaPiaoJinE();
+public interface IErpXiaoShouService {
 
-    void getXianShodFaHboJainESheLangKeHuGongXian();
 
-    void getXiaoShouFeiYong();
+     void getWanChengLv(Date date) ;
 
-    void getYvQiHeTongMingXi();
+     void getDingDan(Date date) ;
+     void getXiaoShouFeiYong2(Date date) ;
+     void getXiaoShouFeiYong21(Date date) ;
+     void getXiaoShouFeiYong22(Date date) ;
+     void getXiaoShouFeiYong23(Date date) ;
+     void getXiaoShouFeiYong24(Date date) ;
+     void getXiaoShouFaHuoJinEKeHuGongXian(Date date) ;
+     void getXiaoShouFaPiaoJinE(Date date) ;
+     void getYvQiHeTongMingXi(Date date) ;
+     void getCaiWuYingShou(String date) ;
 
 }

+ 22 - 0
huimv-farm/src/main/java/vip/xiaonuo/erp/service/IErpZhiLiangService.java

@@ -0,0 +1,22 @@
+package vip.xiaonuo.erp.service;
+
+import java.util.Date;
+
+public interface IErpZhiLiangService {
+
+
+    void getQuailIbit(Date date);
+
+    void getCheJian();
+
+
+    void getMaterialGruop();
+
+    void getQuail();
+
+    void getReagent();
+
+    void getMaterial();
+
+    void getMaterialRaw();
+}

+ 11 - 2
huimv-farm/src/main/java/vip/xiaonuo/erp/service/impl/ErpBdMaterialServiceImpl.java

@@ -225,8 +225,17 @@ public class ErpBdMaterialServiceImpl extends ServiceImpl<ErpBdMaterialMapper, E
 
     @Override
     public List<ErpBdMaterialVo> getTreeParentId(ErpBdMaterialParentParam erpBdMaterial) {
-
-        List<ErpBdMaterial> materials = this.list(new QueryWrapper<ErpBdMaterial>().eq(StringUtils.isNotBlank(erpBdMaterial.getOrgId()), "org_id", erpBdMaterial.getOrgId()));
+        List<ErpBdMaterial> materials ;
+        if (StringUtils.isBlank(erpBdMaterial.getOrgId())){
+            erpBdMaterial.setOrgId("1891303052992876545");
+        }
+        if (ObjectUtil.isNotEmpty(erpBdMaterial.getType())&&erpBdMaterial.getType() == 1 ){
+            materials =  this.list(new QueryWrapper<ErpBdMaterial>()
+                    .eq( "org_id", erpBdMaterial.getOrgId()).like("erp_fnumber","0106"));
+        }else {
+             materials = this.list(new QueryWrapper<ErpBdMaterial>()
+                    .eq("org_id", erpBdMaterial.getOrgId()));
+        }
 
         return buildTree(materials,0);
 

+ 138 - 196
huimv-farm/src/main/java/vip/xiaonuo/erp/service/impl/ErpCaiGouServiceImpl.java

@@ -3,6 +3,7 @@ package vip.xiaonuo.erp.service.impl;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.http.HttpMethod;
@@ -52,11 +53,12 @@ public class ErpCaiGouServiceImpl implements IErpCaiGouService {
 
     @Autowired
     private ErpBdOrgMapper erpBdOrgMapper;
-    @Override
-    public void getCaiGouDingDanJinE() {
-        Date date = DateUtil.beginOfDay(new Date());  // 获取当前日期
-        // 构建URL,使用格式化的日期
-        String url = "http://127.0.0.1:9200/erp-caiGou/getCaiGouDingDanShuLiangJinE?date=" +date;
+
+
+     @Override
+    public void getCaiGouDingDanShuLiangJinE(Date date) {
+
+        String url = "http://127.0.0.1:9200/erp-caiGou/getCaiGouDingDanShuLiangJinE?date="+date;
 
         ResponseEntity<List<CaiGouDingDanShuLiangJinE>> response = restTemplate.exchange(
                 url,
@@ -66,7 +68,7 @@ public class ErpCaiGouServiceImpl implements IErpCaiGouService {
         );
         List<CaiGouDingDanShuLiangJinE> forObjects = response.getBody();
         for (CaiGouDingDanShuLiangJinE forObject : forObjects) {
-//        CaiGouDingDanShuLiangJinE forObject = forObjects.get(0);
+
             ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFPURCHASEORGID()));
             if (ObjectUtil.isEmpty(forgid))
                 continue;
@@ -77,34 +79,62 @@ public class ErpCaiGouServiceImpl implements IErpCaiGouService {
             purchasePrice.setPrice(String.format("%.2f",forObject.getDanJia()));
             priceMapper.insert(purchasePrice);
 
-            Date fdate = forObject.getFDATE();
-            PurchaseOrder purchaseOrder = orderMapper.selectOne(new QueryWrapper<PurchaseOrder>().eq("org_id", forgid.getOrgId())
-                    .between("create_time",DateUtil.beginOfDay(fdate),DateUtil.endOfDay(fdate))
-                    .eq("material",forObject.getFname()));
-            if (ObjectUtil.isEmpty(purchaseOrder)){
-                purchaseOrder =new PurchaseOrder();
-                purchaseOrder.setCreateTime(forObject.getFDATE());
-                purchaseOrder.setPurchaseMoney(String.format("%.2f",forObject.getFALLAMOUNT()));
-                purchaseOrder.setMaterial(forObject.getFname());
-                purchaseOrder.setOrgId(forgid.getOrgId());
-                purchaseOrder.setMaterialAcceptNumber(String.format("%.2f",forObject.getFQTY()));
-                purchaseOrder.setMaterialAcceptPrice(String.format("%.2f",forObject.getFALLAMOUNT()));
-                orderMapper.insert(purchaseOrder);
-            }else {
-                purchaseOrder.setCreateTime(forObject.getFDATE());
-                purchaseOrder.setMaterial(forObject.getFname());
-                purchaseOrder.setOrgId(forgid.getOrgId());
-                purchaseOrder.setPurchaseMoney(String.format("%.2f",forObject.getFALLAMOUNT()));
-                purchaseOrder.setMaterialAcceptNumber(String.format("%.2f",forObject.getFQTY()));
-                purchaseOrder.setMaterialAcceptPrice(String.format("%.2f",forObject.getFALLAMOUNT()));
-                orderMapper.updateById(purchaseOrder);
-            }
+            PurchaseOrder purchaseOrder =new PurchaseOrder();
+            purchaseOrder.setCreateTime(forObject.getCreateDate());
+            purchaseOrder.setPurchaseMoney(String.format("%.2f",forObject.getFALLAMOUNT()));
+            purchaseOrder.setMaterial(forObject.getFname());
+            purchaseOrder.setOrgId(forgid.getOrgId());
+//                purchaseOrder.setMaterialAcceptNumber(String.format("%.2f",forObject.getFQTY()));
+//                purchaseOrder.setMaterialAcceptPrice(String.format("%.2f",forObject.getFALLAMOUNT()));
+            purchaseOrder.setSupplier(forObject.getGys());
+            purchaseOrder.setFnumber(forObject.getFnumber());
+            purchaseOrder.setOrderNumber(forObject.getFBILLNO());
+            purchaseOrder.setCaiGou(forObject.getFQTY());
+            purchaseOrder.setOrderType(getOrderType(forObject.getDingDanType()));
+            orderMapper.insert(purchaseOrder);
+
+        }
+    }
+
+    private Integer getOrderType(String dingDanType) {
+        switch (dingDanType){
+            //0原辅料包材采购合同 1五金材料采购合同 2设备采购合同 3工程服务采购合同 4其他服务类采购合同 5办公用品采购合同
+            case "原辅料包材采购订单":
+                return 0;
+            case "五金材料采购订单":
+                return 1;
+            case "设备采购订单":
+                return 2;
+            case "工程服务采购订单":
+                return 3;
+            case "其他服务类采购订单":
+                return 4;
+            case "办公用品采购订单":
+                return 5;
+        }
+        return 6;
+    }
+    private Integer getHeTongType(String dingDanType) {
+        switch (dingDanType){
+            //0原辅料包材采购合同 1五金材料采购合同 2设备采购合同 3工程服务采购合同 4其他服务类采购合同 5办公用品采购合同
+            case "原辅料包材采购合同":
+                return 0;
+            case "五金材料采购合同":
+                return 1;
+            case "设备采购合同":
+                return 2;
+            case "工程服务采购合同":
+                return 3;
+            case "其他服务类采购合同":
+                return 4;
+            case "办公用品采购合同":
+                return 5;
         }
+        return 6;
     }
 
-    @Override
-    public void getCaiGouRuKuJinE() {
-        Date date = DateUtil.beginOfDay(new Date());  // 获取当前日期
+     @Override
+    public void  getCaiGouRuku(Date date){
         ResponseEntity<List<CaiGouRuKu>> response = restTemplate.exchange(
                 "http://127.0.0.1:9200/erp-caiGou/getCaiGouRuku?date="+date,
                 HttpMethod.GET,
@@ -113,35 +143,27 @@ public class ErpCaiGouServiceImpl implements IErpCaiGouService {
         );
         List<CaiGouRuKu> forObjects = response.getBody();
         for (CaiGouRuKu forObject : forObjects) {
-            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFDEMANDORGID()));
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFSTOCKORGID()));
             if (ObjectUtil.isEmpty(forgid))
                 continue;
-            List<PurchaseOrder> purchaseOrders = orderMapper.selectList(new QueryWrapper<PurchaseOrder>().eq("org_id", forgid.getOrgId())
-                    .between("create_time",DateUtil.beginOfDay(forObject.getFDATE()),DateUtil.endOfDay(forObject.getFDATE())));
-            if (ObjectUtil.isEmpty(purchaseOrders)){
 
-                PurchaseOrder  purchaseOrder =new PurchaseOrder();
-                purchaseOrder.setCreateTime(forObject.getFDATE());
-                if (forObject.getFBILLAMOUNTLC()!=null){
-                    purchaseOrder.setEnterPrice(String.format("%.2f",forObject.getFBILLAMOUNTLC()));
+            PurchaseOrder purchaseOrder = new PurchaseOrder();
+            purchaseOrder.setEnterNumber(String.format("%.2f",forObject.getFQTY()));
+            purchaseOrder.setEnterPrice(String.format("%.2f",forObject.getFBILLAMOUNTLC()));
+            purchaseOrder.setRemarkRk(forObject.getPoorderNo());
+            purchaseOrder.setMaterial(forObject.getFNAME());
+            purchaseOrder.setFnumber(forObject.getFNUMBER());
+            purchaseOrder.setRkNo(forObject.getFBILLNO());
+            purchaseOrder.setOrgId(forgid.getOrgId());
+            purchaseOrder.setCreateTime(forObject.getFDATE());
+            orderMapper.insert(purchaseOrder);
 
-                }
-                purchaseOrder.setOrgId(forgid.getOrgId());
-                orderMapper.insert(purchaseOrder);
-            }else {
-                if (forObject.getFBILLAMOUNTLC()!=null){
-                    PurchaseOrder    purchaseOrder = purchaseOrders.get(0);
-                    purchaseOrder.setEnterPrice(String.format("%.2f",forObject.getFBILLAMOUNTLC()));
-                    orderMapper.updateById(purchaseOrder);
-                }
-
-            }
         }
+
     }
 
-    @Override
-    public void getCaiGouFaPiaoJinE() {
-        Date date = DateUtil.beginOfDay(new Date());  // 获取当前日期
+     @Override
+    public void  getCaiGouFaPiao(Date date ){
         ResponseEntity<List<FaPiaoJinE>> response = restTemplate.exchange(
                 "http://127.0.0.1:9200/erp-caiGou/getCaiGouFaPiao?date="+date,
                 HttpMethod.GET,
@@ -154,26 +176,22 @@ public class ErpCaiGouServiceImpl implements IErpCaiGouService {
             ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFPURCHASEORGID()));
             if (ObjectUtil.isEmpty(forgid))
                 continue;
-            List<PurchaseOrder> purchaseOrders = orderMapper.selectList(new QueryWrapper<PurchaseOrder>().eq("org_id", forgid.getOrgId())
-                    .between("create_time",DateUtil.beginOfDay(forObject.getFDATE()),DateUtil.endOfDay(forObject.getFDATE())));
-            if (ObjectUtil.isEmpty(purchaseOrders)){
-                PurchaseOrder purchaseOrder =new PurchaseOrder();
-                purchaseOrder.setCreateTime(forObject.getFDATE());
-                purchaseOrder.setInvoicePrice(String.format("%.2f",forObject.getFALLAMOUNT()));
-                purchaseOrder.setOrgId(forgid.getOrgId());
-                orderMapper.insert(purchaseOrder);
-            }else {
-                PurchaseOrder purchaseOrder = purchaseOrders.get(0);
-                purchaseOrder.setInvoicePrice(String.format("%.2f",forObject.getFALLAMOUNT()));
-                orderMapper.updateById(purchaseOrder);
+            if (forObject.getFALLAMOUNT() ==null){
+                continue;
             }
+            PurchaseOrder purchaseOrder =new PurchaseOrder();
+            purchaseOrder.setCreateTime(forObject.getFDATE());
+            purchaseOrder.setInvoicePrice(String.format("%.2f",forObject.getFALLAMOUNT()));
+            purchaseOrder.setOrgId(forgid.getOrgId());
+
+            orderMapper.insert(purchaseOrder);
+
         }
 
     }
 
-    @Override
-    public void getLeiJiRuKu() {
-        Date date = DateUtil.beginOfDay(new Date());
+   @Override
+    public void  getLeiJiRuKu(Date date){
         ResponseEntity<List<LeiJiRuKu>> response = restTemplate.exchange(
                 "http://127.0.0.1:9200/erp-caiGou/getLeiJiRuKu?date="+date,
                 HttpMethod.GET,
@@ -200,12 +218,10 @@ public class ErpCaiGouServiceImpl implements IErpCaiGouService {
                 orderMapper.updateById(purchaseOrder);
             }
         }
-
     }
-
-    @Override
-    public void getShouLiaoJinE() {
-        Date date = DateUtil.beginOfDay(new Date());
+    //-- 1
+     @Override
+    public void  getShouLiaoJinE(Date date){
         ResponseEntity<List<ShouLiaoJinE>> response = restTemplate.exchange(
                 "http://127.0.0.1:9200/erp-caiGou/getShouLiaoJinE?date="+date,
                 HttpMethod.GET,
@@ -218,26 +234,23 @@ public class ErpCaiGouServiceImpl implements IErpCaiGouService {
             ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFSTOCKORGID()));
             if (ObjectUtil.isEmpty(forgid))
                 continue;
-            List<PurchaseOrder> purchaseOrders = orderMapper.selectList(new QueryWrapper<PurchaseOrder>().eq("org_id", forgid.getOrgId())
-                    .between("create_time",DateUtil.beginOfDay(forObject.getFDATE()),DateUtil.endOfDay(forObject.getFDATE())));
-            if (ObjectUtil.isEmpty(purchaseOrders)){
-                PurchaseOrder purchaseOrder =new PurchaseOrder();
-                purchaseOrder.setCreateTime(forObject.getFDATE());
-                purchaseOrder.setMaterialAcceptPrice(String.format("%.2f",forObject.getFINSTOCKQTY()));
-                purchaseOrder.setOrgId(forgid.getOrgId());
-                orderMapper.insert(purchaseOrder);
-            }else {
-                PurchaseOrder purchaseOrder = purchaseOrders.get(0);
-                purchaseOrder.setMaterialAcceptPrice(String.format("%.2f",forObject.getFINSTOCKQTY()));
-                orderMapper.updateById(purchaseOrder);
-            }
-        }
+            PurchaseOrder purchaseOrder = new PurchaseOrder();
+            purchaseOrder.setMaterialAcceptNumber(String.format("%.2f",forObject.getFINSTOCKQTY()));
+            purchaseOrder.setMaterialAcceptPrice(String.format("%.2f",forObject.getFBillAllAMONUTLC()));
+            purchaseOrder.setRemarkRk(forObject.getFOrderBillNo());
+            purchaseOrder.setMaterial(forObject.getFNAME());
+            purchaseOrder.setFnumber(forObject.getFNUMBER());
+            purchaseOrder.setHtNo(forObject.getFBILLNO());
+            purchaseOrder.setCreateTime(forObject.getFDATE());
+            purchaseOrder.setOrgId(forgid.getOrgId());
+//            purchaseOrder.setHtNo(forObject.getFBILLNO());
+            orderMapper.insert(purchaseOrder);
 
+        }
     }
 
-    @Override
-    public void getJiaoHuoShuLiang() {
-        Date date = DateUtil.beginOfDay(new Date());
+     @Override
+    public void  getJiaoHuoShuLiang(Date date){
         ResponseEntity<List<JiaoHuoShuliang>> response = restTemplate.exchange(
                 "http://127.0.0.1:9200/erp-caiGou/getJiaoHuoShuLiang?date="+date,
                 HttpMethod.GET,
@@ -270,12 +283,11 @@ public class ErpCaiGouServiceImpl implements IErpCaiGouService {
             }
             orderMapper.updateById(purchaseOrder);
         }
-
     }
 
-    @Override
-    public void getCaiGouShuLiang() {
-        Date date = DateUtil.beginOfDay(new Date());
+
+     @Override
+    public void  getCaiGouShuLiang(Date date){
         ResponseEntity<List<CaiGouShuLiang>> response = restTemplate.exchange(
                 "http://127.0.0.1:9200/erp-caiGou/getCaiGouShuLiang?date="+date,
                 HttpMethod.GET,
@@ -305,54 +317,11 @@ public class ErpCaiGouServiceImpl implements IErpCaiGouService {
             }
             orderMapper.updateById(purchaseOrder);
         }
-
-    }
-
-    @Override
-    public void getCaiGouDingDanShuLiang() {
-        Date date = DateUtil.beginOfDay(new Date());
-        ResponseEntity<List<CaiGouDingDanShuLiangJinE>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-caiGou/getCaiGouDingDanShuLiangJinE?date="+date,
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<CaiGouDingDanShuLiangJinE>>() {}
-        );
-        List<CaiGouDingDanShuLiangJinE> forObjects = response.getBody();
-        System.out.println(forObjects);
-
-    }
-
-    @Override
-    public void getDaiJianShuLiang() {
-        Date date = DateUtil.beginOfDay(new Date());
-        ResponseEntity<List<DaiJianShuLiang>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-caiGou/getDaiJianShuLiang?date="+date,
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<DaiJianShuLiang>>() {}
-        );
-        List<DaiJianShuLiang> forObjects = response.getBody();
-        System.out.println(forObjects);
-
     }
 
-    @Override
-    public void getShangNianCaiGou() {
-        Date date = DateUtil.beginOfDay(new Date());
-        ResponseEntity<List<CaiGouYueJun>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-caiGou/getCaiGouYueJun?date="+date,
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<CaiGouYueJun>>() {}
-        );
-        List<CaiGouYueJun> forObjects = response.getBody();
-        System.out.println(forObjects);
-
-    }
-
-    @Override
-    public void getYingFuZhangKuanMingXi() {
-        Date date = DateUtil.beginOfDay(new Date());
+    //重新写了 TODO
+     @Override
+    public void  getYingFuZhangKuang(Date date){
         ResponseEntity<List<YingFuZhangKuan>> response = restTemplate.exchange(
                 "http://127.0.0.1:9200/erp-caiGou/getYingFuZhangKuang?date="+date,
                 HttpMethod.GET,
@@ -366,66 +335,34 @@ public class ErpCaiGouServiceImpl implements IErpCaiGouService {
             ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFPURCHASEORGID()));
             if (ObjectUtil.isEmpty(forgid))
                 continue;
-//
-//            PurchasePay purchasePay = new PurchasePay();
-//            purchasePay.setCreateTime(forObject.getFDATE());
-//            purchasePay.setEndTime(forObject.getFBOOKINGDATE());
-//            purchasePay.setOrgId(forgid.getOrgId());
-//            purchasePay.setPayableNumber(String.format("%.2f",forObject.getFNOTVERIFICATEAMOUNT()));
-//            purchasePay.setPayableObject(forObject.getFBGLSHSJDW());
-//            purchasePay.setPurchaseMaterial(forObject.getWuLiaoName());
-//            purchasePay.setPurchaseNumber(String.format("%.2f",forObject.getFQTY()));
-//            if (forObject.getFQTY() != 0.0){
-//                purchasePay.setPrice(String.format("%.2f",forObject.getFNOTVERIFICATEAMOUNT() / forObject.getFQTY()));
-//            }
-//            payMapper.insert(purchasePay);
 
-        }
-
-    }
-
-    @Override
-    public void getDanPinJiaGe() {
-        ResponseEntity<List<CaiGouDingDanShuLiangJinE>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-caiGou/getCaiGouDingDanShuLiangJinE?date=",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<CaiGouDingDanShuLiangJinE>>() {}
-        );
-        List<CaiGouDingDanShuLiangJinE> forObjects = response.getBody();
-        System.out.println(forObjects);
-
-    }
-
-    @Override
-    public void getZuiDiKuCun() {
-        ResponseEntity<List<ZuiDiKuChun>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-caiGou/getZuiDiKuChun?date=",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<ZuiDiKuChun>>() {}
-        );
-        List<ZuiDiKuChun> forObjects = response.getBody();
-        System.out.println(forObjects);
-
-    }
-
-    @Override
-    public void getCaiGouDingDanShuLiangJinE() {
-        ResponseEntity<List<CaiGouDingDanShuLiangJinE>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-caiGou/getCaiGouDingDanShuLiangJinE?date=",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<CaiGouDingDanShuLiangJinE>>() {}
-        );
-        List<CaiGouDingDanShuLiangJinE> forObjects = response.getBody();
-        System.out.println(forObjects);
+            PurchasePay purchasePay = new PurchasePay();
+            purchasePay.setCreateTime(forObject.getFDATE());
+            purchasePay.setEndTime(forObject.getFENDDATE());
+            purchasePay.setOrgId(forgid.getOrgId());
+            purchasePay.setPayableNumber(String.format("%.2f",forObject.getFALLAMOUNTFOR()));
+            purchasePay.setPayableObject(forObject.getGysName());
+            purchasePay.setPurchaseMaterial(forObject.getFNAME());
+            purchasePay.setPurchaseNumber(String.format("%.2f",forObject.getFPriceQty()));
+            purchasePay.setPrice(String.format("%.2f",forObject.getFPrice() ));
+            purchasePay.setFTaxPrice(String.format("%.2f",forObject.getFTaxPrice() ));
+
+            purchasePay.setFBILLNO(forObject.getFBILLNO());
+            purchasePay.setFPURCHASEORGID(forObject.getFPURCHASEORGID());
+            purchasePay.setFPAYORGID(forObject.getFPAYORGID());
+            purchasePay.setFSUPPLIERID(forObject.getFSUPPLIERID());
+            purchasePay.setFSourceBillNo(forObject.getFSourceBillNo());
+            purchasePay.setFBGLCONTRACTL(forObject.getFBGLCONTRACTL());
+            purchasePay.setFMATERIALID(forObject.getFMATERIALID());
+            purchasePay.setFOrderEntryID(forObject.getFOrderEntryID());
+            purchasePay.setFSPECIFICATION(forObject.getFSPECIFICATION());
+            payMapper.insert(purchasePay);
 
+        }
     }
 
-    @Override
-    public void getCaiGouHeTongShuLiangJinE() {
-        Date date = DateUtil.beginOfDay(new Date());
+     @Override
+    public void  getCaiGouHeTongShuLiangJinE(Date date){
         ResponseEntity<List<CaiGouDingDanShuLiangJinE>> response = restTemplate.exchange(
                 "http://127.0.0.1:9200/erp-caiGou/getCaiGouHeTongShuLiangJinE?date="+date,
                 HttpMethod.GET,
@@ -445,8 +382,13 @@ public class ErpCaiGouServiceImpl implements IErpCaiGouService {
             purchaseContract.setMaterialNumber(String.format("%.2f",forObject.getFQTY()));
             purchaseContract.setMaterialType(forObject.getFname());
             purchaseContract.setOrgId(forgid.getOrgId());
+            purchaseContract.setOrderType(getHeTongType(forObject.getDingDanType()));
+            purchaseContract.setFnumber(forObject.getFnumber());
+            purchaseContract.setContractOrder(forObject.getFBILLNO());
+
             contractMapper.insert(purchaseContract);
         }
 
     }
+
 }

+ 156 - 62
huimv-farm/src/main/java/vip/xiaonuo/erp/service/impl/ErpCaiWuServiceImpl.java

@@ -1,11 +1,15 @@
 package vip.xiaonuo.erp.service.impl;
 
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
+import vip.xiaonuo.erp.entity.ErpBdOrg;
 import vip.xiaonuo.erp.entity.caigou.*;
 import vip.xiaonuo.erp.entity.center.CaiGouJinE;
 import vip.xiaonuo.erp.entity.center.DangQianYvQi;
@@ -15,9 +19,16 @@ import vip.xiaonuo.erp.entity.voucher.ChanPinShouRu;
 import vip.xiaonuo.erp.entity.voucher.ErpVoucher;
 import vip.xiaonuo.erp.entity.voucher.JingLiRunQuShi;
 import vip.xiaonuo.erp.entity.voucher.LinJinHuanKuanQi;
+import vip.xiaonuo.erp.mapper.ErpBdOrgMapper;
 import vip.xiaonuo.erp.service.IErpCaiWuService;
 import vip.xiaonuo.erp.service.IErpHeXinService;
+import vip.xiaonuo.money.entity.MoneyBusiness;
+import vip.xiaonuo.money.entity.MoneyProduce;
+import vip.xiaonuo.money.entity.MoneyProduce0422;
+import vip.xiaonuo.money.entity.MoneyProduceIncome;
+import vip.xiaonuo.money.mapper.*;
 
+import java.util.Date;
 import java.util.List;
 
 
@@ -25,121 +36,204 @@ import java.util.List;
 public class ErpCaiWuServiceImpl implements IErpCaiWuService {
     @Autowired
     private RestTemplate restTemplate;
+    @Autowired
+    private ErpBdOrgMapper erpBdOrgMapper;
+    @Autowired
+    private MoneyBusinessMapper businessMapper;
 
-    @Override
-    public void getShouRuJinE() {
-        ResponseEntity<List<ErpVoucher>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-voucher/getShouRuJinE?date=",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<ErpVoucher>>() {}
-        );
-        List<ErpVoucher> forObjects = response.getBody();
-        System.out.println(forObjects);
+    @Autowired
+    private MoneyBorrowWarningMapper borrowWarningMapper;
+    @Autowired
+    private MoneyProduceMapper produceMapper;
+    @Autowired
+    private MoneyProduceIncomeMapper produceIncomeMapper;
 
-    }
 
-    @Override
-    public void getDangQianYueYingYeChengBen() {
+   @Override
+    public void  getShouRuJinE(Date date){
         ResponseEntity<List<ErpVoucher>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-voucher/getDangQianYueYingYeE?date=",
+                "http://127.0.0.1:9200/erp-voucher/getShouRuJinE?date="+date,
                 HttpMethod.GET,
                 null,
                 new ParameterizedTypeReference<List<ErpVoucher>>() {}
         );
         List<ErpVoucher> forObjects = response.getBody();
         System.out.println(forObjects);
-
+        for (ErpVoucher forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFacctorgid()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            MoneyBusiness moneyBusiness = new MoneyBusiness();
+            moneyBusiness.setOrgId(forgid.getOrgId());
+            moneyBusiness.setCreateTime(forObject.getFDATE());
+            moneyBusiness.setBusinessIncome(String.format("%.2f",forObject.getFcredit()));
+            businessMapper.insert(moneyBusiness);
+        }
     }
 
     @Override
-    public void getDagnQianYueLiRun() {
+    public void  getDangQianYueYingYeE(Date date){
         ResponseEntity<List<ErpVoucher>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-voucher/getDangQianYueJingLiRun?date=",
+                "http://127.0.0.1:9200/erp-voucher/getDangQianYueYingYeE?date="+date,
                 HttpMethod.GET,
                 null,
                 new ParameterizedTypeReference<List<ErpVoucher>>() {}
         );
         List<ErpVoucher> forObjects = response.getBody();
         System.out.println(forObjects);
-
+        for (ErpVoucher forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFacctorgid()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            MoneyBusiness moneyBusiness = new MoneyBusiness();
+            moneyBusiness.setOrgId(forgid.getOrgId());
+            moneyBusiness.setCreateTime(forObject.getFDATE());
+            moneyBusiness.setBusinessCost(String.format("%.2f",forObject.getFcredit()));
+            businessMapper.insert(moneyBusiness);
+        }
     }
-
-    @Override
-    public void getDangQianZiJinYvE() {
+   @Override
+    public void  getDangQianYueJingLiRun(Date date){
         ResponseEntity<List<ErpVoucher>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-voucher/getDangQianZiJinYvE?date=",
+                "http://127.0.0.1:9200/erp-voucher/getDangQianYueJingLiRun?date="+date,
                 HttpMethod.GET,
                 null,
                 new ParameterizedTypeReference<List<ErpVoucher>>() {}
         );
         List<ErpVoucher> forObjects = response.getBody();
         System.out.println(forObjects);
-
+        for (ErpVoucher forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFacctorgid()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            MoneyBusiness moneyBusiness = new MoneyBusiness();
+            moneyBusiness.setOrgId(forgid.getOrgId());
+            moneyBusiness.setCreateTime(forObject.getFDATE());
+            moneyBusiness.setProfit(String.format("%.2f",forObject.getFcredit()));
+            businessMapper.insert(moneyBusiness);
+        }
     }
-
-    @Override
-    public void getDangYueJieKuan() {
+   @Override
+    public void  getDangQianZiJinYvE(Date date){
         ResponseEntity<List<ErpVoucher>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-voucher/getDangYueJieKuanYvE?date=",
+                "http://127.0.0.1:9200/erp-voucher/getDangQianZiJinYvE?date="+date,
                 HttpMethod.GET,
                 null,
                 new ParameterizedTypeReference<List<ErpVoucher>>() {}
         );
         List<ErpVoucher> forObjects = response.getBody();
         System.out.println(forObjects);
-
+        for (ErpVoucher forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFacctorgid()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            MoneyBusiness moneyBusiness = new MoneyBusiness();
+            moneyBusiness.setOrgId(forgid.getOrgId());
+            String yearperiod = forObject.getYearperiod();
+
+            moneyBusiness.setCreateTime( DateUtil.parse(yearperiod,"yyyyMM"));
+            moneyBusiness.setBalance(String.format("%.2f",forObject.getEndBalance()));
+            businessMapper.insert(moneyBusiness);
+        }
     }
 
-    @Override
-    public void getGuoNeiWaiShouRu() {
-        ResponseEntity<List<ErpVoucher>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-voucher/getGuoNeiWaiSouRu?date=",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<ErpVoucher>>() {}
-        );
-        List<ErpVoucher> forObjects = response.getBody();
-        System.out.println(forObjects);
+    @Autowired
+    private MoneyProduce0422Mapper moneyProduce0422Mapper;
 
-    }
 
-    @Override
-    public void getChanPinZhanBi() {
+   @Override
+    public void  getChanPinShouRu(String date){
         ResponseEntity<List<ChanPinShouRu>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-voucher/getChanPinShouRu?date=",
+                "http://127.0.0.1:9200/erp-voucher/getChanPinShouRu?date="+date,
                 HttpMethod.GET,
                 null,
                 new ParameterizedTypeReference<List<ChanPinShouRu>>() {}
         );
+        //'50万IU/G饲料添加剂VD3微粒','NF级胆固醇','饲料级胆固醇91%',
+        // '25-羟基VD3原','4000万IU/G胆钙化醇',
+        // '维生素D3原','蜡丸','100万IU/G复配营养强化剂MO','饲料级胆固醇80%','化妆品级羊毛醇'
         List<ChanPinShouRu> forObjects = response.getBody();
-        System.out.println(forObjects);
-
+        for (ChanPinShouRu forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFuseorgid()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            Date yearperiod = DateUtil.parse(forObject.getYearperiod(), "yyyyMM");
+            MoneyProduce0422 moneyProduce = new MoneyProduce0422();
+            moneyProduce.setOrgId(forgid.getOrgId());
+            moneyProduce.setCreateTime(yearperiod);
+            moneyProduce.setMaterialName(forObject.getFname());
+            if (ObjectUtil.isNotEmpty(forObject.getFcredit())){
+                moneyProduce.setMaterialAmount(String.format("%.2f",forObject.getFcredit()));
+            }
+            if (ObjectUtil.isNotEmpty(forObject.getFcreditqty())){
+                moneyProduce.setMaterialQty(String.format("%.2f",forObject.getFcreditqty()));
+            }
+
+            moneyProduce.setMaterialType(getMaterType(forObject.getFname()));
+            moneyProduce0422Mapper.insert(moneyProduce);
+
+
+            MoneyProduceIncome moneyProduceIncome = new MoneyProduceIncome();
+            moneyProduceIncome.setOrgId(forgid.getOrgId());
+            moneyProduceIncome.setCreateTime(yearperiod);
+
+            if ("NF级胆固醇".equals(forObject.getFname())){
+                moneyProduceIncome.setNfCholesterol(String.format("%.2f",forObject.getFcredit()));
+            }else if (forObject.getFname().contains("饲料级胆固醇")){
+                moneyProduceIncome.setBreedCholesterol(String.format("%.2f",forObject.getFcredit()));
+            }else if (forObject.getFname().contains("化妆品级羊毛醇")){
+                moneyProduceIncome.setSheepAlcohol(String.format("%.2f",forObject.getFcredit()));
+            }else {
+                moneyProduceIncome.setOther(String.format("%.2f",forObject.getFcredit()));
+            }
+            produceIncomeMapper.insert(moneyProduceIncome);
+        }
     }
 
-    @Override
-    public void getLiRunQuShi() {
-        ResponseEntity<List<JingLiRunQuShi>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-voucher/JingLiRunQuShi?date=",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<JingLiRunQuShi>>() {}
-        );
-        List<JingLiRunQuShi> forObjects = response.getBody();
-        System.out.println(forObjects);
-
+    private Integer getMaterType(String fname) {
+        if ("NF级胆固醇".equals(fname)){
+            return 0;
+        }
+        if ("羊毛酸异丙酯".equals(fname)){
+            return 4;
+        }
+        if (fname.contains( "饲料级胆固醇")){
+            return 1;
+        }
+        if (fname.contains( "羊毛醇")){
+            return 2;
+        }
+        if (fname.contains( "羊毛酸")){
+            return 3;
+        }
+        return 5;
     }
 
-    @Override
-    public void getLinJinHuanKuan() {
-        ResponseEntity<List<LinJinHuanKuanQi>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-voucher/getLinJinHuanKuan?date=",
+   @Override
+    public void  getGuoNeiWaiSouRu(Date date){
+        ResponseEntity<List<ErpVoucher>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-voucher/getGuoNeiWaiSouRu?date="+date,
                 HttpMethod.GET,
                 null,
-                new ParameterizedTypeReference<List<LinJinHuanKuanQi>>() {}
+                new ParameterizedTypeReference<List<ErpVoucher>>() {}
         );
-        List<LinJinHuanKuanQi> forObjects = response.getBody();
-        System.out.println(forObjects);
 
+        //'国内销售收入','国内销售收入2','国外销售收入'
+        List<ErpVoucher> forObjects = response.getBody();
+        for (ErpVoucher forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFacctorgid()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+
+            MoneyProduce moneyProduce = new MoneyProduce();
+            moneyProduce.setOrgId(forgid.getOrgId());
+            moneyProduce.setCreateTime(forObject.getFDATE());
+            if ("国内销售收入".equals(forObject.getFNAME())||"国内销售收入2".equals(forObject.getFNAME())){
+                moneyProduce.setInMoney(String.format("%.2f",forObject.getFcredit()));
+            } else {
+                moneyProduce.setOutMoney(String.format("%.2f",forObject.getFcredit()));
+            }
+            produceMapper.insert(moneyProduce);
+        }
     }
 }

+ 152 - 0
huimv-farm/src/main/java/vip/xiaonuo/erp/service/impl/ErpFengKongServiceImpl.java

@@ -0,0 +1,152 @@
+package vip.xiaonuo.erp.service.impl;
+
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+import vip.xiaonuo.erp.entity.*;
+import vip.xiaonuo.erp.entity.fengkong.FengKongKuanDao;
+import vip.xiaonuo.erp.entity.voucher.ErpMaterial;
+import vip.xiaonuo.erp.mapper.*;
+import vip.xiaonuo.erp.service.IErpFengKongService;
+import vip.xiaonuo.erp.service.IErpZhiLiangService;
+import vip.xiaonuo.production.entity.ProduceLocation;
+import vip.xiaonuo.production.mapper.ProduceLocationMapper;
+import vip.xiaonuo.quality.entity.ErpBdQuail;
+import vip.xiaonuo.quality.entity.QualityFenxibaogao;
+import vip.xiaonuo.quality.entity.QualityReagentStock;
+import vip.xiaonuo.quality.entity.vo.ErpQualiQm;
+import vip.xiaonuo.quality.mapper.ErpBdQuailMapper;
+import vip.xiaonuo.quality.mapper.QualityFenxibaogaoMapper;
+import vip.xiaonuo.quality.mapper.QualityReagentStockMapper;
+import vip.xiaonuo.risk.entity.RiskContract;
+import vip.xiaonuo.risk.entity.RiskContractWarning;
+import vip.xiaonuo.risk.mapper.RiskContractMapper;
+import vip.xiaonuo.risk.mapper.RiskContractWarningMapper;
+import vip.xiaonuo.sale.entity.SaleReceive;
+import vip.xiaonuo.sale.mapper.SaleReceiveMapper;
+
+import java.util.Date;
+import java.util.List;
+
+
+@Service
+public class ErpFengKongServiceImpl implements IErpFengKongService {
+
+    @Autowired
+    private RestTemplate restTemplate;
+    @Autowired
+    private ErpBdOrgMapper erpBdOrgMapper;
+    @Autowired
+    private RiskContractMapper riskContractMapper;
+    @Autowired
+    private RiskContractWarningMapper warningMapper;
+
+    //风控款到发货
+     @Override
+    public void  getKuanDaoFaHuo(Date date){
+        ResponseEntity<List<FengKongKuanDao>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-fengKong/getKuanDaoFaHuo?date="+date,
+                HttpMethod.GET,
+                null,
+                new ParameterizedTypeReference<List<FengKongKuanDao>>() {}
+        );
+        List<FengKongKuanDao> forObjects = response.getBody();
+        for (FengKongKuanDao erpMaterial : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", erpMaterial.getFSALEORGID()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            RiskContract riskContract = new RiskContract();
+            riskContract.setAllmount(erpMaterial.getFALLAMOUNT());
+            riskContract.setContractOrder(erpMaterial.getFBILLNO());
+            riskContract.setCreateTime(erpMaterial.getFDATE());
+            riskContract.setDeliverTime(erpMaterial.getChukuDate());
+            riskContract.setEndTime(erpMaterial.getFDELIVERYDATE());
+            riskContract.setFname(erpMaterial.getFNAME());
+            riskContract.setKehu(erpMaterial.getKeHuName());
+            riskContract.setOrgId(forgid.getOrgId());
+            riskContract.setQty(erpMaterial.getFQTY());
+            riskContract.setOverdueDay(getDay(erpMaterial.getFDELIVERYDATE(),erpMaterial.getChukuDate()));
+            riskContractMapper.insert(riskContract);
+        }
+
+    }
+
+
+    @Autowired
+    private SaleReceiveMapper saleReceiveMapper;
+
+    //风控逾期合同
+     @Override
+    public void  getCaiGouYvQi(Date date){
+        ResponseEntity<List<FengKongKuanDao>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-fengKong/getCaiGouYvQi?date="+date,
+                HttpMethod.GET,
+                null,
+                new ParameterizedTypeReference<List<FengKongKuanDao>>() {}
+        );
+        List<FengKongKuanDao> forObjects = response.getBody();
+        for (FengKongKuanDao erpMaterial : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", erpMaterial.getFSALEORGID()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            //风控
+            RiskContractWarning riskContract = new RiskContractWarning();
+
+            riskContract.setAllmount(erpMaterial.getFALLAMOUNT());
+            riskContract.setContractOrder(erpMaterial.getFBILLNO());
+            riskContract.setCreateTime(erpMaterial.getFDATE());
+            riskContract.setOverdueTime(erpMaterial.getFDELIVERYDATE());
+//            riskContract.setEndTime(erpMaterial.getFDELIVERYDATE());
+            riskContract.setFname(erpMaterial.getFNAME());
+            riskContract.setCustomer(erpMaterial.getKeHuName());
+            riskContract.setKehu(erpMaterial.getKeHuName());
+            riskContract.setOrgId(forgid.getOrgId());
+            riskContract.setQty(erpMaterial.getFQTY());
+            riskContract.setChuku(erpMaterial.getChukuDate());
+            riskContract.setOverdueMoney(""+
+                    erpMaterial.getFALLAMOUNT());
+
+            warningMapper.insert(riskContract);
+            //销售
+            SaleReceive saleReceive = new SaleReceive();
+            saleReceive.setCreateTime(erpMaterial.getFDATE());
+            saleReceive.setOrgId(forgid.getOrgId());
+            saleReceive.setPaymentMoney(String.format("%.2f",erpMaterial.getFALLAMOUNT()));
+            Integer day = getDay(erpMaterial.getFDELIVERYDATE(), erpMaterial.getChukuDate());
+
+            saleReceive.setReceiveDay(day+"");
+
+            if(day<=0){
+                saleReceive.setReceiveMoney(String.format("%.2f",erpMaterial.getFALLAMOUNT()));
+
+            }
+            saleReceive.setReceiveOrder(erpMaterial.getFBILLNO());
+
+            saleReceiveMapper.insert(saleReceive);
+
+        }
+
+    }
+    private  Integer getDay(Date start ,Date endDate){
+
+        if (ObjectUtil.isNotEmpty(start)&&ObjectUtil.isNotEmpty(endDate)){
+            // 计算两个日期之间相差的天数(带正负号)
+            long betweenDays = DateUtil.between(start, endDate, DateUnit.DAY);
+            // 判断日期的先后顺序,决定正负号
+            if ( start.before(endDate)) {
+                return (int)betweenDays;
+            }
+        }
+        return 0;
+    }
+
+
+
+}

+ 359 - 169
huimv-farm/src/main/java/vip/xiaonuo/erp/service/impl/ErpKuCunServiceImpl.java

@@ -1,24 +1,24 @@
 package vip.xiaonuo.erp.service.impl;
 
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.sun.xml.bind.v2.runtime.output.SAXOutput;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
-import vip.xiaonuo.erp.entity.center.CaiGouJinE;
-import vip.xiaonuo.erp.entity.center.DangQianYvQi;
-import vip.xiaonuo.erp.entity.center.XiaoShouE;
-import vip.xiaonuo.erp.entity.center.YangMaoZhiCaiGouJinE;
+import vip.xiaonuo.erp.entity.ErpBdOrg;
+import vip.xiaonuo.erp.entity.ErpBdRawMaterial;
 import vip.xiaonuo.erp.entity.kucun.*;
-import vip.xiaonuo.erp.entity.voucher.ErpVoucher;
+import vip.xiaonuo.erp.mapper.ErpBdOrgMapper;
+import vip.xiaonuo.erp.mapper.ErpBdRawMaterialMapper;
 import vip.xiaonuo.erp.service.IErpKuCunService;
-import vip.xiaonuo.warehouse.entity.WarehouseIncomStock;
-import vip.xiaonuo.warehouse.entity.WarehouseStockDetail;
-import vip.xiaonuo.warehouse.mapper.WarehouseIncomStockMapper;
-import vip.xiaonuo.warehouse.mapper.WarehouseOutStockMapper;
-import vip.xiaonuo.warehouse.mapper.WarehouseStockDetailMapper;
-import vip.xiaonuo.warehouse.mapper.WarehouseStockMapper;
+import vip.xiaonuo.warehouse.entity.*;
+import vip.xiaonuo.warehouse.entity.vo.FSAFESTOCK;
+import vip.xiaonuo.warehouse.mapper.*;
 
 import java.util.Date;
 import java.util.List;
@@ -26,132 +26,280 @@ import java.util.List;
 
 @Service
 public class ErpKuCunServiceImpl implements IErpKuCunService {
+
+
     @Autowired
     private RestTemplate restTemplate;
     @Autowired
+    private ErpBdOrgMapper erpBdOrgMapper;
+    @Autowired
     private WarehouseIncomStockMapper incomStockMapper;
     @Autowired
     private WarehouseOutStockMapper outStockMapper;
     @Autowired
     private WarehouseStockMapper stockMapper;
     @Autowired
+    private WarehouseMaterialStockMapper materialStockMapper;
+    @Autowired
     private WarehouseStockDetailMapper stockDetailMapper;
+    @Autowired
+    private WarehouseMaterialOutStockMapper materialOutStockMapper;
+    @Autowired
+    private WarehouseMaterialInStockMapper materialInStockMapper;
+    @Autowired
+    private WarehouseStockSecondMapper stockSecondMapper;
+    @Autowired
+    private ErpBdRawMaterialMapper erpBdRawMaterialMapper;
 
-    @Override
-    public void getYuanCaiLiaoKuCun() {
-        ResponseEntity<List<YuanCaiLiaoKuCun>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-kucun/getYuanCaiLiaoCunLiang?date=",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<YuanCaiLiaoKuCun>>() {}
-        );
-        List<YuanCaiLiaoKuCun> forObjects = response.getBody();
-        System.out.println(forObjects);
-
+    @Autowired
+    private WarehouseWarningMapper warehouseWarningMapper;
 
-    }
 
+    //获取安全库存
     @Override
-    public void getYangMaoZhiKuCun() {
-        ResponseEntity<List<YangMaoZhiChuKu>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-kucun/getYangMaoZhiKuCun?date=",
+    public void getFSAFESTOCK() {
+        Date date = DateUtil.beginOfDay(new Date());  // 获取当前日期
+        // 构建URL,使用格式化的日期
+        ResponseEntity<List<FSAFESTOCK>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-kucun/getFSAFESTOCK?date=",
                 HttpMethod.GET,
                 null,
-                new ParameterizedTypeReference<List<YangMaoZhiChuKu>>() {}
+                new ParameterizedTypeReference<List<FSAFESTOCK>>() {
+                }
         );
-        List<YangMaoZhiChuKu> forObjects = response.getBody();
+        List<FSAFESTOCK> forObjects = response.getBody();
         System.out.println(forObjects);
+        for (FSAFESTOCK forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFUSEORGID()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            ErpBdRawMaterial erpBdRawMaterial = erpBdRawMaterialMapper.selectOne(new QueryWrapper<ErpBdRawMaterial>().eq("org_id", forgid.getOrgId()).eq("erp_fnumber", forObject.getFNUMBER()));
+            if (ObjectUtil.isNotEmpty(erpBdRawMaterial)){
+                erpBdRawMaterial.setSafeStock((int)Math.floor(forObject.getFSAFESTOCK()));
+                erpBdRawMaterialMapper.updateById(erpBdRawMaterial);
+            }
+        }
 
     }
 
     @Override
-    public void getYangMaoZhiGongYingShang() {
-        ResponseEntity<List<YangMaoZhiGongYingShang>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-kucun/getYangMaoZhiGongYingShang?date=",
+    public void getYuanCaiLiaoCunLiang(Date date) {
+        // 构建URL,使用格式化的日期
+        ResponseEntity<List<YuanCaiLiaoKuCun>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-kucun/getYuanCaiLiaoCunLiang?date="+date,
                 HttpMethod.GET,
                 null,
-                new ParameterizedTypeReference<List<YangMaoZhiGongYingShang>>() {}
+                new ParameterizedTypeReference<List<YuanCaiLiaoKuCun>>() {
+                }
         );
-        List<YangMaoZhiGongYingShang> forObjects = response.getBody();
+        List<YuanCaiLiaoKuCun> forObjects = response.getBody();
         System.out.println(forObjects);
+        for (YuanCaiLiaoKuCun forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFSTOCKORGID()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            WarehouseStock warehouseStock = new WarehouseStock();
+            WarehouseStockDetail warehouseStockDetail = new WarehouseStockDetail();
+            //原材料
+            if (forObject.getFnumber().startsWith("10") && !forObject.getFnumber().equals("10020002")){
+                warehouseStock.setMaterial(String.format("%.2f",forObject.getFBASEQTY()));
+                warehouseStockDetail.setMaterialCode(0);
+            }
+            //成品、半成品
+            if (forObject.getFnumber().startsWith("01") ){
+                warehouseStock.setFinishProduce(String.format("%.2f",forObject.getFBASEQTY()));
+                warehouseStockDetail.setMaterialCode(1);
+            }
+            //低值易耗品
+            if (forObject.getFnumber().startsWith("15")){
+                warehouseStock.setLowValue(String.format("%.2f",forObject.getFBASEQTY()));
+                warehouseStockDetail.setMaterialCode(3);
+            }
+            //包材
+            if (forObject.getFnumber().startsWith("11")){
+                warehouseStock.setPackageMaterial(String.format("%.2f",forObject.getFBASEQTY()));
+                warehouseStockDetail.setMaterialCode(4);
+            }
+            //羊毛脂
+            if ("10020002".equals(forObject.getFnumber())){
+                warehouseStock.setLanolin(String.format("%.2f",forObject.getFBASEQTY()));
+                warehouseStockDetail.setMaterialCode(5);
+            }
+            //鱼油
+            if ("10020071".equals(forObject.getFnumber())){
+                warehouseStock.setFishOil(String.format("%.2f",forObject.getFBASEQTY()));
+                warehouseStockDetail.setMaterialCode(6);
+            }
+            warehouseStock.setCreateTime(forObject.getFUPDATETIME());
+            warehouseStock.setOrgId(forgid.getOrgId());
+            stockMapper.insert(warehouseStock);
 
-    }
+            //库存
+            WarehouseMaterialStock warehouseMaterialStock = new WarehouseMaterialStock();
+            warehouseMaterialStock.setCreateTime(forObject.getFUPDATETIME());
+            warehouseMaterialStock.setMaterial(forObject.getWuLiaoName());
+            warehouseMaterialStock.setMaterialType(getMaterialType(forObject.getFNAME()));
+            warehouseMaterialStock.setMaterialStock(String.format("%.2f",forObject.getFBASEQTY()));
+            warehouseMaterialStock.setOrgId(forgid.getOrgId());
+            warehouseMaterialStock.setOrgName(forgid.getFname());
+            warehouseMaterialStock.setFnumber(forObject.getFnumber());
+            materialStockMapper.insert(warehouseMaterialStock);
 
-    @Override
-    public void getYuanCaiLiaoDangRi() {
-        //成片半成品
-        ResponseEntity<List<YuanCaiLiaoDangRiRuKu>> response1 = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-kucun/getYuanCaiLiaoDangRi?date=&type=1",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<YuanCaiLiaoDangRiRuKu>>() {}
-        );
-        List<YuanCaiLiaoDangRiRuKu> forObjects1= response1.getBody();
-        System.out.println(forObjects1);
+
+            warehouseStockDetail.setOrgId(forgid.getOrgId());
+//            warehouseStockDetail.setMaterialCode(forObject.getFMATERIALID());
+            warehouseStockDetail.setMaterialName(forObject.getWuLiaoName());
+            warehouseStockDetail.setMaterialNumber(String.format("%.2f",forObject.getFBASEQTY()));
+            warehouseStockDetail.setStockName(forObject.getFNAME());
+            warehouseStockDetail.setCreateTime(forObject.getFUPDATETIME());
+            warehouseStockDetail.setFnumber(forObject.getFnumber());
+            stockDetailMapper.insert(warehouseStockDetail);
+
+            WarehouseStockSecond warehouseStockSecond = new WarehouseStockSecond();
+            if (("原料库".equals(forObject.getFNAME()) || "高科原料仓库".equals(forObject.getFNAME())) && !forObject.getFnumber().equals("10020002")){
+                warehouseStockSecond.setMaterialType(0);
+            }
+            if ("成品库".equals(forObject.getFNAME()) || "成品库CW".equals(forObject.getFNAME())){
+                warehouseStockSecond.setMaterialType(1);
+            }
+            if ("五金库".equals(forObject.getFNAME())){
+                warehouseStockSecond.setMaterialType(3);
+            }
+            if ("包材库".equals(forObject.getFNAME())){
+                warehouseStockSecond.setMaterialType(4);
+            }
+            if (forObject.getFnumber().equals("10020002")){
+                warehouseStockSecond.setMaterialType(5);
+            }
+            if ("10020071".equals(forObject.getFnumber())){
+                warehouseStockSecond.setMaterialType(6);
+            }
+            warehouseStockSecond.setOrgId(forgid.getOrgId());
+            warehouseStockSecond.setStock(String.format("%.2f",forObject.getFBASEQTY()));
+            warehouseStockSecond.setCreateTime(forObject.getFUPDATETIME());
+            stockSecondMapper.insert(warehouseStockSecond);
+            //安全预警
+            ErpBdRawMaterial erpBdRawMaterial = erpBdRawMaterialMapper.selectOne(new QueryWrapper<ErpBdRawMaterial>().eq("materal_id", forObject.getFMATERIALID()));
+
+            if (ObjectUtil.isNotEmpty(forObject) && ObjectUtil.isNotEmpty(erpBdRawMaterial)
+                    && ObjectUtil.isNotEmpty(forObject.getFBASEQTY()) && ObjectUtil.isNotEmpty(erpBdRawMaterial.getSafeStock())){
+                if (forObject.getFBASEQTY() < erpBdRawMaterial.getSafeStock()){
+                    WarehouseWarning warehouseWarning = new WarehouseWarning();
+                    warehouseWarning.setCangku(forObject.getFNAME());
+                    warehouseWarning.setCreateTime(forObject.getFUPDATETIME());
+                    warehouseWarning.setFnumber(forObject.getFnumber());
+                    warehouseWarning.setMaterialid(forObject.getFMATERIALID());
+                    warehouseWarning.setOrgId(forgid.getOrgId());
+                    warehouseWarning.setWarehouseName(forObject.getWuLiaoName());
+                    warehouseWarning.setWarehouseQty(String.format("%.2f",forObject.getFBASEQTY()));
+                    warehouseWarning.setWarehouseSafeQty(erpBdRawMaterial.getSafeStock());
+                    warehouseWarningMapper.insert(warehouseWarning);
+                }
+            }
+
+//
+        }
 
     }
 
+
+
     @Override
-    public void getChengPinDangRi() {
-        //成品
+    public void getChengPinDangRi(Date date) {
+        //成品半成品
         ResponseEntity<List<ChengPinRuKu>> response1 = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-kucun/getChengPinDangRi?date=&type=1",
+                "http://127.0.0.1:9200/erp-kucun/getChengPinDangRi?date="+date,
                 HttpMethod.GET,
                 null,
                 new ParameterizedTypeReference<List<ChengPinRuKu>>() {}
         );
-        List<ChengPinRuKu> forObjects1 = response1.getBody();
+        List<ChengPinRuKu> forObjects1= response1.getBody();
         System.out.println(forObjects1);
-        //五金
-        ResponseEntity<List<ChengPinRuKu>> response2 = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-kucun/getChengPinDangRi?date=&type=2",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<ChengPinRuKu>>() {}
-        );
-        List<ChengPinRuKu> forObjects2 = response2.getBody();
-        System.out.println(forObjects2);
-        //包材
-        ResponseEntity<List<ChengPinRuKu>> response3 = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-kucun/getChengPinDangRi?date=&type=3",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<ChengPinRuKu>>() {}
-        );
-        List<ChengPinRuKu> forObjects3 = response3.getBody();
-        System.out.println(forObjects3);
-    }
+        for (ChengPinRuKu forObject : forObjects1) {
 
-    @Override
-    public void getYangMaoZhiDangRi() {
-        ResponseEntity<List<ChengPinRuKu>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-kucun/getYangMaoZhiDangRi?date=",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<ChengPinRuKu>>() {}
-        );
-        List<ChengPinRuKu> forObjects = response.getBody();
-        System.out.println(forObjects);
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFSTOCKORGID()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            WarehouseIncomStock warehouseIncomStock  = new WarehouseIncomStock();
+            //原材料
+            if (forObject.getFnumber().startsWith("10") && !forObject.getFnumber().equals("10020002")){
+                 warehouseIncomStock.setMaterial(String.format("%.2f",forObject.getFREALQTY()));
+            }
+            //成品、半成品
+            if (forObject.getFnumber().startsWith("01") ){
+                 warehouseIncomStock.setFinishProduce(String.format("%.2f",forObject.getFREALQTY()));
+            }
+            //低值易耗品
+            if (forObject.getFnumber().startsWith("15")){
+                 warehouseIncomStock.setLowValue(String.format("%.2f",forObject.getFREALQTY()));
+            }
+            //包材
+            if (forObject.getFnumber().startsWith("11")){
+                 warehouseIncomStock.setPackageMaterial(String.format("%.2f",forObject.getFREALQTY()));
+            }
+            //羊毛脂
+            if ("10020002".equals(forObject.getFnumber())){
+                 warehouseIncomStock.setLanolin(String.format("%.2f",forObject.getFREALQTY()));
+            }
+            //鱼油
+            if ("10020071".equals(forObject.getFnumber())){
+                 warehouseIncomStock.setFishOil(String.format("%.2f",forObject.getFREALQTY()));
+            }
 
-    }
+            warehouseIncomStock.setCreateTime(forObject.getFDATE());
+            warehouseIncomStock.setOrgId(forgid.getOrgId());
+            incomStockMapper.insert(warehouseIncomStock);
 
-    @Override
-    public void getYuanCaiLiaoChuKu() {
-        ResponseEntity<List<YuanCaiLiaoChuKu>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-kucun/getYuanCaiLiaoChuKu?date=",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<YuanCaiLiaoChuKu>>() {}
-        );
-        List<YuanCaiLiaoChuKu> forObjects = response.getBody();
-        System.out.println(forObjects);
+            WarehouseMaterialInStock warehouseMaterialInStock = new WarehouseMaterialInStock();
+            warehouseMaterialInStock.setCreateTime(forObject.getFDATE());
+            warehouseMaterialInStock.setFnumber(forObject.getFnumber());
+            warehouseMaterialInStock.setMaterial(forObject.getWuLiaoName());
+            warehouseMaterialInStock.setMaterialType(getmater(forObject.getFnumber()));
+            warehouseMaterialInStock.setOrgId(forgid.getOrgId());
+            warehouseMaterialInStock.setOutStock(String.format("%.2f",forObject.getFREALQTY()));
+            warehouseMaterialInStock.setOrgName(forgid.getFname());
+            materialInStockMapper.insert(warehouseMaterialInStock);
+
+            WarehouseStockDetail warehouseStockDetail = new WarehouseStockDetail();
+
+            if (forObject.getFnumber().startsWith("10") && !forObject.getFnumber().equals("10020002")){
+                warehouseStockDetail.setMaterialCode(0);
+            }
+            //成品、半成品
+            if (forObject.getFnumber().startsWith("01") ){
+                warehouseStockDetail.setMaterialCode(1);
+            }
+            //低值易耗品
+            if (forObject.getFnumber().startsWith("15")){
+                warehouseStockDetail.setMaterialCode(3);
+            }
+            //包材
+            if (forObject.getFnumber().startsWith("11")){
+                warehouseStockDetail.setMaterialCode(4);
+            }
+            //羊毛脂
+            if ("10020002".equals(forObject.getFnumber())){
+                warehouseStockDetail.setMaterialCode(5);
+            }
+
+            if ("10020071".equals(forObject.getFnumber())){
+                warehouseStockDetail.setMaterialCode(6);
+            }
+
+            warehouseStockDetail.setOrgId(forgid.getOrgId());
+            warehouseStockDetail.setMaterialName(forObject.getWuLiaoName());
+            warehouseStockDetail.setIncomeNumber(String.format("%.2f",forObject.getFREALQTY()));
+            warehouseStockDetail.setStockName(forObject.getFNAME());
+            warehouseStockDetail.setCreateTime(forObject.getFDATE());
+            warehouseStockDetail.setFnumber(forObject.getFnumber());
+            stockDetailMapper.insert(warehouseStockDetail);
+        }
     }
 
     @Override
-    public void getChengPinChuKu() {
-        Date date = new Date();
+    public void getChengPinChuKu(Date date) {
         ResponseEntity<List<ChenPinChuKu>> response1 = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-kucun/getChengPinChuKu?date=&type=1",
+                "http://127.0.0.1:9200/erp-kucun/getChengPinChuKu?date="+date,
                 HttpMethod.GET,
                 null,
                 new ParameterizedTypeReference<List<ChenPinChuKu>>() {}
@@ -159,97 +307,139 @@ public class ErpKuCunServiceImpl implements IErpKuCunService {
         List<ChenPinChuKu> forObjects1 = response1.getBody();
         System.out.println(forObjects1);
 
-        //五金
-        ResponseEntity<List<ChenPinChuKu>> response2 = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-kucun/getChengPinChuKu?date=&type=2",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<ChenPinChuKu>>() {}
-        );
-        List<ChenPinChuKu> forObjects2 = response2.getBody();
-        System.out.println(forObjects2);
+        for (ChenPinChuKu forObject : forObjects1) {
 
-        //包材
-        ResponseEntity<List<ChenPinChuKu>> response3 = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-kucun/getChengPinChuKu?date=&type=3",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<ChenPinChuKu>>() {}
-        );
-        List<ChenPinChuKu> forObjects3 = response3.getBody();
-        System.out.println(forObjects3);
-    }
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFSTOCKORGID()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            WarehouseMaterialOutStock warehouseMaterialOutStock = new WarehouseMaterialOutStock();
+            warehouseMaterialOutStock.setCreateTime(forObject.getFDATE());
+            warehouseMaterialOutStock.setFnumber(forObject.getFnumber());
+            warehouseMaterialOutStock.setMaterial(forObject.getWuLiaoName());
+            warehouseMaterialOutStock.setMaterialType(getmater(forObject.getFnumber()));
+            warehouseMaterialOutStock.setOrgId(forgid.getOrgId());
+            warehouseMaterialOutStock.setOutStock(String.format("%.2f",forObject.getFSALUNITQTY()));
+            warehouseMaterialOutStock.setOrgName(forgid.getFname());
+            materialOutStockMapper.insert(warehouseMaterialOutStock);
 
-    @Override
-    public void getYangMaoZhiChuKu() {
-        ResponseEntity<List<YangMaoZhiChuKu>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-kucun/getYangMaoZhiChuKu?date=",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<YangMaoZhiChuKu>>() {}
-        );
-        List<YangMaoZhiChuKu> forObjects = response.getBody();
-        System.out.println(forObjects);
-    }
+            WarehouseStockDetail warehouseStockDetail = new WarehouseStockDetail();
+            if (forObject.getFnumber().startsWith("10") && !forObject.getFnumber().equals("10020002")){
+                warehouseStockDetail.setMaterialCode(0);
+            }
+            //成品、半成品
+            if (forObject.getFnumber().startsWith("01") ){
+                warehouseStockDetail.setMaterialCode(1);
+            }
+            //低值易耗品
+            if (forObject.getFnumber().startsWith("15")){
+                warehouseStockDetail.setMaterialCode(3);
+            }
+            //包材
+            if (forObject.getFnumber().startsWith("11")){
+                warehouseStockDetail.setMaterialCode(4);
+            }
+            //羊毛脂
+            if ("10020002".equals(forObject.getFnumber())){
+                warehouseStockDetail.setMaterialCode(5);
+            }
 
-    @Override
-    public void getKuCunFenXi() {
-        ResponseEntity<List<KunCunQuShi>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-kucun/getKunCunQuShi?date=",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<KunCunQuShi>>() {}
-        );
-        List<KunCunQuShi> forObjects = response.getBody();
-        System.out.println(forObjects);
-    }
+            if ("10020071".equals(forObject.getFnumber())){
+                warehouseStockDetail.setMaterialCode(6);
+            }
+            warehouseStockDetail.setOrgId(forgid.getOrgId());
+            warehouseStockDetail.setMaterialName(forObject.getWuLiaoName());
+            warehouseStockDetail.setOutNumber(String.format("%.2f",forObject.getFSALUNITQTY()));
+            warehouseStockDetail.setStockName(forObject.getFNAME());
+            warehouseStockDetail.setCreateTime(forObject.getFDATE());
+            stockDetailMapper.insert(warehouseStockDetail);
 
-    @Override
-    public void getChuKuShuLiang() {
-        ResponseEntity<List<YangMaoZhiChuKu>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-kucun/getChuKuShuLiang?date=",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<YangMaoZhiChuKu>>() {}
-        );
-        List<YangMaoZhiChuKu> forObjects = response.getBody();
-        System.out.println(forObjects);
+        }
     }
-
-    @Override
-    public void getWuLiaoMingXi() {
+      @Override
+    public void getWuLiaoMingXi(Date date) {
         ResponseEntity<List<WuLiaoKuMingXi>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-kucun/getWuLiaoMingXi?date=",
+                "http://127.0.0.1:9200/erp-kucun/getWuLiaoMingXi?date="+date,
                 HttpMethod.GET,
                 null,
                 new ParameterizedTypeReference<List<WuLiaoKuMingXi>>() {}
         );
         List<WuLiaoKuMingXi> forObjects = response.getBody();
-        System.out.println(forObjects);
+        for (WuLiaoKuMingXi forObject : forObjects) {
+
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFSTOCKORGID()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            WarehouseStockSecond warehouseStockSecond = new WarehouseStockSecond();
+            if (("原料库".equals(forObject.getFNAME()) || "高科原料仓库".equals(forObject.getFNAME())) && !forObject.getFnumber().equals("10020002")){
+                warehouseStockSecond.setMaterialType(0);
+            }
+            if ("成品库".equals(forObject.getFNAME()) || "成品库CW".equals(forObject.getFNAME())){
+                warehouseStockSecond.setMaterialType(1);
+            }
+            if ("五金库".equals(forObject.getFNAME())){
+                warehouseStockSecond.setMaterialType(3);
+            }
+            if ("包材库".equals(forObject.getFNAME())){
+                warehouseStockSecond.setMaterialType(4);
+            }
+            if (forObject.getFnumber().equals("10020002")){
+                warehouseStockSecond.setMaterialType(5);
+            }
+            if ("10020071".equals(forObject.getFnumber())){
+                warehouseStockSecond.setMaterialType(6);
+            }
+            warehouseStockSecond.setIncomeNumber(String.format("%.2f",forObject.getFINSTOCKQTY()));
+            warehouseStockSecond.setIncomeMoney(String.format("%.2f",forObject.getFBILLAMOUNTLC()));
+            warehouseStockSecond.setCreateTime(forObject.getFDATE());
+            warehouseStockSecond.setOrgId(forgid.getOrgId());
+            warehouseStockSecond.setFnumber(forObject.getFnumber());
+            warehouseStockSecond.setStock(String.format("%.2f",forObject.getFSTOCKBASEQTY()));
+            stockSecondMapper.insert(warehouseStockSecond);
+        }
     }
 
-    @Override
-    public void getAnQuanKuCun() {
-        //取不到
-//        ResponseEntity<List<ErpVoucher>> response = restTemplate.exchange(
-//                "http://127.0.0.1:9200/erp-kucun/getShouRuJinE?date=",
-//                HttpMethod.GET,
-//                null,
-//                new ParameterizedTypeReference<List<ErpVoucher>>() {}
-//        );
-//        List<ErpVoucher> forObjects = response.getBody();
-//        System.out.println(forObjects);
+    private Integer getmater(String fname) {
+        if (fname.startsWith("10") && !fname.equals("10020002") && !fname.equals("10020071") ){
+            return 0;
+        }
+        //成品、半成品
+        if (fname.startsWith("01") ){
+            return 1;
+        }
+        //低值易耗品
+        if (fname.startsWith("15")){
+            return 2;
+        }
+        //包材
+        if (fname.startsWith("11")){
+            return 3;
+        }
+        //羊毛脂
+        if (fname.equals("10020002")){
+            return 5;
+        }
+
+        if (fname.equals("10020071")){
+            return 6;
+        }
+        return 7;
     }
 
-    @Override
-    public void getYangMaoZhiGongYingShangYueLeiJi() {
-        ResponseEntity<List<YangMaoZhiGongYingShang>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-kucun/getYangMaoZhiGongYingShangLeiJi?date=",
-                HttpMethod.GET,
-                null,
-                new ParameterizedTypeReference<List<YangMaoZhiGongYingShang>>() {}
-        );
-        List<YangMaoZhiGongYingShang> forObjects = response.getBody();
-        System.out.println(forObjects);
+    private Integer getMaterialType(String fname) {
+        if (("原料库".equals(fname) || "高科原料仓库".equals(fname))){
+            return 0;
+        }
+        if ("成品库".equals(fname) || "成品库CW".equals(fname)){
+            return 1;
+        }
+        if ("五金库".equals(fname)){
+            return 2;
+        }
+        if ("包材库".equals(fname)){
+            return 3;
+        }
+        return 0;
     }
+
+
 }

+ 59 - 3
huimv-farm/src/main/java/vip/xiaonuo/erp/service/impl/ErpShengChanServiceImpl.java

@@ -1,15 +1,25 @@
 package vip.xiaonuo.erp.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
+import vip.xiaonuo.erp.entity.ErpBdOrg;
 import vip.xiaonuo.erp.entity.kucun.*;
 import vip.xiaonuo.erp.entity.shengcan.ShiJiChanLiang;
+import vip.xiaonuo.erp.mapper.ErpBdOrgMapper;
 import vip.xiaonuo.erp.service.IErpKuCunService;
 import vip.xiaonuo.erp.service.IErpShengChanService;
+import vip.xiaonuo.production.entity.ProductionTarget;
+import vip.xiaonuo.production.entity.ProductionWorkstopPlan;
+import vip.xiaonuo.production.entity.ProductionYield;
+import vip.xiaonuo.production.mapper.ProductionTargetMapper;
+import vip.xiaonuo.production.mapper.ProductionWorkstopPlanMapper;
+import vip.xiaonuo.production.mapper.ProductionYieldMapper;
 
 import java.util.Date;
 import java.util.List;
@@ -19,16 +29,62 @@ import java.util.List;
 public class ErpShengChanServiceImpl implements IErpShengChanService {
     @Autowired
     private RestTemplate restTemplate;
+    @Autowired
+    private ErpBdOrgMapper erpBdOrgMapper;
+    @Autowired
+    private ProductionYieldMapper yieldMapper;
+
+    @Autowired
+    private ProductionWorkstopPlanMapper workstopPlanMapper;
 
+    @Autowired
+    private ProductionTargetMapper targetMapper;
     @Override
-    public void getShiJiChanLiang() {
+    public void  getShiJiChanLiang(Date date){
         ResponseEntity<List<ShiJiChanLiang>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-shengChan/getShiJiChanLiang?date=",
+                "http://127.0.0.1:9200/erp-shengChan/getShiJiChanLiang?date="+date,
                 HttpMethod.GET,
                 null,
                 new ParameterizedTypeReference<List<ShiJiChanLiang>>() {}
         );
         List<ShiJiChanLiang> forObjects = response.getBody();
-        System.out.println(forObjects);
+
+        for (ShiJiChanLiang forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFSTOCKORGID()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            ProductionYield productionYield = new ProductionYield();
+            productionYield.setActualProduction(String.format("%.2f",forObject.getFREALQTY()));
+            productionYield.setCompanyName(forgid.getFname());
+//            productionYield.setCompleteRate();
+            productionYield.setCreateTime(forObject.getFDATE());
+            productionYield.setLocationName(forObject.getCheJianName());
+            productionYield.setOrgId(forgid.getOrgId());
+            productionYield.setProduceName(forObject.getWuLiaoName());
+            yieldMapper.insert(productionYield);
+
+            ProductionWorkstopPlan productionWorkstopPlan  = new ProductionWorkstopPlan();
+            productionWorkstopPlan.setActualProduction(String.format("%.2f",forObject.getFREALQTY()));
+//            productionWorkstopPlan.setAvgValue();
+            productionWorkstopPlan.setCreateTime(forObject.getFDATE());
+            productionWorkstopPlan.setLocationId(forObject.getFWORKSHOPID()+"");
+            productionWorkstopPlan.setLocationName(forObject.getCheJianName());
+            productionWorkstopPlan.setOrgId(forgid.getOrgId());
+//            productionWorkstopPlan.setPlanProduction();
+            productionWorkstopPlan.setProduceName(forObject.getWuLiaoName());
+//            productionWorkstopPlan.setUnitCost();
+            workstopPlanMapper.insert(productionWorkstopPlan);
+
+            ProductionTarget productionTarget = new ProductionTarget();
+            productionTarget.setActualProduction(String.format("%.2f",forObject.getFREALQTY()));
+            productionTarget.setCreateTime(forObject.getFDATE());
+            productionTarget.setLocationName(forObject.getCheJianName());
+            productionTarget.setOrgId(forgid.getOrgId());
+//            productionTarget.setPlanCompleteRate();
+//            productionTarget.setPlanProduction();
+//            productionTarget.setProductionEnergy();
+//            productionTarget.setReceiveRate();
+            targetMapper.insert(productionTarget);
+        }
     }
 }

+ 398 - 25
huimv-farm/src/main/java/vip/xiaonuo/erp/service/impl/ErpXiaoShouServiceImpl.java

@@ -1,16 +1,31 @@
 package vip.xiaonuo.erp.service.impl;
 
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
+import vip.xiaonuo.erp.entity.ErpBdOrg;
 import vip.xiaonuo.erp.entity.shengcan.ShiJiChanLiang;
 import vip.xiaonuo.erp.entity.xiaoshou.*;
+import vip.xiaonuo.erp.mapper.ErpBdOrgMapper;
 import vip.xiaonuo.erp.service.IErpShengChanService;
 import vip.xiaonuo.erp.service.IErpXiaoShouService;
+import vip.xiaonuo.money.entity.MoneyCost;
+import vip.xiaonuo.money.entity.MoneyOverdue;
+import vip.xiaonuo.money.entity.MoneyWriteOverdue;
+import vip.xiaonuo.money.mapper.MoneyCostMapper;
+import vip.xiaonuo.money.mapper.MoneyOverdueMapper;
+import vip.xiaonuo.money.mapper.MoneyWriteOverdueMapper;
+import vip.xiaonuo.sale.entity.*;
+import vip.xiaonuo.sale.mapper.*;
 
+import java.util.Date;
 import java.util.List;
 
 
@@ -18,76 +33,434 @@ import java.util.List;
 public class ErpXiaoShouServiceImpl implements IErpXiaoShouService {
     @Autowired
     private RestTemplate restTemplate;
+    @Autowired
+    private SaleDetailMapper detailMapper;
+    @Autowired
+    private ErpBdOrgMapper erpBdOrgMapper;
+
+    @Autowired
+    private SaleCustomerMapper customerMapper;
+    @Autowired
+    private SaleCostMapper costMapper;
+
+    @Autowired
+    private SaleDeliverMapper deliverMapper;
+    @Autowired
+    private SaleInvoiceMapper invoiceMapper;
+
+    @Autowired
+    private SaleOverdueMapper overdueMapper;
+    @Autowired
+    private SalePriceMapper priceMapper;
+    @Autowired
+    private SaleProduceMapper produceMapper;
+
+    @Autowired
+    private SaleOrderMapper orderMapper;
+    @Autowired
+    private MoneyCostMapper moneyCostMapper;
+
+
+    @Autowired
+    private SaleTargetMapper targetMapper;
+
+    @Autowired
+    private MoneyOverdueMapper moneyOverdueMapper;
+    @Autowired
+    private SaleSalesmanMapper salesmanMapper;
+    @Autowired
+    private MoneyWriteOverdueMapper moneyWriteOverdueMapper;
+
 
     @Override
-    public void getWanChengLvDingDanJinE() {
+    public void getWanChengLv(Date date) {
         ResponseEntity<List<XiaoShouWanChenLvJinE>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-XiaoShou/getWanChengLv?date=",
+                "http://127.0.0.1:9200/erp-XiaoShou/getWanChengLv?date="+date,
                 HttpMethod.GET,
                 null,
-                new ParameterizedTypeReference<List<XiaoShouWanChenLvJinE>>() {}
+                new ParameterizedTypeReference<List<XiaoShouWanChenLvJinE>>() {
+                }
         );
         List<XiaoShouWanChenLvJinE> forObjects = response.getBody();
         System.out.println(forObjects);
+        for (XiaoShouWanChenLvJinE forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFSALEORGID()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            SaleDetail saleDetail = new SaleDetail();
+            saleDetail.setCreateTime(forObject.getFDATE());
+            saleDetail.setCustomer(forObject.getKeHuName());
+            saleDetail.setOrgId(forgid.getOrgId());
+            saleDetail.setProduceName(forObject.getWuLiaoName());
+            saleDetail.setSaleContraceOrder(forObject.getFBILLNO());
+            saleDetail.setSaleMoney(String.format("%.2f", forObject.getFALLAMOUNTLC()));
+            saleDetail.setSaleNumber(String.format("%.2f", forObject.getFQTY()));
+            saleDetail.setSalesman(forObject.getFNAME());
+
+            saleDetail.setCurrencyId(forObject.getFSettleCurrId());
+            saleDetail.setTaxPrice(String.format("%.2f",forObject.getFTaxPrice()));
+            saleDetail.setAllAmonunt(String.format("%.2f",forObject.getFBillAllAmount()));
+            saleDetail.setFentryid(forObject.getFentryid());
+            detailMapper.insert(saleDetail);
+
+
+            SaleCustomer saleCustomer = new SaleCustomer();
+            saleCustomer.setCreateTime(forObject.getFDATE());
+            saleCustomer.setCustomer(forObject.getKeHuName());
+            saleCustomer.setSaleMoney(String.format("%.2f", forObject.getFALLAMOUNTLC()));
+            saleCustomer.setOrgId(forgid.getOrgId());
+            customerMapper.insert(saleCustomer);
+
+            SalePrice salePrice = new SalePrice();
+            salePrice.setCreateTime(forObject.getFDATE());
+            salePrice.setOrgId(forgid.getOrgId());
+            salePrice.setPrice(String.format("%.4f", forObject.getXiaoShouDanJia()));
+            salePrice.setProduceName(forObject.getWuLiaoName());
+            priceMapper.insert(salePrice);
+
+            SaleProduce saleProduce = new SaleProduce();
+            saleProduce.setCreateTime(forObject.getFDATE());
+            saleProduce.setOrgId(forgid.getOrgId());
+            saleProduce.setPrice(String.format("%.4f", forObject.getXiaoShouDanJia()));
+            saleProduce.setProduceName(forObject.getWuLiaoName());
+            saleProduce.setSaleMoney(String.format("%.2f", forObject.getFALLAMOUNTLC()));
+            produceMapper.insert(saleProduce);
+
+        }
     }
 
+    //订单金额
     @Override
-    public void getBaiFangKeHu() {
-        ResponseEntity<List<BaiFangKeHu>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-XiaoShou/getBaiFangKeHu?date=",
+    public void getDingDan(Date date) {
+
+        //
+        ResponseEntity<List<XiaoShouWanChenLvJinE>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-XiaoShou/getDingDan?date="+date,
                 HttpMethod.GET,
                 null,
-                new ParameterizedTypeReference<List<BaiFangKeHu>>() {}
+                new ParameterizedTypeReference<List<XiaoShouWanChenLvJinE>>() {
+                }
         );
-        List<BaiFangKeHu> forObjects = response.getBody();
+        List<XiaoShouWanChenLvJinE> forObjects = response.getBody();
         System.out.println(forObjects);
+        for (XiaoShouWanChenLvJinE forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFSALEORGID()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            SaleOrder saleOrder = new SaleOrder();
+            saleOrder.setCreateTime(forObject.getFDATE());
+            saleOrder.setOrgId(forgid.getOrgId());
+            saleOrder.setSaleMoney(String.format("%.2f", forObject.getFALLAMOUNTLC()));
+            saleOrder.setSaleNumber(String.format("%.2f", forObject.getFQTY()));
+            saleOrder.setSaleOrder(forObject.getFBILLNO());
+
+            saleOrder.setCustomer(forObject.getKeHuName());
+            saleOrder.setSalesman(forObject.getFNAME());
+            saleOrder.setProduceName(forObject.getWuLiaoName());
+            saleOrder.setCurrencyId(forObject.getFSettleCurrId());
+            saleOrder.setAllAmonunt(getStringDouble(forObject.getFBillAllAmount()));
+            saleOrder.setTaxPrice(getStringDouble(forObject.getFTaxPrice()));
+            saleOrder.setContractId(forObject.getFentryid());
+
+
+            orderMapper.insert(saleOrder);
+        }
+    }
+    private  String getStringDouble(Double d){
+        if (null == d){
+            return "0";
+        }
+        return String.format("%.2f",d);
     }
 
     @Override
-    public void getFaPiaoJinE() {
-        ResponseEntity<List<XiaoShouFaPiaoJinE>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-XiaoShou/getXiaoShouFaPiaoJinE?date=",
+    public void getXiaoShouFeiYong2(Date date) {
+
+        // 销售费用,管理费用,财务费用,研发费用
+        ResponseEntity<List<XiaoShouFeiYong>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-XiaoShou/getXiaoShouFeiYong?date="+date,
                 HttpMethod.GET,
                 null,
-                new ParameterizedTypeReference<List<XiaoShouFaPiaoJinE>>() {}
+                new ParameterizedTypeReference<List<XiaoShouFeiYong>>() {
+                }
         );
-        List<XiaoShouFaPiaoJinE> forObjects = response.getBody();
+        List<XiaoShouFeiYong> forObjects = response.getBody();
         System.out.println(forObjects);
+        for (XiaoShouFeiYong forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFacctorgid()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            SaleCost saleCost = new SaleCost();
+            saleCost.setCreateTime(forObject.getFDATE());
+            saleCost.setOrgId(forgid.getOrgId());
+            saleCost.setSaleCostMoney(String.format("%.2f",forObject.getFCREDIT()));
+            saleCost.setSaleCostName(forObject.getFname());
+            costMapper.insert(saleCost);
+            MoneyCost moneyCost = new MoneyCost();
+            moneyCost.setCreateTime(forObject.getFDATE());
+            moneyCost.setOrgId(forgid.getOrgId());
+            moneyCost.setSale(String.format("%.2f", forObject.getFCREDIT()));
+            moneyCost.setCompany(forgid.getFname());
+            moneyCostMapper.insert(moneyCost);
+        }
+
+
     }
 
     @Override
-    public void getXianShodFaHboJainESheLangKeHuGongXian() {
-        ResponseEntity<List<XiaoShouFaHuoJinEKeHuGongXian>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-XiaoShou/getXiaoShouFaHuoJinEKeHuGongXian?date=",
+    public void getXiaoShouFeiYong21(Date date) {
+
+        // 销售费用,管理费用,财务费用,研发费用
+        ResponseEntity<List<XiaoShouFeiYong>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-XiaoShou/getXiaoShouFeiYong2?number=6601&date="+date,
                 HttpMethod.GET,
                 null,
-                new ParameterizedTypeReference<List<XiaoShouFaHuoJinEKeHuGongXian>>() {}
+                new ParameterizedTypeReference<List<XiaoShouFeiYong>>() {
+                }
         );
-        List<XiaoShouFaHuoJinEKeHuGongXian> forObjects = response.getBody();
+        List<XiaoShouFeiYong> forObjects = response.getBody();
+        System.out.println(forObjects);
+        for (XiaoShouFeiYong forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFacctorgid()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            MoneyCost moneyCost = new MoneyCost();
+            moneyCost.setCreateTime(forObject.getFDATE());
+            moneyCost.setOrgId(forgid.getOrgId());
+            moneyCost.setSale(String.format("%.2f", forObject.getFCREDIT()));
+            moneyCost.setCompany(forgid.getFname());
+            moneyCost.setFname(forObject.getFname());
+            moneyCostMapper.insert(moneyCost);
+        }
+    }
+
+    @Override
+    public void getXiaoShouFeiYong22(Date date) {
+
+        // 销售费用,管理费用,财务费用,研发费用
+        ResponseEntity<List<XiaoShouFeiYong>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-XiaoShou/getXiaoShouFeiYong2?number=6602&date="+date,
+                HttpMethod.GET,
+                null,
+                new ParameterizedTypeReference<List<XiaoShouFeiYong>>() {
+                }
+        );
+        List<XiaoShouFeiYong> forObjects = response.getBody();
+        System.out.println(forObjects);
+        for (XiaoShouFeiYong forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFacctorgid()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            MoneyCost moneyCost = new MoneyCost();
+            moneyCost.setCreateTime(forObject.getFDATE());
+            moneyCost.setOrgId(forgid.getOrgId());
+            moneyCost.setManage(String.format("%.2f", forObject.getFCREDIT()));
+            moneyCost.setCompany(forgid.getFname());
+            moneyCost.setFname(forObject.getFname());
+            moneyCostMapper.insert(moneyCost);
+        }
+    }
+
+    @Override
+    public void getXiaoShouFeiYong23(Date date) {
+
+        // 销售费用,管理费用,财务费用,研发费用
+        ResponseEntity<List<XiaoShouFeiYong>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-XiaoShou/getXiaoShouFeiYong2?number=6603&date="+date,
+                HttpMethod.GET,
+                null,
+                new ParameterizedTypeReference<List<XiaoShouFeiYong>>() {
+                }
+        );
+        List<XiaoShouFeiYong> forObjects = response.getBody();
         System.out.println(forObjects);
+        for (XiaoShouFeiYong forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFacctorgid()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            MoneyCost moneyCost = new MoneyCost();
+            moneyCost.setCreateTime(forObject.getFDATE());
+            moneyCost.setOrgId(forgid.getOrgId());
+            moneyCost.setFinance(String.format("%.2f", forObject.getFCREDIT()));
+            moneyCost.setCompany(forgid.getFname());
+            moneyCost.setFname(forObject.getFname());
+            moneyCostMapper.insert(moneyCost);
+        }
     }
 
     @Override
-    public void getXiaoShouFeiYong() {
+    public void getXiaoShouFeiYong24(Date date) {
+
+        // 销售费用,管理费用,财务费用,研发费用
         ResponseEntity<List<XiaoShouFeiYong>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-XiaoShou/getXiaoShouFeiYong?date=",
+                "http://127.0.0.1:9200/erp-XiaoShou/getXiaoShouFeiYong2?number=6605&date="+date,
                 HttpMethod.GET,
                 null,
-                new ParameterizedTypeReference<List<XiaoShouFeiYong>>() {}
+                new ParameterizedTypeReference<List<XiaoShouFeiYong>>() {
+                }
         );
         List<XiaoShouFeiYong> forObjects = response.getBody();
         System.out.println(forObjects);
+        for (XiaoShouFeiYong forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFacctorgid()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            MoneyCost moneyCost = new MoneyCost();
+            moneyCost.setCreateTime(forObject.getFDATE());
+            moneyCost.setOrgId(forgid.getOrgId());
+            moneyCost.setResearch(String.format("%.2f", forObject.getFCREDIT()));
+            moneyCost.setCompany(forgid.getFname());
+            moneyCost.setFname(forObject.getFname());
+            moneyCostMapper.insert(moneyCost);
+        }
+    }
+
+    @Override
+    public void getXiaoShouFaHuoJinEKeHuGongXian(Date date) {
+        ResponseEntity<List<XiaoShouFaHuoJinEKeHuGongXian>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-XiaoShou/getXiaoShouFaHuoJinEKeHuGongXian?date="+date,
+                HttpMethod.GET,
+                null,
+                new ParameterizedTypeReference<List<XiaoShouFaHuoJinEKeHuGongXian>>() {
+                }
+        );
+        List<XiaoShouFaHuoJinEKeHuGongXian> forObjects = response.getBody();
+        for (XiaoShouFaHuoJinEKeHuGongXian forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFSTOCKORGID()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            SaleDeliver saleDeliver = new SaleDeliver();
+            saleDeliver.setCreateTime(forObject.getFDATE());
+            saleDeliver.setOrgId(forgid.getOrgId());
+            saleDeliver.setSaleDeliverMoney(String.format("%.2f", forObject.getFALLAMOUNTLC()));
+            saleDeliver.setSaleDeliverNumber(String.format("%.2f", forObject.getFREALQTY()));
+            saleDeliver.setSaleOrder(forObject.getFBILLNO());
+
+            saleDeliver.setSaleNumber(getStringDouble(forObject.getFREALQTY()));
+            saleDeliver.setProduceName(forObject.getWuLiaoName());
+            saleDeliver.setCurrencyId(forObject.getFSettleCurrId());
+            saleDeliver.setAllAmonunt(getStringDouble(forObject.getFBillAmount()));
+            saleDeliver.setSorrDerno(forObject.getFSoorDerno());
+            saleDeliver.setCustomer(forObject.getFNAME());
+            saleDeliver.setSalesman(forObject.getXiaoShouName());
+            deliverMapper.insert(saleDeliver);
+            SaleSalesman saleSalesman = new SaleSalesman();
+            saleSalesman.setCreateTime(forObject.getFDATE());
+            saleSalesman.setOrgId(forgid.getOrgId());
+            saleSalesman.setSalesmanMoney(String.format("%.2f", forObject.getFALLAMOUNTLC()));
+            saleSalesman.setSalesmanName(forObject.getXiaoShouName());
+            salesmanMapper.insert(saleSalesman);
+        }
+
     }
 
     @Override
-    public void getYvQiHeTongMingXi() {
+    public void getXiaoShouFaPiaoJinE(Date date) {
+        ResponseEntity<List<XiaoShouFaPiaoJinE>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-XiaoShou/getXiaoShouFaPiaoJinE?date="+date,
+                HttpMethod.GET,
+                null,
+                new ParameterizedTypeReference<List<XiaoShouFaPiaoJinE>>() {
+                }
+        );
+        List<XiaoShouFaPiaoJinE> forObjects = response.getBody();
+        for (XiaoShouFaPiaoJinE forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFSALEORGID()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            SaleInvoice saleInvoice = new SaleInvoice();
+            saleInvoice.setCreateTime(forObject.getFDATE());
+            saleInvoice.setOrgId(forgid.getOrgId());
+            saleInvoice.setSaleInvoiceMoney(String.format("%.2f", forObject.getFALLAMOUNT()));
+            saleInvoice.setSaleInvoiceOrder(forObject.getFBILLNO());
+            invoiceMapper.insert(saleInvoice);
+
+        }
+    }
+
+    @Override
+    public void getYvQiHeTongMingXi(Date date) {
         ResponseEntity<List<YvQiHeTongMingXi>> response = restTemplate.exchange(
-                "http://127.0.0.1:9200/erp-XiaoShou/getYvQiHeTongMingXi?date=",
+                "http://127.0.0.1:9200/erp-XiaoShou/getYvQiHeTongMingXi?date="+date,
                 HttpMethod.GET,
                 null,
-                new ParameterizedTypeReference<List<YvQiHeTongMingXi>>() {}
+                new ParameterizedTypeReference<List<YvQiHeTongMingXi>>() {
+                }
         );
         List<YvQiHeTongMingXi> forObjects = response.getBody();
-        System.out.println(forObjects);
+        for (YvQiHeTongMingXi forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFSALEORGID()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            SaleOverdue saleOverdue = new SaleOverdue();
+            saleOverdue.setCreateTime(forObject.getFCREATEDATE());
+            saleOverdue.setDeliveryDate(forObject.getChuKuDate());
+            saleOverdue.setDeliveryNumber(forObject.getFQTY());
+            saleOverdue.setOrgId(forgid.getOrgId());
+//            saleOverdue.setOverdueDay();
+            saleOverdue.setOverdueMoney(String.format("%.2f", forObject.getFALLAMOUNTLC()));
+            saleOverdue.setOverdueOrder(forObject.getFBILLNO());
+            overdueMapper.insert(saleOverdue);
+
+        }
+    }
+    //== 改过的
+    @Override
+    public void getCaiWuYingShou(String date) {
+        ResponseEntity<List<CaiWuYingShou>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-XiaoShou/getCaiWuYingShou?date="+date,
+                HttpMethod.GET,
+                null,
+                new ParameterizedTypeReference<List<CaiWuYingShou>>() {
+                }
+        );
+        List<CaiWuYingShou> forObjects = response.getBody();
+        for (CaiWuYingShou forObject : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", forObject.getFUSEORGID()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            MoneyOverdue moneyProduce = new MoneyOverdue();
+            moneyProduce.setCollectPrice(String.format("%.2f", forObject.getFENDBALANCEFOR()));
+            moneyProduce.setDateTime( DateUtil.parse(forObject.getFyearperiod(),"yyyyMM") );
+            moneyProduce.setDocumentNumber(forObject.getFACCOUNTBOOKID()+"");
+            moneyProduce.setIsOverdue(0);
+            moneyProduce.setOrgId(forgid.getOrgId());
+            moneyProduce.setOverduePrice("0");
+            moneyProduce.setUserName(forObject.getFNAME());
+
+            moneyOverdueMapper.insert(moneyProduce);
+
+            MoneyWriteOverdue moneyWriteOverdue = new MoneyWriteOverdue();
+            moneyWriteOverdue.setUserName(forObject.getFNAME());
+            moneyWriteOverdue.setBz("人民币");
+            moneyWriteOverdue.setOrgId(forgid.getOrgId());
+            moneyWriteOverdue.setYbje(String.format("%.2f", forObject.getFENDBALANCEFOR()));
+            moneyWriteOverdue.setRmbje(String.format("%.2f", forObject.getFENDBALANCEFOR()));
+            moneyWriteOverdue.setXsrq( DateUtil.parse(forObject.getFyearperiod(),"yyyyMM"));
+            moneyWriteOverdue.setCreateTime( DateUtil.parse(forObject.getFyearperiod(),"yyyyMM"));
+            moneyWriteOverdue.setYqts( "0");
+            moneyWriteOverdue.setDocumentType("0");
+            moneyWriteOverdue.setEndTime(DateUtil.parse(forObject.getFyearperiod(),"yyyyMM"));
+
+            moneyWriteOverdueMapper.insert(moneyWriteOverdue);
+        }
+
+    }
+
+
+
+
+    private String getNum(BaiFangKeHu forObject) {
+        if (StringUtils.isBlank(forObject.getFZCREMARKS2())){
+            return "1";
+        }else if (StringUtils.isBlank(forObject.getFZCREMARKS3())){
+            return "2";
+        } else if (StringUtils.isBlank(forObject.getFZCREMARKS4())){
+            return "3";
+        }else if (StringUtils.isNotBlank(forObject.getFZCREMARKS4())){
+            return "4";
+        }else {
+            return "1";
+        }
     }
 }

+ 357 - 0
huimv-farm/src/main/java/vip/xiaonuo/erp/service/impl/ErpZhiLiangServiceImpl.java

@@ -0,0 +1,357 @@
+package vip.xiaonuo.erp.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+import vip.xiaonuo.erp.entity.*;
+import vip.xiaonuo.erp.entity.voucher.ErpMaterial;
+import vip.xiaonuo.erp.entity.xiaoshou.*;
+import vip.xiaonuo.erp.mapper.*;
+import vip.xiaonuo.erp.service.IErpXiaoShouService;
+import vip.xiaonuo.erp.service.IErpZhiLiangService;
+import vip.xiaonuo.production.entity.ProduceLocation;
+import vip.xiaonuo.production.mapper.ProduceLocationMapper;
+import vip.xiaonuo.quality.entity.ErpBdQuail;
+import vip.xiaonuo.quality.entity.QualityFenxibaogao;
+import vip.xiaonuo.quality.entity.QualityReagentStock;
+import vip.xiaonuo.quality.entity.vo.ErpQualiQm;
+import vip.xiaonuo.quality.mapper.ErpBdQuailMapper;
+import vip.xiaonuo.quality.mapper.QualityFenxibaogaoMapper;
+import vip.xiaonuo.quality.mapper.QualityReagentStockMapper;
+
+import java.util.Date;
+import java.util.List;
+
+
+@Service
+public class ErpZhiLiangServiceImpl implements IErpZhiLiangService {
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Autowired
+    private ErpBdOrgMapper erpBdOrgMapper;
+    @Autowired
+    private ErpBdDepartmentMapper erpBdDepartmentMapper;
+    @Autowired
+    private QualityFenxibaogaoMapper qualityFenxibaogaoMapper;
+    @Autowired
+    private ProduceLocationMapper produceLocationMapper;
+    @Autowired
+    private ErpBdMaterialGroupMapper erpBdMaterialGroupMapper;
+    @Autowired
+    private ErpBdRawMaterialMapper erpBdRawMaterialMapper;
+    @Autowired
+    private ErpBdQuailMapper erpBdQuailMapper;
+    @Autowired
+    private QualityReagentStockMapper qualityReagentStockMapper;
+    @Autowired
+    private ErpBdMaterialMapper erpBdMaterialMapper;
+    
+    //获取质量 所有记录
+    @Override
+    public void getQuailIbit(Date date) {
+
+        ResponseEntity<List<ErpQualiQm>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-bd-org/getQuailIbit?date="+date,
+                HttpMethod.GET,
+                null,
+                new ParameterizedTypeReference<List<ErpQualiQm>>() {}
+        );
+        List<ErpQualiQm> forObjects = response.getBody();
+        for (ErpQualiQm erpMaterial : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", erpMaterial.getFINSPECTORGID()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+
+            QualityFenxibaogao qualityFenxibaogao = new QualityFenxibaogao();
+            String fworkshopid = erpMaterial.getFWORKSHOPID();
+            //车间
+            ErpBdDepartment fdeptid = erpBdDepartmentMapper.selectOne(new QueryWrapper<ErpBdDepartment>().eq("fdeptid", fworkshopid));
+
+            if(ObjectUtil.isNotEmpty(fdeptid)){
+                qualityFenxibaogao.setCheJianName(fdeptid.getFname());
+            }
+            qualityFenxibaogao.setInspecDate( erpMaterial.getInspectStartDate());
+            qualityFenxibaogao.setInspecItems(erpMaterial.getFbglremarks());
+            qualityFenxibaogao.setInspecNum(erpMaterial.getFBILLNO());
+            qualityFenxibaogao.setInspecResults("合格");
+            qualityFenxibaogao.setInspecStandards(erpMaterial.getFbgltext16());
+            qualityFenxibaogao.setManufBatchNum(erpMaterial.getFLOT());
+            qualityFenxibaogao.setMaterialName(erpMaterial.getFname());
+            qualityFenxibaogao.setFnumber(erpMaterial.getFnumber());
+            qualityFenxibaogao.setOrgId(forgid.getOrgId());
+
+            //生产单位
+            ErpBdDepartment fdeptid1 = erpBdDepartmentMapper.selectOne(new QueryWrapper<ErpBdDepartment>().eq("fdeptid", erpMaterial.getFINSPECTDEPID()));
+            if(ObjectUtil.isNotEmpty(fdeptid1)){
+                qualityFenxibaogao.setProductionUnit(fdeptid1.getFname());
+            }
+
+            qualityFenxibaogao.setQualityType(0);
+            qualityFenxibaogao.setQuantity(erpMaterial.getFINSPECTQTY());
+            qualityFenxibaogao.setReportDate(erpMaterial.getInspectEndDate());
+            qualityFenxibaogao.setSelfBatchNum(erpMaterial.getFBILLNO());
+            qualityFenxibaogao.setSampDate(erpMaterial.getInspectStartDate());
+//            qualityFenxibaogao.setSpec();
+            qualityFenxibaogao.setSpecificOtation(erpMaterial.getFbgltext20());
+
+            qualityFenxibaogaoMapper.insert(qualityFenxibaogao);
+
+        }
+    }
+    //获取车间
+    @Override
+    public void getCheJian() {
+        List<ErpBdDepartment> erpBdDepartments = erpBdDepartmentMapper.selectList(new QueryWrapper<ErpBdDepartment>().like("fname","车间"));
+        for (ErpBdDepartment erpBdDepartment : erpBdDepartments) {
+            if (produceLocationMapper.exists(new QueryWrapper<ProduceLocation>().eq("location_id", erpBdDepartment.getFdeptid())))
+                continue;
+
+
+            ProduceLocation produceLocation = new ProduceLocation();
+            produceLocation.setOrgId(erpBdDepartment.getOrgId());
+            produceLocation.setLocationName(erpBdDepartment.getFname());
+            produceLocation.setOrgName(erpBdDepartment.getFfullname());
+            produceLocation.setLocationId(erpBdDepartment.getFdeptid());
+            produceLocationMapper.insert(produceLocation);
+
+        }
+    }
+
+    //物料分组
+    @Override
+    public void getMaterialGruop() {
+        ResponseEntity<List<ErpBdMaterialGroup>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-bd-org/getMaterialGruop",
+                HttpMethod.GET,
+                null,
+                new ParameterizedTypeReference<List<ErpBdMaterialGroup>>() {
+                }
+        );
+        List<ErpBdMaterialGroup> forObjects = response.getBody();
+        for (ErpBdMaterialGroup erpMaterial : forObjects) {
+            if (erpBdMaterialGroupMapper.exists(new QueryWrapper<ErpBdMaterialGroup>().eq("fnumber", erpMaterial.getFnumber())))
+             continue;
+
+            ErpBdMaterialGroup erpBdMaterialGroup = new ErpBdMaterialGroup();
+            erpBdMaterialGroup.setFfullparentid(erpMaterial.getFfullparentid());
+            erpBdMaterialGroup.setFid(erpMaterial.getFid());
+            erpBdMaterialGroup.setFname(erpMaterial.getFname());
+            erpBdMaterialGroup.setFnumber(erpMaterial.getFnumber());
+            erpBdMaterialGroup.setFparentid(erpMaterial.getFparentid());
+            erpBdMaterialGroupMapper.insert(erpBdMaterialGroup);
+          
+        }
+    }
+
+    //获取质量检验项目
+    @Override
+    public void  getQuail(){
+        ResponseEntity<List<ErpBdQuail>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-bd-org/getQuail",
+                HttpMethod.GET,
+                null,
+                new ParameterizedTypeReference<List<ErpBdQuail>>() {}
+        );
+        List<ErpBdQuail> forObjects = response.getBody();
+        for (ErpBdQuail erpMaterial : forObjects) {
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", erpMaterial.getFuseorgid()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            erpMaterial.setOrgId(forgid.getOrgId());
+            erpMaterial.setCreateTime(new Date());
+//            qualityReagentStock.setStock();
+            erpBdQuailMapper.insert(erpMaterial);
+
+        }
+
+    }
+
+    //获取试剂
+    @Override
+    public void  getReagent(){
+        ResponseEntity<List<ErpMaterial>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-bd-org/getReagent",
+                HttpMethod.GET,
+                null,
+                new ParameterizedTypeReference<List<ErpMaterial>>() {}
+        );
+        List<ErpMaterial> forObjects = response.getBody();
+        for (ErpMaterial erpMaterial : forObjects) {
+
+            if (qualityReagentStockMapper.exists(new QueryWrapper<QualityReagentStock>().eq("fnumber", erpMaterial.getFnumber())))
+                continue;
+
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", erpMaterial.getFacctorgid()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            QualityReagentStock qualityReagentStock = new QualityReagentStock();
+
+            qualityReagentStock.setFnumber(erpMaterial.getFnumber());
+            qualityReagentStock.setFspecification(erpMaterial.getFspecification());
+            qualityReagentStock.setOrgId(forgid.getOrgId());
+            qualityReagentStock.setOrgName(forgid.getFname());
+            qualityReagentStock.setReagent(erpMaterial.getFname());
+//            qualityReagentStock.setStock();
+            qualityReagentStockMapper.insert(qualityReagentStock);
+
+        }
+
+    }
+
+    @Override
+    public void  getMaterial(){
+        ResponseEntity<List<ErpMaterial>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-bd-org/getMaterial",
+                HttpMethod.GET,
+                null,
+                new ParameterizedTypeReference<List<ErpMaterial>>() {}
+        );
+        List<ErpMaterial> forObjects = response.getBody();
+        System.out.println(forObjects);
+
+        for (ErpMaterial forObject : forObjects) {
+
+            ResponseEntity<List<ErpMaterial>> response2 = restTemplate.exchange(
+                    "http://127.0.0.1:9200/erp-bd-org/getMaterialDetail?fnumber="+forObject.getFnumber(),
+                    HttpMethod.GET,
+                    null,
+                    new ParameterizedTypeReference<List<ErpMaterial>>() {}
+            );
+            //二
+            List<ErpMaterial> forObjects2 = response2.getBody();
+            System.out.println(forObjects2);
+
+
+            boolean b = false;
+            //判断有没有下级
+            for (ErpMaterial erpMaterial : forObjects2) {
+                if (erpBdMaterialMapper.exists(new QueryWrapper<ErpBdMaterial>().eq("erp_fnumber", erpMaterial.getFnumber())))
+                    continue;
+                if(erpMaterial.getFnumber().contains("0000")){
+
+                    ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", erpMaterial.getFacctorgid()));
+                    if (ObjectUtil.isEmpty(forgid))
+                        continue;
+                    if (erpBdMaterialMapper.exists(new QueryWrapper<ErpBdMaterial>().eq("erp_fnumber", erpMaterial.getFnumber()).eq("org_id",forgid.getOrgId()))){
+                        continue;
+                    }
+                    ErpBdMaterial erpBaseMaterial = new ErpBdMaterial();
+                    erpBaseMaterial.setErpFnumber(erpMaterial.getFnumber());
+                    erpBaseMaterial.setOrgId(forgid.getOrgId());
+                    erpBaseMaterial.setFname(erpMaterial.getFname());
+                    erpBaseMaterial.setFspecification(erpMaterial.getFspecification());
+                    erpBaseMaterial.setUnit("kg");
+                    erpBaseMaterial.setConver("1");
+                    erpBaseMaterial.setParent(0);
+                    erpBdMaterialMapper.insert(erpBaseMaterial);
+                    b =true;
+                }
+            }
+            //有下级
+            if (b){
+                for (ErpMaterial erpMaterial : forObjects2) {
+                    if(!erpMaterial.getFnumber().contains("0000")){
+
+                        ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", erpMaterial.getFacctorgid()));
+                        if (ObjectUtil.isEmpty(forgid))
+                            continue;
+                        if (erpBdMaterialMapper.exists(new QueryWrapper<ErpBdMaterial>().eq("erp_fnumber", erpMaterial.getFnumber()).eq("org_id",forgid.getOrgId()))){
+                            continue;
+                        }
+                        ErpBdMaterial erpBaseMaterial = new ErpBdMaterial();
+                        erpBaseMaterial.setErpFnumber(erpMaterial.getFnumber());
+                        erpBaseMaterial.setOrgId(forgid.getOrgId());
+                        erpBaseMaterial.setFname(erpMaterial.getFname());
+                        erpBaseMaterial.setFspecification(erpMaterial.getFspecification());
+                        erpBaseMaterial.setUnit("kg");
+                        erpBaseMaterial.setConver("1");
+                        ErpBdMaterial erpBdMaterial = erpBdMaterialMapper.selectOne(new QueryWrapper<ErpBdMaterial>().
+                                eq("erp_fnumber", forObject.getFnumber() + "0000").eq("org_id", forgid.getOrgId()));
+                        if (ObjectUtil.isEmpty(erpBdMaterial)){
+                            continue;
+                        }
+                        erpBaseMaterial.setParent(erpBdMaterial.getId());
+                        erpBdMaterialMapper.insert(erpBaseMaterial);
+                    }
+                }
+            } else {
+                for (ErpMaterial erpMaterial : forObjects2) {
+
+                    ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", erpMaterial.getFacctorgid()));
+                    if (ObjectUtil.isEmpty(forgid))
+                        continue;
+                    if (erpBdMaterialMapper.exists(new QueryWrapper<ErpBdMaterial>().eq("erp_fnumber", erpMaterial.getFnumber()).eq("org_id",forgid.getOrgId()))){
+                        continue;
+                    }
+                    ErpBdMaterial erpBaseMaterial = new ErpBdMaterial();
+                    erpBaseMaterial.setErpFnumber(erpMaterial.getFnumber());
+                    erpBaseMaterial.setOrgId(forgid.getOrgId());
+                    erpBaseMaterial.setFname(erpMaterial.getFname());
+                    erpBaseMaterial.setFspecification(erpMaterial.getFspecification());
+                    erpBaseMaterial.setParent(0);
+                    erpBaseMaterial.setUnit("kg");
+                    erpBaseMaterial.setConver("1");
+                    erpBdMaterialMapper.insert(erpBaseMaterial);
+
+                    ErpBdMaterial erpBaseMaterial1 = new ErpBdMaterial();
+                    erpBaseMaterial1.setErpFnumber(erpMaterial.getFnumber());
+                    erpBaseMaterial1.setOrgId(forgid.getOrgId());
+                    erpBaseMaterial1.setFname(erpMaterial.getFname());
+                    erpBaseMaterial1.setFspecification(erpMaterial.getFspecification());
+                    erpBaseMaterial1.setParent(erpBaseMaterial.getId());
+                    erpBaseMaterial1.setUnit("kg");
+                    erpBaseMaterial1.setConver("1");
+                    erpBdMaterialMapper.insert(erpBaseMaterial1);
+                }
+            }
+        }
+    }
+
+    //获取原材料 等
+    @Override
+    public void  getMaterialRaw(){
+        ResponseEntity<List<ErpMaterial>> response = restTemplate.exchange(
+                "http://127.0.0.1:9200/erp-bd-org/getMaterialRaw",
+                HttpMethod.GET,
+                null,
+                new ParameterizedTypeReference<List<ErpMaterial>>() {}
+        );
+        List<ErpMaterial> forObjects = response.getBody();
+        System.out.println(forObjects);
+        for (ErpMaterial erpMaterial : forObjects) {
+            if (erpBdRawMaterialMapper.exists(new QueryWrapper<ErpBdRawMaterial>().eq("erp_fnumber", erpMaterial.getFnumber())))
+                continue;
+            ErpBdOrg forgid = erpBdOrgMapper.selectOne(new QueryWrapper<ErpBdOrg>().eq("forgid", erpMaterial.getFacctorgid()));
+            if (ObjectUtil.isEmpty(forgid))
+                continue;
+            ErpBdRawMaterial erpBdRawMaterial = new ErpBdRawMaterial();
+            erpBdRawMaterial.setFspecification(erpMaterial.getFspecification());
+            erpBdRawMaterial.setOrgId(forgid.getOrgId());
+            erpBdRawMaterial.setErpFnumber(erpMaterial.getFnumber());
+            erpBdRawMaterial.setFname(erpMaterial.getFname());
+            erpBdRawMaterial.setMaterialType(getType(erpMaterial.getFnumber()));
+            erpBdRawMaterial.setMateralId(erpMaterial.getFMATERIALID());
+            erpBdRawMaterialMapper.insert(erpBdRawMaterial);
+        }
+    }
+
+    private Integer getType(String erpFunmber) {
+        if (erpFunmber.startsWith("01"))
+            return 1;
+        else if (erpFunmber.startsWith("10"))
+            return 0;
+        else if (erpFunmber.startsWith("11"))
+            return 3;
+        else if (erpFunmber.startsWith("15"))
+            return 2;
+        else
+            return 4;
+    }
+}

+ 8 - 1
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/controller/DongShiEmployeeInfoController.java

@@ -67,13 +67,20 @@ public class DongShiEmployeeInfoController {
     }
 
     @ApiOperationSupport(order = 1)
-    @ApiOperation("获取员工支出明细")
+    @ApiOperation("获取员工人数明细")
     @PostMapping("/hr/dongShi/zhiChuDetails")
     public CommonResult<List<DongShiCountNum>> zhiChuDetails(@RequestBody DongShiPurchaseParam dongShiPurchaseParam) {
         return CommonResult.data(hrBaseEmployeeInfoService.zhiChuDetails(dongShiPurchaseParam));
     }
 
     @ApiOperationSupport(order = 1)
+    @ApiOperation("获取员工薪酬支出明细")
+    @PostMapping("/hr/dongShi/yuanGongzhiChuDetails")
+    public CommonResult<List<DongShiCountNum>> yuanGongzhiChuDetails(@RequestBody DongShiPurchaseParam dongShiPurchaseParam) {
+        return CommonResult.data(hrBaseEmployeeInfoService.yuanGongzhiChuDetails(dongShiPurchaseParam));
+    }
+
+    @ApiOperationSupport(order = 1)
     @ApiOperation("员工数量趋势")
     @PostMapping("/hr/dongShi/yuanGongNum")
     public CommonResult<List<DongShiCountNum>> yuanGongNum(@RequestBody DongShiPurchaseParam dongShiPurchaseParam) {

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

@@ -156,6 +156,7 @@ public class HrBaseEmployeeInfo {
 
     /** 预计退休时间 */
     @ApiModelProperty(value = "预计退休时间", position = 28)
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date retireTime;
 
     /** 0 未婚 1已婚 */
@@ -228,4 +229,5 @@ public class HrBaseEmployeeInfo {
 
     @ApiModelProperty(value = "序号", position = 51)
     private String number;
+    private int retier;
 }

+ 4 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/entity/vo/EoucationVo.java

@@ -29,4 +29,8 @@ public class EoucationVo {
     @ApiModelProperty(value = "博士研究生")
     private int phdNum;
 
+    public EoucationVo(String departmentName, int countNum) {
+        this.departmentName = departmentName;
+        this.countNum = countNum;
+    }
 }

+ 2 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/service/HrBaseEmployeeInfoService.java

@@ -104,4 +104,6 @@ public interface HrBaseEmployeeInfoService extends IService<HrBaseEmployeeInfo>
     List<DongShiCountNum> zhiChuDetails(DongShiPurchaseParam dongShiPurchaseParam);
 
     List<DongShiCountNum> yuanGongNum(DongShiPurchaseParam dongShiPurchaseParam);
+
+    List<DongShiCountNum> yuanGongzhiChuDetails(DongShiPurchaseParam dongShiPurchaseParam);
 }

+ 32 - 43
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/service/impl/HrBaseEmployeeInfoServiceImpl.java

@@ -19,6 +19,7 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.EasyExcel;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -53,8 +54,7 @@ import javax.validation.constraints.NotBlank;
 import java.util.*;
 import java.util.stream.Collectors;
 
-import static vip.xiaonuo.money.service.impl.MoneyBusinessServiceImpl.calculateYOYChange;
-import static vip.xiaonuo.money.service.impl.MoneyBusinessServiceImpl.calculateYOYZiJinYvE;
+import static vip.xiaonuo.money.service.impl.MoneyBusinessServiceImpl.*;
 
 /**
  * 人员明细Service接口实现类
@@ -100,6 +100,7 @@ public class HrBaseEmployeeInfoServiceImpl extends ServiceImpl<HrBaseEmployeeInf
     @Override
     public void add(HrBaseEmployeeInfoAddParam hrBaseEmployeeInfoAddParam) {
         HrBaseEmployeeInfo hrBaseEmployeeInfo = BeanUtil.toBean(hrBaseEmployeeInfoAddParam, HrBaseEmployeeInfo.class);
+
         this.save(hrBaseEmployeeInfo);
     }
 
@@ -156,7 +157,7 @@ public class HrBaseEmployeeInfoServiceImpl extends ServiceImpl<HrBaseEmployeeInf
         countPerson.setDutyNum(this.count(queryWrapper));
 
         queryWrapper.clear();
-        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).eq("USER_TYPE",2);
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).eq("retier",1);
         countPerson.setRetireAndDutyNum(this.count(queryWrapper));
 
         queryWrapper.clear();
@@ -184,18 +185,13 @@ public class HrBaseEmployeeInfoServiceImpl extends ServiceImpl<HrBaseEmployeeInf
 
             Map<Object, Long> departmentCountMap = list.stream()
                     .collect(Collectors.groupingBy(
-                            o -> o.getDepartmentId(), // 分组的键是部门ID
+                            HrBaseEmployeeInfo::getDepartmentName, // 分组的键是部门ID
                             Collectors.counting()    // 分组的值是该部门ID对应的人数
                     ));
-             personList = baseDepartments.stream()
-                    .map(baseDepartment -> {
-                        EoucationVo eoucationVo = new EoucationVo();
-                        eoucationVo.setDepartmentName(baseDepartment.getName());
-                        // 使用getOrDefault来避免Map中不存在的键导致的NullPointerException
-                        eoucationVo.setCountNum(departmentCountMap.getOrDefault(baseDepartment.getId(), 0L).intValue());
-                        return eoucationVo;
-                    })
+            personList = departmentCountMap.entrySet().stream()
+                    .map(entry -> new EoucationVo(entry.getKey()+"", entry.getValue().intValue()))
                     .collect(Collectors.toList());
+
             countPerson.setRetirePersonNum(personList);
 
         } else {
@@ -272,11 +268,11 @@ public class HrBaseEmployeeInfoServiceImpl extends ServiceImpl<HrBaseEmployeeInf
         DongShiCountNum dongShiCountNum = new DongShiCountNum();
         dongShiCountNum.setJobNum(hrPeopleWrite.getPeopleNumber()+"");
         dongShiCountNum.setJobNumIsOn(lastMonthrPeopleWrite.getPeopleNumber() <= hrPeopleWrite.getPeopleNumber());
-        dongShiCountNum.setJobNumOnYear(calculateYOYZiJinYvE(hrPeopleWrite.getPeopleNumber(),lastMonthrPeopleWrite.getPeopleNumber()));
+        dongShiCountNum.setJobNumOnYear(calculateYOYChange2(hrPeopleWrite.getPeopleNumber(),lastMonthrPeopleWrite.getPeopleNumber()));
 
         dongShiCountNum.setJobNumAvgYear(hrPeopleWriteYear.getPeopleNumber()+"");
         dongShiCountNum.setYearJobNumIsOn(lasthrPeopleWriteYear.getPeopleNumber() <= hrPeopleWriteYear.getPeopleNumber());
-        dongShiCountNum.setYearJobNumOnYear(calculateYOYZiJinYvE(hrPeopleWriteYear.getPeopleNumber(),lasthrPeopleWriteYear.getPeopleNumber()));
+        dongShiCountNum.setYearJobNumOnYear(calculateYOYChange2(hrPeopleWriteYear.getPeopleNumber(),lasthrPeopleWriteYear.getPeopleNumber()));
 
         QueryWrapper<MoneyBusiness> wapper1 = new QueryWrapper<MoneyBusiness>();
         wapper1.eq(StringUtils.isNotBlank(orgId),"org_id", orgId).between("create_time", date, DateUtil.endOfMonth(date));
@@ -296,43 +292,19 @@ public class HrBaseEmployeeInfoServiceImpl extends ServiceImpl<HrBaseEmployeeInf
 
         dongShiCountNum.setPay(moneyBusiness.getPeopleMoney());
         dongShiCountNum.setPayIsOn(Double.parseDouble(lastMonthMoneyBusiness.getPeopleMoney()) <= Double.parseDouble(moneyBusiness.getPeopleMoney()));
-        dongShiCountNum.setPayOnYear(calculateYOYZiJinYvE(Double.parseDouble(moneyBusiness.getPeopleMoney()),Double.parseDouble(lastMonthMoneyBusiness.getPeopleMoney())));
+        dongShiCountNum.setPayOnYear(calculateYOYChange2(Double.parseDouble(moneyBusiness.getPeopleMoney()),Double.parseDouble(lastMonthMoneyBusiness.getPeopleMoney())));
 
         dongShiCountNum.setPayAvgYear(yearMoneyBusiness.getPeopleMoney());
         dongShiCountNum.setYearPayIsOn(Double.parseDouble(lastYearMoneyBusiness.getPeopleMoney()) <= Double.parseDouble(yearMoneyBusiness.getPeopleMoney()));
-        dongShiCountNum.setYearPayOnYear(calculateYOYZiJinYvE(Double.parseDouble(yearMoneyBusiness.getPeopleMoney()),Double.parseDouble(lastYearMoneyBusiness.getPeopleMoney())));
+        dongShiCountNum.setYearPayOnYear(calculateYOYChange2(Double.parseDouble(yearMoneyBusiness.getPeopleMoney()),Double.parseDouble(lastYearMoneyBusiness.getPeopleMoney())));
 
         dongShiCountNum.setOutputValue(moneyBusiness.getOutputValue());
         dongShiCountNum.setOutputValueIsOn(Double.parseDouble(lastMonthMoneyBusiness.getOutputValue()) <= Double.parseDouble(moneyBusiness.getOutputValue()));
-        dongShiCountNum.setOutputValueOnYear(calculateYOYZiJinYvE(Double.parseDouble(moneyBusiness.getOutputValue()),Double.parseDouble(lastMonthMoneyBusiness.getOutputValue())));
+        dongShiCountNum.setOutputValueOnYear(calculateYOYChange2(Double.parseDouble(moneyBusiness.getOutputValue()),Double.parseDouble(lastMonthMoneyBusiness.getOutputValue())));
 
         dongShiCountNum.setOutputValueAvgYear(yearMoneyBusiness.getOutputValue());
         dongShiCountNum.setYearOutputValueIsOn(Double.parseDouble(lastYearMoneyBusiness.getOutputValue()) <= Double.parseDouble(yearMoneyBusiness.getOutputValue()));
-        dongShiCountNum.setYearOutputValueOnYear(calculateYOYZiJinYvE(Double.parseDouble(yearMoneyBusiness.getOutputValue()),Double.parseDouble(lastYearMoneyBusiness.getOutputValue())));
-//        QueryWrapper<HrBaseEmployeeInfo> wapper = new QueryWrapper<HrBaseEmployeeInfo>();
-//        wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId).between("CREATE_TIME", date, DateUtil.endOfMonth(date));
-//        DongShiCountNum dongShiCountNum = hrBaseEmployeeInfoMapper.zhiBiao(wapper);
-//        wapper.clear();
-//        wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId).between("CREATE_TIME", DateUtil.offsetMonth(date,-12), DateUtil.offsetMonth(DateUtil.endOfMonth(date),-12));
-//        DongShiCountNum lastdongShiCountNum = hrBaseEmployeeInfoMapper.zhiBiao(wapper);
-//        wapper.clear();
-//        wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId).between("CREATE_TIME", DateUtil.beginOfYear(date), DateUtil.endOfYear(date));
-//        DongShiCountNum dongShiCountNumYear = hrBaseEmployeeInfoMapper.zhiBiao(wapper);
-//        dongShiCountNum.setPayAvgYear(dongShiCountNumYear.getPayAvg());
-//        dongShiCountNum.setJobNumAvgYear(dongShiCountNumYear.getJobNumAvg());
-//        dongShiCountNum.setOutputValueAvgYear(dongShiCountNumYear.getOutputValueAvg());
-//
-//
-//        dongShiCountNum.setPayIsOn(getDouble(lastdongShiCountNum.getPay())<getDouble(dongShiCountNum.getPay()));
-//        dongShiCountNum.setJobNumIsOn(getDouble(lastdongShiCountNum.getJobNum() )<getDouble(dongShiCountNum.getJobNum()));
-//        dongShiCountNum.setOutputValueIsOn(getDouble(lastdongShiCountNum.getOutputValue()) <getDouble(dongShiCountNum.getOutputValue()));
-//
-//        dongShiCountNum.setPayOnYear(calculateYOYZiJinYvE(getDouble(dongShiCountNum.getPay()),getDouble(lastdongShiCountNum.getPay())));
-//        dongShiCountNum.setJobNumOnYear(calculateYOYZiJinYvE(getDouble(dongShiCountNum.getJobNum()),getDouble(lastdongShiCountNum.getJobNum())));
-//        dongShiCountNum.setOutputValueOnYear(calculateYOYZiJinYvE(getDouble(dongShiCountNum.getOutputValue()),getDouble(lastdongShiCountNum.getOutputValue())));
-
-
-
+        dongShiCountNum.setYearOutputValueOnYear(calculateYOYChange2(Double.parseDouble(yearMoneyBusiness.getOutputValue()),Double.parseDouble(lastYearMoneyBusiness.getOutputValue())));
 
         return dongShiCountNum;
     }
@@ -389,7 +361,7 @@ public class HrBaseEmployeeInfoServiceImpl extends ServiceImpl<HrBaseEmployeeInf
         for (int i = 0; i < busAllParams.size() -1 ; i++) {
             DongShiCountNum  lastDsBus  = busAllParams.get(i);
             DongShiCountNum dsBusAllParam = busAllParams.get(i + 1);
-            dsBusAllParam.setJobNumOnYear(calculateYOYZiJinYvE(getDouble(dsBusAllParam.getJobNum()),getDouble(lastDsBus.getJobNum( ))));
+            dsBusAllParam.setJobNumOnYear(calculateYOYChange2(getDouble(dsBusAllParam.getJobNum()),getDouble(lastDsBus.getJobNum( ))));
             dsBusAllParam.setJobNumIsOn(getDouble(lastDsBus.getJobNum()) <getDouble(dsBusAllParam.getJobNum()));
         }
         if (ObjectUtil.isNotEmpty(busAllParams)){
@@ -401,6 +373,23 @@ public class HrBaseEmployeeInfoServiceImpl extends ServiceImpl<HrBaseEmployeeInf
         return busAllParams;
     }
 
+    @Override
+    public List<DongShiCountNum> yuanGongzhiChuDetails(DongShiPurchaseParam dongShiPurchaseParam) {
+        String orgId = dongShiPurchaseParam.getOrgId();
+        Integer type = dongShiPurchaseParam.getType();
+        QueryWrapper<HrCount> wapper = new QueryWrapper<HrCount>();
+
+        wapper.eq( StringUtils.isNotBlank(orgId),"org_id", orgId).orderByAsc("ymonth").groupBy("ymonth");
+        List<DongShiCountNum> dongShiCountNums;
+        if (ObjectUtil.isEmpty(type) || 0 ==  type){
+            dongShiCountNums= hrCountMapper.yuanGongzhiChuDetailsMonth(wapper);
+        }else {
+            dongShiCountNums = hrCountMapper.yuanGongzhiChuDetailsYear(wapper);
+        }
+
+        return dongShiCountNums;
+    }
+
     private List<PerNum> getEndList(PerNum perNum) {
         List endList = new ArrayList();
         endList.add(new PerNum("1-3年",perNum.getOne()));

+ 4 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/mapper/HrCountMapper.java

@@ -31,4 +31,8 @@ public interface HrCountMapper extends BaseMapper<HrCount> {
     List<DongShiCountNum> getZhiChuDetailsMonth(@Param(Constants.WRAPPER)QueryWrapper<HrCount> wapper);
 
     List<DongShiCountNum> getZhiChuDetailsYear(@Param(Constants.WRAPPER)QueryWrapper<HrCount> wapper);
+
+    List<DongShiCountNum> yuanGongzhiChuDetailsMonth(@Param(Constants.WRAPPER)QueryWrapper<HrCount> wapper);
+
+    List<DongShiCountNum> yuanGongzhiChuDetailsYear(@Param(Constants.WRAPPER)QueryWrapper<HrCount> wapper);
 }

+ 2 - 2
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/write/entity/HrPeopleWrite.java

@@ -35,8 +35,8 @@ public class HrPeopleWrite implements Serializable {
 
     private String orgId;
 
-    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
-    private String createTime;
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date createTime;
 
     private Integer peopleNumber;
 

+ 5 - 0
huimv-farm/src/main/java/vip/xiaonuo/importData/entity/HrData.java

@@ -29,6 +29,7 @@ public class HrData {
 
     /** 出生日期 */
     @ApiModelProperty(value = "出生日期", position = 6)
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date birthday;
 
     /** 民族 */
@@ -66,6 +67,7 @@ public class HrData {
     /** 入职日期 */
     @ApiModelProperty(value = "入职日期", position = 17)
 //    @JsonFormat(pattern = "yyyy.M",timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date entryDate;
 
     /** 机构id */
@@ -113,6 +115,7 @@ public class HrData {
     private String newSalary;
 
     @ApiModelProperty(value = "转正日期",position = 41)
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date confirmationTime;
 
     @ApiModelProperty(value = "定额工资",position = 42)
@@ -142,4 +145,6 @@ public class HrData {
     @ApiModelProperty(value = "序号", position = 51)
     private String number;
 
+    private String tuixiu;
+
 }

+ 15 - 5
huimv-farm/src/main/java/vip/xiaonuo/importData/service/impl/ImportDataImpl.java

@@ -1,10 +1,12 @@
 package vip.xiaonuo.importData.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.druid.sql.visitor.functions.If;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
@@ -98,6 +100,7 @@ public class ImportDataImpl implements ImportData {
         map.put("社保" , "socialSecurity");
         map.put("公积金" , "providentFund");
         map.put("婚姻" , "marriage");
+        map.put("是否退休返聘" , "tuixiu");
         String idCard = "";
         try(
                 //这里面的对象会自动关闭
@@ -130,10 +133,12 @@ public class ImportDataImpl implements ImportData {
             for (HrData hrData : list) {
                 HrBaseEmployeeInfo info = new HrBaseEmployeeInfo();
                 BeanUtil.copyProperties(hrData, info);
-
+                idCard  = hrData.getIdCardNumber();
+                System.out.println(idCard);
                 info.setEducation(hrData.getCultureLevelNum());
                 info.setCultureLevel(getCultureLevel(hrData.getCultureLevelNum()));
 
+
                 info.setOrgId(orgId);
                 for (HrBaseDepartment department : departments1) {
                     if (department.getName().equals(hrData.getDepartmentName())) {
@@ -162,9 +167,9 @@ public class ImportDataImpl implements ImportData {
                     info.setSiLing(getSiLing(contactStartTime));
                     info.setUserType(getEndDate(contactStartTime));
                 }
-
-                idCard  = hrData.getIdCardNumber();
-                System.out.println(idCard);
+                Date birthday = hrData.getBirthday();
+                info.setRetireTime(DateUtil.offset(birthday, DateField.YEAR,60));
+                info.setRetier(60 > Integer.parseInt(info.getAge()) ? 0 : 1);
                 if ("".equals(idCard) || null == idCard) {
                     return CommonResult.error("表格中存在身份证号为空!请检查后重新导入");
                 } else {
@@ -320,6 +325,7 @@ public class ImportDataImpl implements ImportData {
     }
 
     @Override
+    @Transactional
     public CommonResult importOverdue(HttpServletRequest httpServletRequest, String orgId, MultipartFile files) {
         Map<String , String> map = new HashMap<>();
         //表头与键值对的映射关系
@@ -375,11 +381,15 @@ public class ImportDataImpl implements ImportData {
                     overdue.setYqts(overdueData.getYqts());
                     overdue.setDeadline(overdueData.getDeadline());
                     overdue.setDocumentNumber(overdueData.getDocumentNumber());
+                    overdue.setBatchLast(1);
                     overdueMapper.insert(overdue);
                 }
 
             }
-
+            MoneyWriteOverdue moneyWriteOverdue = new MoneyWriteOverdue();
+            moneyWriteOverdue.setBatchLast(0);
+            overdueMapper.update(moneyWriteOverdue, new UpdateWrapper<MoneyWriteOverdue>().eq("document_type",1));
+            System.out.println("批量修改完成");
         } catch (Exception e) {
             e.printStackTrace();
             return CommonResult.error();

+ 3 - 1
huimv-farm/src/main/java/vip/xiaonuo/importData/utils/ExcelImportSheet.java

@@ -71,7 +71,9 @@ public class ExcelImportSheet {
                 if (ObjectUtil.isNull(cell)){
                     continue;
                 }
-                System.out.println("----->"+row.getLastCellNum());
+                if (i == 17 && j == 32){
+                    System.out.println("ssss");
+                }
                 System.out.println(i +"----" + j +"----" +paramsList.get(j) +"----" +typeClass.get(j) +"=="+cell );
                 //调用泛型对象的set方法设置单元格里的值 这也就是为什么我们要获取属性顺序以及其对应的类型
                 cs.getMethod(getSetterMethodName(paramsList.get(j)) , typeClass.get(j))

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

@@ -109,7 +109,6 @@ public class MoneyBusinessController {
         return CommonResult.data(endMap);
     }
 
-
     @ApiOperation("董事长页面借款趋势")
     @PostMapping("/money/getBorrowDetail")
     public CommonResult<List<DsBusAllParam>> getBorrowDetail(@RequestBody DsBusParam dsBusParam) {

+ 2 - 1
huimv-farm/src/main/java/vip/xiaonuo/money/controller/MoneyProduceController.java

@@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.money.entity.MoneyProduce;
+import vip.xiaonuo.money.entity.vo.MoneyProduce0422Vo;
 import vip.xiaonuo.money.entity.vo.MoneyProduceScreenVo;
 import vip.xiaonuo.money.param.*;
 import vip.xiaonuo.money.service.IMoneyProduceService;
@@ -45,7 +46,7 @@ public class MoneyProduceController {
     @ApiOperationSupport(order = 1)
     @ApiOperation("收入占比分析")
     @PostMapping("/money-produce/analysisIncome")
-    public CommonResult<MoneyProduce> analysisIncome(@RequestBody  MoneyAnalysisParam analysisParam) {
+    public CommonResult< List<MoneyProduce0422Vo>> analysisIncome(@RequestBody  MoneyAnalysisParam analysisParam) {
         return CommonResult.data(produceService.analysisIncome(analysisParam));
     }
 

+ 8 - 3
huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyBorrowWarning.java

@@ -1,5 +1,6 @@
 package vip.xiaonuo.money.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -46,7 +47,7 @@ public class MoneyBorrowWarning implements Serializable {
      * 借款时间
      */
     @ApiModelProperty(value = "借款时间", position = 3)
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date borrowTime;
 
     /**
@@ -65,7 +66,7 @@ public class MoneyBorrowWarning implements Serializable {
      * 截至日期
      */
     @ApiModelProperty(value = "截至日期", position = 6)
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date endTime;
 
 
@@ -80,7 +81,7 @@ public class MoneyBorrowWarning implements Serializable {
     private String bankType;
 
     @ApiModelProperty(value = "还款时间", position = 10)
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date repaymentTime;
 
 
@@ -90,5 +91,9 @@ public class MoneyBorrowWarning implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date deadline;
 
+    @TableField(exist = false)
+    private String countMoney;
+
+
 
 }

+ 1 - 2
huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyProducePrice.java

@@ -48,8 +48,7 @@ public class MoneyProducePrice implements Serializable {
      * 创建时间
      */
     @ApiModelProperty(value = "创建时间", position = 3)
-    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
-    private Date createTime;
+    private String createTime;
 
     /**
      * 收入

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

@@ -101,4 +101,6 @@ public class MoneyWriteOverdue implements Serializable {
     @ApiModelProperty(value = "截止日期", position = 8)
     private Date deadline;
 
+    private Integer batchLast;
+
 }

+ 49 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/vo/MoneyProduce0422Vo.java

@@ -0,0 +1,49 @@
+package vip.xiaonuo.money.entity.vo;
+
+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-04-22
+ */
+@Data
+public class MoneyProduce0422Vo implements Serializable {
+
+
+
+    @ApiModelProperty(value = "物料名称", position = 7)
+    private String materialName;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间", position = 1)
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 金额
+     */
+    @ApiModelProperty(value = "金额", position = 2)
+    private String materialAmount;
+
+
+    @ApiModelProperty(value = "id",position = 3)
+    private String orgId;
+
+
+}

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

@@ -34,4 +34,6 @@ public interface MoneyBusinessMapper extends BaseMapper<MoneyBusiness> {
     List<DsBusAllParam> getBorrowDetailYear(@Param(Constants.WRAPPER)QueryWrapper<MoneyBusiness> wapper);
 
     MoneyBusiness zhiBiao(@Param(Constants.WRAPPER)QueryWrapper<MoneyBusiness> wapper1);
+
+    DsBusAllParam selectBorrow(@Param(Constants.WRAPPER)QueryWrapper<MoneyBusiness> wapper);
 }

+ 8 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyProduce0422Mapper.java

@@ -1,7 +1,14 @@
 package vip.xiaonuo.money.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Param;
+import vip.xiaonuo.money.entity.MoneyProduce;
 import vip.xiaonuo.money.entity.MoneyProduce0422;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.money.entity.vo.MoneyProduce0422Vo;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +20,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface MoneyProduce0422Mapper extends BaseMapper<MoneyProduce0422> {
 
+    List<MoneyProduce0422Vo> analysisIncome(@Param(Constants.WRAPPER) QueryWrapper<MoneyProduce0422> produce0422QueryWrapper);
 }

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

@@ -1,8 +1,13 @@
 package vip.xiaonuo.money.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Param;
 import vip.xiaonuo.money.entity.MoneyProducePrice;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
+import java.util.List;
+
 /**
  * <p>
  * 财务产品成本收入 Mapper 接口
@@ -13,4 +18,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface MoneyProducePriceMapper extends BaseMapper<MoneyProducePrice> {
 
+    List<MoneyProducePrice> listProduceProfit(@Param(Constants.WRAPPER) QueryWrapper<MoneyProducePrice> queryWrapper);
 }

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

@@ -16,6 +16,8 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.time.Month;
+
 /**
  * 人员明细Id参数
  *
@@ -38,4 +40,7 @@ public class MoneyBorrowDetailParam {
 
     @ApiModelProperty(value = "页大小", required = true)
     private Integer pageSize;
+    private String month;
+    private String startDate;
+    private String endDate;
 }

+ 3 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyBusinessPageParam.java

@@ -35,5 +35,8 @@ public class MoneyBusinessPageParam {
 
     @ApiModelProperty(value = "页面大小", required = true)
     private Integer pageSize;
+    private String batchLast;
+    private String startDate;
+    private String endDate;
 
 }

+ 2 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyInOutPageParam.java

@@ -36,5 +36,7 @@ public class MoneyInOutPageParam {
 
     @ApiModelProperty(value = "页面大小", required = true)
     private Integer pageSize;
+    private String startDate;
+    private String endDate;
 
 }

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

@@ -17,6 +17,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import javax.validation.constraints.NotNull;
+import java.util.Date;
 
 /**
  * 人员明细Id参数
@@ -33,5 +34,7 @@ public class MoneyInOutParam {
     private String orgId;
     @ApiModelProperty(value = "时间,格式为'2024-10'", required = true)
     private String time;
+    private String chanPin;
+    private String date;
 
 }

+ 2 - 1
huimv-farm/src/main/java/vip/xiaonuo/money/service/IMoneyProduceService.java

@@ -7,6 +7,7 @@ import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.money.entity.MoneyProduce;
 import com.baomidou.mybatisplus.extension.service.IService;
 import vip.xiaonuo.money.entity.MoneyProduce0422;
+import vip.xiaonuo.money.entity.vo.MoneyProduce0422Vo;
 import vip.xiaonuo.money.entity.vo.MoneyProduceScreenVo;
 import vip.xiaonuo.money.param.*;
 
@@ -24,7 +25,7 @@ import java.util.Map;
 public interface IMoneyProduceService extends IService<MoneyProduce> {
 
     //财务图表收入分析占比
-   MoneyProduce analysisIncome(MoneyAnalysisParam analysisParam);
+    List<MoneyProduce0422Vo> analysisIncome(MoneyAnalysisParam analysisParam);
 
     //财务图表产品销售趋势分析
     JSONArray produceAnalysis(MoneyProduceParam moneyProduceParam);

+ 35 - 10
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyBorrowWarningServiceImpl.java

@@ -1,5 +1,7 @@
 package vip.xiaonuo.money.service.impl;
 
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -17,6 +19,8 @@ import vip.xiaonuo.money.param.MoneyInOutParam;
 import vip.xiaonuo.money.service.IMoneyBorrowWarningService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
+import vip.xiaonuo.sys.modular.org.entity.SysOrg;
+import vip.xiaonuo.sys.modular.org.mapper.SysOrgMapper;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -39,6 +43,8 @@ public class MoneyBorrowWarningServiceImpl extends ServiceImpl<MoneyBorrowWarnin
 
     @Autowired
     private MoneyBorrowWarningMapper borrowWarningMapper;
+    @Autowired
+    private SysOrgMapper sysOrgMapper;
 
     @Override
     public List<MoneyBorrowWarning> listBorrowWarning(MoneyInOutParam moneyInOutParam) {
@@ -84,6 +90,7 @@ public class MoneyBorrowWarningServiceImpl extends ServiceImpl<MoneyBorrowWarnin
     public List<MoneyBankNameVo> bankRank(MoneyBorrowParam borrowParam) {
         QueryWrapper<MoneyBorrowWarning> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(StringUtils.isNotBlank(borrowParam.getOrgId()), "org_id", borrowParam.getOrgId());
+        queryWrapper.eq(StringUtils.isNotBlank(borrowParam.getBankName()), "bank_name", borrowParam.getBankName());
         List<MoneyBankNameVo> bankRank = borrowWarningMapper.getBankRank(queryWrapper);
         return bankRank;
     }
@@ -97,16 +104,10 @@ public class MoneyBorrowWarningServiceImpl extends ServiceImpl<MoneyBorrowWarnin
         List<MoneyBorrowPriceVo> borrowPrice = borrowWarningMapper.getBorrowPrice(queryWrapper);
         for (int i = 1; i < 13; i++) {
             MoneyBorrowPriceVo vo = new MoneyBorrowPriceVo();
-            if (i < 10) {
-                vo.setBorrowTime("0"+i+"月");
-                vo.setBorrowPrice("0");
-            } else {
-                vo.setBorrowTime(i+"月");
-                vo.setBorrowPrice("0");
-            }
+            vo.setBorrowTime(i+"月");
+            vo.setBorrowPrice("0");
             for (MoneyBorrowPriceVo priceVo : borrowPrice) {
                 if (i == Integer.parseInt(priceVo.getBorrowTime().substring(5, 7))) {
-                    String price = priceVo.getBorrowPrice();
 
                     vo.setBorrowPrice(priceVo.getBorrowPrice());
                 }
@@ -118,11 +119,35 @@ public class MoneyBorrowWarningServiceImpl extends ServiceImpl<MoneyBorrowWarnin
 
     @Override
     public Page<MoneyBorrowWarning> listBorrowDetail(MoneyBorrowDetailParam detailParam) {
+        String month = detailParam.getMonth();
+        String startDate = detailParam.getStartDate();
+        String endDate = detailParam.getEndDate();
+        Date now = new Date();
+
         QueryWrapper<MoneyBorrowWarning> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(StringUtils.isNotBlank(detailParam.getOrgId()), "org_id", detailParam.getOrgId());
         queryWrapper.eq(StringUtils.isNotBlank(detailParam.getBankName()), "bank_name", detailParam.getBankName());
-        Page page = new Page<MoneyBorrowWarning>(detailParam.getPageNum(), detailParam.getPageSize());
-        return this.page(page, queryWrapper);
+        queryWrapper.ge(StringUtils.isNotBlank(startDate), "repayment_time", startDate);
+        queryWrapper.le(StringUtils.isNotBlank(endDate), "repayment_time", endDate);
+        if (StringUtils.isNotBlank(month)){
+            queryWrapper.between("repayment_time",now, DateUtil.offsetMonth(now,Integer.parseInt(month)) );
+        }
+
+        queryWrapper.orderByDesc("borrow_time");
+        Page<MoneyBorrowWarning> page = this.page(new Page<MoneyBorrowWarning>(detailParam.getPageNum(), detailParam.getPageSize()), queryWrapper);
+        queryWrapper.select("sum(borrow_price) countMoney ");
+        MoneyBorrowWarning moneyBorrowWarning = borrowWarningMapper.selectOne(queryWrapper);
+        for (MoneyBorrowWarning record : page.getRecords()) {
+            SysOrg sysOrg = sysOrgMapper.selectById(record.getOrgId());
+            record.setCompany(sysOrg.getFdesc());
+        }
+        if (ObjectUtil.isNotEmpty(moneyBorrowWarning)){
+            page.setCountId(moneyBorrowWarning.getCountMoney());
+        }else {
+            page.setCountId("0");
+        }
+
+        return page;
     }
 
     @Override

+ 29 - 4
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyBusinessServiceImpl.java

@@ -171,17 +171,28 @@ public class MoneyBusinessServiceImpl extends ServiceImpl<MoneyBusinessMapper, M
         QueryWrapper<MoneyBusiness> wapper = new QueryWrapper<MoneyBusiness>();
         wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId).between("create_time", date, DateUtil.endOfMonth(date));
         DsBusAllParam busAllParam =  businessMapper.dsBusAll(wapper);
+        wapper.clear();
+        wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId).between("borrow_time", date, DateUtil.endOfMonth(date));
+        DsBusAllParam borrowBusAllParam = businessMapper.selectBorrow(wapper);
 
         wapper.clear();
         wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId)
                 .between("create_time", lastYear, DateUtil.endOfMonth(lastYear));
         DsBusAllParam lastBusAllParam =  businessMapper.dsBusAll(wapper);
+        wapper.clear();
+        wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId)
+                .between("borrow_time", lastYear, DateUtil.endOfMonth(lastYear));
+        DsBusAllParam lastborrowBusAllParam =  businessMapper.selectBorrow(wapper);
 
         //今年
         wapper.clear();
         wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId)
                 .between("create_time", DateUtil.beginOfYear(date), DateUtil.endOfYear(date));
         DsBusAllParam yearBusAllParam =  businessMapper.dsBusAll(wapper);
+        wapper.clear();
+        wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId)
+                .between("borrow_time", DateUtil.beginOfYear(date), DateUtil.endOfYear(date));
+        DsBusAllParam yearborrowBusAllParam =  businessMapper.selectBorrow(wapper);
 
         //去年
         wapper.clear();
@@ -194,20 +205,21 @@ public class MoneyBusinessServiceImpl extends ServiceImpl<MoneyBusinessMapper, M
         busAllParam.setProfitIsOn(getDouble(lastBusAllParam.getProfit()) <getDouble(busAllParam.getProfit()));
         busAllParam.setTaxesIsOn(getDouble(lastBusAllParam.getTaxes()) <getDouble(busAllParam.getTaxes()));
         busAllParam.setBusinessIncomeIsOn(getDouble(lastBusAllParam.getBusinessIncome()) <getDouble(busAllParam.getBusinessIncome()));
-        busAllParam.setBorrowPriceIsOn(getDouble(lastBusAllParam.getBorrowPrice()) <getDouble(busAllParam.getBorrowPrice()));
+        busAllParam.setBorrowPriceIsOn(getDouble(lastborrowBusAllParam.getBorrowPrice()) <getDouble(borrowBusAllParam.getBorrowPrice()));
 
         busAllParam.setBalanceOnYear(calculateYOYChange(getDouble(busAllParam.getBalance()),getDouble(lastBusAllParam.getBalance())));
         busAllParam.setProfitOnYear(calculateYOYChange(getDouble(busAllParam.getProfit()),getDouble(lastBusAllParam.getProfit())));
         busAllParam.setTaxesOnYear(calculateYOYChange(getDouble(busAllParam.getTaxes()),getDouble(lastBusAllParam.getTaxes())));
         busAllParam.setBusinessIncomeOnYear(calculateYOYChange(getDouble(busAllParam.getBusinessIncome()),getDouble(lastBusAllParam.getBusinessIncome())));
-        busAllParam.setBorrowPriceOnYear(calculateYOYChange(getDouble(busAllParam.getBorrowPrice()),getDouble(lastBusAllParam.getBorrowPrice())));
+        busAllParam.setBorrowPriceOnYear(calculateYOYChange(getDouble(borrowBusAllParam.getBorrowPrice()),getDouble(lastborrowBusAllParam.getBorrowPrice())));
 
         //本年
         busAllParam.setBalanceYear(yearBusAllParam.getBalance());
         busAllParam.setProfitYear(yearBusAllParam.getProfit());
         busAllParam.setTaxesYear(yearBusAllParam.getTaxes());
-        busAllParam.setBorrowPriceYear(yearBusAllParam.getBorrowPrice());
+        busAllParam.setBorrowPriceYear(yearborrowBusAllParam.getBorrowPrice());
         busAllParam.setBusinessIncomeYear(yearBusAllParam.getBusinessIncome());
+        busAllParam.setBorrowPrice(borrowBusAllParam.getBorrowPrice());
 
         //年同比
         busAllParam.setYearBusinessIncomeIsOn(getDouble(lastYearBusAllParam.getBusinessIncome()) <getDouble(yearBusAllParam.getBusinessIncome()));
@@ -328,11 +340,24 @@ public class MoneyBusinessServiceImpl extends ServiceImpl<MoneyBusinessMapper, M
         // 计算同比变化率
         double percentageChange = (Math.abs((currentValue - previousValue) / previousValue)) * 100;
         if (percentageChange >500){
-            return "100%";
+            return "500%";
         }
         return String.format("%.2f%%", percentageChange);
     }
 
+    public static String calculateYOYChange2(double currentValue, double previousValue) {
+        // 处理零值情况
+        if (previousValue == 0) {
+            return "0";
+        }
+        // 计算同比变化率
+        double percentageChange = (Math.abs((currentValue - previousValue) / previousValue)) * 100;
+        if (percentageChange >500){
+            return "500";
+        }
+        return String.format("%.2f", percentageChange);
+    }
+
     public static String calculateYOYZiJinYvE(double currentValue, double previousValue) {
         // 处理零值情况
         if (previousValue == 0) {

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

@@ -46,8 +46,8 @@ public class MoneyCostServiceImpl extends ServiceImpl<MoneyCostMapper, MoneyCost
         QueryWrapper<MoneyCost> queryWrapper = new QueryWrapper<>();
         queryWrapper.ge("create_time", currentDateString);
         queryWrapper.eq(StringUtils.isNotBlank(outParam.getOrgId()), "org_id", outParam.getOrgId());
-        queryWrapper.select(" convert(IFNULL(sum(manage)/10000,'0') ,decimal(10,2))manage,convert(IFNULL(sum(sale)/10000,'0'),decimal(10,2)) sale," +
-                " convert(IFNULL(sum(finance)/10000,'0') ,decimal(10,2)) finance, convert(IFNULL(sum(research)/10000,'0'),decimal(10,2)) research," +
+        queryWrapper.select(" round (IFNULL(sum(convert(manage,decimal(10,2)))/10000,0) ,2) manage, round (IFNULL(sum(convert(sale,decimal(10,2)))/10000,'0'),2) sale," +
+                " round(IFNULL(sum( convert(finance ,decimal(10,2)))/10000,'0'),2)  finance,  round (IFNULL(sum(convert(research,decimal(10,2)))/10000,'0'),2) research," +
                 "create_time createTime");
         queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
         queryWrapper.orderByAsc("create_time");
@@ -82,8 +82,17 @@ public class MoneyCostServiceImpl extends ServiceImpl<MoneyCostMapper, MoneyCost
 
     @Override
     public CommonResult page(MoneyInOutPageParam pageParam) {
+        String startDate = pageParam.getStartDate();
+        String endDate = pageParam.getEndDate();
+
         QueryWrapper<MoneyCost> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(StringUtils.isNotBlank(pageParam.getOrgId()), "org_id", pageParam.getOrgId());
+        queryWrapper.ge(StringUtils.isNotBlank(startDate),"create_time",startDate);
+        if (StringUtils.isNotBlank(endDate)){
+            endDate += " -31 23:59:59";
+            queryWrapper.le("create_time",endDate);
+        }
+
         Page<MoneyCost> page = new Page<>(pageParam.getPageNum(), pageParam.getPageSize());
         Page<MoneyCost> page1 = costMapper.selectPage(page, queryWrapper);
         List<MoneyCost> records = page1.getRecords();

+ 54 - 31
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyForecastServiceImpl.java

@@ -44,57 +44,80 @@ public class MoneyForecastServiceImpl extends ServiceImpl<MoneyForecastMapper, M
     @Override
     public List<MoneyForecast> listForecast(MoneyInOutParam outParam) {
         String orgId = outParam.getOrgId();
-        DateTime time = DateUtil.beginOfMonth(new Date());
-        DateTime dateTime2 = DateUtil.offsetMonth(time, -1);
+//        DateTime time = DateUtil.beginOfMonth(new Date());
+        String time = outParam.getDate();
+//        DateTime dateTime2 = DateUtil.offsetMonth(DateUtil.parse(time,"yyyy-MM"), -1);
+
+        if (StringUtils.isBlank(time)){
+            time=DateUtil.format(new Date(),"yyyy-MM");
+        }
+        DateTime beginOfMonth = DateUtil.beginOfMonth(DateUtil.parse(time,"yyyy-MM"));
+        DateTime endOfMonth = DateUtil.endOfMonth(DateUtil.parse(time,"yyyy-MM"));
+        DateTime lastBeginofMonth = DateUtil.offsetMonth(beginOfMonth,-1);
+        DateTime lastendOfMonth = DateUtil.offsetMonth(endOfMonth,-1);
+
         QueryWrapper<SaleCost> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        queryWrapper.ge("create_time", time);
-        queryWrapper.select(" IFNULL(sum(sale_cost_money),'0') saleCostMoney");
+        queryWrapper.between("create_time",  DateUtil.offsetMonth(beginOfMonth,-4), DateUtil.offsetMonth(endOfMonth,-1));
+        queryWrapper.select(" round( IFNULL(sum(CONVERT( sale_cost_money , DECIMAL(10,2))),0)/10000 ,2)saleCostMoney");
         SaleCost saleCost = costMapper.selectOne(queryWrapper);//本月销售成本
         queryWrapper.clear();
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        queryWrapper.between("create_time", dateTime2, time);
-        queryWrapper.select(" IFNULL(sum(sale_cost_money),'0') saleCostMoney");
+        queryWrapper.between("create_time", lastBeginofMonth, lastendOfMonth);
+        queryWrapper.select(" round(IFNULL(sum(CONVERT(sale_cost_money , DECIMAL(10,2))),0) /10000,2) saleCostMoney");
         SaleCost saleCost1 = costMapper.selectOne(queryWrapper);//上月销售成本
 
         QueryWrapper<SaleDetail> queryWrapper1 = new QueryWrapper<>();
         queryWrapper1.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        queryWrapper1.ge("create_time", time);
-        queryWrapper1.select(" IFNULL(sum(sale_money),'0') saleMoney");
+        queryWrapper1.between("create_time", DateUtil.offsetMonth(beginOfMonth,-4),DateUtil.offsetMonth(endOfMonth,-1));
+        queryWrapper1.select(" round(IFNULL(sum(CONVERT(sale_money , DECIMAL(10,2))),0)/10000,2) saleMoney");
         SaleDetail saleDetail = detailMapper.selectOne(queryWrapper1);//本月销售额
         queryWrapper1.clear();
         queryWrapper1.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        queryWrapper1.between("create_time", dateTime2, time);
-        queryWrapper1.select(" IFNULL(sum(sale_money),'0') saleMoney");
+        queryWrapper1.between("create_time", lastBeginofMonth, lastendOfMonth);
+        queryWrapper1.select(" round(IFNULL(sum(CONVERT(sale_money , DECIMAL(10,2))),0)/10000,2) saleMoney");
         SaleDetail saleDetail1 = detailMapper.selectOne(queryWrapper1);//上月销售额
 
         List<MoneyForecast> list = new ArrayList<>();
-        BigDecimal math = new BigDecimal("10000");
-
-
         MoneyForecast moneyForecast = new MoneyForecast();
+        moneyForecast.setSaleCost(String.format("%.2f" ,Double.parseDouble(saleCost.getSaleCostMoney()) /3));
+        moneyForecast.setSaleProfit(String.format("%.2f" ,Double.parseDouble(saleDetail.getSaleMoney())/3));
+        moneyForecast.setSaleNumber(String.format("%.2f",Double.parseDouble(saleDetail.getSaleMoney())-Double.parseDouble(saleCost.getSaleCostMoney())));
         moneyForecast.setType(0);
-        BigDecimal bg = new BigDecimal(saleDetail.getSaleMoney());
-        bg = bg.divide(math, 2, RoundingMode.HALF_UP);
-        moneyForecast.setSaleNumber(bg.toString());
-        BigDecimal bg1 =new BigDecimal(saleCost.getSaleCostMoney());
-        bg1 = bg1.divide(math, 2, RoundingMode.HALF_UP);
-        moneyForecast.setSaleCost(bg1.toString());
-        double v = Double.valueOf(saleDetail.getSaleMoney()) - Double.valueOf(saleCost.getSaleCostMoney());
-        BigDecimal fit = new BigDecimal(String.valueOf(v));
-        moneyForecast.setSaleProfit(fit.divide(math, 2, RoundingMode.HALF_UP).toString());
+
 
         MoneyForecast moneyForecast1 = new MoneyForecast();
+        moneyForecast1.setSaleCost(saleCost1.getSaleCostMoney());
+        moneyForecast1.setSaleProfit(saleDetail1.getSaleMoney());
+        moneyForecast1.setSaleNumber(String.format("%.2f",Double.parseDouble(saleDetail1.getSaleMoney())-Double.parseDouble(saleCost1.getSaleCostMoney())));
         moneyForecast1.setType(1);
-        BigDecimal bg2 = new BigDecimal(saleDetail1.getSaleMoney());
-        bg2 = bg2.divide(math, 2, RoundingMode.HALF_UP);
-        moneyForecast1.setSaleNumber(bg2.toString());
-        BigDecimal bg3 = new BigDecimal(saleCost1.getSaleCostMoney());
-        bg3 = bg3.divide(math, 2, RoundingMode.HALF_UP);
-        moneyForecast1.setSaleCost(bg3.toString());
-        double v1 = Double.valueOf(saleDetail1.getSaleMoney()) - Double.valueOf(saleCost1.getSaleCostMoney());
-        BigDecimal profit = new BigDecimal(String.valueOf(v1));
-        moneyForecast.setSaleProfit(profit.divide(math, 2, RoundingMode.HALF_UP).toString());
+
+//        BigDecimal math = new BigDecimal("10000");
+//
+//
+//        MoneyForecast moneyForecast = new MoneyForecast();
+//        moneyForecast.setType(0);
+//        BigDecimal bg = new BigDecimal(saleDetail.getSaleMoney());
+//        bg = bg.divide(math, 2, RoundingMode.HALF_UP);
+//        moneyForecast.setSaleNumber(bg.toString());
+//        BigDecimal bg1 =new BigDecimal(saleCost.getSaleCostMoney());
+//        bg1 = bg1.divide(math, 2, RoundingMode.HALF_UP);
+//        moneyForecast.setSaleCost(bg1.toString());
+//        double v = Double.valueOf(saleDetail.getSaleMoney()) - Double.valueOf(saleCost.getSaleCostMoney());
+//        BigDecimal fit = new BigDecimal(String.valueOf(v));
+//        moneyForecast.setSaleProfit(fit.divide(math, 2, RoundingMode.HALF_UP).toString());
+//
+//        MoneyForecast moneyForecast1 = new MoneyForecast();
+//        moneyForecast1.setType(1);
+//        BigDecimal bg2 = new BigDecimal(saleDetail1.getSaleMoney());
+//        bg2 = bg2.divide(math, 2, RoundingMode.HALF_UP);
+//        moneyForecast1.setSaleNumber(bg2.toString());
+//        BigDecimal bg3 = new BigDecimal(saleCost1.getSaleCostMoney());
+//        bg3 = bg3.divide(math, 2, RoundingMode.HALF_UP);
+//        moneyForecast1.setSaleCost(bg3.toString());
+//        double v1 = Double.valueOf(saleDetail1.getSaleMoney()) - Double.valueOf(saleCost1.getSaleCostMoney());
+//        BigDecimal profit = new BigDecimal(String.valueOf(v1));
+//        moneyForecast.setSaleProfit(profit.divide(math, 2, RoundingMode.HALF_UP).toString());
 
         list.add(moneyForecast);
         list.add(moneyForecast1);

+ 35 - 24
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyProducePriceServiceImpl.java

@@ -6,9 +6,11 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import vip.xiaonuo.money.entity.MoneyCost;
 import vip.xiaonuo.money.entity.MoneyProducePrice;
 import vip.xiaonuo.money.entity.vo.MoneyBorrowPriceVo;
 import vip.xiaonuo.money.entity.vo.MoneyProduceVo;
+import vip.xiaonuo.money.mapper.MoneyCostMapper;
 import vip.xiaonuo.money.mapper.MoneyProducePriceMapper;
 import vip.xiaonuo.money.param.MoneyInOutParam;
 import vip.xiaonuo.money.service.IMoneyProducePriceService;
@@ -44,58 +46,67 @@ public class MoneyProducePriceServiceImpl extends ServiceImpl<MoneyProducePriceM
     private SaleDetailMapper detailMapper;
     @Autowired
     private SaleCostMapper costMapper;
+    @Autowired
+    private MoneyCostMapper moneyCostMapper;
 
 
     @Override
     public List<MoneyProducePrice> listProduceProfit(MoneyInOutParam outParam) {
         QueryWrapper<MoneyProducePrice> queryWrapper = new QueryWrapper<>();
+        DateTime parse = new DateTime();
+        if (StringUtils.isNotBlank(outParam.getDate())){
+            parse = DateUtil.parse(outParam.getDate(), "yyyy-MM");
+        }
+
+        DateTime dateTime = DateUtil.offsetMonth(parse, -12);
         queryWrapper.eq(StringUtils.isNotBlank(outParam.getOrgId()), "org_id", outParam.getOrgId());
-        queryWrapper.select(" produce_name produceName,profit profit,create_time createTime");
-        queryWrapper.groupBy("produce_name,DATE_FORMAT(create_time,'%Y-%m')");
-        queryWrapper.orderByAsc("create_time");
-        return producePriceMapper.selectList(queryWrapper);
+        queryWrapper.like(StringUtils.isNotBlank(outParam.getChanPin()), "produce_name", outParam.getChanPin());
+        queryWrapper.ge("create_time",dateTime);
+
+        return producePriceMapper.listProduceProfit(queryWrapper);
+
     }
 
     @Override
     public List<MoneyProduceVo> listProduce(MoneyInOutParam outParam) {
         String orgId = outParam.getOrgId();
-        DateTime year = DateUtil.beginOfYear(new Date());
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
-        String format = sdf.format(year);
+        String format = outParam.getDate();
+
+        if (StringUtils.isBlank(format)){
+            format=DateUtil.format(new Date(),"yyyy-MM");
+        }
+        DateTime now = DateUtil.parse(format, "yyyy-MM");
+
         List<MoneyProduceVo> list = new ArrayList<>();
         BigDecimal math = new BigDecimal("10000");
-        for (int i = 1; i < 13; i++) {
+        for (int i = 11; i >=0; i--) {
             MoneyProduceVo vo = new MoneyProduceVo();
-            QueryWrapper<SaleCost> queryWrapper = new QueryWrapper<>();
+            QueryWrapper<MoneyCost> queryWrapper = new QueryWrapper<>();
             queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-            queryWrapper.select(" IFNULL(sum(sale_cost_money),'0') saleCostMoney");
+            queryWrapper.select(" IFNULL(sum(convert(sale,decimal(10,2))),'0') sale");
             QueryWrapper<SaleDetail> queryWrapper1 = new QueryWrapper<>();
             queryWrapper1.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-            queryWrapper1.select(" IFNULL(sum(sale_money),'0') saleMoney");
-            if (i < 10) {
-                vo.setTime(format+"-0"+i);
-                queryWrapper.between("create_time", format + "-0" + i + "-01 00:00:00", format + "-0" + i + "-31 23:59:59");
-                queryWrapper1.between("create_time", format + "-0" + i + "-01 00:00:00", format + "-0" + i + "-31 23:59:59");
-            } else {
-                vo.setTime(format+"-"+i);
-                queryWrapper.between("create_time", format + "-" + i + "-01 00:00:00", format + "-" + i + "-31 23:59:59");
-                queryWrapper1.between("create_time", format + "-" + i + "-01 00:00:00", format + "-" + i + "-31 23:59:59");
-            }
-            SaleCost saleCost = costMapper.selectOne(queryWrapper);//销售成本
+            queryWrapper1.select(" IFNULL(sum(convert(sale_money,decimal(10,2))),'0') saleMoney");
+            DateTime dateTime = DateUtil.offsetMonth(now, -i);
+
+            queryWrapper.between("create_time",dateTime,DateUtil.endOfMonth(dateTime));
+            queryWrapper1.between("create_time",dateTime,DateUtil.endOfMonth(dateTime));
+            vo.setTime(DateUtil.format(dateTime,"yyyy-MM"));
+            MoneyCost saleCost = moneyCostMapper.selectOne(queryWrapper);//销售成本
             SaleDetail saleDetail = detailMapper.selectOne(queryWrapper1);//销售额
             if (ObjectUtil.isEmpty(saleCost)) {
                 vo.setCost("0");
             } else {
-                BigDecimal bg = new BigDecimal(saleCost.getSaleCostMoney());
+                BigDecimal bg = new BigDecimal(saleCost.getSale());
                 bg = bg.divide(math, 2, RoundingMode.HALF_UP);
                 vo.setCost(bg.toString());
             }
             if (ObjectUtil.isEmpty(saleDetail)) {
-                vo.setCost("0");
+                vo.setIncome("0");
             } else {
                 BigDecimal bg = new BigDecimal(saleDetail.getSaleMoney());
                 bg = bg.divide(math, 2, RoundingMode.HALF_UP);
-                vo.setCost(bg.toString());
+                vo.setIncome(bg.toString());
             }
             list.add(vo);
         }

+ 112 - 84
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyProduceServiceImpl.java

@@ -13,6 +13,7 @@ import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.money.entity.MoneyProduce;
 import vip.xiaonuo.money.entity.MoneyProduce0422;
 import vip.xiaonuo.money.entity.MoneyProduceIncome;
+import vip.xiaonuo.money.entity.vo.MoneyProduce0422Vo;
 import vip.xiaonuo.money.entity.vo.MoneyProduceScreenVo;
 import vip.xiaonuo.money.mapper.MoneyProduce0422Mapper;
 import vip.xiaonuo.money.mapper.MoneyProduceIncomeMapper;
@@ -47,7 +48,7 @@ public class MoneyProduceServiceImpl extends ServiceImpl<MoneyProduceMapper, Mon
     private MoneyProduce0422Mapper produce0422Mapper;
 
     @Override
-    public MoneyProduce analysisIncome(MoneyAnalysisParam analysisParam) {
+    public List<MoneyProduce0422Vo> analysisIncome(MoneyAnalysisParam analysisParam) {
         String orgId = analysisParam.getOrgId();
         Integer type = analysisParam.getType();//是否包含关联交易
         String time = analysisParam.getTime();//2024-10
@@ -65,87 +66,114 @@ public class MoneyProduceServiceImpl extends ServiceImpl<MoneyProduceMapper, Mon
         } else {
             produce0422QueryWrapper.eq("is_write", 0);
         }
-        List<MoneyProduce0422> produce0422s = produce0422Mapper.selectList(produce0422QueryWrapper);
-        double v1 = 0.0000;
-        double v2 = 0.0000;
-        double v3 = 0.0000;
-        double v4 = 0.0000;
-        double v5 = 0.0000;
-        double v6 = 0.0000;
-        if (produce0422s.size() != 0) {
-            for (MoneyProduce0422 produce0422 : produce0422s) {
-                    if (produce0422.getMaterialType() == 0) {
-                        if ("".equals(produce0422.getMaterialAmount()) || null == produce0422.getMaterialAmount()) {
-                            v1 = v1;
-                        } else {
-                            v1 = v1 + Double.parseDouble(produce0422.getMaterialAmount());
-                        }
-                    } else if (produce0422.getMaterialType() == 1) {
-                        if ("".equals(produce0422.getMaterialAmount()) || null == produce0422.getMaterialAmount()) {
-                            v2 = v2;
-                        } else {
-                            v2 = v2 + Double.parseDouble(produce0422.getMaterialAmount());
-                        }
-
-                    }else if (produce0422.getMaterialType() == 2) {
-                        if ("".equals(produce0422.getMaterialAmount()) || null == produce0422.getMaterialAmount()) {
-                            v3 = v3;
-                        } else {
-                            v3 = v3 + Double.parseDouble(produce0422.getMaterialAmount());
-                        }
-
-                    }else if (produce0422.getMaterialType() == 3) {
-                        if ("".equals(produce0422.getMaterialAmount()) || null == produce0422.getMaterialAmount()) {
-                            v4 = v4;
-                        } else {
-                            v4 = v4 + Double.parseDouble(produce0422.getMaterialAmount());
-                        }
-
-                    }else if (produce0422.getMaterialType() == 4) {
-                        if ("".equals(produce0422.getMaterialAmount()) || null == produce0422.getMaterialAmount()) {
-                            v5 = v5;
-                        } else {
-                            v5 = v5 + Double.parseDouble(produce0422.getMaterialAmount());
-                        }
-
-                    }else if (produce0422.getMaterialType() == 5) {
-                        if ("".equals(produce0422.getMaterialAmount()) || null == produce0422.getMaterialAmount()) {
-                            v6 = v6;
-                        } else {
-                            v6 = v6 + Double.parseDouble(produce0422.getMaterialAmount());
-                        }
-
-                    }
-                }
-
+        produce0422QueryWrapper.groupBy("g.fname");
+        List<MoneyProduce0422Vo> moneyProduce0422Vos = produce0422Mapper.analysisIncome(produce0422QueryWrapper);
+        List<MoneyProduce0422Vo> list = new ArrayList<>();
+        int i = 0;
+        for (MoneyProduce0422Vo moneyProduce0422Vo : moneyProduce0422Vos) {
+            if (i < 9){
+                list.add(moneyProduce0422Vo);
+                i++;
+            }else if (i == 9){
+                MoneyProduce0422Vo moneyProduce0422Vo1 = new MoneyProduce0422Vo();
+                moneyProduce0422Vo1.setCreateTime(moneyProduce0422Vo.getCreateTime());
+                moneyProduce0422Vo1.setMaterialAmount(moneyProduce0422Vo.getMaterialAmount());
+                moneyProduce0422Vo1.setMaterialName("其它");
+                list.add(moneyProduce0422Vo1);
+                i++;
+            }else {
+                MoneyProduce0422Vo moneyProduce0422Vo2 = list.get(9);
+                moneyProduce0422Vo2.setMaterialAmount(   getSum(moneyProduce0422Vo2.getMaterialAmount() , moneyProduce0422Vo.getMaterialAmount()));
+                list.set(9,moneyProduce0422Vo2);
+            }
         }
-        MoneyProduce produce = new MoneyProduce();
-        BigDecimal math = new BigDecimal("10000");
-
-        BigDecimal bd = new BigDecimal(v1);
-        bd = bd.divide(math, 2, RoundingMode.HALF_UP);
-        BigDecimal bd1 = new BigDecimal(v2);
-        bd1 = bd1.divide(math, 2, RoundingMode.HALF_UP);
-        BigDecimal bd2 = new BigDecimal(v3);
-        bd2 = bd2.divide(math, 2, RoundingMode.HALF_UP);
-        BigDecimal bd3 = new BigDecimal(v4);
-        bd3 = bd3.divide(math, 2, RoundingMode.HALF_UP);
-        BigDecimal bd4 = new BigDecimal(v5);
-        bd4 = bd4.divide(math, 2, RoundingMode.HALF_UP);
-        BigDecimal bd5 = new BigDecimal(v6);
-        bd5 = bd5.divide(math, 2, RoundingMode.HALF_UP);
+        return list;
 
+//        double v1 = 0.0000;
+//        double v2 = 0.0000;
+//        double v3 = 0.0000;
+//        double v4 = 0.0000;
+//        double v5 = 0.0000;
+//        double v6 = 0.0000;
+//        if (produce0422s.size() != 0) {
+//            for (MoneyProduce0422 produce0422 : produce0422s) {
+//                    if (produce0422.getMaterialType() == 0) {
+//                        if ("".equals(produce0422.getMaterialAmount()) || null == produce0422.getMaterialAmount()) {
+//                            v1 = v1;
+//                        } else {
+//                            v1 = v1 + Double.parseDouble(produce0422.getMaterialAmount());
+//                        }
+//                    } else if (produce0422.getMaterialType() == 1) {
+//                        if ("".equals(produce0422.getMaterialAmount()) || null == produce0422.getMaterialAmount()) {
+//                            v2 = v2;
+//                        } else {
+//                            v2 = v2 + Double.parseDouble(produce0422.getMaterialAmount());
+//                        }
+//
+//                    }else if (produce0422.getMaterialType() == 2) {
+//                        if ("".equals(produce0422.getMaterialAmount()) || null == produce0422.getMaterialAmount()) {
+//                            v3 = v3;
+//                        } else {
+//                            v3 = v3 + Double.parseDouble(produce0422.getMaterialAmount());
+//                        }
+//
+//                    }else if (produce0422.getMaterialType() == 3) {
+//                        if ("".equals(produce0422.getMaterialAmount()) || null == produce0422.getMaterialAmount()) {
+//                            v4 = v4;
+//                        } else {
+//                            v4 = v4 + Double.parseDouble(produce0422.getMaterialAmount());
+//                        }
+//
+//                    }else if (produce0422.getMaterialType() == 4) {
+//                        if ("".equals(produce0422.getMaterialAmount()) || null == produce0422.getMaterialAmount()) {
+//                            v5 = v5;
+//                        } else {
+//                            v5 = v5 + Double.parseDouble(produce0422.getMaterialAmount());
+//                        }
+//
+//                    }else if (produce0422.getMaterialType() == 5) {
+//                        if ("".equals(produce0422.getMaterialAmount()) || null == produce0422.getMaterialAmount()) {
+//                            v6 = v6;
+//                        } else {
+//                            v6 = v6 + Double.parseDouble(produce0422.getMaterialAmount());
+//                        }
+//
+//                    }
+//                }
+//
+//        }
+//        MoneyProduce produce = new MoneyProduce();
+//        BigDecimal math = new BigDecimal("10000");
+//
+//        BigDecimal bd = new BigDecimal(v1);
+//        bd = bd.divide(math, 2, RoundingMode.HALF_UP);
+//        BigDecimal bd1 = new BigDecimal(v2);
+//        bd1 = bd1.divide(math, 2, RoundingMode.HALF_UP);
+//        BigDecimal bd2 = new BigDecimal(v3);
+//        bd2 = bd2.divide(math, 2, RoundingMode.HALF_UP);
+//        BigDecimal bd3 = new BigDecimal(v4);
+//        bd3 = bd3.divide(math, 2, RoundingMode.HALF_UP);
+//        BigDecimal bd4 = new BigDecimal(v5);
+//        bd4 = bd4.divide(math, 2, RoundingMode.HALF_UP);
+//        BigDecimal bd5 = new BigDecimal(v6);
+//        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());
 
-        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;
+    private String getSum(String materialAmount, String parseDouble) {
+        return String.format("%.2f",Double.parseDouble(materialAmount),+Double.parseDouble(parseDouble));
     }
 
+
     @Override
     public JSONArray produceAnalysis(MoneyProduceParam moneyProduceParam) {
         String orgId = moneyProduceParam.getOrgId();
@@ -158,18 +186,18 @@ public class MoneyProduceServiceImpl extends ServiceImpl<MoneyProduceMapper, Mon
         if (0 == timeType) {
             Calendar calendar = Calendar.getInstance();
             if (null == number) {
-                calendar.add(Calendar.YEAR, -3);
+                calendar.add(Calendar.YEAR, -2);
             } else {
-                calendar.add(Calendar.YEAR, -number);
+                calendar.add(Calendar.YEAR, -number+1);
             }
             produce0422QueryWrapper.between("create_time", calendar.getTime(), new Date());
             produce0422QueryWrapper.groupBy("DATE_FORMAT(create_time,'%Y'),material_type").orderByAsc("create_time");
         } else {
             Calendar calendar = Calendar.getInstance();
             if (null == number) {
-                calendar.add(Calendar.MONTH, -13);
+                calendar.add(Calendar.MONTH, -12);
             } else {
-                calendar.add(Calendar.MONTH, -number);
+                calendar.add(Calendar.MONTH, -number+1);
             }
             produce0422QueryWrapper.between("create_time", calendar.getTime(), new Date());
             produce0422QueryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m'),material_type").orderByAsc("create_time");
@@ -235,18 +263,18 @@ public class MoneyProduceServiceImpl extends ServiceImpl<MoneyProduceMapper, Mon
         if (0 == timeType) {
             Calendar calendar = Calendar.getInstance();
             if (null == number) {
-                calendar.add(Calendar.YEAR, -3);
+                calendar.add(Calendar.YEAR, -2);
             } else {
-                calendar.add(Calendar.YEAR, -number);
+                calendar.add(Calendar.YEAR, -number+1);
             }
             produce0422QueryWrapper.between("create_time", calendar.getTime(), new Date());
             produce0422QueryWrapper.groupBy("DATE_FORMAT(create_time,'%Y'),material_type").orderByAsc("create_time");
         } else {
             Calendar calendar = Calendar.getInstance();
             if (null == number) {
-                calendar.add(Calendar.MONTH, -13);
+                calendar.add(Calendar.MONTH, -12);
             } else {
-                calendar.add(Calendar.MONTH, -number);
+                calendar.add(Calendar.MONTH, -number+1);
             }
             produce0422QueryWrapper.between("create_time", calendar.getTime(), new Date());
             produce0422QueryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m'),material_type").orderByAsc("create_time");

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

@@ -38,6 +38,7 @@ public class MoneyWriteOverdueServiceImpl extends ServiceImpl<MoneyWriteOverdueM
         BeanUtil.copyProperties(param, writeOverdue);
         writeOverdue.setCreateTime(new Date());
         writeOverdue.setDocumentType("1");
+        writeOverdue.setBatchLast(1);
         writeOverdueMapper.insert(writeOverdue);
         return CommonResult.ok();
     }
@@ -47,10 +48,20 @@ public class MoneyWriteOverdueServiceImpl extends ServiceImpl<MoneyWriteOverdueM
         String orgId = pageParam.getOrgId();
         Integer pageNum = pageParam.getPageNum();
         Integer pageSize = pageParam.getPageSize();
+        String batchLast = pageParam.getBatchLast();
+        String startDate = pageParam.getStartDate();
+        String endDate = pageParam.getEndDate();
+
         Page<MoneyWriteOverdue> page = new Page<>(pageNum, pageSize);
         QueryWrapper<MoneyWriteOverdue> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        queryWrapper.eq( "document_type", "1");
+        queryWrapper.ge(StringUtils.isNotBlank(startDate), "end_time", orgId);
+        queryWrapper.le(StringUtils.isNotBlank(endDate), "end_time", orgId);
+        queryWrapper.orderByDesc("end_time");
+        if (StringUtils.isBlank(batchLast)){
+            batchLast = "1";
+        }
+        queryWrapper.eq( "document_type", "1").eq("batch_last",batchLast);
         return writeOverdueMapper.selectPage(page, queryWrapper);
     }
 

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

@@ -48,4 +48,11 @@ public class ProductionEnergyController {
     public CommonResult<  List<ProductionWriteEnergyVo>> getList(@RequestBody ProductionEnergyParam energyParam) {
         return CommonResult.data(energyService.getList(energyParam));
     }
+
+    @PostMapping("/production-energy/getListAll")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("生成管控能耗分析总和值")
+    public CommonResult<  List<ProductionWriteEnergyVo>> getListAll(@RequestBody ProductionEnergyParam energyParam) {
+        return CommonResult.data(energyService.getListAll(energyParam));
+    }
 }

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

@@ -72,7 +72,7 @@ public class ProductionConsume implements Serializable {
      * 创建时间
      */
     @ApiModelProperty(value = "创建时间",position = 7)
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date createTime;
 
     /**

+ 1 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/entity/vo/ProductionWriteEnergyVo.java

@@ -128,6 +128,7 @@ public class ProductionWriteEnergyVo implements Serializable {
      */
     @ApiModelProperty(value = "负25度乙二醇",position = 17)
     private String fuEswdYierchun;
+    private String allValue;
 
     /**
      * 组织id

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

@@ -37,6 +37,17 @@ public interface ProductionWriteEnergyMapper extends BaseMapper<ProductionWriteE
             , @Param(value = "fuEswdYierchun") String fuEswdYierchun);
 
 
+    ProductionWriteEnergyVo selectSum(@Param(Constants.WRAPPER)QueryWrapper<ProductionEnergy> wrapper
+            , @Param(value = "electricity") String electricity
+            , @Param(value = "zhengQi") String zhengQi, @Param(value = "danQi") String danQi
+            , @Param(value = "yaSuo") String yaSuo, @Param(value = "roWater") String roWater
+            , @Param(value = "zlWater")String zlWater, @Param(value = "xhWater")String xhWater
+            , @Param(value = "qdWater")String qdWater, @Param(value = "swdWater") String swdWater
+            , @Param(value = "eswdWater") String eswdWater, @Param(value = "reWater") String reWater
+            , @Param(value = "diwenWater") String diwenWater, @Param(value = "fuSwdYierchun") String fuSwdYierchun
+            , @Param(value = "fuEswdYierchun") String fuEswdYierchun);
+
+
     List<ProductionWriteEnergyVo> selectMonth(@Param(Constants.WRAPPER)QueryWrapper<ProductionEnergy> wrapper
             , @Param(value = "electricity") String electricity
             , @Param(value = "zhengQi") String zhengQi, @Param(value = "danQi") String danQi
@@ -46,4 +57,24 @@ public interface ProductionWriteEnergyMapper extends BaseMapper<ProductionWriteE
             , @Param(value = "eswdWater") String eswdWater, @Param(value = "reWater") String reWater
             , @Param(value = "diwenWater") String diwenWater, @Param(value = "fuSwdYierchun") String fuSwdYierchun
             , @Param(value = "fuEswdYierchun") String fuEswdYierchun);
+
+    List<ProductionWriteEnergyVo> selectYearAll(@Param(Constants.WRAPPER)QueryWrapper<ProductionEnergy> wrapper
+            , @Param(value = "electricity") String electricity
+            , @Param(value = "zhengQi") String zhengQi, @Param(value = "danQi") String danQi
+            , @Param(value = "yaSuo") String yaSuo, @Param(value = "roWater") String roWater
+            , @Param(value = "zlWater")String zlWater, @Param(value = "xhWater")String xhWater
+            , @Param(value = "qdWater")String qdWater, @Param(value = "swdWater") String swdWater
+            , @Param(value = "eswdWater") String eswdWater, @Param(value = "reWater") String reWater
+            , @Param(value = "diwenWater") String diwenWater, @Param(value = "fuSwdYierchun") String fuSwdYierchun
+            , @Param(value = "fuEswdYierchun") String fuEswdYierchun);
+
+    List<ProductionWriteEnergyVo> selectMonthAll(@Param(Constants.WRAPPER)QueryWrapper<ProductionEnergy> wrapper
+            , @Param(value = "electricity") String electricity
+            , @Param(value = "zhengQi") String zhengQi, @Param(value = "danQi") String danQi
+            , @Param(value = "yaSuo") String yaSuo, @Param(value = "roWater") String roWater
+            , @Param(value = "zlWater")String zlWater, @Param(value = "xhWater")String xhWater
+            , @Param(value = "qdWater")String qdWater, @Param(value = "swdWater") String swdWater
+            , @Param(value = "eswdWater") String eswdWater, @Param(value = "reWater") String reWater
+            , @Param(value = "diwenWater") String diwenWater, @Param(value = "fuSwdYierchun") String fuSwdYierchun
+            , @Param(value = "fuEswdYierchun") String fuEswdYierchun);
 }

+ 2 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/param/ProductionPageParam.java

@@ -8,6 +8,8 @@ public class ProductionPageParam {
 
     @ApiModelProperty(value = "组织id",position = 1)
     private String orgId;
+    private Integer  type;
+    private Integer  number;
 
     @ApiModelProperty(value = "当前页码",position = 2)
     private Integer pageNum;

+ 1 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/service/IProductionEnergyService.java

@@ -19,4 +19,5 @@ public interface IProductionEnergyService extends IService<ProductionEnergy> {
 
     List<ProductionWriteEnergyVo> getList(ProductionEnergyParam energyParam);
 
+    List<ProductionWriteEnergyVo> getListAll(ProductionEnergyParam energyParam);
 }

+ 146 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProductionEnergyServiceImpl.java

@@ -203,4 +203,150 @@ public class ProductionEnergyServiceImpl extends ServiceImpl<ProductionEnergyMap
 
     }
 
+    @Override
+    public List<ProductionWriteEnergyVo> getListAll(ProductionEnergyParam energyParam) {
+        String orgId = energyParam.getOrgId();
+        Integer timeType = energyParam.getTimeType();
+        if (ObjectUtil.isEmpty(timeType) ){
+            timeType = 0;
+        }
+        Integer number = energyParam.getNumber();
+        QueryWrapper<ProductionEnergyPrice> priceQueryWrapper = new QueryWrapper<>();
+        priceQueryWrapper.eq(StringUtils.isNotBlank(orgId),"org_id",orgId);
+        List<ProductionEnergyPrice> energyPrice = priceMapper.selectList(priceQueryWrapper);
+
+        ProductionEnergyPrice productionEnergyPrice = null;
+        if (ObjectUtil.isEmpty(energyPrice)){
+            productionEnergyPrice  =new ProductionEnergyPrice();
+            productionEnergyPrice.setElectricity("1");
+
+            productionEnergyPrice.setZhengQi("1");
+
+            productionEnergyPrice.setDanQi("1");
+
+            productionEnergyPrice.setYaSuo("1");
+
+            productionEnergyPrice.setRoWater("1");
+
+            productionEnergyPrice.setZlWater("1");
+
+            productionEnergyPrice.setXhWater("1");
+
+            productionEnergyPrice.setQdWater("1");
+
+            productionEnergyPrice.setSwdWater("1");
+
+            productionEnergyPrice.setEswdWater("1");
+
+            productionEnergyPrice.setReWater("1");
+
+            productionEnergyPrice.setDiwenWater("1");
+
+            productionEnergyPrice.setFuSwdYierchun("1");
+
+            productionEnergyPrice.setFuEswdYierchun("1");
+
+        }
+        if (ObjectUtil.isNotEmpty(energyPrice)) {
+            productionEnergyPrice = energyPrice.get(0);
+            if ("".equals(productionEnergyPrice.getElectricity())) {
+                productionEnergyPrice.setElectricity("1");
+            }
+            if ("".equals(productionEnergyPrice.getZhengQi())) {
+                productionEnergyPrice.setZhengQi("1");
+            }
+            if ("".equals(productionEnergyPrice.getDanQi())) {
+                productionEnergyPrice.setDanQi("1");
+            }
+            if ("".equals(productionEnergyPrice.getYaSuo())) {
+                productionEnergyPrice.setYaSuo("1");
+            }
+            if ("".equals(productionEnergyPrice.getRoWater())) {
+                productionEnergyPrice.setRoWater("1");
+            }
+            if ("".equals(productionEnergyPrice.getZlWater())) {
+                productionEnergyPrice.setZlWater("1");
+            }
+            if ("".equals(productionEnergyPrice.getXhWater())) {
+                productionEnergyPrice.setXhWater("1");
+            }
+            if ("".equals(productionEnergyPrice.getQdWater())) {
+                productionEnergyPrice.setQdWater("1");
+            }
+            if ("".equals(productionEnergyPrice.getSwdWater())) {
+                productionEnergyPrice.setSwdWater("1");
+            }
+            if ("".equals(productionEnergyPrice.getEswdWater())) {
+                productionEnergyPrice.setEswdWater("1");
+            }
+            if ("".equals(productionEnergyPrice.getReWater())) {
+                productionEnergyPrice.setReWater("1");
+            }
+            if ("".equals(productionEnergyPrice.getDiwenWater())) {
+                productionEnergyPrice.setDiwenWater("1");
+            }
+            if ("".equals(productionEnergyPrice.getFuSwdYierchun())) {
+                productionEnergyPrice.setFuSwdYierchun("1");
+            }
+            if ("".equals(productionEnergyPrice.getFuEswdYierchun())) {
+                productionEnergyPrice.setFuEswdYierchun("1");
+            }
+        }
+        QueryWrapper<ProductionEnergy> wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(orgId),"org_id",orgId);
+        wrapper.groupBy("ymonth");
+        List<ProductionWriteEnergyVo> list ;
+        if (timeType == 0){
+            Calendar calendar = Calendar.getInstance();
+            if (null == number) {
+                calendar.add(Calendar.YEAR, -3);
+            } else {
+                calendar.add(Calendar.YEAR, -number);
+            }
+            wrapper.between("create_time", calendar.getTime(), new Date());
+            wrapper.groupBy("ymonth");
+            list =  writeEnergyMapper.selectMonthAll(wrapper,
+                    productionEnergyPrice.getElectricity() ,
+                    productionEnergyPrice.getZhengQi(),
+                    productionEnergyPrice.getDanQi(),
+                    productionEnergyPrice.getYaSuo(),
+                    productionEnergyPrice.getRoWater(),
+                    productionEnergyPrice.getZlWater(),
+                    productionEnergyPrice.getXhWater(),
+                    productionEnergyPrice.getQdWater(),
+                    productionEnergyPrice.getSwdWater(),
+                    productionEnergyPrice.getEswdWater(),
+                    productionEnergyPrice.getReWater(),
+                    productionEnergyPrice.getDiwenWater(),
+                    productionEnergyPrice.getFuSwdYierchun(),
+                    productionEnergyPrice.getFuEswdYierchun());
+        }else {
+            Calendar calendar = Calendar.getInstance();
+            if (null == number) {
+                calendar.add(Calendar.MONTH, -13);
+            } else {
+                calendar.add(Calendar.MONTH, -number);
+            }
+            wrapper.between("create_time", calendar.getTime(), new Date());
+            wrapper.groupBy("ymonth");
+            list =  writeEnergyMapper.selectYearAll(wrapper,
+                    productionEnergyPrice.getElectricity() ,
+                    productionEnergyPrice.getZhengQi(),
+                    productionEnergyPrice.getDanQi(),
+                    productionEnergyPrice.getYaSuo(),
+                    productionEnergyPrice.getRoWater(),
+                    productionEnergyPrice.getZlWater(),
+                    productionEnergyPrice.getXhWater(),
+                    productionEnergyPrice.getQdWater(),
+                    productionEnergyPrice.getSwdWater(),
+                    productionEnergyPrice.getEswdWater(),
+                    productionEnergyPrice.getReWater(),
+                    productionEnergyPrice.getDiwenWater(),
+                    productionEnergyPrice.getFuSwdYierchun(),
+                    productionEnergyPrice.getFuEswdYierchun());
+        }
+        return list;
+
+    }
+
 }

+ 132 - 9
huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProductionWorkstopPlanServiceImpl.java

@@ -9,11 +9,11 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springframework.beans.factory.annotation.Autowired;
 import vip.xiaonuo.production.entity.ProduceLocation;
+import vip.xiaonuo.production.entity.ProductionEnergy;
+import vip.xiaonuo.production.entity.ProductionEnergyPrice;
 import vip.xiaonuo.production.entity.ProductionWorkstopPlan;
 import vip.xiaonuo.production.entity.vo.*;
-import vip.xiaonuo.production.mapper.ProduceLocationMapper;
-import vip.xiaonuo.production.mapper.ProductionUnitCostMapper;
-import vip.xiaonuo.production.mapper.ProductionWorkstopPlanMapper;
+import vip.xiaonuo.production.mapper.*;
 import vip.xiaonuo.production.param.*;
 import vip.xiaonuo.production.service.IProductionWorkstopPlanService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -44,6 +44,10 @@ public class ProductionWorkstopPlanServiceImpl extends ServiceImpl<ProductionWor
 
     @Autowired
     private ProduceLocationMapper locationMapper;
+    @Autowired
+    private ProductionEnergyPriceMapper priceMapper;
+    @Autowired
+    private ProductionWriteEnergyMapper writeEnergyMapper;
 
     @Override
     public List<ProductionPlanVo> getList(ProductionPlanParam planParam) {
@@ -101,6 +105,9 @@ public class ProductionWorkstopPlanServiceImpl extends ServiceImpl<ProductionWor
     public ProductionWorkPlanTargetVo getTarget(ProductionTargetParam targetParam) {
         String orgId = targetParam.getOrgId();
         String time = targetParam.getTime();
+        if (StringUtils.isBlank(time)){
+            time = "2025-06";
+        }
         String year = time.substring(0, 4);
         String month = time.substring(5, 7);
         int last = Integer.parseInt(year) - 1;
@@ -113,7 +120,7 @@ public class ProductionWorkstopPlanServiceImpl extends ServiceImpl<ProductionWor
         ProductionPlanVo2 vd4 = planMapper.getTarget(time + "-01 00:00:00", time + "-31 23:59:59",
                 last + "-" + month + "-01 00:00:00", last + "-" + month + "-31 23:59:59", orgId, "25-羟基VD3");
         ProductionPlanVo2 vd5 = planMapper.getTarget(time + "-01 00:00:00", time + "-31 23:59:59",
-                last + "-" + month + "-01 00:00:00", last + "-" + month + "-31 23:59:59", orgId, "维生素A微粒");
+                last + "-" + month + "-01 00:00:00", last + "-" + month + "-31 23:59:59", orgId, "维生素A");
 
         ProductionWorkPlanTargetVo vo = new ProductionWorkPlanTargetVo();
         //饲料级VD3
@@ -201,7 +208,9 @@ public class ProductionWorkstopPlanServiceImpl extends ServiceImpl<ProductionWor
                 }
             }
         }
-        vo.setEnergyMoney("0");
+        ProductionWriteEnergyVo list = getList(orgId, year + "-01-01 00:00:00", year + "-12-31 23:59:59");
+        ProductionWriteEnergyVo list1 = getList(orgId, year + "-" + month + "-01 00:00:00", year + "-" + month + "-31 23:59:59");
+        vo.setEnergyMoney(list1.getElectricity());
         vo.setEnergyMoneyRate("0");
 
         ProductionPlanVo2 vdYear = planMapper.getTarget(year + "-01-01 00:00:00", year + "-12-31 23:59:59",
@@ -213,13 +222,13 @@ public class ProductionWorkstopPlanServiceImpl extends ServiceImpl<ProductionWor
         ProductionPlanVo2 vd4Year = planMapper.getTarget( year+"-01-01 00:00:00", year + "-12-31 23:59:59",
                 last + "-01 00:00:00", last + "-12-31 23:59:59", orgId, "25-羟基VD3");
         ProductionPlanVo2 vd5Year = planMapper.getTarget( year+"-01-01 00:00:00", year + "-12-31 23:59:59",
-                last + "-01 00:00:00", last + "-12-31 23:59:59", orgId, "维生素A微粒");
+                last + "-01 00:00:00", last + "-12-31 23:59:59", orgId, "维生素A");
         vo.setCompleteYear(vdYear.getMonthValue());
         vo.setVisitNumYear(vd2Year.getMonthValue());
         vo.setSaleMoneyYear(vd3Year.getMonthValue());
         vo.setSaleDeliverMoneyYear(vd4Year.getMonthValue());
         vo.setReceiveMoneyYear(vd5Year.getMonthValue());
-        vo.setEnergyMoneyYear("0");
+        vo.setEnergyMoneyYear(list.getElectricity());
 
         vo.setYearCompleteRate( calculateYOYChange(Double.parseDouble(vdYear.getMonthValue()),Double.parseDouble(vdYear.getLastMonthValue())));
         vo.setYearVisitNumRate( calculateYOYChange(Double.parseDouble(vd2Year.getMonthValue()),Double.parseDouble(vd2Year.getLastMonthValue())));
@@ -231,6 +240,114 @@ public class ProductionWorkstopPlanServiceImpl extends ServiceImpl<ProductionWor
         return vo;
     }
 
+
+    private    ProductionWriteEnergyVo getList(String orgId,String startDate ,String endDate) {
+
+        QueryWrapper<ProductionEnergyPrice> priceQueryWrapper = new QueryWrapper<>();
+        priceQueryWrapper.eq(StringUtils.isNotBlank(orgId),"org_id",orgId);
+        List<ProductionEnergyPrice> energyPrice = priceMapper.selectList(priceQueryWrapper);
+
+        ProductionEnergyPrice productionEnergyPrice = null;
+        if (ObjectUtil.isEmpty(energyPrice)){
+            productionEnergyPrice  =new ProductionEnergyPrice();
+            productionEnergyPrice.setElectricity("1");
+
+            productionEnergyPrice.setZhengQi("1");
+
+            productionEnergyPrice.setDanQi("1");
+
+            productionEnergyPrice.setYaSuo("1");
+
+            productionEnergyPrice.setRoWater("1");
+
+            productionEnergyPrice.setZlWater("1");
+
+            productionEnergyPrice.setXhWater("1");
+
+            productionEnergyPrice.setQdWater("1");
+
+            productionEnergyPrice.setSwdWater("1");
+
+            productionEnergyPrice.setEswdWater("1");
+
+            productionEnergyPrice.setReWater("1");
+
+            productionEnergyPrice.setDiwenWater("1");
+
+            productionEnergyPrice.setFuSwdYierchun("1");
+
+            productionEnergyPrice.setFuEswdYierchun("1");
+
+        }
+        if (ObjectUtil.isNotEmpty(energyPrice)) {
+            productionEnergyPrice = energyPrice.get(0);
+            if ("".equals(productionEnergyPrice.getElectricity())) {
+                productionEnergyPrice.setElectricity("1");
+            }
+            if ("".equals(productionEnergyPrice.getZhengQi())) {
+                productionEnergyPrice.setZhengQi("1");
+            }
+            if ("".equals(productionEnergyPrice.getDanQi())) {
+                productionEnergyPrice.setDanQi("1");
+            }
+            if ("".equals(productionEnergyPrice.getYaSuo())) {
+                productionEnergyPrice.setYaSuo("1");
+            }
+            if ("".equals(productionEnergyPrice.getRoWater())) {
+                productionEnergyPrice.setRoWater("1");
+            }
+            if ("".equals(productionEnergyPrice.getZlWater())) {
+                productionEnergyPrice.setZlWater("1");
+            }
+            if ("".equals(productionEnergyPrice.getXhWater())) {
+                productionEnergyPrice.setXhWater("1");
+            }
+            if ("".equals(productionEnergyPrice.getQdWater())) {
+                productionEnergyPrice.setQdWater("1");
+            }
+            if ("".equals(productionEnergyPrice.getSwdWater())) {
+                productionEnergyPrice.setSwdWater("1");
+            }
+            if ("".equals(productionEnergyPrice.getEswdWater())) {
+                productionEnergyPrice.setEswdWater("1");
+            }
+            if ("".equals(productionEnergyPrice.getReWater())) {
+                productionEnergyPrice.setReWater("1");
+            }
+            if ("".equals(productionEnergyPrice.getDiwenWater())) {
+                productionEnergyPrice.setDiwenWater("1");
+            }
+            if ("".equals(productionEnergyPrice.getFuSwdYierchun())) {
+                productionEnergyPrice.setFuSwdYierchun("1");
+            }
+            if ("".equals(productionEnergyPrice.getFuEswdYierchun())) {
+                productionEnergyPrice.setFuEswdYierchun("1");
+            }
+        }
+        QueryWrapper<ProductionEnergy> wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(orgId),"org_id",orgId);
+        wrapper.between("create_time",startDate,endDate);
+        ProductionWriteEnergyVo  productionWriteEnergyVo =  writeEnergyMapper.selectSum(wrapper,
+                    productionEnergyPrice.getElectricity() ,
+                    productionEnergyPrice.getZhengQi(),
+                    productionEnergyPrice.getDanQi(),
+                    productionEnergyPrice.getYaSuo(),
+                    productionEnergyPrice.getRoWater(),
+                    productionEnergyPrice.getZlWater(),
+                    productionEnergyPrice.getXhWater(),
+                    productionEnergyPrice.getQdWater(),
+                    productionEnergyPrice.getSwdWater(),
+                    productionEnergyPrice.getEswdWater(),
+                    productionEnergyPrice.getReWater(),
+                    productionEnergyPrice.getDiwenWater(),
+                    productionEnergyPrice.getFuSwdYierchun(),
+                    productionEnergyPrice.getFuEswdYierchun());
+
+        return productionWriteEnergyVo;
+
+
+    }
+
     public  String calculateYOYChange(double currentValue, double previousValue) {
         // 处理零值情况
         if (previousValue == 0) {
@@ -263,6 +380,12 @@ public class ProductionWorkstopPlanServiceImpl extends ServiceImpl<ProductionWor
             case 2:
                 queryWrapper.like("produce_name", "胆固醇");
                 break;
+            case 3:
+                queryWrapper.like("produce_name", "25-羟基VD3");
+                break;
+            case 4:
+                queryWrapper.like("produce_name", "维生素A");
+                break;
         }
 
         if (0 == type) {
@@ -328,7 +451,7 @@ public class ProductionWorkstopPlanServiceImpl extends ServiceImpl<ProductionWor
         List<ProductionWorkstopPlan> records = planMapperTop.getRecords();
         if (records.size() != 0) {
             List<ProductionWorkstopPlan> plans = jsonArraySort(records, true);
-            for (int i = 0; i < pageSize; i++) {
+            for (int i = 0; i < records.size(); i++) {
                 ProductionWorkstopPlan workstopPlan = plans.get(i);
                 workstopPlan.setId((pageNum-1) *pageSize + i+ 1 );
             }
@@ -382,7 +505,7 @@ public class ProductionWorkstopPlanServiceImpl extends ServiceImpl<ProductionWor
         vo4.setProduceName("25-羟基D3");
         list.add(vo4);
         ProductionNameVo vo5 = new ProductionNameVo();
-        vo5.setProduceName("维生素A微粒");
+        vo5.setProduceName("维生素A");
         list.add(vo5);
         return list;
     }

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

@@ -88,7 +88,7 @@ public class ProductionWritePlanServiceImpl extends ServiceImpl<ProductionWriteP
     }
 
     @Override
-    public CommonResult save(ProductionSaveParam saveParam) {
+    public synchronized CommonResult save(ProductionSaveParam saveParam) {
         Integer isErp = saveParam.getIsErp();
         String orgId = saveParam.getOrgId();
         SaBaseLoginUser loginUser = StpLoginUserUtil.getLoginUser();

+ 14 - 0
huimv-farm/src/main/java/vip/xiaonuo/purchase/controller/PurchaseDongShiController.java

@@ -49,6 +49,20 @@ public class PurchaseDongShiController {
     public CommonResult<List<PurchaseAllParam>> getCaiGouYvFuDetil(@RequestBody DongShiPurchaseParam priceParam) {
         return CommonResult.data(purchaseOrderService.getCaiGouYvFuDetil(priceParam));
     }
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("库存金,主要原材料金额详细")
+    @PostMapping("/getKuChunYuanCaiFuDetil")
+    public CommonResult<List<PurchaseAllParam>> getKuChunYuanCaiFuDetil(@RequestBody DongShiPurchaseParam priceParam) {
+        return CommonResult.data(purchaseOrderService.getKuChunYuanCaiFuDetil(priceParam));
+    }
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("主要原材料数量")
+    @PostMapping("/getZhuYaoYuanCaiNumDetil")
+    public CommonResult<List<PurchaseAllParam>> getZhuYaoYuanCaiNumDetil(@RequestBody DongShiPurchaseParam priceParam) {
+        return CommonResult.data(purchaseOrderService.getZhuYaoYuanCaiNumDetil(priceParam));
+    }
+
 
 
     @ApiOperationSupport(order = 1)

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

@@ -7,11 +7,15 @@ import lombok.Data;
 public class PurchasePriceVo {
 
     @ApiModelProperty(value = "月均价格", required = true)
-    private String avgPrice;
+    private Double avgPrice;
 
     @ApiModelProperty(value = "去年均价", required = true)
     private String lastAvgPrice;
 
     @ApiModelProperty(value = "时间", required = true)
     private String time;
+
+    private String month;
+    private String monthOverMonthPct;
+    private String yearOverYearPct;
 }

+ 8 - 0
huimv-farm/src/main/java/vip/xiaonuo/purchase/mapper/PurchaseOrderMapper.java

@@ -43,4 +43,12 @@ public interface PurchaseOrderMapper extends BaseMapper<PurchaseOrder> {
     List<PurchaseAllParam> getCaiGouYvFuDetailYear(@Param(Constants.WRAPPER) QueryWrapper<PurchaseOrder> wapper);
 
     PurchaseOrderVo getOrder( @Param(Constants.WRAPPER) QueryWrapper<PurchaseOrder> queryWrapper);
+
+    List<PurchaseAllParam> getKunChunJinE(@Param(Constants.WRAPPER)QueryWrapper<PurchaseOrder> wapper);
+
+    List<PurchaseAllParam> getKunChunJinEYear(@Param(Constants.WRAPPER)QueryWrapper<PurchaseOrder> wapper);
+
+    List<PurchaseAllParam> getZhuYaoYuanCaiNumDetil(@Param(Constants.WRAPPER)QueryWrapper<PurchaseOrder> wapper);
+
+    List<PurchaseAllParam> getZhuYaoYuanCaiNumDetilYear(@Param(Constants.WRAPPER)QueryWrapper<PurchaseOrder> wapper);
 }

+ 9 - 0
huimv-farm/src/main/java/vip/xiaonuo/purchase/mapper/PurchasePriceMapper.java

@@ -8,6 +8,7 @@ import vip.xiaonuo.erp.entity.ErpBdRawMaterial;
 import vip.xiaonuo.purchase.entity.PurchaseOrder;
 import vip.xiaonuo.purchase.entity.PurchasePrice;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.purchase.entity.vo.PurchasePriceVo;
 import vip.xiaonuo.purchase.param.DongShiKuCunWuliaoVoParam;
 import vip.xiaonuo.purchase.param.GongYingShangParam;
 import vip.xiaonuo.purchase.param.PurchaseYuanCaiLiaoParam;
@@ -34,4 +35,12 @@ public interface PurchasePriceMapper extends BaseMapper<PurchasePrice> {
     List<DongShiKuCunWuliaoVoParam> getKuCunWuLiao(@Param(Constants.WRAPPER) QueryWrapper<PurchaseOrder> wapper);
 
     List<ErpBdRawMaterial> getMater(@Param(value = "orgId")String orgId);
+
+    List<PurchasePriceVo> getMonthlyAvgPrices(@Param(Constants.WRAPPER) QueryWrapper<PurchasePrice> queryWrapper);
+
+    List<PurchasePriceVo> getMonthlyAvgPricesYear(@Param(Constants.WRAPPER) QueryWrapper<PurchasePrice> queryWrapper);
+
+    PurchasePriceVo getMonthlyAvgPricesYear2(@Param(Constants.WRAPPER)QueryWrapper<PurchasePrice> queryWrapper);
+
+    PurchasePriceVo getMonthlyAvgMonthYear2(@Param(Constants.WRAPPER)QueryWrapper<PurchasePrice> queryWrapper);
 }

+ 2 - 0
huimv-farm/src/main/java/vip/xiaonuo/purchase/param/PurchasePayParam.java

@@ -32,6 +32,8 @@ public class PurchasePayParam {
 
     @ApiModelProperty(value = "时间,格式为'2024-10-01'", required = true)
     private String time;
+    private String startDate;
+    private String endDate;
 
     @ApiModelProperty(value = "当前页码", required = true)
     private Integer pageNum;

+ 4 - 0
huimv-farm/src/main/java/vip/xiaonuo/purchase/service/IPurchaseOrderService.java

@@ -51,4 +51,8 @@ public interface IPurchaseOrderService extends IService<PurchaseOrder> {
     List<DongShiKuCunWuliaoVoParam > getKuCunWuLiao(DongShiKuCunWuliaoParam priceParam);
 
     List<ErpBdRawMaterial> getMater(PurchaseParam param);
+
+    List<PurchaseAllParam> getKuChunYuanCaiFuDetil(DongShiPurchaseParam priceParam);
+
+    List<PurchaseAllParam> getZhuYaoYuanCaiNumDetil(DongShiPurchaseParam priceParam);
 }

+ 48 - 140
huimv-farm/src/main/java/vip/xiaonuo/purchase/service/impl/PurchaseOrderServiceImpl.java

@@ -55,6 +55,10 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
     private PurchaseOrderMapper purchaseOrderMapper;
     @Autowired
     private PurchasePriceMapper purchasePriceMapper;
+    @Autowired
+    private ErpBdRawMaterialMapper erpBdRawMaterialMapper;
+
+
 
     public static void main(String[] args) {
         System.out.println(DateUtil.parse("2022-01", "yyyy-MM"));
@@ -86,142 +90,6 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
 
         test.setLastAvgPrice(String.format("%.2f",getDouble(lastTestYear.getPurchaseMoney())/12));
         test.setRank("98");
-
-      /*  PurchaseOrderVo vo = new PurchaseOrderVo();
-        QueryWrapper<PurchaseOrder> acceptMoneyMapper = new QueryWrapper<>();
-        //收料金额和数量
-        acceptMoneyMapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        QueryWrapper<PurchaseOrder> orderQueryWrapper = new QueryWrapper<>();
-        orderQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        orderQueryWrapper.groupBy("order_number");
-        if ("".equals(time) || null == time) {
-            queryWrapper.ge("create_time", dateTime);
-            orderQueryWrapper.ge("create_time", dateTime);
-            acceptMoneyMapper.ge("create_time", dateTime);
-            DateTime time1 = DateUtil.beginOfMonth(new Date());
-            DateTime last = DateUtil.lastMonth();
-            DateTime beginOfMonth = DateUtil.beginOfMonth(last);
-            DateTime endOfMonth = DateUtil.endOfMonth(last);
-            QueryWrapper<PurchaseOrder> queryWrapper1 = new QueryWrapper<>();
-            queryWrapper1.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-            queryWrapper1.ge("create_time", time1);
-            queryWrapper1.select(" IFNULL(sum(invoice_price),'0') invoicePrice");
-            PurchaseOrder order = purchaseOrderMapper.selectOne(queryWrapper1);//本月发票金额
-            queryWrapper1.clear();
-            queryWrapper1.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-            queryWrapper1.select(" IFNULL(sum(invoice_price),'0') invoicePrice");
-            queryWrapper1.between("create_time", beginOfMonth, endOfMonth);
-            PurchaseOrder order1 = purchaseOrderMapper.selectOne(queryWrapper1);//上月发票金额
-            if (Double.valueOf(order.getInvoicePrice()).equals(0)) {
-                vo.setMonthRank("0");
-            } else if (Double.valueOf(order1.getInvoicePrice()).equals(0)||order1.getInvoicePrice()==null) {
-                vo.setMonthRank("100");
-            } else {
-                DecimalFormat def = new DecimalFormat("0.00");
-                vo.setMonthRank(def.format((Double.valueOf(order.getInvoicePrice()) / Double.valueOf(order1.getInvoicePrice()))));
-            }
-        } else {
-            queryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
-            orderQueryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
-            acceptMoneyMapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
-            String year = time.substring(0, 4);
-            String month = time.substring(5, 7);
-            YearMonth yearMonth = YearMonth.of(Integer.parseInt(year), Integer.parseInt(month));
-            YearMonth previousMonth = yearMonth.minusMonths(1);
-            QueryWrapper<PurchaseOrder> queryWrapper1 = new QueryWrapper<>();
-            queryWrapper1.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-            queryWrapper1.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
-            queryWrapper1.select(" sum(CONVERT(invoice_price, DECIMAL(10,2))) invoicePrice");
-            PurchaseOrder order = purchaseOrderMapper.selectOne(queryWrapper1);//本月发票金额
-            queryWrapper1.clear();
-            queryWrapper1.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-            queryWrapper1.select(" sum(CONVERT(invoice_price, DECIMAL(10,2))) invoicePrice");
-            queryWrapper1.between("create_time", previousMonth + "-01 00:00:00", previousMonth + "-31 23:59:59");
-            PurchaseOrder order1 = purchaseOrderMapper.selectOne(queryWrapper1);//上月发票金额
-            if (ObjectUtil.isEmpty(order)) {
-                vo.setMonthRank("0");
-            } else if (ObjectUtil.isEmpty(order1)||order1.getInvoicePrice().equals("0")) {
-                vo.setMonthRank("100");
-
-
-
-            } else {
-                DecimalFormat def = new DecimalFormat("0.00");
-                vo.setMonthRank(def.format((Double.valueOf(order.getInvoicePrice()) - Double.valueOf(order1.getInvoicePrice()))/Double.valueOf(order1.getInvoicePrice())*100));
-            }
-        }
-        acceptMoneyMapper.select(" convert(IFNULL(sum(material_accept_number),'0'),decimal(10,2)) materialAcceptNumber,convert(IFNULL(sum(material_accept_price),'0'),decimal(10,2)) materialAcceptPrice");
-        List<PurchaseOrder> purchaseOrders = purchaseOrderMapper.selectList(queryWrapper);
-        List<PurchaseOrder> orderList = purchaseOrderMapper.selectList(orderQueryWrapper);
-        PurchaseOrder one = purchaseOrderMapper.selectOne(acceptMoneyMapper);
-        double money = 0.00;
-        double enterNumber = 0.00;
-        double enterMoney = 0.00;
-        double invoiceMoney = 0.00;
-        int invoiceNumber = 0;
-        DecimalFormat def = new DecimalFormat("0.00");
-        if (purchaseOrders.size() != 0) {
-            for (PurchaseOrder purchaseOrder : purchaseOrders) {
-                if (purchaseOrder.getPurchaseMoney() != null) {
-                    money = money + Double.valueOf(purchaseOrder.getPurchaseMoney());
-                }
-                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();
-                }
-
-            }
-
-        } else {
-            vo.setRank("0");
-            vo.setOrderNumber("0");
-        }
-        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.setOrderNumber(String.valueOf(orderList.size()));
-        vo.setInvoiceNumber(orderList.size());
-
-        vo.setPurchaseMoney(def.format(money / 10000));
-        vo.setMaterialAcceptPrice(def.format(Double.valueOf(one.getMaterialAcceptPrice()) / 10000));
-        vo.setMaterialAcceptNumber(one.getMaterialAcceptNumber());
-        vo.setEnterNumber(def.format(enterNumber));
-        vo.setEnterPrice(def.format(enterMoney / 10000));
-        vo.setInvoicePrice(def.format(invoiceMoney / 10000));
-
-
-        String year = time.substring(0, 4);
-        int i = Integer.parseInt(year);
-        LocalDate currentDate = LocalDate.now();
-        int lastYear = currentDate.getYear() - 1;
-        QueryWrapper<PurchaseOrder> queryWrapper1 = new QueryWrapper<>();
-        queryWrapper1.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        queryWrapper1.between("create_time", i-1 + "-01-01 00:00:00", i-1 + "-12-31 23:59:59");
-        queryWrapper1.select(" CONVERT(IFNULL(avg(purchase_money),'0'),decimal(10,2)) 'purchaseMoney'");
-        PurchaseOrder purchaseOrder = purchaseOrderMapper.selectOne(queryWrapper1);
-        if (ObjectUtil.isNotEmpty(purchaseOrder)) {
-            vo.setLastAvgPrice(def.format(Double.valueOf(purchaseOrder.getPurchaseMoney()) / 10000));
-        } else {
-            vo.setLastAvgPrice("0.00");
-        }*/
         return test;
     }
 
@@ -297,8 +165,6 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
         }
         return list;
     }
-    @Autowired
-    private ErpBdRawMaterialMapper erpBdRawMaterialMapper;
 
     @Override
     public PurchaseOrderTypeVo orderType(PurchaseParam param) {
@@ -544,7 +410,7 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
         wapper.eq( StringUtils.isNotBlank(orgId),"org_id", orgId).groupBy("supplier");
         Page<GongYingShangParam> gongYingShang = purchasePriceMapper.getGongYingShang(page, wapper);
         if (ObjectUtil.isNotEmpty(gongYingShang.getRecords())){
-            for (int i = 0; i < priceParam.getPageSize(); i++) {
+            for (int i = 0; i < gongYingShang.getRecords().size(); i++) {
                 GongYingShangParam gongYingShangParam = gongYingShang.getRecords().get(i);
                 gongYingShangParam.setSort((priceParam.getPageNum()-1) *priceParam.getPageSize() + i+ 1 );
             }
@@ -557,7 +423,15 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
     public List<String> getWuLiaoShaiXuan(DongShiPurchaseParam priceParam) {
         QueryWrapper<PurchaseOrder> wapper = new QueryWrapper<PurchaseOrder>();
         String orgId = priceParam.getOrgId();
-        wapper.eq( StringUtils.isNotBlank(orgId),"org_id", orgId).eq("stock_name","原料库").groupBy("material_name");
+        if ( StringUtils.isBlank(orgId)){
+            wapper.eq("org_id", "1856160583875837954");
+        }else {
+            wapper.eq("org_id", orgId);
+        }
+        wapper.groupBy("fname");
+
+        wapper.likeRight("erp_fnumber", "1002");
+
         return purchasePriceMapper.getWuLiaoShaiXuan(wapper);
     }
 
@@ -578,6 +452,40 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
         return purchasePriceMapper.getMater(orgId);
     }
 
+    @Override
+    public List<PurchaseAllParam> getKuChunYuanCaiFuDetil(DongShiPurchaseParam priceParam) {
+
+        String orgId = priceParam.getOrgId();
+        Integer type = priceParam.getType();
+        QueryWrapper<PurchaseOrder> wapper = new QueryWrapper<PurchaseOrder>();
+        wapper.eq( StringUtils.isNotBlank(orgId),"org_id", orgId).orderByAsc("ymonth").groupBy("ymonth");
+        List<PurchaseAllParam> busAllParams;
+        if (ObjectUtil.isEmpty(type) || 0 ==  type){
+            busAllParams= purchaseOrderMapper.getKunChunJinE(wapper);
+        }else {
+            busAllParams = purchaseOrderMapper.getKunChunJinEYear(wapper);
+        }
+        return busAllParams;
+    }
+
+    @Override
+    public List<PurchaseAllParam> getZhuYaoYuanCaiNumDetil(DongShiPurchaseParam priceParam) {
+
+        String orgId = priceParam.getOrgId();
+        Integer type = priceParam.getType();
+        QueryWrapper<PurchaseOrder> wapper = new QueryWrapper<PurchaseOrder>();
+        wapper.eq( StringUtils.isNotBlank(orgId),"org_id", orgId).orderByAsc("ymonth").groupBy("ymonth");
+        wapper.eq("material_name", "羊毛粗脂");
+
+        List<PurchaseAllParam> busAllParams;
+        if (ObjectUtil.isEmpty(type) || 0 ==  type){
+            busAllParams= purchaseOrderMapper.getZhuYaoYuanCaiNumDetil(wapper);
+        }else {
+            busAllParams = purchaseOrderMapper.getZhuYaoYuanCaiNumDetilYear(wapper);
+        }
+        return busAllParams;
+    }
+
     private Double getDouble(String balance) {
         if (StringUtils.isBlank(balance)){
             return 0.0;

+ 8 - 6
huimv-farm/src/main/java/vip/xiaonuo/purchase/service/impl/PurchasePayServiceImpl.java

@@ -34,12 +34,14 @@ public class PurchasePayServiceImpl extends ServiceImpl<PurchasePayMapper, Purch
     public Page<PurchasePay> listPay(PurchasePayParam purchasePayParam) {
         QueryWrapper<PurchasePay> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(StringUtils.isNotBlank(purchasePayParam.getOrgId()), "org_id", purchasePayParam.getOrgId());
-        String time = purchasePayParam.getTime();
-        if ("".equals(time) || null == time) {
-            queryWrapper.ge("create_time", DateUtil.beginOfYear(new Date()));
-        } else {
-            queryWrapper.between("create_time", time+"-01 00:00:00", time + "-31 23:59:59");
-        }
+
+
+        String startDate = purchasePayParam.getStartDate();
+        String endDate = purchasePayParam.getEndDate();
+
+        queryWrapper.ge(StringUtils.isNotBlank(startDate),"end_time", startDate);
+        queryWrapper.le(StringUtils.isNotBlank(endDate),"end_time",  endDate + " 23:59:59");
+
         queryWrapper.orderByDesc("end_time");
         Page page = new Page<PurchasePay>(purchasePayParam.getPageNum(), purchasePayParam.getPageSize());
         return payMapper.selectPage(page, queryWrapper);

+ 106 - 49
huimv-farm/src/main/java/vip/xiaonuo/purchase/service/impl/PurchasePriceServiceImpl.java

@@ -1,5 +1,6 @@
 package vip.xiaonuo.purchase.service.impl;
 
+import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -40,69 +41,125 @@ public class PurchasePriceServiceImpl extends ServiceImpl<PurchasePriceMapper, P
     @Override
     public List<PurchasePriceVo> getList(PurchasePriceParam priceParam) {
         Integer number = priceParam.getNumber();
-        String material = priceParam.getMaterial();//实际上是fnumber
-        QueryWrapper<ErpBdRawMaterial> bdRawMaterialQueryWrapper = new QueryWrapper<>();
-        bdRawMaterialQueryWrapper.eq(StringUtils.isNotBlank(priceParam.getOrgId()), "org_id", priceParam.getOrgId());
-        bdRawMaterialQueryWrapper.eq(StringUtils.isNotBlank(material), "erp_fnumber", material);
-        List<ErpBdRawMaterial> bdRawMaterial = bdRawMaterialMapper.selectList(bdRawMaterialQueryWrapper);
 
         QueryWrapper<PurchasePrice> queryWrapper = new QueryWrapper<>();
-        if (bdRawMaterial.size() != 0) {
-            queryWrapper.eq("material", bdRawMaterial.get(0).getFname());
-        }
-        queryWrapper.eq(StringUtils.isNotBlank(priceParam.getOrgId()), "org_id", priceParam.getOrgId());
-        queryWrapper.select(" CONVERT(IFNULL(avg(price),'0'),decimal(10,2)) 'price',create_time createTime");
+
+        Date date = new Date();
+
+
         Integer timeType = priceParam.getTimeType();
-        List<PurchasePriceVo> list = new ArrayList<>();
         if (null == timeType || 0 == timeType) {
-            Calendar calendar = Calendar.getInstance();
             if (null == number) {
-                calendar.add(Calendar.YEAR, -3);
-            } else {
-                calendar.add(Calendar.YEAR, -number);
+                number = 3;
             }
-            queryWrapper.between("create_time", calendar.getTime(), new Date());
-            queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')");
-            List<PurchasePrice> prices = priceMapper.selectList(queryWrapper);
-            if (prices.size() != 0) {
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
-                for (PurchasePrice price : prices) {
-                    PurchasePriceVo vo = new PurchasePriceVo();
-                    vo.setAvgPrice(price.getPrice());
-                    vo.setTime(sdf.format(price.getCreateTime()));
-                    list.add(vo);
+            List<PurchasePriceVo> monthlyPrices = new ArrayList<>() ;
+            for (Integer integer = number; integer >= 0; integer--) {
+                queryWrapper.clear();
+                queryWrapper.eq(StringUtils.isNotBlank(priceParam.getOrgId()), "org_id", priceParam.getOrgId());
+                queryWrapper.eq("fnumber", priceParam.getMaterial());
+                Date  startDate = DateUtil.beginOfYear(date);
+                Date  endDate = DateUtil.endOfYear(date);
+                queryWrapper.between("create_time",DateUtil.offset(startDate, DateField.YEAR,-integer),DateUtil.offset(endDate, DateField.YEAR,-integer));
+                PurchasePriceVo monthlyPrice = priceMapper.getMonthlyAvgPricesYear2(queryWrapper);
+                queryWrapper.clear();
+                queryWrapper.eq(StringUtils.isNotBlank(priceParam.getOrgId()), "org_id", priceParam.getOrgId());
+                queryWrapper.eq("fnumber", priceParam.getMaterial());
+                queryWrapper.between("create_time",DateUtil.offset(startDate, DateField.YEAR,-integer-1),DateUtil.offset(endDate, DateField.YEAR,-integer-1));
+                PurchasePriceVo last = priceMapper.getMonthlyAvgPricesYear2(queryWrapper);
+
+                if (ObjectUtil.isEmpty(monthlyPrice)){
+                    monthlyPrice = new PurchasePriceVo();
+                    monthlyPrice.setTime(DateUtil.format(DateUtil.offset(startDate, DateField.YEAR,-integer),"yyyy"));
+                    monthlyPrice.setAvgPrice(0.0);
                 }
+                if (ObjectUtil.isEmpty(last)){
+                    last = new PurchasePriceVo();
+                    last.setAvgPrice(0.0);
+                }
+                monthlyPrice.setLastAvgPrice(String.format("%.2f",last.getAvgPrice()));
+
+                monthlyPrice.setMonthOverMonthPct(calculateYOYZiJinYvE(monthlyPrice.getAvgPrice(),last.getAvgPrice()));
+                monthlyPrice.setYearOverYearPct(calculateYOYZiJinYvE(monthlyPrice.getAvgPrice(),last.getAvgPrice()));
+                monthlyPrices.add(monthlyPrice);
             }
+            return  monthlyPrices ;
+
         } else {
-            Calendar calendar = Calendar.getInstance();
+
             if (null == number) {
-                calendar.add(Calendar.MONTH, -13);
-            } else {
-                calendar.add(Calendar.MONTH, -number);
+                number = 12;
             }
-            queryWrapper.between("create_time", calendar.getTime(), new Date());
-            queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
-            QueryWrapper<PurchasePrice> queryWrapper1 = new QueryWrapper<>();
-            queryWrapper1.eq(StringUtils.isNotBlank(priceParam.getOrgId()), "org_id", priceParam.getOrgId());
-            queryWrapper1.select(" CONVERT(IFNULL(avg(price),'0'),decimal(10,2)) 'price'");
-            Calendar calendar1 = Calendar.getInstance();
-            calendar1.add(Calendar.YEAR, -1);
-            int lastYear = calendar1.get(Calendar.YEAR);
-            queryWrapper1.between("create_time", lastYear + "-01-01 00:00:00", lastYear + "-12-31 23:59:59");
-            PurchasePrice purchasePrice = priceMapper.selectOne(queryWrapper1);
-            List<PurchasePrice> prices = priceMapper.selectList(queryWrapper);
-            if (prices.size() != 0) {
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
-                for (PurchasePrice price : prices) {
-                    PurchasePriceVo vo = new PurchasePriceVo();
-                    vo.setAvgPrice(price.getPrice());
-                    vo.setLastAvgPrice(purchasePrice.getPrice());
-                    vo.setTime(sdf.format(price.getCreateTime()));
-                    list.add(vo);
+            List<PurchasePriceVo> monthlyPrices = new ArrayList<>();
+            Date  startDate = DateUtil.beginOfMonth(date);
+            Date  endDate = DateUtil.endOfMonth(date);
+            for (Integer integer = number; integer >=0; integer--) {
+                queryWrapper.clear();
+                queryWrapper.eq(StringUtils.isNotBlank(priceParam.getOrgId()), "org_id", priceParam.getOrgId());
+                queryWrapper.eq("fnumber", priceParam.getMaterial());
+                queryWrapper.between("create_time",DateUtil.offset(startDate, DateField.MONTH,-integer),DateUtil.offset(endDate, DateField.MONTH,-integer));
+                PurchasePriceVo monthlyPrice = priceMapper.getMonthlyAvgMonthYear2(queryWrapper);
+                if (ObjectUtil.isEmpty(monthlyPrice)){
+                    monthlyPrice = new PurchasePriceVo();
+                    monthlyPrice.setTime(DateUtil.format(DateUtil.offset(startDate, DateField.MONTH,-integer),"yyyy-MM"));
+                    monthlyPrice.setAvgPrice(0.0);
+                }
+
+                queryWrapper.clear();
+                queryWrapper.eq(StringUtils.isNotBlank(priceParam.getOrgId()), "org_id", priceParam.getOrgId());
+                queryWrapper.eq("fnumber", priceParam.getMaterial());
+                queryWrapper.between("create_time",DateUtil.offset(startDate, DateField.MONTH,-integer-1),DateUtil.offset(endDate, DateField.MONTH,-integer-1));
+                PurchasePriceVo lastMonth = priceMapper.getMonthlyAvgMonthYear2(queryWrapper);
+                if (ObjectUtil.isEmpty(lastMonth)){
+                    lastMonth = new PurchasePriceVo();
+                    lastMonth.setTime(DateUtil.format(DateUtil.offset(startDate, DateField.MONTH,-integer),"yyyy-MM"));
+                    lastMonth.setAvgPrice(0.0);
+                }
+
+                queryWrapper.clear();
+                queryWrapper.eq(StringUtils.isNotBlank(priceParam.getOrgId()), "org_id", priceParam.getOrgId());
+                queryWrapper.eq("fnumber", priceParam.getMaterial());
+                queryWrapper.between("create_time",DateUtil.offset(startDate, DateField.MONTH,-integer-12),DateUtil.offset(endDate, DateField.MONTH,-integer-12));
+                PurchasePriceVo lastYear = priceMapper.getMonthlyAvgMonthYear2(queryWrapper);
+                if (ObjectUtil.isEmpty(lastYear)){
+                    lastYear = new PurchasePriceVo();
+                    lastYear.setTime(DateUtil.format(DateUtil.offset(startDate, DateField.MONTH,-integer),"yyyy-MM"));
+                    lastYear.setAvgPrice(0.0);
                 }
+                monthlyPrice.setLastAvgPrice(String.format("%.2f",lastYear.getAvgPrice()));
+                monthlyPrice.setMonthOverMonthPct(calculateYOYZiJinYvE(monthlyPrice.getAvgPrice(),lastMonth.getAvgPrice()));
+                monthlyPrice.setYearOverYearPct(calculateYOYZiJinYvE(monthlyPrice.getAvgPrice(),lastMonth.getAvgPrice()));
+                monthlyPrices.add(monthlyPrice);
             }
+            return monthlyPrices;
+
+//
+//            Calendar calendar = Calendar.getInstance();
+//            if (null == number) {
+//                calendar.add(Calendar.MONTH, -13);
+//            } else {
+//                calendar.add(Calendar.MONTH, -number);
+//            }
+//            queryWrapper.between("create_time", calendar.getTime(), new Date());
+//
+//            List<PurchasePriceVo> monthlyPrices = priceMapper.getMonthlyAvgPrices(queryWrapper);
+//            return calculatePriceChanges(monthlyPrices);
+
+        }
+//        return list;
+    }
+
+
+    public static String calculateYOYZiJinYvE(double currentValue, double previousValue) {
+        // 处理零值情况
+        if (previousValue == 0) {
+            return "0";
+        }
+        // 计算同比变化率
+        double percentageChange = ((currentValue - previousValue) /previousValue) * 100;
+        if (percentageChange >500){
+            return "100";
         }
-        return list;
+        return String.format("%.2f", percentageChange);
     }
 
 }

+ 14 - 0
huimv-farm/src/main/java/vip/xiaonuo/quality/controller/QualityFenxibaogaoController.java

@@ -13,6 +13,7 @@
 package vip.xiaonuo.quality.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
@@ -27,6 +28,8 @@ import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
 
 import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.erp.entity.ErpBdMaterialGroup;
+import vip.xiaonuo.erp.service.IErpBdMaterialGroupService;
 import vip.xiaonuo.quality.entity.QualityFenxibaogao;
 import vip.xiaonuo.quality.param.*;
 import vip.xiaonuo.quality.param.vo.ChengPinQuXianVo;
@@ -52,6 +55,9 @@ public class QualityFenxibaogaoController {
     @Resource
     private QualityFenxibaogaoService qualityFenxibaogaoService;
 
+    @Resource
+    private IErpBdMaterialGroupService erpBdMaterialGroupService;
+
     /**
      * 获取质量分析报表分页
      *
@@ -65,6 +71,14 @@ public class QualityFenxibaogaoController {
         return CommonResult.data(qualityFenxibaogaoService.page(qualityFenxibaogaoPageParam));
     }
 
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取大类列表")
+    @PostMapping("/biz/base/materGroup")
+    public CommonResult<List<ErpBdMaterialGroup>> materGroup() {
+
+        return CommonResult.data(erpBdMaterialGroupService.list(new QueryWrapper<ErpBdMaterialGroup>().eq("fparentid",0)));
+    }
+
     /**
      * 添加质量分析报表
      *

+ 2 - 0
huimv-farm/src/main/java/vip/xiaonuo/quality/entity/ErpBdQuail.java

@@ -7,6 +7,7 @@ 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;
@@ -101,6 +102,7 @@ public class ErpBdQuail implements Serializable {
     private String orgId;
 
     @ApiModelProperty(value = "创建时间",position =13 )
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date createTime;
 
 

+ 3 - 2
huimv-farm/src/main/java/vip/xiaonuo/quality/entity/QualityEffectice.java

@@ -42,13 +42,14 @@ public class QualityEffectice implements Serializable {
      * 入库日期
      */
     @ApiModelProperty(value = "入库日期",position =2 )
-    private LocalDateTime incomeTime;
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date incomeTime;
 
     /**
      * 有效日期
      */
     @ApiModelProperty(value = "有效日期", position = 3)
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date effectiveTime;
 
     /**

+ 1 - 0
huimv-farm/src/main/java/vip/xiaonuo/quality/entity/QualityFenxibaogao.java

@@ -103,6 +103,7 @@ public class QualityFenxibaogao {
     /** ORG_ID */
     @ApiModelProperty(value = "ORG_ID", position = 15)
     private String orgId;
+    private String fnumber;;
 
 
 }

+ 4 - 0
huimv-farm/src/main/java/vip/xiaonuo/quality/entity/vo/ErpQualiQm.java

@@ -1,5 +1,6 @@
 package vip.xiaonuo.quality.entity.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
 import java.util.Date;
@@ -23,11 +24,13 @@ public class ErpQualiQm {
     /**
      * 质检开始
      */
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date inspectStartDate;
 
     /**
      * 质检结束
      */
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date  inspectEndDate;
 
     /**
@@ -91,4 +94,5 @@ public class ErpQualiQm {
      * 物料名称
      */
     private String fname;
+    private String fnumber;
 }

+ 9 - 0
huimv-farm/src/main/java/vip/xiaonuo/quality/param/QualityFenxibaogaoPageParam.java

@@ -58,5 +58,14 @@ public class QualityFenxibaogaoPageParam {
     @ApiModelProperty(value = "当前页码")
     private Integer pageSize;
 
+    @ApiModelProperty(value = "批次号 ")
+    private String selfBatchNum;
+    private String startDate;
+    private String endDate;
+    //大类编号
+    @ApiModelProperty(value = "类型 ")
+    private String fnumber;
+
+
 
 }

+ 0 - 0
huimv-farm/src/main/java/vip/xiaonuo/quality/service/impl/QualityFenxibaogaoServiceImpl.java


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio