瀏覽代碼

甬台温材料开工报告相关bug

chenr 6 月之前
父節點
當前提交
a4dab2ca93

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/InformationQueryVO.java

@@ -73,6 +73,9 @@ public class InformationQueryVO extends InformationQuery {
     @ApiModelProperty("上报批次")
     private String reportNumber;
 
+    @ApiModelProperty("内页资料类型")
+    private Integer majorDateType;
+
     @ApiModelProperty("任务人")
     private List<WaitingUser> waitingUserList;
 

+ 13 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -63,6 +63,7 @@ import org.springblade.system.user.feign.IUserClient;
 import org.springframework.beans.BeanUtils;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.SingleColumnRowMapper;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
@@ -932,6 +933,18 @@ public class TaskController extends BladeController {
         }
     }
 
+    @GetMapping("/query-major-data-type")
+    @ApiOperationSupport(order = 7)
+    @ApiOperation(value = "获取当前合同段的内页资料类型")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "projectId", value = "项目ID", required = true),
+        @ApiImplicitParam(name = "contractId", value = "合同段ID", required = true)
+    })
+    public R<List<Integer>>queryMajorDataType(String contractId){
+       String sql="SELECT DISTINCT major_data_type FROM m_wbs_tree_contract WHERE contract_id = "+contractId+" AND is_deleted=0 And major_data_type IS NOT NULL";
+        return R.data(jdbcTemplate.query(sql, new SingleColumnRowMapper<>(Integer.class)));
+    }
+
 
     /**
      * 获取任务类型或任务状态

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorFormat.java

@@ -50,6 +50,9 @@ public class ExecutorFormat extends FormulaExecutor {
         for(FormData fd:tec.formDataList){
             if(fd.verify()){
                 Formula f = fd.getFormula();
+                if(fd.getCode().equals("m_20240222101754_1760489057181237248:key_1")){
+                    f.setScale(2);
+                }
                 if(f!=null){
                     if(!fd.empty()&&fd.getValues().stream().map(ElementData::getValue).anyMatch(StringUtils::isNumber)) {
                         /*保留小数位*/

+ 5 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -867,7 +867,11 @@ public class ExecutorMeter extends FormulaExecutor {
                             ma.setUnit(e.getUnit());
                             ma.setQuantity(e.getMeterAmount());
                             ma.setPrice(e.getPrice());
-                            ma.setAmount(StringUtils.number2String(multiFc.apply(e.getMeterAmount(),e.getPrice()),0));
+                            if(ObjectUtil.isNotEmpty(e.getSum())){
+                                ma.setAmount(e.getSum());
+                            }else {
+                                ma.setAmount(StringUtils.number2String(multiFc.apply(e.getMeterAmount(),e.getPrice()),0));
+                            }
                             ma.setTotal(StringUtils.number2String(divideFc.apply(multiFc.apply(ma.getAmount(),ratio),"100"),0));
                             ma.setSource(e.getSource());
                             /*发票*/

+ 56 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/InterimPayCertificateController.java

@@ -30,6 +30,8 @@ import org.springblade.meter.entity.InterimPayCertificateItem;
 import org.springblade.meter.service.IContractMeterPeriodService;
 import org.springblade.meter.vo.InterimPayCertificateVO;
 import org.springframework.context.annotation.Lazy;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -37,6 +39,8 @@ import org.springblade.meter.entity.InterimPayCertificate;
 import org.springblade.meter.service.IInterimPayCertificateService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.util.List;
+
 /**
  * 中期支付证书 控制器
  *
@@ -55,8 +59,9 @@ public class InterimPayCertificateController extends BladeController {
 	private final IInterimPayCertificateService interimPayCertificateService;
 
 	private final IContractMeterPeriodService contractMeterPeriodService;
+    private final JdbcTemplate jdbcTemplate;
 
-	/**
+    /**
 	 * 新增 中期支付证书
 	 */
 	@PostMapping("/add")
@@ -95,6 +100,56 @@ public class InterimPayCertificateController extends BladeController {
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "修改", notes = "传入interimPayCertificate,只需要传入和新增时相同的参数")
 	public R update(@Valid @RequestBody InterimPayCertificate interimPayCertificate) {
+        if (interimPayCertificate.getMaterialPeriodIds()!=null) {
+            String ids=interimPayCertificate.getMaterialPeriodIds();
+            if(interimPayCertificate.getMaterialPeriodIds().startsWith(",")){
+                ids=ids.substring(1);
+                interimPayCertificate.setMaterialPeriodIds(ids);
+            }
+                if(ids!=null&&!ids.equals("")){
+                    String s="SELECT * FROM s_interim_pay_certificate WHERE contract_id="+interimPayCertificate.getContractId()+" and is_deleted=0";
+                    List<InterimPayCertificate> query = jdbcTemplate.query(s, new BeanPropertyRowMapper<>(InterimPayCertificate.class));
+                   if(query.size()>0){
+                       String[] id = ids.split(",");
+                       for (InterimPayCertificate certificate : query) {
+                           for (String string : id) {
+                               if(certificate.getMaterialPeriodIds()!=null&&certificate.getMaterialPeriodIds().contains(string)){
+                                   if(!certificate.getId().equals(interimPayCertificate.getId())){
+                                       String sql="Select period_name from s_meter_period where id ="+string;
+                                       String s1 = jdbcTemplate.queryForObject(sql, String.class);
+                                       return  R.fail("“"+s1+"”已被“中间计量第"+certificate.getPeriodNumber()+"期”关联"+"“不允许重复关联”");
+                                   }
+                               }
+                           }
+                       }
+                   }
+                }
+        }
+        if(interimPayCertificate.getStartPeriodIds()!=null){
+            String ids=interimPayCertificate.getStartPeriodIds();
+            if(interimPayCertificate.getStartPeriodIds().startsWith(",")){
+                ids=ids.substring(1);
+                interimPayCertificate.setStartPeriodIds(ids);
+            }
+              if(ids!=null&&!ids.equals("")){
+                 String s="SELECT * FROM s_interim_pay_certificate WHERE contract_id="+interimPayCertificate.getContractId()+" and is_deleted=0";
+                 List<InterimPayCertificate> query = jdbcTemplate.query(s, new BeanPropertyRowMapper<>(InterimPayCertificate.class));
+                 if(query.size()>0){
+                    String[] id = ids.split(",");
+                      for (InterimPayCertificate certificate : query) {
+                          for (String string : id) {
+                            if(certificate.getMaterialPeriodIds()!=null&&certificate.getStartPeriodIds().contains(string)){
+                                if(!certificate.getId().equals(interimPayCertificate.getId())){
+                                    String sql="Select period_name from s_meter_period where id ="+string;
+                                    String s1 = jdbcTemplate.queryForObject(sql, String.class);
+                                    return  R.fail("“"+s1+"”已被“中间计量第"+certificate.getPeriodNumber()+"期”关联"+"“不允许重复关联”");
+                                }
+                            }
+                          }
+                      }
+                 }
+              }
+        }
 		//获取期数信息
 		if(interimPayCertificate!=null && interimPayCertificate.getContractPeriodId()!=null){
 			ContractMeterPeriod contractMeterPeriod = contractMeterPeriodService.getById(interimPayCertificate.getContractPeriodId());

+ 66 - 28
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -87,6 +87,7 @@ import org.springblade.websocket.feign.WebSocketClient;
 import org.springblade.websocket.vo.UserInfoVO;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.SingleColumnRowMapper;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
@@ -204,7 +205,7 @@ public class TaskController extends BladeController {
                     }
                 }
             }
-             bigDecimal = middleMeterApplyTaskMapper.selectSubmitApprovalMoney(Long.valueOf(contractId), Long.valueOf(id));
+             bigDecimal = middleMeterApplyTaskMapper.selectAllMoney(Long.valueOf(contractId), Long.valueOf(id));
         }
         Map<String,Object> map=new HashMap<>();
         map.put("name",name);
@@ -332,37 +333,45 @@ public class TaskController extends BladeController {
                     Long id = this.updateStatement(Long.valueOf(approvalDTO.getPeriodId()), 1, 1);
                     //修改报表项
                     if(ObjectUtil.isNotEmpty(id)){
-                        InterimPayCertificateItem item = new InterimPayCertificateItem();
-                        item.setId(SnowFlakeUtil.getId());
-                        item.setCertificateId(id);
-                        item.setChapterSeq("施工单位送审金额");
-                        item.setCurrentPeriodPay(approvalDTO.getSubmitApprovalMoney()+"");
-                        String sql="Select * from s_contract_meter_period where contract_id="+approvalDTO.getContractId()+" and is_deleted=0"+" order by start_date";
-                        List<ContractMeterPeriod> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ContractMeterPeriod.class));
-                        if (list.size()>0) {
-                            //上期末施工单位金额
-                            BigDecimal shangqimo=BigDecimal.ZERO;
-                            OptionalInt index= IntStream.range(0, list.size())
-                                .filter(i -> list.get(i).getId().equals(approvalDTO.getPeriodId()))
-                                .findFirst();
-                            if(index.isPresent()){
-                                int j = index.getAsInt();
-                                //j>0表示前面有数据
-                                if(j>0){
-                                    //上一期的到本期末
-                                    BigDecimal  bigDecimal = middleMeterApplyTaskMapper.selectSubmitApprovalMoneyPre(approvalDTO.getContractId(), list.get(j - 1).getId());
-                                    if(ObjectUtil.isNotEmpty(bigDecimal)){
-                                        shangqimo=shangqimo.add(bigDecimal);
+                        Boolean flag=false;
+                        InterimPayCertificateItem item = interimPayCertificateItemService.selectItem("施工单位送审金额",id);
+                           if(item.getId()==null){
+                               item.setId(SnowFlakeUtil.getId());
+                               flag=true;
+                           }
+                            item.setCertificateId(id);
+                            item.setChapterSeq("施工单位送审金额");
+                            item.setCurrentPeriodPay(approvalDTO.getSubmitApprovalMoney()+"");
+                            String sql="Select * from s_contract_meter_period where contract_id="+approvalDTO.getContractId()+" and is_deleted=0"+" order by start_date";
+                            List<ContractMeterPeriod> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ContractMeterPeriod.class));
+                            if (list.size()>0) {
+                                //上期末施工单位金额
+                                BigDecimal shangqimo=BigDecimal.ZERO;
+                                OptionalInt index= IntStream.range(0, list.size())
+                                    .filter(i -> list.get(i).getId().equals(approvalDTO.getPeriodId()))
+                                    .findFirst();
+                                if(index.isPresent()){
+                                    int j = index.getAsInt();
+                                    //j>0表示前面有数据
+                                    if(j>0){
+                                        //上一期的到本期末
+                                        BigDecimal  bigDecimal = middleMeterApplyTaskMapper.selectSubmitApprovalMoneyPre(approvalDTO.getContractId(), list.get(j - 1).getId());
+                                        if(ObjectUtil.isNotEmpty(bigDecimal)){
+                                            shangqimo=shangqimo.add(bigDecimal);
+                                        }
                                     }
                                 }
+                                if(shangqimo.compareTo(BigDecimal.ZERO)!=0){
+                                    item.setPreviousPeriodEndPay(shangqimo+"");
+                                }
+                                item.setCurrentPeriodEndPay(shangqimo.add(approvalDTO.getSubmitApprovalMoney())+"");
                             }
-                            if(shangqimo.compareTo(BigDecimal.ZERO)!=0){
-                                item.setPreviousPeriodEndPay(shangqimo+"");
+                            item.setSort(24);
+                            if(flag){
+                                interimPayCertificateItemService.save(item);
+                            }else {
+                                interimPayCertificateItemService.updateById(item);
                             }
-                            item.setCurrentPeriodEndPay(shangqimo.add(approvalDTO.getSubmitApprovalMoney())+"");
-                        }
-                        item.setSort(24);
-                        interimPayCertificateItemService.saveOrUpdate(item);
                     }
                     return R.data(200, aopParamsSet, "操作成功");
                 }
@@ -3619,6 +3628,7 @@ public class TaskController extends BladeController {
         } else if (task.getMeterTaskType().equals(2)) {
             List<MaterialMeterFormTask> materialMeterFormTasks = materialMeterFormServiceTask.getBaseMapper().selectList(Wrappers.<MaterialMeterFormTask>lambdaQuery().eq(MaterialMeterFormTask::getMeterPeriodId, task.getFormDataId()).eq(MaterialMeterFormTask::getTaskId, dto.getTaskId()));
             fileIds = materialMeterFormTasks.stream().map(l -> l.getId()).collect(Collectors.toList());
+            List<MaterialMeterForm> forms = jdbcTemplate.query("Select * from s_material_meter_form WHERE meter_period_id = " + task.getFormDataId(), new BeanPropertyRowMapper<>(MaterialMeterForm.class));
             jdbcTemplate.execute("DELETE FROM s_material_meter_form WHERE meter_period_id = " + task.getFormDataId());
 
             List<MaterialMeterForm> materialMeterForms = BeanUtil.copyProperties(materialMeterFormTasks, MaterialMeterForm.class);
@@ -3627,6 +3637,14 @@ public class TaskController extends BladeController {
                     form.setApproveStatus(3);
                 }
             }
+            for (MaterialMeterForm form : forms) {
+                for (MaterialMeterForm meterForm : materialMeterForms) {
+                    if(meterForm.getId()==form.getId()){
+                        meterForm.setPrice(form.getPrice());
+                        break;
+                    }
+                }
+            }
             materialMeterFormService.saveBatch(materialMeterForms, 1000);
 
             /*材料计量期状态修改=已审批*/
@@ -3763,6 +3781,26 @@ public class TaskController extends BladeController {
             if (list.size() > 1){
                 return R.fail("撤销失败:当前计量期查询出多条任务,请联系管理员");
             }
+            if(type==1){
+                String slectMaterialStart="Select * from s_interim_pay_certificate where  is_deleted=0 and material_period_ids like '%"+periodId+"%'";
+                List<InterimPayCertificate> query = jdbcTemplate.query(slectMaterialStart, new BeanPropertyRowMapper<>(InterimPayCertificate.class));
+                if(query.size()>0){
+                    InterimPayCertificate cate = query.get(0);
+                    if(cate.getMaterialPeriodIds()!=null&&!cate.getMaterialPeriodIds().equals("")){
+                        return R.fail("当前材料期已被“中间计量第"+cate.getPeriodNumber()+"期”关联,请先取消关联后撤回");
+                    }
+                }
+            }
+            if(type==2){
+                String slectMaterialStart1="Select * from s_interim_pay_certificate where  is_deleted=0 and start_period_ids like '%"+periodId+"%'";
+                List<InterimPayCertificate> query1 = jdbcTemplate.query(slectMaterialStart1, new BeanPropertyRowMapper<>(InterimPayCertificate.class));
+                if(query1.size()>0){
+                    InterimPayCertificate cate = query1.get(0);
+                    if(cate.getStartPeriodIds()!=null&&!cate.getStartPeriodIds().equals("")){
+                        return R.fail("当前开工预付期已被“中间计量第"+cate.getPeriodNumber()+"期”关联,请先取消关联后撤回");
+                    }
+                }
+            }
             Task task = list.get(0);
             String deleteMapTask1 = null;
             String deleteMapTask2 = null;

+ 2 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IInterimPayCertificateItemService.java

@@ -11,4 +11,6 @@ public interface IInterimPayCertificateItemService extends BaseService<InterimPa
     void addInterimPayCertificateItem(Long certificateId, List<MonthlyReportVo> values);
 
     void updateInterimPayCertificateItem(List<InterimPayCertificateItem> list4);
+
+    InterimPayCertificateItem selectItem(String cts, Long id);
 }

+ 10 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InterimPayCertificateItemServiceImpl.java

@@ -1,5 +1,6 @@
 package org.springblade.meter.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import io.swagger.annotations.ApiModelProperty;
 import org.springblade.common.utils.SnowFlakeUtil;
@@ -55,4 +56,13 @@ public class InterimPayCertificateItemServiceImpl extends BaseServiceImpl<Interi
             updateBatchById(list4);
         }
     }
+
+    @Override
+    public InterimPayCertificateItem selectItem(String cts, Long id) {
+        QueryWrapper wrapper=new QueryWrapper();
+        wrapper.eq("chapter_seq",cts);
+        wrapper.eq("certificate_id",id);
+        InterimPayCertificateItem item = baseMapper.selectOne(wrapper);
+        return item==null?new InterimPayCertificateItem():item;
+    }
 }

+ 8 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InterimPayCertificateServiceImpl.java

@@ -134,6 +134,14 @@ public class InterimPayCertificateServiceImpl extends BaseServiceImpl<InterimPay
         InterimPayCertificateVO vo = baseMapper.getById(id);
         //设置支付项集合
         List<InterimPayCertificateItem> items = this.interimPayCertificateItemService.list(Wrappers.<InterimPayCertificateItem>lambdaQuery().eq(InterimPayCertificateItem::getCertificateId,id).eq(InterimPayCertificateItem::getIsDeleted,0).orderByAsc(InterimPayCertificateItem::getSort));
+        if(vo.getMaterialPeriodIds()==null||vo.getMaterialPeriodIds().equals("")){
+            for (InterimPayCertificateItem item : items) {
+                if(item.getChapterSeq().equals("材料预付款")){
+                    item.setCurrentPeriodPay("");
+                    break;
+                }
+            }
+        }
         vo.setPayList(items);
         return vo;
     }