523096025 2 månader sedan
förälder
incheckning
ee70bcfaf6

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

@@ -4,7 +4,7 @@ spring:
   application:
     name: huimv-getdata
   datasource:
-    url: jdbc:sqlserver://192.168.1.15:1433;DatabaseName=AIS20211202120009
+    url: jdbc:sqlserver://115.238.57.190:1433;DatabaseName=AIS20211202120009
     username: sa
     password: Hy@2024!
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver

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

@@ -17,6 +17,7 @@ import vip.xiaonuo.production.entity.ProductionReceive;
 import vip.xiaonuo.production.entity.ProductionTarget;
 import vip.xiaonuo.production.param.ProductionParam;
 import vip.xiaonuo.production.param.ProductionReceiveParam;
+import vip.xiaonuo.production.param.TargetListDetailVo;
 import vip.xiaonuo.production.service.IProductionTargetService;
 
 import java.util.List;
@@ -46,4 +47,24 @@ public class ProductionTargetController {
     public CommonResult<ProductionTarget> getList(@RequestBody ProductionParam productionParam) {
         return CommonResult.data(targetService.getTarget(productionParam));
     }
+
+    @PostMapping("/production-target/getListJiHuaShengChanDetail")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("生产管控指卡实际,计划产量详细")
+    public CommonResult<List<TargetListDetailVo>> getListDetail(@RequestBody ProductionParam productionParam) {
+        return CommonResult.data(targetService.getListDetail(productionParam));
+    }
+
+    @PostMapping("/production-target/getListShouLvDetail")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("生产管控指收率详细")
+    public CommonResult<List<TargetListDetailVo>> getListShouLvChengDetail(@RequestBody ProductionParam productionParam) {
+        return CommonResult.data(targetService.getListShouLvChengDetail(productionParam));
+    }
+    @PostMapping("/production-target/getListNengHaoDetail")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("生产管控指能耗详细")
+    public CommonResult<List<TargetListDetailVo>> getListNengHaoDetail(@RequestBody ProductionParam productionParam) {
+        return CommonResult.data(targetService.getListNengHaoDetail(productionParam));
+    }
 }

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

@@ -1,7 +1,14 @@
 package vip.xiaonuo.production.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.production.entity.ProductionWriteEnergy;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.production.entity.ProductionWritePlan;
+import vip.xiaonuo.production.param.TargetListDetailVos;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +20,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ProductionWriteEnergyMapper extends BaseMapper<ProductionWriteEnergy> {
 
+    List<TargetListDetailVos> getListDetail(@Param(Constants.WRAPPER) QueryWrapper<ProductionWritePlan> wrapper);
 }

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

@@ -1,7 +1,14 @@
 package vip.xiaonuo.production.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.production.entity.ProductionWritePlan;
 import vip.xiaonuo.production.entity.ProductionWriteRate;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.production.param.TargetListDetailVos;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +20,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ProductionWriteRateMapper extends BaseMapper<ProductionWriteRate> {
 
+    List<TargetListDetailVos> productionParam(@Param(Constants.WRAPPER)QueryWrapper<ProductionWritePlan> wrapper);
+
+    List<TargetListDetailVos> getListNengHaoDetail(@Param(Constants.WRAPPER)QueryWrapper<ProductionWritePlan> 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);
 }

+ 12 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/param/TargetListDetailVo.java

@@ -0,0 +1,12 @@
+package vip.xiaonuo.production.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class TargetListDetailVo {
+
+    private String chenJian;
+    private List<TargetListDetailVos> values;
+}

+ 15 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/param/TargetListDetailVos.java

@@ -0,0 +1,15 @@
+package vip.xiaonuo.production.param;
+
+import lombok.Data;
+
+@Data
+public class TargetListDetailVos {
+    //实际产量
+    private String actualProduction;
+    //计划产量
+    private String productionPlan;
+    private String ymonth;
+    private String productionRate;
+    private String eneryValue;
+
+}

+ 9 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/service/IProductionTargetService.java

@@ -3,6 +3,9 @@ package vip.xiaonuo.production.service;
 import vip.xiaonuo.production.entity.ProductionTarget;
 import com.baomidou.mybatisplus.extension.service.IService;
 import vip.xiaonuo.production.param.ProductionParam;
+import vip.xiaonuo.production.param.TargetListDetailVo;
+
+import java.util.List;
 
 /**
  * <p>
@@ -16,4 +19,10 @@ public interface IProductionTargetService extends IService<ProductionTarget> {
 
     ProductionTarget getTarget(ProductionParam productionParam);
 
+    List<TargetListDetailVo> getListDetail(ProductionParam productionParam);
+
+
+    List<TargetListDetailVo> getListShouLvChengDetail(ProductionParam productionParam);
+
+    List<TargetListDetailVo> getListNengHaoDetail(ProductionParam productionParam);
 }

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

@@ -1,21 +1,34 @@
 package vip.xiaonuo.production.service.impl;
 
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import vip.xiaonuo.production.entity.*;
+import vip.xiaonuo.production.entity.vo.ProductionLocationVo;
 import vip.xiaonuo.production.mapper.*;
 import vip.xiaonuo.production.param.ProductionParam;
+import vip.xiaonuo.production.param.ProductionVoParam;
+import vip.xiaonuo.production.param.TargetListDetailVo;
+import vip.xiaonuo.production.param.TargetListDetailVos;
 import vip.xiaonuo.production.service.IProductionTargetService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
+import vip.xiaonuo.production.service.IProductionWorkstopPlanService;
+import vip.xiaonuo.purchase.entity.PurchaseOrder;
+import vip.xiaonuo.purchase.entity.vo.PurchaseOrderVo;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
+import static vip.xiaonuo.money.service.impl.MoneyBusinessServiceImpl.calculateYOYChange;
+
 /**
  * <p>
  * 生产管控指标 服务实现类
@@ -39,7 +52,8 @@ public class ProductionTargetServiceImpl extends ServiceImpl<ProductionTargetMap
     private ProductionEnergyPriceMapper priceMapper;
     @Autowired
     private ProductionWriteEnergyMapper energyMapper;
-
+    @Autowired
+    private IProductionWorkstopPlanService planService;
 
     @Override
     public ProductionTarget getTarget(ProductionParam productionParam) {
@@ -202,4 +216,152 @@ public class ProductionTargetServiceImpl extends ServiceImpl<ProductionTargetMap
         return productionTarget;
     }
 
+    @Override
+    public List<TargetListDetailVo> getListDetail(ProductionParam productionParam) {
+        String orgId = productionParam.getOrgId();
+        ProductionVoParam productionVoParam = new ProductionVoParam();
+        productionVoParam.setOrgId(orgId);
+        List<ProductionLocationVo> productionLocationVos = planService.listLocation(productionVoParam);
+        QueryWrapper<ProductionWritePlan> wrapper = new QueryWrapper<>();
+
+        List<TargetListDetailVo> targetListDetailVos = new ArrayList<>();
+        for (ProductionLocationVo productionLocationVo : productionLocationVos) {
+            wrapper.clear();
+            wrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).orderByAsc("create_time");
+            wrapper.eq("location_id",productionLocationVo.getLocationId());
+            wrapper.groupBy("ymonth").orderByAsc("ymonth");
+
+            TargetListDetailVo targetListDetailVo = new TargetListDetailVo();
+            targetListDetailVo.setChenJian(productionLocationVo.getLocationName());
+            List<TargetListDetailVos> listDetail = energyMapper.getListDetail(wrapper);
+            if (ObjectUtil.isNotEmpty(listDetail)){
+                for (TargetListDetailVos listDetailVos : listDetail) {
+                    if (StringUtils.isBlank(listDetailVos.getActualProduction()) || "0".equals(listDetailVos.getActualProduction())){
+                        listDetailVos.setActualProduction("0%");
+                    }
+                    else if (StringUtils.isBlank(listDetailVos.getProductionPlan()) || "0".equals(listDetailVos.getProductionPlan())){
+                        listDetailVos.setActualProduction("100%");
+                    }else {
+                        listDetailVos.setActualProduction(calculateYOYChange(Double.parseDouble(listDetailVos.getProductionPlan()),Double.parseDouble(listDetailVos.getProductionPlan())));
+                    }
+                }
+            }
+            targetListDetailVo.setValues(listDetail);
+            targetListDetailVos.add(targetListDetailVo);
+        }
+
+        return targetListDetailVos;
+    }
+
+
+    @Override
+    public List<TargetListDetailVo> getListShouLvChengDetail(ProductionParam productionParam) {
+        String orgId = productionParam.getOrgId();
+        ProductionVoParam productionVoParam = new ProductionVoParam();
+        productionVoParam.setOrgId(orgId);
+        List<ProductionLocationVo> productionLocationVos = planService.listLocation(productionVoParam);
+        QueryWrapper<ProductionWritePlan> wrapper = new QueryWrapper<>();
+
+        List<TargetListDetailVo> targetListDetailVos = new ArrayList<>();
+        for (ProductionLocationVo productionLocationVo : productionLocationVos) {
+            wrapper.clear();
+            wrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).orderByAsc("create_time");
+            wrapper.eq("location_id", productionLocationVo.getLocationId());
+            wrapper.groupBy("ymonth").orderByAsc("ymonth");
+
+            TargetListDetailVo targetListDetailVo = new TargetListDetailVo();
+            targetListDetailVo.setChenJian(productionLocationVo.getLocationName());
+            targetListDetailVo.setValues(rateMapper.productionParam(wrapper));
+            targetListDetailVos.add(targetListDetailVo);
+        }
+        return targetListDetailVos;
+
+    }
+
+    @Override
+    public List<TargetListDetailVo> getListNengHaoDetail(ProductionParam productionParam) {
+        String orgId = productionParam.getOrgId();
+        ProductionVoParam productionVoParam = new ProductionVoParam();
+        productionVoParam.setOrgId(orgId);
+        List<ProductionLocationVo> productionLocationVos = planService.listLocation(productionVoParam);
+        QueryWrapper<ProductionWritePlan> wrapper = new QueryWrapper<>();
+
+        List<TargetListDetailVo> targetListDetailVos = new ArrayList<>();
+        for (ProductionLocationVo productionLocationVo : productionLocationVos) {
+            wrapper.clear();
+            wrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).orderByAsc("create_time");
+            wrapper.eq("location_id", productionLocationVo.getLocationId());
+            wrapper.groupBy("ymonth").orderByAsc("ymonth");
+
+            TargetListDetailVo targetListDetailVo = new TargetListDetailVo();
+            targetListDetailVo.setChenJian(productionLocationVo.getLocationName());
+            QueryWrapper<ProductionEnergyPrice> priceQueryWrapper = new QueryWrapper<>();
+            List<ProductionEnergyPrice> energyPrice = priceMapper.selectList(priceQueryWrapper);
+            ProductionEnergyPrice productionEnergyPrice = energyPrice.get(0);
+            if (ObjectUtil.isNotEmpty(energyPrice)) {
+
+                if ("".equals(productionEnergyPrice.getElectricity())) {
+                    productionEnergyPrice.setElectricity("0");
+                }
+                if ("".equals(productionEnergyPrice.getZhengQi())) {
+                    productionEnergyPrice.setZhengQi("0");
+                }
+                if ("".equals(productionEnergyPrice.getDanQi())) {
+                    productionEnergyPrice.setDanQi("0");
+                }
+                if ("".equals(productionEnergyPrice.getYaSuo())) {
+                    productionEnergyPrice.setYaSuo("0");
+                }
+                if ("".equals(productionEnergyPrice.getRoWater())) {
+                    productionEnergyPrice.setRoWater("0");
+                }
+                if ("".equals(productionEnergyPrice.getZlWater())) {
+                    productionEnergyPrice.setZlWater("0");
+                }
+                if ("".equals(productionEnergyPrice.getXhWater())) {
+                    productionEnergyPrice.setXhWater("0");
+                }
+                if ("".equals(productionEnergyPrice.getQdWater())) {
+                    productionEnergyPrice.setQdWater("0");
+                }
+                if ("".equals(productionEnergyPrice.getSwdWater())) {
+                    productionEnergyPrice.setSwdWater("0");
+                }
+                if ("".equals(productionEnergyPrice.getEswdWater())) {
+                    productionEnergyPrice.setEswdWater("0");
+                }
+                if ("".equals(productionEnergyPrice.getReWater())) {
+                    productionEnergyPrice.setReWater("0");
+                }
+                if ("".equals(productionEnergyPrice.getDiwenWater())) {
+                    productionEnergyPrice.setDiwenWater("0");
+                }
+                if ("".equals(productionEnergyPrice.getFuSwdYierchun())) {
+                    productionEnergyPrice.setFuSwdYierchun("0");
+                }
+                if ("".equals(productionEnergyPrice.getFuEswdYierchun())) {
+                    productionEnergyPrice.setFuEswdYierchun("0");
+                }
+            }
+            targetListDetailVo.setValues(rateMapper.getListNengHaoDetail(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()
+                    ));
+            targetListDetailVos.add(targetListDetailVo);
+
+            }
+            return targetListDetailVos;
+    }
+
 }

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

@@ -2,4 +2,13 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="vip.xiaonuo.production.mapper.ProductionWriteEnergyMapper">
 
+    <select id="getListDetail" resultType="vip.xiaonuo.production.param.TargetListDetailVos">
+     SELECT
+ ROUND(IFNULL(SUM(actual_production), 0), 2)  actual_production ,  DATE_FORMAT(create_time, '%Y-%m') ymonth  ,
+ ROUND(IFNULL(  (SELECT SUM(production_plan)  production_plan   FROM  `production_write_plan`
+  WHERE DATE_FORMAT(create_time, '%Y-%m') = DATE_FORMAT(mb.create_time, '%Y-%m')) , 0), 2)   production_plan
+
+  FROM  `production_workstop_plan` mb
+        ${ew.customSqlSegment}
+    </select>
 </mapper>

+ 27 - 0
huimv-farm/src/main/resources/mapper/ProductionWriteRateMapper.xml

@@ -2,4 +2,31 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="vip.xiaonuo.production.mapper.ProductionWriteRateMapper">
 
+    <select id="productionParam" resultType="vip.xiaonuo.production.param.TargetListDetailVos">
+
+
+        SELECT
+         ROUND(IFNULL(AVG(production_rate), 0), 2)  productionRate ,  DATE_FORMAT(create_time, '%Y-%m') ymonth
+
+          FROM `production_write_rate`
+        GROUP BY ymonth
+          ${ew.customSqlSegment}
+    </select>
+    <select id="getListNengHaoDetail" resultType="vip.xiaonuo.production.param.TargetListDetailVos">
+
+
+ SELECT
+         ROUND(IFNULL(  (
+          electricity * ${electricity} + zheng_qi  * ${zhengQi} +dan_qi * ${danQi}
+          +ya_Suo* ${yaSuo}  +ro_water* ${roWater} +zl_water* ${zlWater}
+           +xh_water* ${xhWater} +qd_water* ${qdWater} +swd_water* ${swdWater} +eswd_water* ${eswdWater} +produce
+          * ${produce} +re_water
+          * ${reWater} +diwen_water* ${diwenWater} +fu_swd_yierchun* ${fuSwdYierchun} + fu_eswd_yierchun* ${fuEswdYierchun}
+          ), 0), 2)  productionRate ,  DATE_FORMAT(create_time, '%Y-%m') ymonth
+
+          FROM  `production_write_energy`
+        GROUP BY ymonth
+          ${ew.customSqlSegment}
+
+    </select>
 </mapper>

+ 6 - 6
huimv-farm/src/test/java/vip/xiaonuo/Bdest.java

@@ -108,16 +108,16 @@ public class Bdest {
                         ErpBdMaterial erpBaseMaterial = new ErpBdMaterial();
                         erpBaseMaterial.setErpFnumber(erpMaterial.getFnumber());
                         erpBaseMaterial.setOrgId(forgid.getOrgId());
-                        erpBaseMaterial.setFname(erpMaterial.getFname()+"  "+erpMaterial.getFspecification());
+                        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());
-                        erpBaseMaterial.setUnit("kg");
-                        erpBaseMaterial.setConver("1");
                         erpBdMaterialMapper.insert(erpBaseMaterial);
                     }
                 }
@@ -143,11 +143,11 @@ public class Bdest {
                     ErpBdMaterial erpBaseMaterial1 = new ErpBdMaterial();
                     erpBaseMaterial1.setErpFnumber(erpMaterial.getFnumber());
                     erpBaseMaterial1.setOrgId(forgid.getOrgId());
-                    erpBaseMaterial1.setFname(erpMaterial.getFname()+"  "+erpMaterial.getFspecification());
+                    erpBaseMaterial1.setFname(erpMaterial.getFname());
                     erpBaseMaterial1.setFspecification(erpMaterial.getFspecification());
                     erpBaseMaterial1.setParent(erpBaseMaterial.getId());
-                    erpBaseMaterial.setUnit("kg");
-                    erpBaseMaterial.setConver("1");
+                    erpBaseMaterial1.setUnit("kg");
+                    erpBaseMaterial1.setConver("1");
                     erpBdMaterialMapper.insert(erpBaseMaterial1);
                 }
             }