Browse Source

模块开发12

wwh 2 tháng trước cách đây
mục cha
commit
b96e5366b5
54 tập tin đã thay đổi với 2323 bổ sung38 xóa
  1. 56 0
      huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionEnergyPriceController.java
  2. 71 0
      huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionWriteRateController.java
  3. 141 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionEnergyPrice.java
  4. 10 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionWritePlan.java
  5. 79 0
      huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionWriteRate.java
  6. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/production/mapper/ProductionEnergyPriceMapper.java
  7. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/production/mapper/ProductionWriteRateMapper.java
  8. 3 0
      huimv-farm/src/main/java/vip/xiaonuo/production/param/ProductionParam.java
  9. 8 0
      huimv-farm/src/main/java/vip/xiaonuo/production/param/ProductionWritePlanAddParam.java
  10. 70 0
      huimv-farm/src/main/java/vip/xiaonuo/production/param/ProductionWriteRateAddParam.java
  11. 23 0
      huimv-farm/src/main/java/vip/xiaonuo/production/service/IProductionEnergyPriceService.java
  12. 34 0
      huimv-farm/src/main/java/vip/xiaonuo/production/service/IProductionWriteRateService.java
  13. 51 0
      huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProductionEnergyPriceServiceImpl.java
  14. 110 38
      huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProductionTargetServiceImpl.java
  15. 78 0
      huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProductionWriteRateServiceImpl.java
  16. 87 0
      huimv-farm/src/main/java/vip/xiaonuo/quality/controller/QualityWriteController.java
  17. 59 0
      huimv-farm/src/main/java/vip/xiaonuo/quality/entity/QualityWrite.java
  18. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/quality/mapper/QualityWriteMapper.java
  19. 50 0
      huimv-farm/src/main/java/vip/xiaonuo/quality/param/QualityWriteAddParam.java
  20. 25 0
      huimv-farm/src/main/java/vip/xiaonuo/quality/param/QualityWriteListParam.java
  21. 31 0
      huimv-farm/src/main/java/vip/xiaonuo/quality/service/IQualityWriteService.java
  22. 58 0
      huimv-farm/src/main/java/vip/xiaonuo/quality/service/impl/QualityTargetServiceImpl.java
  23. 65 0
      huimv-farm/src/main/java/vip/xiaonuo/quality/service/impl/QualityWriteServiceImpl.java
  24. 49 0
      huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteIndexController.java
  25. 71 0
      huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteProductController.java
  26. 72 0
      huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteThresholdController.java
  27. 46 0
      huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteWarningController.java
  28. 52 0
      huimv-farm/src/main/java/vip/xiaonuo/write/entity/WriteIndex.java
  29. 101 0
      huimv-farm/src/main/java/vip/xiaonuo/write/entity/WriteProduct.java
  30. 81 0
      huimv-farm/src/main/java/vip/xiaonuo/write/entity/WriteThreshold.java
  31. 89 0
      huimv-farm/src/main/java/vip/xiaonuo/write/entity/WriteWarning.java
  32. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/write/mapper/WriteIndexMapper.java
  33. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/write/mapper/WriteProductMapper.java
  34. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/write/mapper/WriteThresholdMapper.java
  35. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/write/mapper/WriteWarningMapper.java
  36. 93 0
      huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteProductAddParam.java
  37. 72 0
      huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteThresholdAddParam.java
  38. 20 0
      huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteThresholdPageParam.java
  39. 23 0
      huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteWarningPageParam.java
  40. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/IWriteIndexService.java
  41. 31 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/IWriteProductService.java
  42. 32 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/IWriteThresholdService.java
  43. 20 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/IWriteWarningService.java
  44. 20 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/impl/WriteIndexServiceImpl.java
  45. 65 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/impl/WriteProductServiceImpl.java
  46. 65 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/impl/WriteThresholdServiceImpl.java
  47. 49 0
      huimv-farm/src/main/java/vip/xiaonuo/write/service/impl/WriteWarningServiceImpl.java
  48. 5 0
      huimv-farm/src/main/resources/mapper/ProductionEnergyPriceMapper.xml
  49. 5 0
      huimv-farm/src/main/resources/mapper/ProductionWriteRateMapper.xml
  50. 5 0
      huimv-farm/src/main/resources/mapper/QualityWriteMapper.xml
  51. 5 0
      huimv-farm/src/main/resources/mapper/WriteIndexMapper.xml
  52. 5 0
      huimv-farm/src/main/resources/mapper/WriteProductMapper.xml
  53. 5 0
      huimv-farm/src/main/resources/mapper/WriteThresholdMapper.xml
  54. 5 0
      huimv-farm/src/main/resources/mapper/WriteWarningMapper.xml

+ 56 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionEnergyPriceController.java

@@ -0,0 +1,56 @@
+package vip.xiaonuo.production.controller;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.production.entity.ProductionEnergy;
+import vip.xiaonuo.production.entity.ProductionEnergyPrice;
+import vip.xiaonuo.production.param.ProductionEnergyParam;
+import vip.xiaonuo.production.param.ProductionPageParam;
+import vip.xiaonuo.production.service.IProductionEnergyPriceService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 能耗单价表填报 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@RestController
+@Api(tags = "能耗单价表填报")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class ProductionEnergyPriceController {
+
+    @Autowired
+    private IProductionEnergyPriceService priceService;
+
+    @PostMapping("/production-energy-price/getList")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("能耗单价表填报添加或修改")
+    public CommonResult<CommonResult> addAndEdit(@RequestBody ProductionEnergyPrice energyPrice) {
+        return CommonResult.data(priceService.addAndEdit(energyPrice));
+    }
+
+
+    @PostMapping("/production-energy-price/page")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("能耗单价表填报分页")
+    public CommonResult<Page<ProductionEnergyPrice>> page(@RequestBody ProductionPageParam pageParam) {
+        return CommonResult.data(priceService.page(pageParam));
+    }
+}

+ 71 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/controller/ProductionWriteRateController.java

@@ -0,0 +1,71 @@
+package vip.xiaonuo.production.controller;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.production.entity.ProductionWritePlan;
+import vip.xiaonuo.production.entity.ProductionWriteRate;
+import vip.xiaonuo.production.param.ProductionPageParam;
+import vip.xiaonuo.production.param.ProductionWritePlanAddParam;
+import vip.xiaonuo.production.param.ProductionWriteRateAddParam;
+import vip.xiaonuo.production.service.IProductionWriteRateService;
+
+import java.text.ParseException;
+import java.util.Map;
+
+/**
+ * <p>
+ * 生产收率填报 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@RestController
+@Api(tags = "生产收率填报")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class ProductionWriteRateController {
+
+    @Autowired
+    private IProductionWriteRateService rateService;
+
+    @PostMapping("/production-write-rate/add")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("计划生产量填报添加")
+    public CommonResult add(@RequestBody ProductionWriteRateAddParam param){
+        return rateService.add(param);
+    }
+
+    @PostMapping("/production-write-rate/edit")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("计划生产量填报修改")
+    public CommonResult edit(@RequestBody ProductionWriteRate writeRate) {
+        return rateService.edit(writeRate);
+    }
+
+    @PostMapping("/production-write-rate/delete")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("计划生产量填报删除")
+    public CommonResult delete(@RequestBody Map<String, String> paramsMap) {
+        return rateService.delete(paramsMap);
+    }
+
+    @PostMapping("/production-write-rate/page")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("计划生产量填报分页")
+    public CommonResult<Page<ProductionWriteRate>> page(@RequestBody ProductionPageParam pageParam) {
+        return CommonResult.data(rateService.page(pageParam));
+    }
+}

+ 141 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionEnergyPrice.java

@@ -0,0 +1,141 @@
+package vip.xiaonuo.production.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 能耗单价表填报
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("production_energy_price")
+public class ProductionEnergyPrice implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 电量
+     */
+    @ApiModelProperty(value = "电量", position =1)
+    private String electricity;
+
+    /**
+     * 蒸汽
+     */
+    @ApiModelProperty(value = "蒸汽", position =2)
+    private String zhengQi;
+
+    /**
+     * 氮气
+     */
+    @ApiModelProperty(value = "氮气", position =3)
+    private String danQi;
+
+    /**
+     * 压缩空气
+     */
+    @ApiModelProperty(value = "压缩空气", position =4)
+    private String yaSuo;
+
+    /**
+     * ro水总量
+     */
+    @ApiModelProperty(value = "ro水总量", position =5)
+    private String roWater;
+
+    /**
+     * 自来水
+     */
+    @ApiModelProperty(value = "自来水", position =6)
+    private String ziWater;
+
+    /**
+     * 循环水
+     */
+    @ApiModelProperty(value = "循环水", position =7)
+    private String xunWater;
+
+    /**
+     * 7度水
+     */
+    @ApiModelProperty(value = "7度水", position =8)
+    private String qiWater;
+
+    /**
+     * -15度水
+     */
+    @ApiModelProperty(value = "-15度水", position =9)
+    private String fuShiwuWater;
+
+    /**
+     * -25度水
+     */
+    @ApiModelProperty(value = "-25度水", position =9)
+    private String fuErshiwuWater;
+
+    /**
+     * 热水
+     */
+    @ApiModelProperty(value = "热水", position =10)
+    private String reWater;
+
+    /**
+     * 低温水
+     */
+    @ApiModelProperty(value = "低温水", position =11)
+    private String diwenWater;
+
+    /**
+     * -15度乙二醇
+     */
+    @ApiModelProperty(value = "-15度乙二醇", position =12)
+    private String fushiwuYierchun;
+
+    /**
+     * -25度乙二醇
+     */
+    @ApiModelProperty(value = "-25度乙二醇", position =13)
+    private String fuershiwuYierchun;
+
+    /**
+     * 公司id
+     */
+    @ApiModelProperty(value = "公司id", position =14)
+    private String orgId;
+
+    /**
+     * 公司名称
+     */
+    @ApiModelProperty(value = "公司名称", position =15)
+    private String orgName;
+
+    /**
+     * 车间id
+     */
+    @ApiModelProperty(value = "车间id", position =16)
+    private String locationId;
+
+    /**
+     * 车间名称
+     */
+    @ApiModelProperty(value = "车间名称", position =17)
+    private String locationName;
+
+
+}

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

@@ -76,4 +76,14 @@ public class ProductionWritePlan implements Serializable {
     private String orgName;
 
 
+    /**
+     * 实际生产量
+     */
+    @ApiModelProperty(value = "实际生产量",position = 8)
+    private String actualProduction;
+
+
+    @ApiModelProperty(value = "填报实际产量 0 erp数据  1填报数据,",position = 9)
+    private Integer isErp;
+
 }

+ 79 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/entity/ProductionWriteRate.java

@@ -0,0 +1,79 @@
+package vip.xiaonuo.production.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 生产收率填报
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("production_write_rate")
+public class ProductionWriteRate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 生产收率
+     */
+    @ApiModelProperty(value = "生产收率",position = 1)
+    private String productionRate;
+
+    /**
+     * 产品名称
+     */
+    @ApiModelProperty(value = "产品名称",position =2 )
+    private String productionName;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间",position =3 )
+    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 车间名称
+     */
+    @ApiModelProperty(value = "车间名称",position = 4)
+    private String locationName;
+
+    /**
+     * 车间id
+     */
+    @ApiModelProperty(value = "车间id",position =5 )
+    private String locationId;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position = 6)
+    private String orgId;
+
+    /**
+     * 公司名称
+     */
+    @ApiModelProperty(value = "公司名称",position = 7)
+    private String orgName;
+
+
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.production.mapper;
+
+import vip.xiaonuo.production.entity.ProductionEnergyPrice;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 能耗单价表填报 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+public interface ProductionEnergyPriceMapper extends BaseMapper<ProductionEnergyPrice> {
+
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.production.mapper;
+
+import vip.xiaonuo.production.entity.ProductionWriteRate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 生产收率填报 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+public interface ProductionWriteRateMapper extends BaseMapper<ProductionWriteRate> {
+
+}

+ 3 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/param/ProductionParam.java

@@ -39,4 +39,7 @@ public class ProductionParam {
     @ApiModelProperty(value = "车间名称", required = true)
     private String locationName;
 
+//    @ApiModelProperty(value = "数据类型,0为填报的实际生产量,1为erp实际生产量")
+//    private Integer dataType;
+
 }

+ 8 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/param/ProductionWritePlanAddParam.java

@@ -66,4 +66,12 @@ public class ProductionWritePlanAddParam  {
     @ApiModelProperty(value = "公司名称",position = 7)
     private String orgName;
 
+    /**
+     * 实际生产量
+     */
+    @ApiModelProperty(value = "实际生产量",position = 8)
+    private String actualProduction;
+
+    @ApiModelProperty(value = "填报实际产量 0 erp数据  1填报数据,",position = 9)
+    private Integer isErp;
 }

+ 70 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/param/ProductionWriteRateAddParam.java

@@ -0,0 +1,70 @@
+package vip.xiaonuo.production.param;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 生产收率填报
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@Data
+public class ProductionWriteRateAddParam  {
+
+    /**
+     * 生产收率
+     */
+    @ApiModelProperty(value = "生产收率",position = 1)
+    private String productionRate;
+
+    /**
+     * 产品名称
+     */
+    @ApiModelProperty(value = "产品名称",position =2 )
+    private String productionName;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间",position =3 )
+    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 车间名称
+     */
+    @ApiModelProperty(value = "车间名称",position = 4)
+    private String locationName;
+
+    /**
+     * 车间id
+     */
+    @ApiModelProperty(value = "车间id",position =5 )
+    private String locationId;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position = 6)
+    private String orgId;
+
+    /**
+     * 公司名称
+     */
+    @ApiModelProperty(value = "公司名称",position = 7)
+    private String orgName;
+
+
+}

+ 23 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/service/IProductionEnergyPriceService.java

@@ -0,0 +1,23 @@
+package vip.xiaonuo.production.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.production.entity.ProductionEnergyPrice;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.production.param.ProductionPageParam;
+
+/**
+ * <p>
+ * 能耗单价表填报 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+public interface IProductionEnergyPriceService extends IService<ProductionEnergyPrice> {
+
+    CommonResult addAndEdit(ProductionEnergyPrice energyPrice);
+
+    Page<ProductionEnergyPrice> page(ProductionPageParam pageParam);
+
+}

+ 34 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/service/IProductionWriteRateService.java

@@ -0,0 +1,34 @@
+package vip.xiaonuo.production.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.production.entity.ProductionWritePlan;
+import vip.xiaonuo.production.entity.ProductionWriteRate;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.production.param.ProductionPageParam;
+import vip.xiaonuo.production.param.ProductionWritePlanAddParam;
+import vip.xiaonuo.production.param.ProductionWriteRateAddParam;
+
+import java.text.ParseException;
+import java.util.Map;
+
+/**
+ * <p>
+ * 生产收率填报 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+public interface IProductionWriteRateService extends IService<ProductionWriteRate> {
+
+    CommonResult add(ProductionWriteRateAddParam param);
+
+    CommonResult list(Map<String, String> paramsMap);
+
+    CommonResult edit(ProductionWriteRate writeRate);
+
+    CommonResult delete(Map<String, String> paramsMap);
+
+    Page<ProductionWriteRate> page(ProductionPageParam pageParam);
+}

+ 51 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProductionEnergyPriceServiceImpl.java

@@ -0,0 +1,51 @@
+package vip.xiaonuo.production.service.impl;
+
+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 org.springframework.beans.factory.annotation.Autowired;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.production.entity.ProductionEnergyPrice;
+import vip.xiaonuo.production.mapper.ProductionEnergyPriceMapper;
+import vip.xiaonuo.production.param.ProductionPageParam;
+import vip.xiaonuo.production.service.IProductionEnergyPriceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 能耗单价表填报 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@Service
+public class ProductionEnergyPriceServiceImpl extends ServiceImpl<ProductionEnergyPriceMapper, ProductionEnergyPrice> implements IProductionEnergyPriceService {
+
+    @Autowired
+    private ProductionEnergyPriceMapper priceMapper;
+
+    @Override
+    public CommonResult addAndEdit(ProductionEnergyPrice energyPrice) {
+        String orgId = energyPrice.getOrgId();
+        String locationId = energyPrice.getLocationId();
+        ProductionEnergyPrice productionEnergyPrice = priceMapper.selectOne(new QueryWrapper<ProductionEnergyPrice>().eq("location_id", locationId).eq("org_id", orgId));
+        if (ObjectUtil.isEmpty(productionEnergyPrice)) {
+            priceMapper.insert(energyPrice);
+        } else {
+            priceMapper.updateById(energyPrice);
+        }
+        return CommonResult.ok();
+    }
+
+    @Override
+    public Page<ProductionEnergyPrice> page(ProductionPageParam pageParam) {
+        String orgId = pageParam.getOrgId();
+        Page<ProductionEnergyPrice> page = new Page<>();
+        QueryWrapper<ProductionEnergyPrice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        return priceMapper.selectPage(page, queryWrapper);
+    }
+}

+ 110 - 38
huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProductionTargetServiceImpl.java

@@ -4,14 +4,8 @@ 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.ProductionEnergy;
-import vip.xiaonuo.production.entity.ProductionTarget;
-import vip.xiaonuo.production.entity.ProductionWorkstopPlan;
-import vip.xiaonuo.production.entity.ProductionWritePlan;
-import vip.xiaonuo.production.mapper.ProductionTargetMapper;
-import vip.xiaonuo.production.mapper.ProductionWorkstopPlanMapper;
-import vip.xiaonuo.production.mapper.ProductionWriteEnergyMapper;
-import vip.xiaonuo.production.mapper.ProductionWritePlanMapper;
+import vip.xiaonuo.production.entity.*;
+import vip.xiaonuo.production.mapper.*;
 import vip.xiaonuo.production.param.ProductionParam;
 import vip.xiaonuo.production.service.IProductionTargetService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -20,6 +14,7 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
+import java.util.List;
 
 /**
  * <p>
@@ -38,6 +33,12 @@ public class ProductionTargetServiceImpl extends ServiceImpl<ProductionTargetMap
     private ProductionWorkstopPlanMapper planMapper;
     @Autowired
     private ProductionWritePlanMapper writePlanMapper;
+    @Autowired
+    private ProductionWriteRateMapper rateMapper;
+    @Autowired
+    private ProductionEnergyPriceMapper priceMapper;
+    @Autowired
+    private ProductionWriteEnergyMapper energyMapper;
 
 
     @Override
@@ -46,42 +47,113 @@ public class ProductionTargetServiceImpl extends ServiceImpl<ProductionTargetMap
         String time = productionParam.getTime();
         String produceName = productionParam.getProduceName();
         String locationName = productionParam.getLocationName();
-        QueryWrapper<ProductionWorkstopPlan> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        queryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
-        queryWrapper.select("Convert(IFNULL(sum(actual_production),'0'),decimal(10,2)) actualProduction");
-        if (StringUtils.isNotBlank(produceName)) {
-            queryWrapper.like("produce_name", produceName);
-        }
-        queryWrapper.eq(StringUtils.isNotBlank(locationName), "location_name", locationName);
-        ProductionWorkstopPlan workstopPlan = planMapper.selectOne(queryWrapper);//实际产量
+//        Integer dataType = productionParam.getDataType();
+        ProductionTarget productionTarget = new ProductionTarget();
+     /*   if (1 == dataType) {
+            QueryWrapper<ProductionWorkstopPlan> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+            queryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
+            queryWrapper.select("Convert(IFNULL(sum(actual_production),'0'),decimal(10,2)) actualProduction");
+            if (StringUtils.isNotBlank(produceName)) {
+                queryWrapper.like("produce_name", produceName);
+            }
+            queryWrapper.eq(StringUtils.isNotBlank(locationName), "location_name", locationName);
+            ProductionWorkstopPlan workstopPlan = planMapper.selectOne(queryWrapper);//实际产量
 
-        QueryWrapper<ProductionWritePlan> queryWrapper1 = new QueryWrapper<>();
-        queryWrapper1.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
-        queryWrapper1.eq(StringUtils.isNotBlank(locationName), "location_name", locationName);
-        queryWrapper1.eq(StringUtils.isNotBlank(produceName), "production_name", produceName);
-        queryWrapper1.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
-        queryWrapper1.select(" Convert(IFNULL(sum(production_plan),'0'),decimal(10,2)) productionPlan");
-        ProductionWritePlan writePlan = writePlanMapper.selectOne(queryWrapper1);//计划生产量
+            QueryWrapper<ProductionWritePlan> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+            queryWrapper1.eq(StringUtils.isNotBlank(locationName), "location_name", locationName);
+            queryWrapper1.eq(StringUtils.isNotBlank(produceName), "production_name", produceName);
+            queryWrapper1.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
+            queryWrapper1.select(" Convert(IFNULL(sum(production_plan),'0'),decimal(10,2)) productionPlan," +
+                    "Convert(IFNULL(sum(actual_production),'0'),decimal(10,2)) actualProduction");
+            ProductionWritePlan writePlan = writePlanMapper.selectOne(queryWrapper1);//计划生产量
 
-        ProductionTarget productionTarget = new ProductionTarget();
-         if (ObjectUtil.isEmpty(writePlan) || "0.00".equals(writePlan.getProductionPlan())) {
-            productionTarget.setPlanProduction("0");
-            productionTarget.setPlanCompleteRate("0");
-        } else {
-            productionTarget.setPlanProduction(writePlan.getProductionPlan());
-            double v = Double.valueOf(workstopPlan.getActualProduction()) / Double.valueOf(writePlan.getProductionPlan());
-            if (v > 1.0) {
-                productionTarget.setPlanCompleteRate("100");
+            if (ObjectUtil.isEmpty(writePlan) || "0.00".equals(writePlan.getProductionPlan())) {
+                productionTarget.setPlanProduction("0");
+                productionTarget.setPlanCompleteRate("0");
+            } else {
+                productionTarget.setPlanProduction(writePlan.getProductionPlan());
+                double v = Double.valueOf(workstopPlan.getActualProduction()) / Double.valueOf(writePlan.getProductionPlan());
+                if (v > 1.0) {
+                    productionTarget.setPlanCompleteRate("100");
+                } else {
+                    DecimalFormat def = new DecimalFormat("0.00");
+                    productionTarget.setPlanCompleteRate(def.format(v * 100));
+                }
+            }
+            productionTarget.setActualProduction(workstopPlan.getActualProduction());
+        } else {*/
+            QueryWrapper<ProductionWritePlan> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+            queryWrapper1.eq(StringUtils.isNotBlank(locationName), "location_name", locationName);
+            queryWrapper1.eq(StringUtils.isNotBlank(produceName), "production_name", produceName);
+            queryWrapper1.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
+            queryWrapper1.select(" Convert(IFNULL(sum(production_plan),'0'),decimal(10,2)) productionPlan," +
+                    "Convert(IFNULL(sum(actual_production),'0'),decimal(10,2)) actualProduction");
+            ProductionWritePlan writePlan = writePlanMapper.selectOne(queryWrapper1);//计划生产量
+
+
+            if (ObjectUtil.isEmpty(writePlan) || "0.00".equals(writePlan.getProductionPlan())) {
+                productionTarget.setPlanProduction("0");
+                productionTarget.setPlanCompleteRate("0");
             } else {
-                DecimalFormat def = new DecimalFormat("0.00");
-                productionTarget.setPlanCompleteRate(def.format(v * 100));
+                productionTarget.setPlanProduction(writePlan.getProductionPlan());
+                double v = Double.valueOf(writePlan.getActualProduction()) / Double.valueOf(writePlan.getProductionPlan());
+                if (v > 1.0) {
+                    productionTarget.setPlanCompleteRate("100");
+                } else {
+                    DecimalFormat def = new DecimalFormat("0.00");
+                    productionTarget.setPlanCompleteRate(def.format(v * 100));
+                }
             }
+            productionTarget.setActualProduction(writePlan.getActualProduction());
+//        }
+
+        QueryWrapper<ProductionWriteRate> rateQueryWrapper = new QueryWrapper<>();
+        rateQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        rateQueryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
+        if (StringUtils.isNotBlank(produceName)) {
+            rateQueryWrapper.like("produce_name", produceName);
         }
+        rateQueryWrapper.eq(StringUtils.isNotBlank(locationName), "location_name", locationName);
+        rateQueryWrapper.select(" convert(IFNULL(avg(production_rate),'0'),decimal(10,2)) productionRate");
+        ProductionWriteRate writeRate = rateMapper.selectOne(rateQueryWrapper);
+        productionTarget.setReceiveRate(writeRate.getProductionRate());
 
-        productionTarget.setActualProduction(workstopPlan.getActualProduction());
-        productionTarget.setReceiveRate("0");
-        productionTarget.setProductionEnergy("0");
+        QueryWrapper<ProductionWriteEnergy> energyQueryWrapper = new QueryWrapper<>();
+        energyQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        if (StringUtils.isNotBlank(produceName)) {
+            energyQueryWrapper.like("produce_name", produceName);
+        }
+        rateQueryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
+        energyQueryWrapper.eq(StringUtils.isNotBlank(locationName), "location_name", locationName);
+        energyQueryWrapper.select("IFNULL(sum(electricity),'0') electricity,IFNULL(sum(zheng_qi),'0') zhengQi,IFNULL(sum(dan_qi),'0') danQi" +
+                ",IFNULL(sum(ya_suo),'0') yaSuo,IFNULL(sum(ro_water),'0') roWater,IFNULL(sum(zl_water),'0') zlWater, IFNULL(sum(xh_water),'0') xhWater" +
+                ",IFNULL(sum(qd_water),'0') qdwater,IFNULL(sum(swd_water),'0') swdWater,IFNULL(sum(eswd_water),'0') eswdWater,IFNULL(sum(re_water),'0') reWater" +
+                ",IFNULL(sum(diwen_water),'0') diwenWater,IFNULL(sum(fu_swd_yierchun),'0') fuSwdYierchun" +
+                ",IFNULL(sum(fu_eswd_yierchun),'0') fuEswdYierchun,location_id locationId");
+        energyQueryWrapper.groupBy("location_id");
+        List<ProductionWriteEnergy> energyList = energyMapper.selectList(energyQueryWrapper);
+        Double count = 0.00;
+        for (ProductionWriteEnergy energy : energyList) {
+            if (energy.getLocationId() != null) {
+                QueryWrapper<ProductionEnergyPrice> priceQueryWrapper = new QueryWrapper<>();
+                priceQueryWrapper.eq("location_id", energy.getLocationId());
+                ProductionEnergyPrice energyPrice = priceMapper.selectOne(priceQueryWrapper);
+                if (ObjectUtil.isNotEmpty(energyPrice)) {
+                    count = count + Double.valueOf(energy.getElectricity()) * Double.valueOf(energyPrice.getElectricity())+Double.valueOf(energy.getZhengQi()) * Double.valueOf(energyPrice.getZhengQi())
+                            +Double.valueOf(energy.getDanQi()) * Double.valueOf(energyPrice.getDanQi())+Double.valueOf(energy.getYaSuo()) * Double.valueOf(energyPrice.getYaSuo())+
+                            Double.valueOf(energy.getRoWater()) * Double.valueOf(energyPrice.getRoWater())+Double.valueOf(energy.getZlWater()) * Double.valueOf(energyPrice.getZiWater())+
+                            Double.valueOf(energy.getXhWater()) * Double.valueOf(energyPrice.getXunWater())+Double.valueOf(energy.getQdWater()) * Double.valueOf(energyPrice.getQiWater())+
+                            Double.valueOf(energy.getSwdWater()) * Double.valueOf(energyPrice.getFuShiwuWater())+Double.valueOf(energy.getEswdWater()) * Double.valueOf(energyPrice.getFuErshiwuWater())+
+                            Double.valueOf(energy.getReWater()) * Double.valueOf(energyPrice.getReWater())+Double.valueOf(energy.getDiwenWater()) * Double.valueOf(energyPrice.getDiwenWater())+
+                            Double.valueOf(energy.getFuSwdYierchun()) * Double.valueOf(energyPrice.getFushiwuYierchun())+Double.valueOf(energy.getFuEswdYierchun()) * Double.valueOf(energyPrice.getFuershiwuYierchun());
+                }
+            }
+        }
+        DecimalFormat def = new DecimalFormat("0.00");
+        productionTarget.setProductionEnergy(def.format(count));
 
         return productionTarget;
     }

+ 78 - 0
huimv-farm/src/main/java/vip/xiaonuo/production/service/impl/ProductionWriteRateServiceImpl.java

@@ -0,0 +1,78 @@
+package vip.xiaonuo.production.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.production.entity.ProductionWritePlan;
+import vip.xiaonuo.production.entity.ProductionWriteRate;
+import vip.xiaonuo.production.mapper.ProductionWriteRateMapper;
+import vip.xiaonuo.production.param.ProductionPageParam;
+import vip.xiaonuo.production.param.ProductionWriteRateAddParam;
+import vip.xiaonuo.production.service.IProductionWriteRateService;
+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.text.ParseException;
+import java.util.Map;
+
+/**
+ * <p>
+ * 生产收率填报 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@Service
+public class ProductionWriteRateServiceImpl extends ServiceImpl<ProductionWriteRateMapper, ProductionWriteRate> implements IProductionWriteRateService {
+
+    @Autowired
+    private ProductionWriteRateMapper writeRateMapper;
+    @Autowired
+    private SysOrgMapper orgMapper;
+
+    @Override
+    public CommonResult add(ProductionWriteRateAddParam param) {
+        String orgId = param.getOrgId();
+        SysOrg org = orgMapper.selectOne(new QueryWrapper<SysOrg>().eq("id", orgId));
+        ProductionWriteRate writeRate = new ProductionWriteRate();
+        BeanUtil.copyProperties(param, writeRate);
+        writeRate.setOrgName(org.getName());
+        writeRateMapper.insert(writeRate);
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult list(Map<String, String> paramsMap) {
+        return null;
+    }
+
+    @Override
+    public CommonResult edit(ProductionWriteRate writeRate) {
+        writeRateMapper.updateById(writeRate);
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult delete(Map<String, String> paramsMap) {
+        String id = paramsMap.get("id");
+        writeRateMapper.deleteById(id);
+        return CommonResult.ok();
+    }
+
+    @Override
+    public Page<ProductionWriteRate> page(ProductionPageParam pageParam) {
+        Integer pageSize = pageParam.getPageSize();
+        Integer pageNum = pageParam.getPageNum();
+        String orgId = pageParam.getOrgId();
+        QueryWrapper<ProductionWriteRate> queryWrapper = new QueryWrapper();
+        Page<ProductionWriteRate> page = new Page<>(pageNum, pageSize);
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        return writeRateMapper.selectPage(page, queryWrapper);
+    }
+}

+ 87 - 0
huimv-farm/src/main/java/vip/xiaonuo/quality/controller/QualityWriteController.java

@@ -0,0 +1,87 @@
+package vip.xiaonuo.quality.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.production.entity.ProductionWriteRate;
+import vip.xiaonuo.production.param.ProductionPageParam;
+import vip.xiaonuo.production.param.ProductionWriteRateAddParam;
+import vip.xiaonuo.quality.entity.QualityWrite;
+import vip.xiaonuo.quality.param.QualityWriteAddParam;
+import vip.xiaonuo.quality.param.QualityWriteListParam;
+import vip.xiaonuo.quality.service.IQualityWriteService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 质量来料不合格填报 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@RestController
+@Api(tags = "质量来料不合格填报")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class QualityWriteController {
+
+    @Autowired
+    private IQualityWriteService qualityWriteService;
+
+    @PostMapping("/quality-write/add")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("质量来料不合格填报添加")
+    public CommonResult add(@RequestBody QualityWriteAddParam param){
+        return qualityWriteService.add(param);
+    }
+
+    @PostMapping("/quality-write/edit")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("质量来料不合格填报修改")
+    public CommonResult edit(@RequestBody QualityWrite qualityWrite) {
+        return qualityWriteService.edit(qualityWrite);
+    }
+
+    @PostMapping("/quality-write/delete")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("质量来料不合格填报删除")
+    public CommonResult delete(@RequestBody Map<String, String> paramsMap) {
+        return qualityWriteService.delete(paramsMap);
+    }
+
+    @PostMapping("/quality-write/page")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("质量来料不合格填报分页")
+    public CommonResult<Page<QualityWrite>> page(@RequestBody ProductionPageParam pageParam) {
+        return CommonResult.data(qualityWriteService.page(pageParam));
+    }
+
+    @PostMapping("/quality-write/list")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("质量来料不合格填报列表")
+    public CommonResult<List<QualityWrite>> list(@RequestBody QualityWriteListParam listParam) {
+        String orgId = listParam.getOrgId();
+        String time = listParam.getTime();
+        QueryWrapper<QualityWrite> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        queryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
+        return CommonResult.data(qualityWriteService.list(queryWrapper));
+    }
+
+}

+ 59 - 0
huimv-farm/src/main/java/vip/xiaonuo/quality/entity/QualityWrite.java

@@ -0,0 +1,59 @@
+package vip.xiaonuo.quality.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 质量来料不合格填报
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("quality_write")
+public class QualityWrite implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 采购名称
+     */
+    @ApiModelProperty(value = "采购名称",position = 1)
+    private String materialName;
+
+    /**
+     * 采购数量
+     */
+    @ApiModelProperty(value = "采购数量",position =2 )
+    private String materialNumber;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间",position = 3)
+    private Date createTime;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position =4 )
+    private String orgId;
+
+
+}

+ 16 - 0
huimv-farm/src/main/java/vip/xiaonuo/quality/mapper/QualityWriteMapper.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.quality.mapper;
+
+import vip.xiaonuo.quality.entity.QualityWrite;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 质量来料不合格填报 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+public interface QualityWriteMapper extends BaseMapper<QualityWrite> {
+
+}

+ 50 - 0
huimv-farm/src/main/java/vip/xiaonuo/quality/param/QualityWriteAddParam.java

@@ -0,0 +1,50 @@
+package vip.xiaonuo.quality.param;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 质量来料不合格填报
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@Data
+public class QualityWriteAddParam  {
+
+    /**
+     * 采购名称
+     */
+    @ApiModelProperty(value = "采购名称",position = 1)
+    private String materialName;
+
+    /**
+     * 采购数量
+     */
+    @ApiModelProperty(value = "采购数量",position =2 )
+    private String materialNumber;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间",position = 3)
+    private Date createTime;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position =4 )
+    private String orgId;
+
+
+}

+ 25 - 0
huimv-farm/src/main/java/vip/xiaonuo/quality/param/QualityWriteListParam.java

@@ -0,0 +1,25 @@
+package vip.xiaonuo.quality.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 质量来料不合格填报
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@Data
+public class QualityWriteListParam {
+
+    @ApiModelProperty(value = "组织id",position = 1)
+    private String orgId;
+
+    @ApiModelProperty(value = "时间",position = 2)
+    private String time;
+
+}

+ 31 - 0
huimv-farm/src/main/java/vip/xiaonuo/quality/service/IQualityWriteService.java

@@ -0,0 +1,31 @@
+package vip.xiaonuo.quality.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.production.entity.ProductionWriteRate;
+import vip.xiaonuo.production.param.ProductionPageParam;
+import vip.xiaonuo.production.param.ProductionWriteRateAddParam;
+import vip.xiaonuo.quality.entity.QualityWrite;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.quality.param.QualityWriteAddParam;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 质量来料不合格填报 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+public interface IQualityWriteService extends IService<QualityWrite> {
+
+    CommonResult add(QualityWriteAddParam param);
+
+    CommonResult edit(QualityWrite qualityWrite);
+
+    CommonResult delete(Map<String, String> paramsMap);
+
+    Page<QualityWrite> page(ProductionPageParam pageParam);
+}

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

@@ -4,14 +4,22 @@ 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.purchase.entity.PurchaseOrder;
+import vip.xiaonuo.purchase.mapper.PurchaseOrderMapper;
 import vip.xiaonuo.quality.entity.QualityTarget;
+import vip.xiaonuo.quality.entity.QualityWrite;
 import vip.xiaonuo.quality.mapper.QualityTargetMapper;
+import vip.xiaonuo.quality.mapper.QualityWriteMapper;
 import vip.xiaonuo.quality.param.QualityParam;
 import vip.xiaonuo.quality.service.IQualityTargetService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
+import vip.xiaonuo.write.entity.WriteProduct;
+import vip.xiaonuo.write.mapper.WriteProductMapper;
 
+import java.text.DecimalFormat;
 import java.util.Date;
+import java.util.List;
 
 /**
  * <p>
@@ -26,10 +34,17 @@ public class QualityTargetServiceImpl extends ServiceImpl<QualityTargetMapper, Q
 
     @Autowired
     private QualityTargetMapper targetMapper;
+    @Autowired
+    private WriteProductMapper writeProductMapper;
+    @Autowired
+    private QualityWriteMapper qualityWriteMapper;
+    @Autowired
+    private PurchaseOrderMapper purchaseOrderMapper;
 
     @Override
     public QualityTarget getTargetOne(QualityParam qualityParam) {
         String orgId = qualityParam.getOrgId();
+        String time = qualityParam.getTime();
         QueryWrapper<QualityTarget> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
         queryWrapper.orderByDesc("id").last(" limit 1");
@@ -42,6 +57,49 @@ public class QualityTargetServiceImpl extends ServiceImpl<QualityTargetMapper, Q
             qualityTarget.setProduceRate("0");
             qualityTarget.setUnqualifiedBatch("0");
         }
+        QueryWrapper<QualityWrite> qualityWriteQueryWrapper = new QueryWrapper<>();
+        qualityWriteQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        qualityWriteQueryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
+        Long count = qualityWriteMapper.selectCount(qualityWriteQueryWrapper);//不合格批次
+
+        QueryWrapper<PurchaseOrder> orderQueryWrapper = new QueryWrapper<>();
+        orderQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        orderQueryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
+        Long aLong = purchaseOrderMapper.selectCount(orderQueryWrapper);//合格批次
+
+        QueryWrapper<WriteProduct> writeProductQueryWrapper = new QueryWrapper<>();
+        orderQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        orderQueryWrapper.between("report_date", time + "-01 00:00:00", time + "-31 23:59:59");
+        List<WriteProduct> writeProducts = writeProductMapper.selectList(writeProductQueryWrapper);
+        Double countNumber = 0.00;//总数
+        Double count1 = 0.00;//检测合格数量
+        if (writeProducts.size() != 0) {
+            for (WriteProduct writeProduct : writeProducts) {
+                countNumber = countNumber + Double.valueOf(writeProduct.getProductionNumber());
+                if (writeProduct.getIsQualified() == 0) {
+                    count1 = count1 + Double.valueOf(writeProduct.getProductionNumber());
+                }
+            }
+        }
+
+        DecimalFormat def = new DecimalFormat("0.00");
+
+        qualityTarget.setUnqualifiedBatch(count.toString());
+        long batch = count + aLong;
+        if (0 == batch) {
+            qualityTarget.setDefectiveRate("0");
+        } else {
+            Double aDouble = Double.valueOf(count / batch);
+            qualityTarget.setDefectiveRate(def.format(aDouble * 100));
+        }
+        if (0.00 == countNumber) {
+            qualityTarget.setProduceOneRate("100");
+            qualityTarget.setProduceRate("100");
+        } else {
+            double v = count1 / countNumber;
+            qualityTarget.setProduceOneRate(def.format(v * 100));
+            qualityTarget.setProduceRate(def.format(v * 100));
+        }
         return qualityTarget;
     }
 }

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

@@ -0,0 +1,65 @@
+package vip.xiaonuo.quality.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.production.entity.ProductionWriteRate;
+import vip.xiaonuo.production.param.ProductionPageParam;
+import vip.xiaonuo.quality.entity.QualityWrite;
+import vip.xiaonuo.quality.mapper.QualityWriteMapper;
+import vip.xiaonuo.quality.param.QualityWriteAddParam;
+import vip.xiaonuo.quality.service.IQualityWriteService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 质量来料不合格填报 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@Service
+public class QualityWriteServiceImpl extends ServiceImpl<QualityWriteMapper, QualityWrite> implements IQualityWriteService {
+
+    @Autowired
+    private QualityWriteMapper qualityWriteMapper;
+
+    @Override
+    public CommonResult add(QualityWriteAddParam param) {
+        QualityWrite qualityWrite = new QualityWrite();
+        BeanUtil.copyProperties(param, qualityWrite);
+        qualityWriteMapper.insert(qualityWrite);
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult edit(QualityWrite qualityWrite) {
+        qualityWriteMapper.updateById(qualityWrite);
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult delete(Map<String, String> paramsMap) {
+        String id = paramsMap.get("id");
+        qualityWriteMapper.deleteById(id);
+        return CommonResult.ok();
+    }
+
+    @Override
+    public Page<QualityWrite> page(ProductionPageParam pageParam) {
+        Integer pageSize = pageParam.getPageSize();
+        Integer pageNum = pageParam.getPageNum();
+        String orgId = pageParam.getOrgId();
+        QueryWrapper<QualityWrite> queryWrapper = new QueryWrapper();
+        Page<QualityWrite> page = new Page<>(pageNum, pageSize);
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        return qualityWriteMapper.selectPage(page, queryWrapper);
+    }
+}

+ 49 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteIndexController.java

@@ -0,0 +1,49 @@
+package vip.xiaonuo.write.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.write.entity.WriteIndex;
+import vip.xiaonuo.write.param.WriteListPageParam;
+import vip.xiaonuo.write.service.IWriteIndexService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 通用预警指标管理 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@RestController
+@RequestMapping("/write-index")
+@Api(tags = "通用预警指标管理")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class WriteIndexController {
+
+    @Autowired
+    private IWriteIndexService indexService;
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("通用预警指标列表")
+    @PostMapping("/write-index/list")
+    public CommonResult page(@RequestBody Map<String, String> paramsMap) {
+        String orgId = paramsMap.get("orgId");
+        String type = paramsMap.get("type");
+        return CommonResult.data(indexService.list(new QueryWrapper<WriteIndex>().eq("org_id", orgId).eq("type", type)));
+    }
+}

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

@@ -0,0 +1,71 @@
+package vip.xiaonuo.write.controller;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.production.param.ProductionPageParam;
+import vip.xiaonuo.quality.entity.QualityWrite;
+import vip.xiaonuo.quality.param.QualityWriteAddParam;
+import vip.xiaonuo.write.entity.WriteProduct;
+import vip.xiaonuo.write.param.WriteProductAddParam;
+import vip.xiaonuo.write.service.IWriteProductService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 成品检验台账填报 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-02
+ */
+@RestController
+@RequestMapping("/write-product")
+@Api(tags = "成品检验台账填报")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class WriteProductController {
+
+    @Autowired
+    private IWriteProductService writeProductService;
+
+    @PostMapping("/quality-write/add")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("成品检验台账填报添加")
+    public CommonResult add(@RequestBody WriteProductAddParam addParam){
+        return writeProductService.add(addParam);
+    }
+
+    @PostMapping("/quality-write/edit")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("成品检验台账填报修改")
+    public CommonResult edit(@RequestBody WriteProduct writeProduct) {
+        return writeProductService.edit(writeProduct);
+    }
+
+    @PostMapping("/quality-write/delete")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("成品检验台账填报删除")
+    public CommonResult delete(@RequestBody Map<String, String> paramsMap) {
+        return writeProductService.delete(paramsMap);
+    }
+
+    @PostMapping("/quality-write/page")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("成品检验台账填报分页")
+    public CommonResult<Page<WriteProduct>> page(@RequestBody ProductionPageParam pageParam) {
+        return CommonResult.data(writeProductService.page(pageParam));
+    }
+}

+ 72 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteThresholdController.java

@@ -0,0 +1,72 @@
+package vip.xiaonuo.write.controller;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.production.entity.ProductionWriteRate;
+import vip.xiaonuo.production.param.ProductionPageParam;
+import vip.xiaonuo.production.param.ProductionWriteRateAddParam;
+import vip.xiaonuo.write.entity.WriteThreshold;
+import vip.xiaonuo.write.param.WriteThresholdAddParam;
+import vip.xiaonuo.write.param.WriteThresholdPageParam;
+import vip.xiaonuo.write.service.IWriteThresholdService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 通用预警阈值 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@RestController
+@Api(tags = "通用预警阈值")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class WriteThresholdController {
+
+    @Autowired
+    private IWriteThresholdService thresholdService;
+
+
+    @PostMapping("/write-threshold/add")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("通用预警阈值添加")
+    public CommonResult add(@RequestBody WriteThresholdAddParam addParam){
+        return thresholdService.add(addParam);
+    }
+
+    @PostMapping("/write-threshold/edit")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("通用预警阈值修改")
+    public CommonResult edit(@RequestBody WriteThreshold threshold) {
+        return thresholdService.edit(threshold);
+    }
+
+    @PostMapping("/write-threshold/delete")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("通用预警阈值删除")
+    public CommonResult delete(@RequestBody Map<String, String> paramsMap) {
+        return thresholdService.delete(paramsMap);
+    }
+
+    @PostMapping("/write-threshold/page")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("通用预警阈值分页")
+    public CommonResult<Page<WriteThreshold>> page(@RequestBody WriteThresholdPageParam pageParam) {
+        return CommonResult.data(thresholdService.page(pageParam));
+    }
+}

+ 46 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/controller/WriteWarningController.java

@@ -0,0 +1,46 @@
+package vip.xiaonuo.write.controller;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.write.entity.WriteThreshold;
+import vip.xiaonuo.write.entity.WriteWarning;
+import vip.xiaonuo.write.param.WriteThresholdPageParam;
+import vip.xiaonuo.write.param.WriteWarningPageParam;
+import vip.xiaonuo.write.service.IWriteWarningService;
+
+/**
+ * <p>
+ * 通用预警列表 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@RestController
+@Api(tags = "通用预警列表")
+@ApiSupport(author = "wang", order = 1)
+@Validated
+public class WriteWarningController {
+
+    @Autowired
+    private IWriteWarningService warningService;
+
+    @PostMapping("/write-warning/page")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("通用预警分页")
+    public CommonResult<Page<WriteWarning>> page(@RequestBody WriteWarningPageParam pageParam) {
+        return CommonResult.data(warningService.page(pageParam));
+    }
+}

+ 52 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/entity/WriteIndex.java

@@ -0,0 +1,52 @@
+package vip.xiaonuo.write.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 通用预警指标管理
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("write_index")
+public class WriteIndex implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 模块划分0财务1人事2采购3仓库4风控5生产6销售7质量'
+     */
+    @ApiModelProperty(value = "模块划分0财务1人事2采购3仓库4风控5生产6销售7质量'",position = 1)
+    private Integer type;
+
+    /**
+     * 指标名称
+     */
+    @ApiModelProperty(value = "指标名称",position = 2)
+    private String index;
+
+    /**
+     * 组织ID
+     */
+    @ApiModelProperty(value = "组织ID",position =3 )
+    private String orgId;
+
+
+}

+ 101 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/entity/WriteProduct.java

@@ -0,0 +1,101 @@
+package vip.xiaonuo.write.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 成品检验台账填报
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-02
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("write_product")
+public class WriteProduct implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 检验产品
+     */
+    @ApiModelProperty(value = "检验产品", position =1)
+    private String productionName;
+
+    /**
+     * 检验数量
+     */
+    @ApiModelProperty(value = "检验数量", position =2)
+    private String productionNumber;
+
+    /**
+     * 是否合格 0为合格 1为不合格
+     */
+    @ApiModelProperty(value = "是否合格 0为合格 1为不合格", position =3)
+    private Integer isQualified;
+
+    /**
+     * 规格
+     */
+    @ApiModelProperty(value = "规格", position =4)
+    private String specifications;
+
+    /**
+     * 自编批号
+     */
+    @ApiModelProperty(value = "自编批号", position =5)
+    private String selfBatch;
+
+    /**
+     * 厂家批号
+     */
+    @ApiModelProperty(value = "厂家批号", position =6)
+    private String factoryBatch;
+
+    /**
+     * 生产单位
+     */
+    @ApiModelProperty(value = "生产单位", position =7)
+    private String productionUnit;
+
+    /**
+     * 检验编号
+     */
+    @ApiModelProperty(value = "检验编号", position =8)
+    private String inspectionNumber;
+
+    /**
+     * 取样日期
+     */
+    @ApiModelProperty(value = "取样日期", position =9)
+    private Date sampleDate;
+
+    /**
+     * 报告日期
+     */
+    @ApiModelProperty(value = "报告日期", position =10)
+    private Date reportDate;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id", position =11)
+    private String orgId;
+
+
+}

+ 81 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/entity/WriteThreshold.java

@@ -0,0 +1,81 @@
+package vip.xiaonuo.write.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 通用预警阈值
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("write_threshold")
+public class WriteThreshold implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 模块划分0财务1人事2采购3仓库4风控5生产6销售7质量
+     */
+    @ApiModelProperty(value = "模块划分0财务1人事2采购3仓库4风控5生产6销售7质量",position =1 )
+    private Integer type;
+
+    /**
+     * 处理人名字
+     */
+    @ApiModelProperty(value = "处理人名字",position =2 )
+    private String userName;
+
+    /**
+     * 处理人id
+     */
+    @ApiModelProperty(value = "处理人id",position = 3)
+    private Integer userId;
+
+    /**
+     * 预警等级0普通 1重要
+     */
+    @ApiModelProperty(value = " 预警等级0普通 1重要",position =4 )
+    private Integer level;
+
+    /**
+     * 指标
+     */
+    @ApiModelProperty(value = "指标",position = 5)
+    private String index;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position =6 )
+    private String orgId;
+
+
+    /**
+     * 指标
+     */
+    @ApiModelProperty(value = "指标id",position = 7)
+    private String indexId;
+
+    /**
+     * 指标
+     */
+    @ApiModelProperty(value = "阈值",position = 8)
+    private String values;
+}
+

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

@@ -0,0 +1,89 @@
+package vip.xiaonuo.write.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 通用预警列表
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("write_warning")
+public class WriteWarning implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 预警日期
+     */
+    @ApiModelProperty(value = "预警日期",position = 1)
+    private Date warningDate;
+
+    /**
+     * 预警类型
+     */
+    @ApiModelProperty(value = "预警类型",position = 2)
+    private String warningType;
+
+    /**
+     * 登记
+     */
+    @ApiModelProperty(value = "登记",position =3 )
+    private String warningLevel;
+
+    /**
+     * 预警内容
+     */
+    @ApiModelProperty(value = "预警内容",position =4 )
+    private String warningContent;
+
+    /**
+     * 处理人
+     */
+    @ApiModelProperty(value = "处理人",position = 5)
+    private String userName;
+
+    /**
+     * 处理方式
+     */
+    @ApiModelProperty(value = "处理方式",position =6 )
+    private String handle;
+
+    /**
+     * 处理结果
+     */
+    @ApiModelProperty(value = "处理结果",position = 7)
+    private String handleResult;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position =8 )
+    private String orgId;
+
+    /**
+     * 模块划分0财务1人事2采购3仓库4风控5生产6销售7质量
+     */
+    @ApiModelProperty(value = "模块划分0财务1人事2采购3仓库4风控5生产6销售7质量",position =9 )
+    private Integer type;
+
+
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.write.mapper;
+
+import vip.xiaonuo.write.entity.WriteIndex;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 通用预警指标管理 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+public interface WriteIndexMapper extends BaseMapper<WriteIndex> {
+
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.write.mapper;
+
+import vip.xiaonuo.write.entity.WriteProduct;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 成品检验台账填报 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-02
+ */
+public interface WriteProductMapper extends BaseMapper<WriteProduct> {
+
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.write.mapper;
+
+import vip.xiaonuo.write.entity.WriteThreshold;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 通用预警阈值 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+public interface WriteThresholdMapper extends BaseMapper<WriteThreshold> {
+
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.write.mapper;
+
+import vip.xiaonuo.write.entity.WriteWarning;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 通用预警列表 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+public interface WriteWarningMapper extends BaseMapper<WriteWarning> {
+
+}

+ 93 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteProductAddParam.java

@@ -0,0 +1,93 @@
+package vip.xiaonuo.write.param;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 成品检验台账填报
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-02
+ */
+@Data
+public class WriteProductAddParam  {
+
+
+    /**
+     * 检验产品
+     */
+    @ApiModelProperty(value = "检验产品", position =1)
+    private String productionName;
+
+    /**
+     * 检验数量
+     */
+    @ApiModelProperty(value = "检验数量", position =2)
+    private String productionNumber;
+
+    /**
+     * 是否合格 0为合格 1为不合格
+     */
+    @ApiModelProperty(value = "是否合格 0为合格 1为不合格", position =3)
+    private Integer isQualified;
+
+    /**
+     * 规格
+     */
+    @ApiModelProperty(value = "规格", position =4)
+    private String specifications;
+
+    /**
+     * 自编批号
+     */
+    @ApiModelProperty(value = "自编批号", position =5)
+    private String selfBatch;
+
+    /**
+     * 厂家批号
+     */
+    @ApiModelProperty(value = "厂家批号", position =6)
+    private String factoryBatch;
+
+    /**
+     * 生产单位
+     */
+    @ApiModelProperty(value = "生产单位", position =7)
+    private String productionUnit;
+
+    /**
+     * 检验编号
+     */
+    @ApiModelProperty(value = "检验编号", position =8)
+    private String inspectionNumber;
+
+    /**
+     * 取样日期
+     */
+    @ApiModelProperty(value = "取样日期", position =9)
+    private Date sampleDate;
+
+    /**
+     * 报告日期
+     */
+    @ApiModelProperty(value = "报告日期", position =10)
+    private Date reportDate;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id", position =11)
+    private String orgId;
+
+
+}

+ 72 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteThresholdAddParam.java

@@ -0,0 +1,72 @@
+package vip.xiaonuo.write.param;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 通用预警阈值
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@Data
+public class WriteThresholdAddParam  {
+
+    /**
+     * 模块划分0财务1人事2采购3仓库4风控5生产6销售7质量
+     */
+    @ApiModelProperty(value = "模块划分0财务1人事2采购3仓库4风控5生产6销售7质量",position =1 )
+    private Integer type;
+
+    /**
+     * 处理人名字
+     */
+    @ApiModelProperty(value = "处理人名字",position =2 )
+    private String userName;
+
+    /**
+     * 处理人id
+     */
+    @ApiModelProperty(value = "处理人id",position = 3)
+    private Integer userId;
+
+    /**
+     * 预警等级0普通 1重要
+     */
+    @ApiModelProperty(value = " 预警等级0普通 1重要",position =4 )
+    private Integer level;
+
+    /**
+     * 指标
+     */
+    @ApiModelProperty(value = "指标",position = 5)
+    private String index;
+
+    /**
+     * 组织id
+     */
+    @ApiModelProperty(value = "组织id",position =6 )
+    private String orgId;
+
+    /**
+     * 指标
+     */
+    @ApiModelProperty(value = "指标id",position = 7)
+    private String indexId;
+
+    /**
+     * 指标
+     */
+    @ApiModelProperty(value = "阈值",position = 8)
+    private String values;
+}
+

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

@@ -0,0 +1,20 @@
+package vip.xiaonuo.write.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class WriteThresholdPageParam {
+
+    @ApiModelProperty(value = "组织id",position = 1)
+    private String orgId;
+
+    @ApiModelProperty(value = "当前页码",position = 2)
+    private Integer pageNum;
+
+    @ApiModelProperty(value = "页码大小",position = 3)
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "模块类型",position = 3)
+    private Integer type;
+}

+ 23 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/param/WriteWarningPageParam.java

@@ -0,0 +1,23 @@
+package vip.xiaonuo.write.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class WriteWarningPageParam {
+
+    @ApiModelProperty(value = "组织id",position = 1)
+    private String orgId;
+
+    @ApiModelProperty(value = "当前页码",position = 2)
+    private Integer pageNum;
+
+    @ApiModelProperty(value = "页码大小",position = 3)
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "模块类型",position = 4)
+    private Integer type;
+
+    @ApiModelProperty(value = "时间类型 0七天内预警",position = 5)
+    private Integer timeType;
+}

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

@@ -0,0 +1,16 @@
+package vip.xiaonuo.write.service;
+
+import vip.xiaonuo.write.entity.WriteIndex;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 通用预警指标管理 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+public interface IWriteIndexService extends IService<WriteIndex> {
+
+}

+ 31 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/service/IWriteProductService.java

@@ -0,0 +1,31 @@
+package vip.xiaonuo.write.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.production.param.ProductionPageParam;
+import vip.xiaonuo.quality.entity.QualityWrite;
+import vip.xiaonuo.quality.param.QualityWriteAddParam;
+import vip.xiaonuo.write.entity.WriteProduct;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.write.param.WriteProductAddParam;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 成品检验台账填报 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-02
+ */
+public interface IWriteProductService extends IService<WriteProduct> {
+
+    CommonResult add(WriteProductAddParam addParam);
+
+    CommonResult edit(WriteProduct writeProduct);
+
+    CommonResult delete(Map<String, String> paramsMap);
+
+    Page<WriteProduct> page(ProductionPageParam pageParam);
+}

+ 32 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/service/IWriteThresholdService.java

@@ -0,0 +1,32 @@
+package vip.xiaonuo.write.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.production.entity.ProductionWriteRate;
+import vip.xiaonuo.production.param.ProductionPageParam;
+import vip.xiaonuo.write.entity.WriteThreshold;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.write.param.WriteThresholdAddParam;
+import vip.xiaonuo.write.param.WriteThresholdPageParam;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 通用预警阈值 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+public interface IWriteThresholdService extends IService<WriteThreshold> {
+
+    CommonResult add(WriteThresholdAddParam addParam);
+
+    CommonResult edit(WriteThreshold threshold);
+
+    CommonResult delete(Map<String, String> paramsMap);
+
+    Page<WriteThreshold> page(WriteThresholdPageParam pageParam);
+
+}

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

@@ -0,0 +1,20 @@
+package vip.xiaonuo.write.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import vip.xiaonuo.write.entity.WriteWarning;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.write.param.WriteWarningPageParam;
+
+/**
+ * <p>
+ * 通用预警列表 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+public interface IWriteWarningService extends IService<WriteWarning> {
+
+    Page<WriteWarning> page(WriteWarningPageParam pageParam);
+
+}

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

@@ -0,0 +1,20 @@
+package vip.xiaonuo.write.service.impl;
+
+import vip.xiaonuo.write.entity.WriteIndex;
+import vip.xiaonuo.write.mapper.WriteIndexMapper;
+import vip.xiaonuo.write.service.IWriteIndexService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 通用预警指标管理 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@Service
+public class WriteIndexServiceImpl extends ServiceImpl<WriteIndexMapper, WriteIndex> implements IWriteIndexService {
+
+}

+ 65 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/service/impl/WriteProductServiceImpl.java

@@ -0,0 +1,65 @@
+package vip.xiaonuo.write.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.production.param.ProductionPageParam;
+import vip.xiaonuo.quality.entity.QualityWrite;
+import vip.xiaonuo.write.entity.WriteProduct;
+import vip.xiaonuo.write.mapper.WriteProductMapper;
+import vip.xiaonuo.write.param.WriteProductAddParam;
+import vip.xiaonuo.write.service.IWriteProductService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 成品检验台账填报 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-02
+ */
+@Service
+public class WriteProductServiceImpl extends ServiceImpl<WriteProductMapper, WriteProduct> implements IWriteProductService {
+
+    @Autowired
+    private WriteProductMapper productMapper;
+
+    @Override
+    public CommonResult add(WriteProductAddParam addParam) {
+        WriteProduct writeProduct = new WriteProduct();
+        BeanUtil.copyProperties(addParam, writeProduct);
+        productMapper.insert(writeProduct);
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult edit(WriteProduct writeProduct) {
+        productMapper.updateById(writeProduct);
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult delete(Map<String, String> paramsMap) {
+        String id = paramsMap.get("id");
+        productMapper.deleteById(id);
+        return CommonResult.ok();
+    }
+
+    @Override
+    public Page<WriteProduct> page(ProductionPageParam pageParam) {
+        Integer pageSize = pageParam.getPageSize();
+        Integer pageNum = pageParam.getPageNum();
+        String orgId = pageParam.getOrgId();
+        QueryWrapper<WriteProduct> queryWrapper = new QueryWrapper();
+        Page<WriteProduct> page = new Page<>(pageNum, pageSize);
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        return productMapper.selectPage(page, queryWrapper);
+    }
+}

+ 65 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/service/impl/WriteThresholdServiceImpl.java

@@ -0,0 +1,65 @@
+package vip.xiaonuo.write.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.production.entity.ProductionWriteRate;
+import vip.xiaonuo.write.entity.WriteThreshold;
+import vip.xiaonuo.write.mapper.WriteThresholdMapper;
+import vip.xiaonuo.write.param.WriteThresholdAddParam;
+import vip.xiaonuo.write.param.WriteThresholdPageParam;
+import vip.xiaonuo.write.service.IWriteThresholdService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 通用预警阈值 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@Service
+public class WriteThresholdServiceImpl extends ServiceImpl<WriteThresholdMapper, WriteThreshold> implements IWriteThresholdService {
+
+    @Autowired
+    private WriteThresholdMapper thresholdMapper;
+
+    @Override
+    public CommonResult add(WriteThresholdAddParam addParam) {
+        WriteThreshold threshold = new WriteThreshold();
+        BeanUtil.copyProperties(addParam, threshold);
+        thresholdMapper.insert(threshold);
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult edit(WriteThreshold threshold) {
+        thresholdMapper.updateById(threshold);
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult delete(Map<String, String> paramsMap) {
+        String id = paramsMap.get("id");
+        thresholdMapper.deleteById(id);
+        return CommonResult.ok();
+    }
+
+    @Override
+    public Page<WriteThreshold> page(WriteThresholdPageParam pageParam) {
+        Integer pageSize = pageParam.getPageSize();
+        Integer pageNum = pageParam.getPageNum();
+        String orgId = pageParam.getOrgId();
+        QueryWrapper<WriteThreshold> queryWrapper = new QueryWrapper();
+        Page<WriteThreshold> page = new Page<>(pageNum, pageSize);
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        return thresholdMapper.selectPage(page, queryWrapper);
+    }
+}

+ 49 - 0
huimv-farm/src/main/java/vip/xiaonuo/write/service/impl/WriteWarningServiceImpl.java

@@ -0,0 +1,49 @@
+package vip.xiaonuo.write.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import vip.xiaonuo.write.entity.WriteWarning;
+import vip.xiaonuo.write.mapper.WriteWarningMapper;
+import vip.xiaonuo.write.param.WriteWarningPageParam;
+import vip.xiaonuo.write.service.IWriteWarningService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Calendar;
+
+/**
+ * <p>
+ * 通用预警列表 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2025-03-01
+ */
+@Service
+public class WriteWarningServiceImpl extends ServiceImpl<WriteWarningMapper, WriteWarning> implements IWriteWarningService {
+
+    @Autowired
+    private WriteWarningMapper warningMapper;
+
+    @Override
+    public Page<WriteWarning> page(WriteWarningPageParam pageParam) {
+        String orgId = pageParam.getOrgId();
+        Integer timeType = pageParam.getTimeType();
+        Integer type = pageParam.getType();
+        Integer pageNum = pageParam.getPageNum();
+        Integer pageSize = pageParam.getPageSize();
+
+        Page<WriteWarning> page = new Page<>(pageNum,pageSize);
+        QueryWrapper<WriteWarning> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
+        queryWrapper.eq( "type", type);
+        if (0 == timeType) {
+            Calendar calendar = Calendar.getInstance();
+            calendar.set(Calendar.DAY_OF_MONTH, -7);
+            queryWrapper.ge("warningDate", calendar.getTime());
+        }
+        return warningMapper.selectPage(page, queryWrapper);
+    }
+}

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

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

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

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

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

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

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

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

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

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

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

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

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

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