523096025 il y a 6 heures
Parent
commit
d24eb850f1
27 fichiers modifiés avec 767 ajouts et 74 suppressions
  1. 8 4
      get-data/src/main/resources/com/huimv/getdata/mapper/ErpShengChanMapper.xml
  2. 21 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/entity/vo/DongShiCountNum.java
  3. 91 11
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/service/impl/HrBaseEmployeeInfoServiceImpl.java
  4. 2 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/write/entity/HrPeopleWrite.java
  5. 4 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/write/mapper/HrPeopleWriteMapper.java
  6. 20 0
      huimv-farm/src/main/java/vip/xiaonuo/importData/controller/ImportHrController.java
  7. 61 0
      huimv-farm/src/main/java/vip/xiaonuo/importData/entity/BankData.java
  8. 16 2
      huimv-farm/src/main/java/vip/xiaonuo/importData/entity/OverdueData.java
  9. 61 0
      huimv-farm/src/main/java/vip/xiaonuo/importData/entity/RemoveData.java
  10. 4 0
      huimv-farm/src/main/java/vip/xiaonuo/importData/service/ImportData.java
  11. 159 25
      huimv-farm/src/main/java/vip/xiaonuo/importData/service/impl/ImportDataImpl.java
  12. 2 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyProduce0422.java
  13. 15 0
      huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyWriteOverdue.java
  14. 2 0
      huimv-farm/src/main/java/vip/xiaonuo/money/mapper/MoneyBusinessMapper.java
  15. 22 1
      huimv-farm/src/main/java/vip/xiaonuo/money/param/DsBusAllParam.java
  16. 14 0
      huimv-farm/src/main/java/vip/xiaonuo/money/param/MoneyWriteOverdueAddParam.java
  17. 31 3
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyBusinessServiceImpl.java
  18. 5 3
      huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyProduceServiceImpl.java
  19. 26 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/vo/ProductionWorkPlanTargetVo.java
  20. 38 0
      huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProductionWorkstopPlanServiceImpl.java
  21. 18 0
      huimv-farm/src/main/java/vip/xiaonuo/purchase/param/PurchaseAllParam.java
  22. 30 5
      huimv-farm/src/main/java/vip/xiaonuo/purchase/service/impl/PurchaseOrderServiceImpl.java
  23. 17 0
      huimv-farm/src/main/java/vip/xiaonuo/sale/entity/vo/SaleTargetVo.java
  24. 84 18
      huimv-farm/src/main/java/vip/xiaonuo/sale/service/impl/SaleTargetServiceImpl.java
  25. 7 2
      huimv-farm/src/main/resources/mapper/HrBaseEmployeeInfoMapper.xml
  26. 5 0
      huimv-farm/src/main/resources/mapper/HrPeopleWriteMapper.xml
  27. 4 0
      huimv-farm/src/main/resources/mapper/MoneyBusinessMapper.xml

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

@@ -4,12 +4,16 @@
 
     <select id="getShiJiChanLiang" resultType="com.huimv.getdata.entity.shengcan.ShiJiChanLiang"
             parameterType="java.util.Date">
-        SELECT B.FREALQTY , A.FDATE , A.FSTOCKORGID ,A.FPRDORGID ,C.FNAME wuLiaoName ,D.FNAME ,E.FNAME cheJianName , B.FWORKSHOPID  FROM T_PRD_INSTOCK A
-        INNER JOIN T_PRD_INSTOCKENTRY  B ON A.FID  = B.FID
+--         SELECT B.FREALQTY , A.FDATE , A.FSTOCKORGID ,A.FPRDORGID ,C.FNAME wuLiaoName ,D.FNAME ,E.FNAME cheJianName , B.FWORKSHOPID  FROM T_PRD_INSTOCK A
+--         INNER JOIN T_PRD_INSTOCKENTRY  B ON A.FID  = B.FID
+--         INNER JOIN T_BD_MATERIAL_l  C ON C.FMATERIALID  = B.FMATERIALID
+--         INNER JOIN T_BD_STOCK_L  D ON D.FSTOCKID  = B.FSTOCKID
+--         INNER JOIN T_BD_DEPARTMENT_l  E ON E.FDEPTID  = B.FWORKSHOPID
+
+        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
         INNER JOIN T_BD_MATERIAL_l  C ON C.FMATERIALID  = B.FMATERIALID
-        INNER JOIN T_BD_STOCK_L  D ON D.FSTOCKID  = B.FSTOCKID
         INNER JOIN T_BD_DEPARTMENT_l  E ON E.FDEPTID  = B.FWORKSHOPID
-
         <if test="date !=null">
             where  A.FDATE >= #{date}
         </if>

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

@@ -12,6 +12,10 @@ public class DongShiCountNum {
     private String jobNumOnYear;
     @ApiModelProperty(value = "在职总人数是否增加", position = 2)
     private Boolean jobNumIsOn;
+    @ApiModelProperty(value = "在职总人数环比/同比(本年累计)", position = 2)
+    private String yearJobNumOnYear;
+    @ApiModelProperty(value = "在职总人数是否增加(本年累计)", position = 2)
+    private Boolean yearJobNumIsOn;
 
     @ApiModelProperty(value = "薪酬支出")
     private String pay;
@@ -19,6 +23,10 @@ public class DongShiCountNum {
     private String payOnYear;
     @ApiModelProperty(value = "薪酬支出是否增加", position = 2)
     private Boolean payIsOn;
+    @ApiModelProperty(value = "薪酬支出环比/同比(本年累计)", position = 2)
+    private String yearPayOnYear;
+    @ApiModelProperty(value = "薪酬支出是否增加(本年累计)", position = 2)
+    private Boolean yearPayIsOn;
 
     @ApiModelProperty(value = "人均产值")
     private String outputValue;
@@ -26,9 +34,22 @@ public class DongShiCountNum {
     private String outputValueOnYear;
     @ApiModelProperty(value = "人均产值是否增加", position = 2)
     private Boolean outputValueIsOn;
+    @ApiModelProperty(value = "人均产值环比/同比", position = 2)
+    private String yearOutputValueOnYear;
+    @ApiModelProperty(value = "人均产值是否增加", position = 2)
+    private Boolean yearOutputValueIsOn;
 
     private String ymonth;
     @ApiModelProperty(value = "增长率")
     private String rateOnYear;
     private Boolean rateIsOn;
+
+
+//    private String jobNumAvg;
+//    private String payAvg;
+//    private String outputValueAvg;
+    private String jobNumAvgYear;
+    private String payAvgYear;
+    private String outputValueAvgYear;
+
 }

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

@@ -15,6 +15,7 @@ package vip.xiaonuo.hr.modular.baseemployeeinfo.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollStreamUtil;
 import cn.hutool.core.date.DateField;
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
@@ -37,6 +38,10 @@ import vip.xiaonuo.hr.modular.baseemployeeinfo.param.*;
 import vip.xiaonuo.hr.modular.baseemployeeinfo.service.HrBaseEmployeeInfoService;
 import vip.xiaonuo.hr.modular.count.entity.HrCount;
 import vip.xiaonuo.hr.modular.count.mapper.HrCountMapper;
+import vip.xiaonuo.hr.modular.write.entity.HrPeopleWrite;
+import vip.xiaonuo.hr.modular.write.mapper.HrPeopleWriteMapper;
+import vip.xiaonuo.money.entity.MoneyBusiness;
+import vip.xiaonuo.money.mapper.MoneyBusinessMapper;
 import vip.xiaonuo.purchase.entity.PurchaseContract;
 import vip.xiaonuo.purchase.entity.PurchaseOrder;
 import vip.xiaonuo.purchase.param.DongShiPurchaseParam;
@@ -64,6 +69,10 @@ public class HrBaseEmployeeInfoServiceImpl extends ServiceImpl<HrBaseEmployeeInf
     private HrCountMapper hrCountMapper;
     @Autowired
     private HrBaseDepartmentMapper hrBaseDepartmentMapper;
+    @Autowired
+    private HrPeopleWriteMapper hrPeopleWriteMapper;
+    @Autowired
+    private MoneyBusinessMapper moneyBusinessMapper;
 
 
     @Override
@@ -223,6 +232,8 @@ public class HrBaseEmployeeInfoServiceImpl extends ServiceImpl<HrBaseEmployeeInf
         return getEndList(perNum);
     }
 
+
+
     @Override
     public DongShiCountNum zhiBiao(DongShiPurchaseParam dongShiPurchaseParam) {
 
@@ -234,20 +245,88 @@ public class HrBaseEmployeeInfoServiceImpl extends ServiceImpl<HrBaseEmployeeInf
         }else {
             date = DateUtil.beginOfMonth(   DateUtil.parse(time,"yyyy-MM"));
         }
-        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);
+        DateTime lastYear = DateUtil.offsetMonth(date, -12);
+
+
+        QueryWrapper<HrPeopleWrite> wapper = new QueryWrapper<HrPeopleWrite>();
+        wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId).between("create_time", date, DateUtil.endOfMonth(date));
+       HrPeopleWrite hrPeopleWrite =  hrPeopleWriteMapper.zhiBiao(wapper);
+
+        wapper.clear();
+        wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId).between("create_time", lastYear, DateUtil.endOfMonth(lastYear));
+        HrPeopleWrite lastMonthrPeopleWrite =  hrPeopleWriteMapper.zhiBiao(wapper);
+
+        wapper.clear();
+        wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId).between("create_time",  DateUtil.beginOfYear(date), DateUtil.endOfYear( date));
+        HrPeopleWrite hrPeopleWriteYear =  hrPeopleWriteMapper.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.eq(StringUtils.isNotBlank(orgId),"org_id", orgId).between("create_time",  DateUtil.beginOfYear(lastYear), DateUtil.endOfYear( lastYear));
+        HrPeopleWrite lasthrPeopleWriteYear =  hrPeopleWriteMapper.zhiBiao(wapper);
+
+
+        DongShiCountNum dongShiCountNum = new DongShiCountNum();
+        dongShiCountNum.setJobNum(hrPeopleWrite.getPeopleNumber()+"");
+        dongShiCountNum.setJobNumIsOn(lastMonthrPeopleWrite.getPeopleNumber() <= hrPeopleWrite.getPeopleNumber());
+        dongShiCountNum.setJobNumOnYear(calculateYOYZiJinYvE(hrPeopleWrite.getPeopleNumber(),lastMonthrPeopleWrite.getPeopleNumber()));
+
+        dongShiCountNum.setJobNumAvgYear(hrPeopleWriteYear.getPeopleNumber()+"");
+        dongShiCountNum.setYearJobNumIsOn(lasthrPeopleWriteYear.getPeopleNumber() <= hrPeopleWriteYear.getPeopleNumber());
+        dongShiCountNum.setYearJobNumOnYear(calculateYOYZiJinYvE(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));
+         MoneyBusiness moneyBusiness = moneyBusinessMapper.zhiBiao(wapper1);
+        wapper1.clear();
+        wapper1.eq(StringUtils.isNotBlank(orgId),"org_id", orgId).between("create_time", lastYear, DateUtil.endOfMonth(lastYear));
+        MoneyBusiness lastMonthMoneyBusiness = moneyBusinessMapper.zhiBiao(wapper1);
+
+        wapper1.clear();
+        wapper1.eq(StringUtils.isNotBlank(orgId),"org_id", orgId).between("create_time", DateUtil.beginOfYear(date), DateUtil.endOfYear(date));
+        MoneyBusiness yearMoneyBusiness = moneyBusinessMapper.zhiBiao(wapper1);
+
+        wapper1.clear();
+        wapper1.eq(StringUtils.isNotBlank(orgId),"org_id", orgId).between("create_time",  DateUtil.beginOfYear(lastYear) ,DateUtil.endOfYear(DateUtil.endOfMonth(lastYear)));
+        MoneyBusiness lastYearMoneyBusiness = moneyBusinessMapper.zhiBiao(wapper1);
+
+
+        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.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.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.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.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())));
 
 
         return dongShiCountNum;
@@ -260,6 +339,7 @@ public class HrBaseEmployeeInfoServiceImpl extends ServiceImpl<HrBaseEmployeeInf
 //        return  balance;
     }
 
+
     @Override
     public Page<HrBaseEmployeeInfo> details(DongShiPurchaseParam dongShiPurchaseParam) {
 

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

@@ -7,6 +7,7 @@ import java.time.LocalDateTime;
 import java.io.Serializable;
 import java.util.Date;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -34,6 +35,7 @@ public class HrPeopleWrite implements Serializable {
 
     private String orgId;
 
+    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
     private String createTime;
 
     private Integer peopleNumber;

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

@@ -1,5 +1,8 @@
 package vip.xiaonuo.hr.modular.write.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.hr.modular.write.entity.HrPeopleWrite;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface HrPeopleWriteMapper extends BaseMapper<HrPeopleWrite> {
 
+    HrPeopleWrite zhiBiao(@Param(Constants.WRAPPER) QueryWrapper<HrPeopleWrite> wapper);
 }

+ 20 - 0
huimv-farm/src/main/java/vip/xiaonuo/importData/controller/ImportHrController.java

@@ -89,6 +89,7 @@ public class ImportHrController {
         return importData.importOverdue(httpServletRequest, orgId, files);
     }
 
+
     @ApiOperationSupport(order = 4)
     @ApiOperation("资金余额导入")
     @PostMapping("/importBalance")
@@ -97,4 +98,23 @@ public class ImportHrController {
                                     @RequestParam(name = "file") MultipartFile files) {
         return importData.importBalance(httpServletRequest, orgId, files);
     }
+
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("银行借款")
+    @PostMapping("/importBank")
+    @Transactional
+    public CommonResult importBank(HttpServletRequest httpServletRequest,@RequestParam(name = "orgId") String orgId,
+                                      @RequestParam(name = "file") MultipartFile files) {
+        return importData.importBank(httpServletRequest, orgId, files);
+    }
+
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("剔除关联交易填报")
+    @PostMapping("/importRemove")
+    @Transactional
+    public CommonResult importRemove(HttpServletRequest httpServletRequest,@RequestParam(name = "orgId") String orgId,
+                                   @RequestParam(name = "file") MultipartFile files) {
+        return importData.importRemove(httpServletRequest, orgId, files);
+    }
+
 }

+ 61 - 0
huimv-farm/src/main/java/vip/xiaonuo/importData/entity/BankData.java

@@ -0,0 +1,61 @@
+package vip.xiaonuo.importData.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class BankData {
+    /**
+     * 公司名称
+     */
+    @ApiModelProperty(value = "公司名称", position = 2)
+    private String company;
+
+    /**
+     * 借款时间
+     */
+    @ApiModelProperty(value = "借款时间", position = 3)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date borrowTime;
+
+    /**
+     * 币种
+     */
+    @ApiModelProperty(value = "币种", position = 4)
+    private String moneyType;
+
+    /**
+     * 借款金额
+     */
+    @ApiModelProperty(value = "借款金额", position = 5)
+    private String borrowPrice;
+
+    /**
+     * 截至日期
+     */
+    @ApiModelProperty(value = "截至日期", position = 6)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+
+    @ApiModelProperty(value = "银行名称", position = 7)
+    private String bankName;
+
+
+    @ApiModelProperty(value = "借款利率", position = 8)
+    private String bankRank;
+
+    @ApiModelProperty(value = "借款类型", position = 9)
+    private String bankType;
+
+    @ApiModelProperty(value = "还款时间", position = 10)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date repaymentTime;
+
+
+    @ApiModelProperty(value = "是否还款", position = 11)
+    private Integer isRepayment;
+}

+ 16 - 2
huimv-farm/src/main/java/vip/xiaonuo/importData/entity/OverdueData.java

@@ -13,7 +13,7 @@ public class OverdueData {
     /**
      * 单据编号
      */
-    @ApiModelProperty(value = "单据编号", position = 1)
+    @ApiModelProperty(value = "合同号", position = 1)
     private String documentNumber;
 
     /**
@@ -43,7 +43,7 @@ public class OverdueData {
     /**
      * 到期日
      */
-    @ApiModelProperty(value = "到期日", position = 6)
+    @ApiModelProperty(value = "到期日", position = 6)
     private Date endTime;
 
     /**
@@ -52,6 +52,20 @@ public class OverdueData {
     @ApiModelProperty(value = "逾期金额", position = 7)
     private String money;
 
+    @ApiModelProperty(value = "币种", position = 8)
+    private String bz;
+    @ApiModelProperty(value = "原币金额", position = 8)
+    private String ybje;
+    @ApiModelProperty(value = "折人民币金额", position = 8)
+    private String rmbje;
+    @ApiModelProperty(value = "销售日期", position = 8)
+    private Date xsrq;
+    @ApiModelProperty(value = "收款期限", position = 8)
+    private String skqx;
+
+    @ApiModelProperty(value = "逾期天数", position = 8)
+    private String yqts;
+
 
 
 }

+ 61 - 0
huimv-farm/src/main/java/vip/xiaonuo/importData/entity/RemoveData.java

@@ -0,0 +1,61 @@
+package vip.xiaonuo.importData.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class RemoveData {
+
+    @ApiModelProperty(value = "物料名称", position = 7)
+    private String materialName;
+
+    /**
+     * 0,nf级胆固醇 1,饲料级胆固醇  2,羊毛醇  3,羊毛酸  4,羊毛酸异丙酯  5,其它
+     */
+    private Integer materialType;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间", position = 1)
+    private Date createTime;
+
+    /**
+     * 金额
+     */
+    @ApiModelProperty(value = "金额", position = 2)
+    private String materialAmount;
+
+    /**
+     * 数量
+     */
+    private String materialQty;
+
+    /**
+     * 物料编码
+     */
+    private Integer materialId;
+
+    @ApiModelProperty(value = "id",position = 3)
+    private String orgId;
+
+    /**
+     * 收货方
+     */
+    private String freceiverid;
+
+    @ApiModelProperty(value = "填报的金额", position = 5)
+    private String writeMoney;
+
+    @ApiModelProperty(value = "0为真实数据 1为填报数据", position = 6)
+    private Integer isWrite;
+
+    @ApiModelProperty(value = "公司名称", position = 8)
+    private String orgName;
+
+    @ApiModelProperty(value = "交易关联方", position = 8)
+    private String customerName;
+}

+ 4 - 0
huimv-farm/src/main/java/vip/xiaonuo/importData/service/ImportData.java

@@ -20,4 +20,8 @@ public interface ImportData {
 
     CommonResult importBalance(HttpServletRequest httpServletRequest, @RequestParam(name = "orgId") String orgId,
                                @RequestParam(name = "file") MultipartFile files);
+
+    CommonResult importBank(HttpServletRequest httpServletRequest, String orgId, MultipartFile files);
+
+    CommonResult importRemove(HttpServletRequest httpServletRequest, String orgId, MultipartFile files);
 }

+ 159 - 25
huimv-farm/src/main/java/vip/xiaonuo/importData/service/impl/ImportDataImpl.java

@@ -17,19 +17,12 @@ import vip.xiaonuo.hr.modular.basedepartment.entity.HrBaseDepartment;
 import vip.xiaonuo.hr.modular.basedepartment.service.HrBaseDepartmentService;
 import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.HrBaseEmployeeInfo;
 import vip.xiaonuo.hr.modular.baseemployeeinfo.service.HrBaseEmployeeInfoService;
-import vip.xiaonuo.importData.entity.BalanceData;
-import vip.xiaonuo.importData.entity.HrData;
-import vip.xiaonuo.importData.entity.MoneyData;
-import vip.xiaonuo.importData.entity.OverdueData;
+import vip.xiaonuo.importData.entity.*;
 import vip.xiaonuo.importData.service.ImportData;
 import vip.xiaonuo.importData.utils.ExcelImportSheet;
-import vip.xiaonuo.money.entity.MoneyBusiness;
-import vip.xiaonuo.money.entity.MoneyCost;
-import vip.xiaonuo.money.entity.MoneyWriteOverdue;
+import vip.xiaonuo.money.entity.*;
 import vip.xiaonuo.money.entity.vo.MoneyVo;
-import vip.xiaonuo.money.mapper.MoneyBusinessMapper;
-import vip.xiaonuo.money.mapper.MoneyCostMapper;
-import vip.xiaonuo.money.mapper.MoneyWriteOverdueMapper;
+import vip.xiaonuo.money.mapper.*;
 import vip.xiaonuo.sys.modular.org.entity.SysOrg;
 import vip.xiaonuo.sys.modular.org.mapper.SysOrgMapper;
 
@@ -56,6 +49,11 @@ public class ImportDataImpl implements ImportData {
     private MoneyWriteOverdueMapper overdueMapper;
     @Autowired
     private MoneyBusinessMapper businessMapper;
+    @Autowired
+    private MoneyBorrowWarningMapper moneyBorrowWarningMapper;
+    @Autowired
+    private MoneyProduce0422Mapper moneyProduce0422Mapper;
+
 
     @Override
     @Transactional
@@ -260,13 +258,23 @@ public class ImportDataImpl implements ImportData {
     public CommonResult importOverdue(HttpServletRequest httpServletRequest, String orgId, MultipartFile files) {
         Map<String , String> map = new HashMap<>();
         //表头与键值对的映射关系
-        map.put("单据编号" , "documentNumber");
-        map.put("单据类型" , "documentType");
-        map.put("单据状态" , "documentStatus");
-        map.put("客户" , "userName");
-        map.put("创建时间" , "createTime");
-        map.put("到期日" , "endTime");
-        map.put("逾期金额" , "money");
+//        map.put("单据编号" , "documentNumber");
+//        map.put("单据类型" , "documentType");
+//        map.put("单据状态" , "documentStatus");
+//
+//        map.put("创建时间" , "createTime");
+//        map.put("到期日" , "endTime");
+//        map.put("逾期金额" , "money");
+
+        map.put("客户名称" , "userName");
+        map.put("币种" , "bz");
+        map.put("原币金额" , "ybje");
+        map.put("折人民币金额" , "rmbje");
+        map.put("销售日期" , "xsrq");
+        map.put("收款期限" , "skqx");
+        map.put("到期日期" , "endTime");
+        map.put("逾期天数" , "yqts");
+        map.put("合同号" , "documentNumber");
 
 
 //        SysOrg org = orgMapper.selectOne(new QueryWrapper<SysOrg>().eq("id", orgId));
@@ -280,17 +288,26 @@ public class ImportDataImpl implements ImportData {
             Sheet sheet = workbook.getSheetAt(0);
             List<OverdueData> list = ExcelImportSheet.getListFromExcel(sheet , OverdueData.class , map);
             for (OverdueData overdueData : list) {
-                if (null == overdueData.getCreateTime()) {
-                } else {
+                if (StringUtils.isNotBlank( overdueData.getDocumentNumber())) {
                     MoneyWriteOverdue overdue = new MoneyWriteOverdue();
                     overdue.setOrgId(orgId);
-                    overdue.setCreateTime(overdueData.getCreateTime());
-                    overdue.setDocumentNumber(overdueData.getDocumentNumber());
-                    overdue.setDocumentType(overdueData.getDocumentType());
-                    overdue.setDocumentStatus(overdueData.getDocumentStatus());
-                    overdue.setEndTime(overdueData.getEndTime());
-                    overdue.setMoney(overdueData.getMoney());
+//                    overdue.setCreateTime(overdueData.getCreateTime());
+//                    overdue.setDocumentNumber(overdueData.getDocumentNumber());
+//                    overdue.setDocumentType(overdueData.getDocumentType());
+//                    overdue.setDocumentStatus(overdueData.getDocumentStatus());
+//                    overdue.setEndTime(overdueData.getEndTime());
+//                    overdue.setMoney(overdueData.getMoney());
+//                    overdue.setUserName(overdueData.getUserName());
+
                     overdue.setUserName(overdueData.getUserName());
+                    overdue.setBz(overdueData.getBz());
+                    overdue.setYbje(overdueData.getYbje());
+                    overdue.setRmbje(overdueData.getRmbje());
+                    overdue.setXsrq(overdueData.getXsrq());
+                    overdue.setSkqx(overdueData.getSkqx());
+                    overdue.setEndTime(overdueData.getEndTime());
+                    overdue.setYqts(overdueData.getYqts());
+                    overdue.setDocumentNumber(overdueData.getDocumentNumber());
                     overdueMapper.insert(overdue);
                 }
 
@@ -345,4 +362,121 @@ public class ImportDataImpl implements ImportData {
         }
         return CommonResult.ok();
     }
+
+    @Override
+    public CommonResult importBank(HttpServletRequest httpServletRequest, String orgId, MultipartFile files) {
+        Map<String , String> map = new HashMap<>();
+        //表头与键值对的映射关系
+
+        map.put("借款时间" , "borrowTime");
+        map.put("币种" , "moneyType");
+        map.put("借款金额(万元)" , "borrowPrice");
+        map.put("借款银行" , "bankName");
+        map.put("借款利率(%)" , "bankRank");
+        map.put("借款类型" , "bankType");
+        map.put("还款时间" , "repaymentTime");
+
+        SysOrg org = orgMapper.selectOne(new QueryWrapper<SysOrg>().eq("id", orgId));
+        try(
+                //这里面的对象会自动关闭
+                InputStream in = files.getInputStream();
+                Workbook workbook = ExcelImportSheet.getTypeFromExtends(in , files.getOriginalFilename())
+        ) {
+
+            //根据名称获取单张表对象 也可以使用getSheetAt(int index)获取单张表的对象 获取第一张表
+            Sheet sheet = workbook.getSheetAt(0);
+            List<BankData> list = ExcelImportSheet.getListFromExcel(sheet , BankData.class , map);
+            for (BankData bankData : list) {
+                if (StringUtils.isNotBlank( bankData.getBankName())) {
+                    MoneyBorrowWarning moneyBorrowWarning = new MoneyBorrowWarning();
+                    moneyBorrowWarning.setOrgId(orgId);
+                    moneyBorrowWarning.setCompany(org.getName());
+                    moneyBorrowWarning.setMoneyType(bankData.getMoneyType());
+                    moneyBorrowWarning.setBorrowPrice(bankData.getBorrowPrice());
+                    moneyBorrowWarning.setBorrowTime(bankData.getBorrowTime());
+                    moneyBorrowWarning.setBankName(bankData.getBankName());
+                    moneyBorrowWarning.setBankRank(bankData.getBankRank());
+                    moneyBorrowWarning.setBankType(bankData.getBankType());
+                    moneyBorrowWarning.setEndTime(bankData.getEndTime());
+                    moneyBorrowWarning.setRepaymentTime(bankData.getRepaymentTime());
+
+                    moneyBorrowWarningMapper.insert(moneyBorrowWarning);
+                }
+
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            return CommonResult.error();
+        }finally {
+            //写着好看的
+        }
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult importRemove(HttpServletRequest httpServletRequest, String orgId, MultipartFile files) {
+
+        Map<String , String> map = new HashMap<>();
+        //表头与键值对的映射关系
+        map.put("填报时间" , "createTime");
+        map.put("交易关联方", "customerName");
+        map.put("物料名称" , "materialName");
+        map.put("金额" , "materialAmount");
+
+        SysOrg org = orgMapper.selectOne(new QueryWrapper<SysOrg>().eq("id", orgId));
+        try(
+                //这里面的对象会自动关闭
+                InputStream in = files.getInputStream();
+                Workbook workbook = ExcelImportSheet.getTypeFromExtends(in , files.getOriginalFilename())
+        ) {
+
+            //根据名称获取单张表对象 也可以使用getSheetAt(int index)获取单张表的对象 获取第一张表
+            Sheet sheet = workbook.getSheetAt(0);
+            List<RemoveData> list = ExcelImportSheet.getListFromExcel(sheet , RemoveData.class , map);
+            for (RemoveData bankData : list) {
+                if (StringUtils.isNotBlank( bankData.getMaterialAmount())) {
+                    MoneyProduce0422 produce0422= new MoneyProduce0422();
+                    produce0422.setOrgId(orgId);
+                    produce0422.setCreateTime(bankData.getCreateTime());
+                    produce0422.setMaterialName(bankData.getMaterialName());
+                    produce0422.setMaterialType(getMaterType(bankData.getMaterialName()));
+                    produce0422.setMaterialAmount(String.format("%.2f", Double.parseDouble(  bankData.getMaterialAmount()) * -1.0));
+                    produce0422.setWriteMoney(bankData.getMaterialAmount());
+                    produce0422.setOrgName(org.getName());
+                    produce0422.setCustomerName(bankData.getCustomerName());
+                    produce0422.setIsWrite(1);
+                    moneyProduce0422Mapper.insert(produce0422);
+                }
+
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            return CommonResult.error();
+        }finally {
+            //写着好看的
+        }
+        return CommonResult.ok();
+
+    }
+
+    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;
+    }
 }

+ 2 - 0
huimv-farm/src/main/java/vip/xiaonuo/money/entity/MoneyProduce0422.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;
@@ -43,6 +44,7 @@ public class MoneyProduce0422 implements Serializable {
      * 创建时间
      */
     @ApiModelProperty(value = "创建时间", position = 1)
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date createTime;
 
     /**

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

@@ -83,4 +83,19 @@ public class MoneyWriteOverdue implements Serializable {
     private String orgId;
 
 
+    @ApiModelProperty(value = "币种", position = 8)
+    private String bz;
+    @ApiModelProperty(value = "原币金额", position = 8)
+    private String ybje;
+    @ApiModelProperty(value = "折人民币金额", position = 8)
+    private String rmbje;
+
+    @ApiModelProperty(value = "销售日期", position = 8)
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date xsrq;
+    @ApiModelProperty(value = "收款期限", position = 8)
+    private String skqx;
+    @ApiModelProperty(value = "逾期天数", position = 8)
+    private String yqts;
+
 }

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

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

+ 22 - 1
huimv-farm/src/main/java/vip/xiaonuo/money/param/DsBusAllParam.java

@@ -16,6 +16,12 @@ public class DsBusAllParam {
     private String businessIncomeOnYear;
     @ApiModelProperty(value = "营业收入增加或者减少", position = 2)
     private boolean businessIncomeIsOn;
+     @ApiModelProperty(value = "营业收入(本年累计)", position = 2)
+    private String businessIncomeYear;
+    @ApiModelProperty(value = "营业收入环比/同比(本年累计)", position = 2)
+    private String yearBusinessIncomeOnYear;
+    @ApiModelProperty(value = "营业收入增加或者减少(本年累计)", position = 2)
+    private boolean yearBusinessIncomeIsOn;
 
     /**
      * 营业成本
@@ -36,6 +42,12 @@ public class DsBusAllParam {
     private boolean profitIsOn;
     @ApiModelProperty(value = "净利润增加或者减少", position = 2)
     private String profitOnYear;
+    @ApiModelProperty(value = "净利润(本年累计)", position = 2)
+    private String profitYear;
+    @ApiModelProperty(value = "净利润环比/同比(本年累计)", position = 2)
+    private boolean yearProfitIsOn;
+    @ApiModelProperty(value = "净利润增加或者减少(本年累计)", position = 2)
+    private String yearProfitOnYear;
 
     /**
      * 已交税金
@@ -46,7 +58,12 @@ public class DsBusAllParam {
     private boolean taxesIsOn;
     @ApiModelProperty(value = "已交税金增加或者减少", position = 2)
     private String taxesOnYear;
-
+    @ApiModelProperty(value = "已交税金(本年累计)", position = 5)
+    private String taxesYear;
+    @ApiModelProperty(value = "已交税金环比/同比(本年累计)", position = 2)
+    private boolean yearTaxesIsOn;
+    @ApiModelProperty(value = "已交税金增加或者减少(本年累计)", position = 2)
+    private String yearTaxesOnYear;
     /**
      * 当前资金余额
      */
@@ -56,6 +73,8 @@ public class DsBusAllParam {
     private boolean balanceIsOn;
     @ApiModelProperty(value = "当前资金余额增加或者减少", position = 2)
     private String balanceOnYear;
+    @ApiModelProperty(value = "当前资金余额(本年累计)", position = 6)
+    private String balanceYear;
 
     @ApiModelProperty(value = "银行借款金额", position = 6)
     private String borrowPrice;
@@ -65,6 +84,8 @@ public class DsBusAllParam {
     private boolean borrowPriceIsOn;
     @ApiModelProperty(value = "银行借款金额增加或者减少", position = 2)
     private String borrowPriceOnYear;
+    @ApiModelProperty(value = "银行借款金额(本年累计)", position = 6)
+    private String borrowPriceYear;
 
     @ApiModelProperty(value = "应收金额", position = 6)
     private String invoiceMoney;

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

@@ -73,5 +73,19 @@ public class MoneyWriteOverdueAddParam  {
     @ApiModelProperty(value = "组织id", position = 8)
     private String orgId;
 
+    @ApiModelProperty(value = "币种", position = 8)
+    private String bz;
+    @ApiModelProperty(value = "原币金额", position = 8)
+    private String ybje;
+    @ApiModelProperty(value = "折人民币金额", position = 8)
+    private String rmbje;
+    @ApiModelProperty(value = "销售日期", position = 8)
+    private Date xsrq;
+    @ApiModelProperty(value = "收款期限", position = 8)
+    private String skqx;
+    @ApiModelProperty(value = "逾期天数", position = 8)
+    private String yqts;
+
+
 
 }

+ 31 - 3
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyBusinessServiceImpl.java

@@ -64,7 +64,7 @@ public class MoneyBusinessServiceImpl extends ServiceImpl<MoneyBusinessMapper, M
         } else {
             String year = time.substring(0, 4);
             queryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
-            queryWrapper1.between("create_time", year + "-01-01 00:00:00", time + "-31 23:59:59");
+            queryWrapper1.between("create_time", year + "-01-01 00:00:00", year + "-12-31 23:59:59");
         }
         MoneyBusiness moneyBusiness = new MoneyBusiness();
         queryWrapper.select(" IFNULL(sum(business_income),'0') business_income," +
@@ -164,18 +164,31 @@ public class MoneyBusinessServiceImpl extends ServiceImpl<MoneyBusinessMapper, M
         if (StringUtils.isBlank(time)){
             date = DateUtil.beginOfMonth(new Date());
         }else {
-
             date = DateUtil.beginOfMonth(   DateUtil.parse(time,"yyyy-MM"));
         }
+
+        DateTime lastYear = DateUtil.offsetMonth(date, -12);
         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("create_time", DateUtil.offsetMonth(date,-12), DateUtil.endOfMonth(DateUtil.offsetMonth(date,-12)));
+                .between("create_time", lastYear, DateUtil.endOfMonth(lastYear));
         DsBusAllParam lastBusAllParam =  businessMapper.dsBusAll(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("create_time", DateUtil.beginOfYear(lastYear), DateUtil.endOfYear(lastYear));
+        DsBusAllParam lastYearBusAllParam =  businessMapper.dsBusAll(wapper);
+
         //计算同比
         busAllParam.setBalanceIsOn(getDouble(lastBusAllParam.getBalance()) <getDouble(busAllParam.getBalance()));
         busAllParam.setProfitIsOn(getDouble(lastBusAllParam.getProfit()) <getDouble(busAllParam.getProfit()));
@@ -189,6 +202,21 @@ public class MoneyBusinessServiceImpl extends ServiceImpl<MoneyBusinessMapper, M
         busAllParam.setBusinessIncomeOnYear(calculateYOYChange(getDouble(busAllParam.getBusinessIncome()),getDouble(lastBusAllParam.getBusinessIncome())));
         busAllParam.setBorrowPriceOnYear(calculateYOYChange(getDouble(busAllParam.getBorrowPrice()),getDouble(lastBusAllParam.getBorrowPrice())));
 
+        //本年
+        busAllParam.setBalanceYear(yearBusAllParam.getBalance());
+        busAllParam.setProfitYear(yearBusAllParam.getProfit());
+        busAllParam.setTaxesYear(yearBusAllParam.getTaxes());
+        busAllParam.setBorrowPriceYear(yearBusAllParam.getBorrowPrice());
+        busAllParam.setBusinessIncomeYear(yearBusAllParam.getBusinessIncome());
+
+        //年同比
+        busAllParam.setYearBusinessIncomeIsOn(getDouble(lastYearBusAllParam.getBusinessIncome()) <getDouble(yearBusAllParam.getBusinessIncome()));
+        busAllParam.setYearProfitIsOn(getDouble(lastYearBusAllParam.getProfit()) <getDouble(yearBusAllParam.getProfit()));
+        busAllParam.setYearTaxesIsOn(getDouble(lastYearBusAllParam.getTaxes()) <getDouble(yearBusAllParam.getTaxes()));
+
+        busAllParam.setYearBusinessIncomeOnYear(calculateYOYChange(getDouble(yearBusAllParam.getBusinessIncome()),getDouble(lastYearBusAllParam.getBusinessIncome())));
+        busAllParam.setYearProfitOnYear(calculateYOYChange(getDouble(yearBusAllParam.getProfit()),getDouble(lastYearBusAllParam.getProfit())));
+        busAllParam.setYearTaxesOnYear(calculateYOYChange(getDouble(yearBusAllParam.getTaxes()),getDouble(lastYearBusAllParam.getTaxes())));
 
         return busAllParam;
     }

+ 5 - 3
huimv-farm/src/main/java/vip/xiaonuo/money/service/impl/MoneyProduceServiceImpl.java

@@ -307,7 +307,8 @@ public class MoneyProduceServiceImpl extends ServiceImpl<MoneyProduceMapper, Mon
         produce0422.setCreateTime(DateUtil.parse(addParam.getCreateTime()));
         produce0422.setMaterialName(materialName);
         produce0422.setMaterialType(materType);
-        produce0422.setMaterialAmount("-"+addParam.getMaterialAmount());
+//        produce0422.setMaterialAmount("-"+addParam.getMaterialAmount());
+        produce0422.setMaterialAmount(String.format("%.2f", Double.parseDouble(  addParam.getMaterialAmount()) * -1.0));
         produce0422.setWriteMoney(addParam.getMaterialAmount());
         produce0422.setOrgName(addParam.getOrgName());
         produce0422.setCustomerName(addParam.getCustomerName());
@@ -325,7 +326,8 @@ public class MoneyProduceServiceImpl extends ServiceImpl<MoneyProduceMapper, Mon
         produce0422.setCreateTime(DateUtil.parse(editParam.getCreateTime()));
         produce0422.setMaterialName(materialName);
         produce0422.setMaterialType(materType);
-        produce0422.setMaterialAmount("-"+editParam.getMaterialAmount());
+//        produce0422.setMaterialAmount("-"+editParam.getMaterialAmount());
+        produce0422.setMaterialAmount(String.format("%.2f", Double.parseDouble(  editParam.getMaterialAmount()) * -1.0));
         produce0422.setWriteMoney(editParam.getMaterialAmount());
         produce0422.setOrgName(editParam.getOrgName());
         produce0422.setCustomerName(editParam.getCustomerName());
@@ -348,7 +350,7 @@ public class MoneyProduceServiceImpl extends ServiceImpl<MoneyProduceMapper, Mon
         Integer pageNum = inOutPageParam.getPageNum();
         Integer pageSize = inOutPageParam.getPageSize();
         QueryWrapper<MoneyProduce0422> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).isNotNull("write_money");
         Page<MoneyProduce0422> page = new Page(pageNum, pageSize);
         return produce0422Mapper.selectPage(page, queryWrapper);
     }

+ 26 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/entity/vo/ProductionWorkPlanTargetVo.java

@@ -10,37 +10,63 @@ public class ProductionWorkPlanTargetVo {
 
     @ApiModelProperty(value = "饲料级VD3产量",position = 1)
     private String complete;
+    @ApiModelProperty(value = "饲料级VD3产量",position = 1)
+    private String completeYear;
 
     @ApiModelProperty(value = "饲料级VD3产量同比",position = 2)
     private String completeRate;
+    @ApiModelProperty(value = "饲料级VD3产量同比",position = 2)
+    private String yearCompleteRate;
+
 
     @ApiModelProperty(value = "VD3结晶产量",position = 3)
     private String visitNum;
+    @ApiModelProperty(value = "VD3结晶产量",position = 3)
+    private String visitNumYear;
 
     @ApiModelProperty(value = "VD3结晶产量同比",position = 4)
     private String visitNumRate;
+    @ApiModelProperty(value = "VD3结晶产量同比",position = 4)
+    private String yearVisitNumRate;
 
     @ApiModelProperty(value = "胆固醇产量", position = 5)
     private String saleMoney;
+    @ApiModelProperty(value = "胆固醇产量", position = 5)
+    private String saleMoneyYear;
+
 
     @ApiModelProperty(value = "胆固醇产量同比", position = 6)
     private String saleMoneyRate;
+    @ApiModelProperty(value = "胆固醇产量同比", position = 6)
+    private String yearSaleMoneyRate;
 
     @ApiModelProperty(value = "25羟基D3原产量", position = 7)
     private String saleDeliverMoney;
+    @ApiModelProperty(value = "25羟基D3原产量", position = 7)
+    private String saleDeliverMoneyYear;
 
     @ApiModelProperty(value = "25羟基D3原产量同比", position = 8)
     private String saleDeliverMoneyRate;
+    @ApiModelProperty(value = "25羟基D3原产量同比", position = 8)
+    private String yearSaleDeliverMoneyRate;
 
     @ApiModelProperty(value = "维生素A微粒产量", position = 9)
     private String receiveMoney;
+    @ApiModelProperty(value = "维生素A微粒产量", position = 9)
+    private String receiveMoneyYear;
 
     @ApiModelProperty(value = "维生素A微粒产量同比", position = 10)
     private String receiveMoneyRate;
+    @ApiModelProperty(value = "维生素A微粒产量同比", position = 10)
+    private String yearReceiveMoneyRate;
 
     @ApiModelProperty(value = "能耗费用", position = 11)
     private String energyMoney;
+    @ApiModelProperty(value = "能耗费用", position = 11)
+    private String energyMoneyYear;
 
     @ApiModelProperty(value = "能耗费用同比", position = 12)
     private String energyMoneyRate;
+    @ApiModelProperty(value = "能耗费用同比", position = 12)
+    private String yearEnergyMoneyRate;
 }

+ 38 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProductionWorkstopPlanServiceImpl.java

@@ -203,9 +203,47 @@ public class ProductionWorkstopPlanServiceImpl extends ServiceImpl<ProductionWor
         }
         vo.setEnergyMoney("0");
         vo.setEnergyMoneyRate("0");
+
+        ProductionPlanVo2 vdYear = planMapper.getTarget(year + "-01-01 00:00:00", year + "-12-31 23:59:59",
+                last + "-01-01 00:00:00", last + "-12-31 23:59:59", orgId, "饲料级VD3");
+        ProductionPlanVo2 vd2Year = planMapper.getTarget(year + "-01-01 00:00:00", year + "-12-31 23:59:59",
+                last + "-01-01 00:00:00", last + "-12-31 23:59:59", orgId, "VD3结晶");
+        ProductionPlanVo2 vd3Year = 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, "胆固醇");
+        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微粒");
+        vo.setCompleteYear(vdYear.getMonthValue());
+        vo.setVisitNumYear(vd2Year.getMonthValue());
+        vo.setSaleMoneyYear(vd3Year.getMonthValue());
+        vo.setSaleDeliverMoneyYear(vd4Year.getMonthValue());
+        vo.setReceiveMoneyYear(vd5Year.getMonthValue());
+        vo.setEnergyMoneyYear("0");
+
+        vo.setYearCompleteRate( calculateYOYChange(Double.parseDouble(vdYear.getMonthValue()),Double.parseDouble(vdYear.getLastMonthValue())));
+        vo.setYearVisitNumRate( calculateYOYChange(Double.parseDouble(vd2Year.getMonthValue()),Double.parseDouble(vd2Year.getLastMonthValue())));
+        vo.setYearSaleMoneyRate(calculateYOYChange(Double.parseDouble(vd3Year.getMonthValue()),Double.parseDouble(vd3Year.getLastMonthValue())));
+        vo.setYearSaleDeliverMoneyRate(calculateYOYChange(Double.parseDouble(vd4Year.getMonthValue()),Double.parseDouble(vd4Year.getLastMonthValue())));
+        vo.setYearReceiveMoneyRate(calculateYOYChange(Double.parseDouble(vd5Year.getMonthValue()),Double.parseDouble(vd5Year.getLastMonthValue())));
+        vo.setYearEnergyMoneyRate("0");
+
         return vo;
     }
 
+    public  String calculateYOYChange(double currentValue, double previousValue) {
+        // 处理零值情况
+        if (previousValue == 0) {
+            return "0";
+        }
+        // 计算同比变化率
+        double percentageChange = ((currentValue - previousValue) / previousValue) * 100;
+        if (percentageChange >500){
+            return "100";
+        }
+        return String.format("%.2f", percentageChange);
+    }
+
     @Override
     public List<ProductionPlanDetailVo> getDetail(ProductionDetailParam detailParam) {
         String orgId = detailParam.getOrgId();

+ 18 - 0
huimv-farm/src/main/java/vip/xiaonuo/purchase/param/PurchaseAllParam.java

@@ -8,30 +8,48 @@ import lombok.Data;
 public class PurchaseAllParam {
     @ApiModelProperty(value = "采购金额", position = 2)
     private String caiGouMoney;
+    @ApiModelProperty(value = "采购金额(本年累计)", position = 2)
+    private String caiGouMoneyYear;
     @ApiModelProperty(value = "采购金额环比/同比", position = 2)
     private String caiGouMoneyOnYear;
     @ApiModelProperty(value = "采购金额增加或者减少", position = 2)
     private boolean caiGouMoneyIsOn;
+    @ApiModelProperty(value = "采购金额环比/同比(本年累计)", position = 2)
+    private String yearCaiGouMoneyOnYear;
+    @ApiModelProperty(value = "采购金额增加或者减少(本年累计)", position = 2)
+    private boolean yearCaiGouMoneyIsOn;
 
     /**
      * 营业成本
      */
     @ApiModelProperty(value = "主要原材料采购金额", position = 3)
     private String zhuYaoMoney;
+    @ApiModelProperty(value = "主要原材料采购金额(本年累计)", position = 3)
+    private String zhuYaoMoneyYear;
     @ApiModelProperty(value = "主要原材料环比/同比", position = 2)
     private boolean zhuYaoMoneyIsOn;
     @ApiModelProperty(value = "主要原材料增加或者减少", position = 2)
     private String zhuYaoMoneyOnYear;
+    @ApiModelProperty(value = "主要原材料环比/同比(本年累计)", position = 2)
+    private boolean yearZhuYaoMoneyIsOn;
+    @ApiModelProperty(value = "主要原材料增加或者减少(本年累计)", position = 2)
+    private String yearZhuYaoMoneyOnYear;
 
     /**
      * 净利润
      */
     @ApiModelProperty(value = "主要原材料采购数量", position = 4)
     private String zhuYaoNum;
+    @ApiModelProperty(value = "主要原材料采购数量(本年累计)", position = 4)
+    private String zhuYaoNumYear;
     @ApiModelProperty(value = "主要原材料采购数量环比/同比", position = 2)
     private boolean zhuYaoNumIsOn;
     @ApiModelProperty(value = "主要原材料采购数量增加或者减少", position = 2)
     private String zhuYaoNumOnYear;
+    @ApiModelProperty(value = "主要原材料采购数量环比/同比(本年累计)", position = 2)
+    private boolean yearZhuYaoNumIsOn;
+    @ApiModelProperty(value = "主要原材料采购数量增加或者减少(本年累计)", position = 2)
+    private String yearZhuYaoNumOnYear;
 
     /**
      * 已交税金

+ 30 - 5
huimv-farm/src/main/java/vip/xiaonuo/purchase/service/impl/PurchaseOrderServiceImpl.java

@@ -379,19 +379,32 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
         if (StringUtils.isBlank(time)){
             date = DateUtil.beginOfMonth(new Date());
         }else {
-
             date = DateUtil.beginOfMonth(   DateUtil.parse(time,"yyyy-MM"));
         }
+        DateTime lastYear = DateUtil.offsetMonth(date, -12);
+
 
-    QueryWrapper<PurchaseOrder> wapper = new QueryWrapper<PurchaseOrder>();
+        QueryWrapper<PurchaseOrder> wapper = new QueryWrapper<PurchaseOrder>();
         wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId).between("create_time", date, DateUtil.endOfMonth(date));
         PurchaseAllParam purchaseAllParam =  purchaseOrderMapper.purchaseAll(wapper);
         wapper.clear();
         wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId)
-            .between("create_time", DateUtil.offsetMonth(date,-12), DateUtil.endOfMonth(DateUtil.offsetMonth(date,-12)));
+            .between("create_time", lastYear, DateUtil.endOfMonth(lastYear));
         PurchaseAllParam lasthaseAllParam =  purchaseOrderMapper.purchaseAll(wapper);
-//
-//    //计算同比
+
+        //年统计
+        wapper.clear();
+        wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId)
+                .between("create_time", DateUtil.beginOfYear(date), DateUtil.endOfYear(date));
+        PurchaseAllParam yaerHaseAllParam3 =  purchaseOrderMapper.purchaseAll(wapper);
+
+        //年统计
+        wapper.clear();
+        wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId)
+                .between("create_time", DateUtil.beginOfYear(lastYear), DateUtil.endOfYear(lastYear));
+        PurchaseAllParam lastYearhaseAllParam=  purchaseOrderMapper.purchaseAll(wapper);
+
+    //计算同比
         purchaseAllParam.setCaiGouMoneyIsOn(getDouble(lasthaseAllParam.getCaiGouMoney()) <getDouble(purchaseAllParam.getCaiGouMoney()));
         purchaseAllParam.setKuCunMoneyIsOn(getDouble(lasthaseAllParam.getKuCunMoney()) <getDouble(purchaseAllParam.getKuCunMoney()));
         purchaseAllParam.setZhuYaoMoneyIsOn(getDouble(lasthaseAllParam.getZhuYaoMoney()) <getDouble(purchaseAllParam.getZhuYaoMoney()));
@@ -408,6 +421,18 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
         purchaseAllParam.setZhuYaoYuanCaiLiaoMoneyOnYear(calculateYOYChange(getDouble(purchaseAllParam.getZhuYaoYuanCaiLiaoMoney()),getDouble(lasthaseAllParam.getZhuYaoYuanCaiLiaoMoney())));
         purchaseAllParam.setZhuYaoYuanCaiLiaoNumOnYear(calculateYOYChange(getDouble(purchaseAllParam.getZhuYaoYuanCaiLiaoNum()),getDouble(lasthaseAllParam.getZhuYaoYuanCaiLiaoNum())));
 
+        purchaseAllParam.setCaiGouMoneyYear(yaerHaseAllParam3.getCaiGouMoney());
+        purchaseAllParam.setZhuYaoMoneyYear(yaerHaseAllParam3.getZhuYaoMoney());
+        purchaseAllParam.setZhuYaoNumYear(yaerHaseAllParam3.getZhuYaoNum());
+        //计算同比
+        purchaseAllParam.setYearCaiGouMoneyIsOn(getDouble(lastYearhaseAllParam.getCaiGouMoney()) <getDouble(yaerHaseAllParam3.getCaiGouMoney()));
+        purchaseAllParam.setYearZhuYaoMoneyIsOn(getDouble(lastYearhaseAllParam.getZhuYaoMoney()) <getDouble(yaerHaseAllParam3.getZhuYaoMoney()));
+        purchaseAllParam.setYearZhuYaoNumIsOn(getDouble(lastYearhaseAllParam.getZhuYaoNum()) <getDouble(yaerHaseAllParam3.getZhuYaoNum()));
+
+        purchaseAllParam.setYearCaiGouMoneyOnYear(calculateYOYChange(getDouble(yaerHaseAllParam3.getCaiGouMoney()),getDouble(lastYearhaseAllParam.getCaiGouMoney())));
+        purchaseAllParam.setYearZhuYaoMoneyOnYear(calculateYOYChange(getDouble(yaerHaseAllParam3.getZhuYaoMoney()),getDouble(lastYearhaseAllParam.getZhuYaoMoney())));
+        purchaseAllParam.setYearZhuYaoNumOnYear(calculateYOYChange(getDouble(yaerHaseAllParam3.getZhuYaoNum()),getDouble(lastYearhaseAllParam.getZhuYaoNum())));
+
 
         return purchaseAllParam;
     }

+ 17 - 0
huimv-farm/src/main/java/vip/xiaonuo/sale/entity/vo/SaleTargetVo.java

@@ -11,27 +11,44 @@ public class SaleTargetVo {
 
     @ApiModelProperty(value = "销售计划完成率",position = 1)
     private String complete;
+    @ApiModelProperty(value = "销售计划完成率本年",position = 1)
+    private String completeYear;
+
 
     @ApiModelProperty(value = "销售计划完成率同比",position = 2)
     private String completeRate;
+    @ApiModelProperty(value = "销售计划完成率同比",position = 2)
+    private String yearCompleteRate;
 
     @ApiModelProperty(value = "客户拜访次数",position = 3)
     private String visitNum;
+    @ApiModelProperty(value = "拜访次数本年",position = 1)
+    private String visitNumYear;
 
     @ApiModelProperty(value = "客户拜访次数同比",position = 4)
     private String visitNumRate;
+    @ApiModelProperty(value = "客户拜访次数同比",position = 4)
+    private String yearVisitNumRate;
 
     @ApiModelProperty(value = "销售合同金额", position = 5)
     private String saleMoney;
+    @ApiModelProperty(value = "销售合同金额本年",position = 1)
+    private String saleMoneyYear;
 
     @ApiModelProperty(value = "销售合同金额同比", position = 6)
     private String saleMoneyRate;
+    @ApiModelProperty(value = "销售合同金额同比", position = 6)
+    private String yearSaleMoneyRate;
 
     @ApiModelProperty(value = "销售发货金额", position = 7)
     private String saleDeliverMoney;
+    @ApiModelProperty(value = "销售发货金额本年",position = 1)
+    private String saleDeliverMoneyYear;
 
     @ApiModelProperty(value = "销售发货金额同比", position = 8)
     private String saleDeliverMoneyRate;
+    @ApiModelProperty(value = "销售发货金额同比", position = 8)
+    private String yearSaleDeliverMoneyRate;
 
     @ApiModelProperty(value = "销售应收款", position = 9)
     private String receiveMoney;

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

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springframework.beans.factory.annotation.Autowired;
+import vip.xiaonuo.money.entity.MoneyWriteOverdue;
+import vip.xiaonuo.money.mapper.MoneyWriteOverdueMapper;
 import vip.xiaonuo.production.entity.ProductionWorkstopPlan;
 import vip.xiaonuo.sale.entity.*;
 import vip.xiaonuo.sale.entity.vo.SaleTargetDetailVo;
@@ -51,6 +53,8 @@ public class SaleTargetServiceImpl extends ServiceImpl<SaleTargetMapper, SaleTar
     private SaleReceiveMapper receiveMapper;
     @Autowired
     private SaleDetailMapper saleDetailMapper;
+    @Autowired
+    private MoneyWriteOverdueMapper writeOverdueMapper;
 
     @Override
     public JSONArray getTarget(SaleParam saleParam) {
@@ -167,12 +171,27 @@ public class SaleTargetServiceImpl extends ServiceImpl<SaleTargetMapper, SaleTar
         queryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
         queryWrapper.select(" IFNULL(sum(visit_number),'0') visitNumber");
         SaleTarget monthTarget = targetMapper.selectOne(queryWrapper);
+
+        queryWrapper.clear();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        queryWrapper.between("create_time", year + "-01-01 00:00:00", year + "-12-31 23:59:59");
+        queryWrapper.select(" IFNULL(sum(visit_number),'0') visitNumber");
+        SaleTarget yearTarget = targetMapper.selectOne(queryWrapper);
+
+        queryWrapper.clear();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        queryWrapper.between("create_time", lastYear + "-01-01 00:00:00", lastYear + "-12-31 23:59:59");
+        queryWrapper.select(" IFNULL(sum(visit_number),'0') visitNumber");
+        SaleTarget lastYearTarget = targetMapper.selectOne(queryWrapper);
+        vo.setYearVisitNumRate(calculateYOYChange(Double.parseDouble(yearTarget.getVisitNumber()),Double.parseDouble(lastYearTarget.getVisitNumber())));
+
         queryWrapper.clear();
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         queryWrapper.between("create_time", lastYear+"-"+month + "-01 00:00:00", lastYear+"-"+month +  "-31 23:59:59");
         queryWrapper.select(" IFNULL(sum(visit_number),'0') visitNumber");
         SaleTarget lastMonthTarget = targetMapper.selectOne(queryWrapper);
 
+
         //销售合同金额
         QueryWrapper<SaleOrder> orderQueryWrapper = new QueryWrapper<>();
         orderQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
@@ -185,6 +204,19 @@ public class SaleTargetServiceImpl extends ServiceImpl<SaleTargetMapper, SaleTar
         orderQueryWrapper.select(" IFNULL(sum(sale_money),'0') saleMoney");
         SaleOrder yearOrder = orderMapper.selectOne(orderQueryWrapper);
 
+
+        orderQueryWrapper.clear();
+        orderQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        orderQueryWrapper.between("create_time", year+"-01-01 00:00:00", year+ "-12-31 23:59:59");
+        orderQueryWrapper.select(" IFNULL(sum(sale_money),'0') saleMoney");
+        SaleOrder orderYear = orderMapper.selectOne(orderQueryWrapper);
+        orderQueryWrapper.clear();
+        orderQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        orderQueryWrapper.between("create_time", lastYear+"-01-01 00:00:00", lastYear+ "-12-31 23:59:59");
+        orderQueryWrapper.select(" IFNULL(sum(sale_money),'0') saleMoney");
+        SaleOrder lastOrderYear = orderMapper.selectOne(orderQueryWrapper);
+        vo.setYearSaleMoneyRate(calculateYOYChange(Double.parseDouble(yearOrder.getSaleMoney()),Double.parseDouble(lastOrderYear.getSaleMoney())));
+
         //销售发货金额
         QueryWrapper<SaleDeliver> deliverQueryWrapper = new QueryWrapper<>();
         deliverQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
@@ -197,17 +229,32 @@ public class SaleTargetServiceImpl extends ServiceImpl<SaleTargetMapper, SaleTar
         deliverQueryWrapper.select(" IFNULL(sum(sale_deliver_money),'0') saleDeliverMoney");
         SaleDeliver yearDeliver = deliverMapper.selectOne(deliverQueryWrapper);
 
-        //预期应收款金额
-        QueryWrapper<SaleReceive> saleReceiveQueryWrapper = new QueryWrapper<>();
+        deliverQueryWrapper.clear();
+        deliverQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        deliverQueryWrapper.between("create_time", year+"-01-01 00:00:00", year+"-12-31 23:59:59");
+        deliverQueryWrapper.select(" IFNULL(sum(sale_deliver_money),'0') saleDeliverMoney");
+        SaleDeliver deliverYear = deliverMapper.selectOne(deliverQueryWrapper);
+
+        deliverQueryWrapper.clear();
+        deliverQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        deliverQueryWrapper.between("create_time", lastYear+"-01-01 00:00:00", lastYear+"-12-31 23:59:59");
+        deliverQueryWrapper.select(" IFNULL(sum(sale_deliver_money),'0') saleDeliverMoney");
+        SaleDeliver lastDeliverYear = deliverMapper.selectOne(deliverQueryWrapper);
+
+        vo.setYearSaleDeliverMoneyRate(calculateYOYChange(Double.parseDouble(yearDeliver.getSaleDeliverMoney()),Double.parseDouble(lastDeliverYear.getSaleDeliverMoney())));
+
+
+        //逾期应收款金额
+        QueryWrapper<MoneyWriteOverdue> saleReceiveQueryWrapper = new QueryWrapper<>();
         saleReceiveQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        saleReceiveQueryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
-        saleReceiveQueryWrapper.select(" IFNULL(sum(receive_money),'0') receiveMoney");
-        SaleReceive monthReceive = receiveMapper.selectOne(saleReceiveQueryWrapper);
+        saleReceiveQueryWrapper.between("end_time", time + "-01 00:00:00", time + "-31 23:59:59");
+        saleReceiveQueryWrapper.select(" IFNULL(sum(rmbje),'0') rmbje");
+        MoneyWriteOverdue monthReceive = writeOverdueMapper.selectOne(saleReceiveQueryWrapper);
         saleReceiveQueryWrapper.clear();
         saleReceiveQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        saleReceiveQueryWrapper.between("create_time", lastYear+"-"+month + "-01 00:00:00", lastYear+"-"+month + "-31 23:59:59");
-        saleReceiveQueryWrapper.select(" IFNULL(sum(receive_money),'0') receiveMoney");
-        SaleReceive yearReceive = receiveMapper.selectOne(saleReceiveQueryWrapper);
+        saleReceiveQueryWrapper.between("end_time", lastYear+"-"+month + "-01 00:00:00", lastYear+"-"+month + "-31 23:59:59");
+        saleReceiveQueryWrapper.select(" IFNULL(sum(rmbje),'0') rmbje");
+        MoneyWriteOverdue yearReceive = writeOverdueMapper.selectOne(saleReceiveQueryWrapper);
 
         DecimalFormat def = new DecimalFormat("0.00");
         BigDecimal math = new BigDecimal("10000");
@@ -223,20 +270,21 @@ public class SaleTargetServiceImpl extends ServiceImpl<SaleTargetMapper, SaleTar
             }
         }
         vo.setVisitNum(monthTarget.getVisitNumber());
-        vo.setComplete("0");
-        vo.setCompleteRate("0");
+        vo.setVisitNumYear(yearTarget.getVisitNumber());
+        vo.setComplete("100");
+        vo.setCompleteRate("100");
+        vo.setYearCompleteRate("100");
+        vo.setCompleteYear("100");
         if (yearOrder.getSaleMoney().equals("0")) {
             vo.setSaleMoneyRate("0");
         } else {
             double v = (Double.valueOf(monthOrder.getSaleMoney()) - Double.valueOf(yearOrder.getSaleMoney()))/Double.valueOf(yearOrder.getSaleMoney());
-            if (v >= 1.0) {
-                vo.setSaleMoneyRate("100");
-            } else {
-                vo.setSaleMoneyRate(def.format(v * 100));
-            }
+            vo.setSaleMoneyRate(def.format(v * 100));
         }
         BigDecimal bg = new BigDecimal(monthOrder.getSaleMoney());
+        BigDecimal bg1 = new BigDecimal(orderYear.getSaleMoney());
         vo.setSaleMoney(bg.divide(math, 2, RoundingMode.HALF_UP).toString());
+        vo.setSaleMoneyYear(bg1.divide(math, 2, RoundingMode.HALF_UP).toString());
 
         if (yearDeliver.getSaleDeliverMoney().equals("0")) {
             vo.setSaleDeliverMoneyRate("0");
@@ -251,22 +299,40 @@ public class SaleTargetServiceImpl extends ServiceImpl<SaleTargetMapper, SaleTar
         BigDecimal bg2 = new BigDecimal(monthDeliver.getSaleDeliverMoney());
         vo.setSaleDeliverMoney(bg2.divide(math, 2, RoundingMode.HALF_UP).toString());
 
-        if (yearReceive.getReceiveMoney().equals("0")) {
+        BigDecimal bg4 = new BigDecimal(deliverYear.getSaleDeliverMoney());
+        vo.setSaleDeliverMoneyYear(bg4.divide(math, 2, RoundingMode.HALF_UP).toString());
+
+        if (yearReceive.getRmbje().equals("0")) {
             vo.setReceiveMoneyRate("0");
         } else {
-            double v = (Double.valueOf(monthReceive.getReceiveMoney()) - Double.valueOf(yearReceive.getReceiveMoney()))/Double.valueOf(yearReceive.getReceiveMoney());
+            double v = (Double.valueOf(monthReceive.getRmbje()) - Double.valueOf(yearReceive.getRmbje()))/Double.valueOf(yearReceive.getRmbje());
             if (v >= 1.0) {
                 vo.setReceiveMoneyRate("100");
             } else {
                 vo.setReceiveMoneyRate(def.format(v * 100));
             }
         }
-        BigDecimal bg3 = new BigDecimal(monthReceive.getReceiveMoney());
+        BigDecimal bg3 = new BigDecimal(monthReceive.getRmbje());
         vo.setReceiveMoney(bg3.divide(math, 2, RoundingMode.HALF_UP).toString());
 
+
         return vo;
     }
 
+
+    public  String calculateYOYChange(double currentValue, double previousValue) {
+        // 处理零值情况
+        if (previousValue == 0) {
+            return "0";
+        }
+        // 计算同比变化率
+        double percentageChange = ((currentValue - previousValue) / previousValue) * 100;
+        if (percentageChange >500){
+            return "100";
+        }
+        return String.format("%.2f", percentageChange);
+    }
+
     @Override
     public List<SaleTargetDetailVo> getCompleteDetail(SaleParam saleParam) {
         Integer type = saleParam.getType();

+ 7 - 2
huimv-farm/src/main/resources/mapper/HrBaseEmployeeInfoMapper.xml

@@ -122,9 +122,14 @@
         USER_TYPE = 0
     </select>
     <select id="zhiBiao" resultType="vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.DongShiCountNum">
-              SELECT MAX(HR_NUM) jobNum ,
+              SELECT IFNULL(MAX(HR_NUM),0) jobNum ,
               ROUND(IFNULL(SUM(PAY), 0)/10000 , 2)   pay  ,
-              ROUND(IFNULL(AVG(OUTPUT_VALUE), 0)/10000 , 2)  outputValue FROM `hr_count`   ${ew.customSqlSegment}
+              ROUND(IFNULL(AVG(OUTPUT_VALUE), 0)/10000 , 2)  outputValue,
+
+              ROUND(IFNULL(AVG(HR_NUM), 0) )  jobNumAvg ,
+              ROUND(IFNULL(AVG(PAY), 0)/10000 , 2)   payAvg  ,
+              ROUND(IFNULL(AVG(OUTPUT_VALUE), 0)/10000 , 2) outputValueAvg
+               FROM `hr_count`   ${ew.customSqlSegment}
 
     </select>
     <select id="yuanGongNumMonth" resultType="vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.DongShiCountNum">

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

@@ -2,4 +2,9 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="vip.xiaonuo.hr.modular.write.mapper.HrPeopleWriteMapper">
 
+    <select id="zhiBiao" resultType="vip.xiaonuo.hr.modular.write.entity.HrPeopleWrite">
+
+SELECT IFNULL(SUM(people_number)  ,0)peopleNumber FROM `hr_people_write`
+${ew.customSqlSegment}
+    </select>
 </mapper>

+ 4 - 0
huimv-farm/src/main/resources/mapper/MoneyBusinessMapper.xml

@@ -93,5 +93,9 @@ FROM
          ${ew.customSqlSegment}
 
     </select>
+    <select id="zhiBiao" resultType="vip.xiaonuo.money.entity.MoneyBusiness">
+        SELECT ROUND(IFNULL(SUM(people_money),0),2)  peopleMoney ,ROUND(IFNULL(SUM(output_value),0),2)   outputValue  FROM `money_business`
+${ew.customSqlSegment}
+    </select>
 
 </mapper>