qianxb 1 жил өмнө
parent
commit
39bc702742

+ 5 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MaterialStartStatement.java

@@ -54,6 +54,11 @@ public class MaterialStartStatement extends BaseEntity {
      */
     @ApiModelProperty(value = "计量期id,s_meter_period")
     private Long meterPeriodId;
+    /**
+     * 计量期编号
+     */
+    @ApiModelProperty(value = "计量期编号")
+    private String periodNumber;
     /**
      * 1材料2开工
      */

+ 3 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/StartPayMeterFormVO.java

@@ -35,6 +35,9 @@ import java.util.List;
 public class StartPayMeterFormVO extends StartPayMeterForm {
 	private static final long serialVersionUID = 1L;
 
+	@ApiModelProperty(value = "期号")
+	private String periodNumber;
+
 	@ApiModelProperty(value = "审批状态名称")
 	private String approveStatusName;
 

+ 57 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ZeroChangeVO.java

@@ -0,0 +1,57 @@
+package org.springblade.meter.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @Param   零号变更视图类
+ * @Author wangwl
+ * @Date 2023/12/7 14:21
+ **/
+@Data
+public class ZeroChangeVO {
+
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "清单编号")
+    private String formNumber;
+
+    @ApiModelProperty(value = "清单名称")
+    private String formName;
+
+    @ApiModelProperty(value = "当前单价")
+    private BigDecimal currentPrice;
+
+    @ApiModelProperty(value = "合同数量")
+    private Integer contractTotal;
+
+    @ApiModelProperty(value = "合同金额")
+    private BigDecimal contractMoney;
+
+    @ApiModelProperty(value = "生成变更时划分数量")
+    private Integer buildChangeTotal;
+
+    @ApiModelProperty(value = "现划分数量")
+    private Integer currentChangeTotal;
+
+    @ApiModelProperty(value = "修正量")
+    private Integer updateTotal;
+
+    @ApiModelProperty(value = "修正金额")
+    private BigDecimal updateMoney;
+
+    @ApiModelProperty(value = "核实量")
+    private Integer verifyTotal;
+
+    @ApiModelProperty(value = "核实金额")
+    private BigDecimal verifyMoney;
+
+    @ApiModelProperty(value = "状态")
+    private Integer statusName;
+
+}

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskBatchMapper.xml

@@ -26,7 +26,7 @@
     </delete>
 
     <select id="queryDataInfo" resultMap="taskBatchResultMap">
-        SELECT * from u_task_batch where is_deleted not in(2,4) LIMIT 100
+--         SELECT * from u_task_batch where is_deleted not in(2,4) LIMIT 100
     </select>
 
 </mapper>

+ 34 - 4
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ChangeTokenFormController.java

@@ -16,9 +16,7 @@
  */
 package org.springblade.meter.controller;
 
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
@@ -27,6 +25,7 @@ import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.meter.vo.ZeroChangeVO;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -34,6 +33,8 @@ import org.springblade.meter.entity.ChangeTokenForm;
 import org.springblade.meter.service.IChangeTokenFormService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.util.List;
+
 /**
  * 变更令表 控制器
  *
@@ -43,11 +44,40 @@ import org.springblade.core.boot.ctrl.BladeController;
 @RestController
 @AllArgsConstructor
 @RequestMapping("/changeTokenForm")
-@Api(value = "变更令表", tags = "变更令表接口")
+@Api(value = "变更管理", tags = "变更管理接口")
 public class ChangeTokenFormController extends BladeController {
 
 	private final IChangeTokenFormService changeTokenFormService;
 
+	/**
+	 * 一键生成零号变更
+	 */
+	@GetMapping("/buildZeroChange")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "一键生成零号变更", notes = "传入合同段id")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "contractId", value = "合同id", required = true)
+	})
+	public R buildZeroChange(Long contractId) {
+		changeTokenFormService.buildZeroChange(contractId);
+		return R.success("生成成功");
+	}
+
+	/**
+	 * 获取零号变更
+	 */
+	@GetMapping("/getZeroChange")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "获取节点下的零号变更", notes = "传入合同段id,节点id")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "contractId", value = "合同id", required = true),
+			@ApiImplicitParam(name = "nodeId", value = "节点id", required = true)
+	})
+	public R<List<ZeroChangeVO>> getZeroChange(Long contractId, Long nodeId) {
+		List<ZeroChangeVO> vos = changeTokenFormService.getZeroChange(contractId,nodeId);
+		return R.data(vos);
+	}
+
 	/**
 	 * 详情
 	 */

+ 8 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenFormMapper.java

@@ -16,8 +16,13 @@
  */
 package org.springblade.meter.mapper;
 
+import org.apache.ibatis.annotations.Param;
 import org.springblade.meter.entity.ChangeTokenForm;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.entity.ContractInventoryForm;
+import org.springblade.meter.vo.ZeroChangeVO;
+
+import java.util.List;
 
 /**
  * 变更令表 Mapper 接口
@@ -28,4 +33,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 public interface ChangeTokenFormMapper extends BaseMapper<ChangeTokenForm> {
 
 
+    List<ContractInventoryForm> getAllForm(@Param("contractId") Long contractId);
+
+    List<ZeroChangeVO> getZeroChange(@Param("contractId") Long contractId,@Param("nodeId") Long nodeId);
 }

+ 22 - 2
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenFormMapper.xml

@@ -30,8 +30,28 @@
         <result column="approve_status" property="approveStatus"/>
         <result column="command_status" property="commandStatus"/>
     </resultMap>
-
-
+    <select id="getAllForm" resultType="org.springblade.meter.entity.ContractInventoryForm">
+        select cif.id,
+               IFNULL((select sum(build_picture_total) from s_inventory_form_meter ifm
+                where ifm.contract_id = #{contractId} and ifm.is_deleted = 0 and ifm.contract_form_id = cif.id),0) as build_change_total
+        from s_contract_inventory_form cif
+        where contract_id = #{contractId} and is_deleted = 0 and is_form_node = 1
+    </select>
+    <select id="getZeroChange" resultType="org.springblade.meter.vo.ZeroChangeVO">
+        select id,form_number,form_name,current_price,contract_total,contract_money,
+               build_change_total,
+               IFNULL((select sum(build_picture_total) from s_inventory_form_meter ifm
+                       where ifm.contract_id = #{contractId} and ifm.is_deleted = 0 and ifm.contract_form_id = cif.id),0) as currentChangeTotal
+        from s_contract_inventory_form cif
+        where contract_id = #{contractId} and is_deleted = 0 and is_form_node = 1
+          and id in(SELECT contract_form_id FROM s_inventory_form_meter
+                        WHERE contract_id = #{contractId} and is_deleted = 0
+                        and contract_meter_id in ( SELECT id FROM s_meter_tree_contract mtc WHERE contract_id = #{contractId} and is_deleted = 0
+                                    and (mtc.id = #{nodeId} or FIND_IN_SET(#{nodeId}, ancestor) > 0)
+                                                    )
+                        GROUP BY contract_form_id
+              )
+    </select>
 
 
 </mapper>

+ 1 - 3
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialStartStatementMapper.xml

@@ -24,9 +24,7 @@
         <result column="sort" property="sort"/>
     </resultMap>
     <select id="page2" resultType="org.springblade.meter.entity.MaterialStartStatement">
-        select id,meter_period_id,statement_name,repayment_cause,
-               (select period_name from s_meter_period smp where smp.id = mss.statement_period) as statement_period,
-               (select form_print_date from s_meter_period smp where smp.id = mss.statement_period) as print_date
+        select *
         from s_material_start_statement mss
         where contract_id = #{statement.contractId} and type = #{statement.type} and is_deleted = 0
         order by sort

+ 5 - 3
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/StartPayMeterFormMapper.xml

@@ -24,17 +24,19 @@
     </resultMap>
     <select id="meterPage" resultType="org.springblade.meter.vo.StartPayMeterFormVO">
         select *,
+               (select period_number from s_meter_period smp where smp.id = spmf.meter_period_id) as periodNumber,
             CASE when approve_status = 0 then '未上报' when approve_status = 1 then '待审批' when approve_status = 2 then '已审批'
             else '已废除' end as approveStatusName
-        from s_start_pay_meter_form
+        from s_start_pay_meter_form spmf
         where contract_id = #{contractId} and is_deleted = 0
         <if test="meterPeriodId!=null and meterPeriodId!=''">
             and meter_period_id = #{meterPeriodId}
         </if>
     </select>
     <select id="detail" resultType="org.springblade.meter.vo.StartPayMeterFormVO">
-        select *
-        from s_start_pay_meter_form
+        select *,
+               (select period_number from s_meter_period smp where smp.id = spmf.meter_period_id) as periodNumber
+        from s_start_pay_meter_form spmf
         where id = #{id}
     </select>
 

+ 12 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IChangeTokenFormService.java

@@ -18,6 +18,9 @@ package org.springblade.meter.service;
 
 import org.springblade.meter.entity.ChangeTokenForm;
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.meter.vo.ZeroChangeVO;
+
+import java.util.List;
 
 /**
  * 变更令表 服务类
@@ -28,4 +31,13 @@ import org.springblade.core.mp.base.BaseService;
 public interface IChangeTokenFormService extends BaseService<ChangeTokenForm> {
 
 
+    /**
+     * 一键生成零号变更
+     */
+    void buildZeroChange(Long contractId);
+
+    /**
+     * 获取零号变更
+     */
+    List<ZeroChangeVO> getZeroChange(Long contractId, Long nodeId);
 }

+ 47 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ChangeTokenFormServiceImpl.java

@@ -16,12 +16,20 @@
  */
 package org.springblade.meter.service.impl;
 
+import lombok.AllArgsConstructor;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.meter.entity.ChangeTokenForm;
+import org.springblade.meter.entity.ContractInventoryForm;
 import org.springblade.meter.mapper.ChangeTokenFormMapper;
 import org.springblade.meter.service.IChangeTokenFormService;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.meter.service.IContractInventoryFormService;
+import org.springblade.meter.vo.ZeroChangeVO;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.util.List;
+
 /**
  * 变更令表 服务实现类
  *
@@ -29,8 +37,47 @@ import org.springframework.stereotype.Service;
  * @since 2023-11-29
  */
 @Service
+@AllArgsConstructor
 public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormMapper, ChangeTokenForm> implements IChangeTokenFormService {
 
+    private final IContractInventoryFormService contractInventoryFormService;
+
 
+    /**
+     * 一键生成零号变更  统计每个清单节点当前分解量,设置进清单的划分数量
+     */
+    @Override
+    public void buildZeroChange(Long contractId) {
+        //联表查询清单表和中间表
+        List<ContractInventoryForm> list = baseMapper.getAllForm(contractId);
+        if (list.size() == 0){
+            throw new ServiceException("生成失败,当前合同段还没有清单");
+        }
+        //修改清单表的划分数量
+        contractInventoryFormService.updateBatchById(list);
+    }
 
+    /**
+     * 获取零号变更
+     */
+    @Override
+    public List<ZeroChangeVO> getZeroChange(Long contractId, Long nodeId) {
+        //获取当前节点下所有分解的清单,还要统计当前分解量
+        List<ZeroChangeVO> vos = baseMapper.getZeroChange(contractId,nodeId);
+        if (vos.size() == 0){
+            return vos;
+        }
+        //计算修正量,核实量
+        for (ZeroChangeVO vo : vos) {
+            //修正量=现划分量—合同数量
+            vo.setUpdateTotal(vo.getCurrentChangeTotal() - vo.getContractTotal());
+            //修正金额=现行单价*修正量
+            vo.setUpdateMoney(vo.getCurrentPrice().multiply(new BigDecimal(vo.getUpdateTotal())));
+            //核实量=先划分数量
+            vo.setVerifyTotal(vo.getCurrentChangeTotal());
+            //核实金额=核实量*现行单价
+            vo.setVerifyMoney(vo.getCurrentPrice().multiply(new BigDecimal(vo.getVerifyTotal())));
+        }
+        return vos;
+    }
 }

+ 4 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MaterialMeterFormServiceImpl.java

@@ -69,6 +69,8 @@ public class MaterialMeterFormServiceImpl extends BaseServiceImpl<MaterialMeterF
         List<AttachmentForm> fileList = dto.getFileList();
         if (fileList != null && fileList.size() != 0) {
             for (AttachmentForm file : fileList) {
+                file.setProjectId(dto.getProjectId());
+                file.setContractId(dto.getContractId());
                 file.setMasterId(id);
             }
             attachmentFormService.saveBatch(fileList);
@@ -118,6 +120,8 @@ public class MaterialMeterFormServiceImpl extends BaseServiceImpl<MaterialMeterF
         List<AttachmentForm> fileList = dto.getFileList();
         if (fileList != null && fileList.size() != 0) {
             for (AttachmentForm file : fileList) {
+                file.setProjectId(dto.getProjectId());
+                file.setContractId(dto.getContractId());
                 file.setMasterId(form.getId());
             }
             attachmentFormService.saveBatch(fileList);