ソースを参照

1.支付码根据协议的状态置为失效。
2.修改docker 日志输出大小

wks 1 年間 前
コミット
1bf846e6fb

+ 2 - 0
README.md

@@ -22,7 +22,9 @@
 * 前端pc:vue-insagent-pc-prod
 
 
+```shell
 
+```
 
 
 

+ 12 - 1
docker/shell-prod.sh

@@ -32,7 +32,18 @@ function run(){
   # mypid=$(netstat -apn|grep 9001|awk '{print $7}'|cut -d/ -f1);
   # echo $mypid
   # kill -9 $mypid
-  docker run -it --name ins -p 8080:8888 -e "--spring.profiles.active=prod" -p 9999:9999 --restart=always -v /usr/local/java/insAgency:/ins --mount type=bind,source=/nasData,destination=/nasData -v /usr/local/java/insAgency/logs:/ins/logs -d ins:latest
+  docker run -it --name ins  \
+  --restart=always \
+  --log-driver json-file \
+  --log-opt max-size=100m \
+  --log-opt max-file=3 \
+  -p 8080:8888  \
+  -p 9999:9999 \
+  -e "--spring.profiles.active=prod"  \
+  -v /usr/local/java/insAgency:/ins \
+  -v /usr/local/java/insAgency/logs:/ins/logs \
+  --mount type=bind,source=/nasData,destination=/nasData \
+  -d ins:latest
 }
 
 #入口

+ 12 - 1
docker/shell-test.sh

@@ -32,7 +32,18 @@ function run(){
   # mypid=$(netstat -apn|grep 9001|awk '{print $7}'|cut -d/ -f1);
   # echo $mypid
   # kill -9 $mypid
-  docker run -it --name ins-test -p 8080:8888 -e "--spring.profiles.active=test" -p 9999:9999 --restart=always -v /usr/local/java/insAgency:/ins --mount type=bind,source=/nasData,destination=/nasData -v /usr/local/java/insAgency/logs:/ins/logs -d ins-test:latest
+  docker run -it --name ins-test \
+    --log-driver json-file \
+    --log-opt max-size=100m \
+    --log-opt max-file=3 \
+    -p 8080:8888 \
+    -e "--spring.profiles.active=test" \
+    -p 9999:9999 \
+    --restart=always \
+    -v /usr/local/java/insAgency:/ins \
+    -v /usr/local/java/insAgency/logs:/ins/logs \
+    --mount type=bind,source=/nasData,destination=/nasData \
+    -d ins-test:latest
 }
 
 #入口

+ 6 - 9
sql/Online.sql

@@ -1,10 +1,7 @@
---  2024-12-02 BY wks
-alter table sys_qy_wechat
-    drop column support_staff_url;
+--  2024-12-09 BY wks
+alter table ptl_agreement_product_costs_new
+    add valid_status tinyint  null comment '二维码有效状态';
 
-alter table sys_qy_wechat
-    add open_kf_id varchar(256) null comment '客服账号ID';
-
-alter table sys_qy_wechat
-    add open_kf_name varchar(256) null comment '客服账号名称';
---  2024-12-02 BY wks
+alter table agent.ins_area_company
+    add code_valid_status tinyint  null comment '二维码有效状态';
+--  2024-12-09 BY wks

+ 19 - 13
src/main/java/com/ydtech/modules/order/controller/QrCodeController.java

@@ -17,6 +17,7 @@ import com.ydtech.modules.order.entity.vo.QrCodeVo;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsOrderQrCodeService;
 import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.protocol.constants.ValidStatus;
 import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.service.PtlAgreementService;
 import com.ydtech.utils.StringUtils;
@@ -70,6 +71,7 @@ public class QrCodeController {
     //二维码生成地址
     @Value("${qrcode.imageSrc}")
     private String imageSrc;
+
     @Autowired
     private EsmInsCompanyService esmInsCompanyService;
 
@@ -135,19 +137,10 @@ public class QrCodeController {
     public Object index(String areaCompanyId) throws IOException {
         InsOrderQrCode insOrderQrCode = insOrderQrCodeService.getOne(areaCompanyId);
         InsAreaCompany insAreaCompany = insAreaCompanyService.getById(areaCompanyId);
-        PtlAgreement ptlAgreement = ptlAgreementService.getById(insAreaCompany.getAgreementId());
-
-        if ("0".equals(ptlAgreement.getValidStatus())) {
+        if (ValidStatus.AVS_0.getCode().equals(insAreaCompany.getCodeValidStatus())) {
             //重定向到错误页面中
-            return getModelAndView("");
-        }
-
-        LocalDateTime endDate = ptlAgreement.getEndDate();
-        // 订单创建时间在协议失效时间之后提示错误
-        if (insAreaCompany.getCreatetime().isAfter(endDate)) {
-            return getModelAndView("");
+            return getModelAndView("费用失效,请重新报价。");
         }
-
         // 根据保险公司获取二维码配置方式
         LambdaQueryWrapper<SysBarcodeConfig> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(SysBarcodeConfig::getCompanyId, insAreaCompany.getCompanyId())
@@ -174,6 +167,19 @@ public class QrCodeController {
             return getModelAndView("");
         }
 
+        PtlAgreement ptlAgreement = ptlAgreementService.getById(insAreaCompany.getAgreementId());
+        // 禁用状态
+        if (ValidStatus.AVS_0.getCode().equals(ptlAgreement.getValidStatus())) {
+            //重定向到错误页面中
+            return getModelAndView("");
+        }
+
+        LocalDateTime endDate = ptlAgreement.getEndDate();
+        // 订单创建时间在协议失效时间之后提示错误
+        if (insAreaCompany.getCreatetime().isAfter(endDate)) {
+            return getModelAndView("");
+        }
+
         if (UserConstants.CONFIG_TYPE_2.equals(configType) || UserConstants.CONFIG_TYPE_1.equals(configType)) {
             InsOrders insOrders = insOrdersService.getById(insOrderQrCode.getOrderno());
             // 获取图标
@@ -223,9 +229,9 @@ public class QrCodeController {
         //重定向到错误页面中
         ModelAndView modelAndView = new ModelAndView("qrcode_error");
         HashMap<String, Object> map = new HashMap<>();
-        if(StringUtils.isNotEmpty(message)) {
+        if (StringUtils.isNotEmpty(message)) {
             map.put("message", message);
-        }else {
+        } else {
             map.put("message", "协议已失效,请联系客服处理");
         }
         modelAndView.addAllObjects(map);

+ 8 - 0
src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java

@@ -80,6 +80,14 @@ public class InsAreaCompany implements Serializable {
      */
     @TableField(value = "reqtxt", typeHandler = FastjsonTypeHandler.class)
     private JSONObject reqtxt;
+
+    /**
+     * 二维码有效状态
+     * @see com.ydtech.modules.protocol.constants.ValidStatus
+     */
+    @TableField(value = "code_valid_status")
+    private String codeValidStatus;
+
     /**
      * 响应报文
      */

+ 24 - 0
src/main/java/com/ydtech/modules/protocol/constants/ValidStatus.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.protocol.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: 有效状态
+ * @author: wenks
+ * @date: 2024/12/9 10:18
+ **/
+@AllArgsConstructor
+@Getter
+public enum ValidStatus {
+
+    AVS_0("0", "禁用"),
+    AVS_1("1", "启用");
+
+    private final String code;
+
+    private final String description;
+
+}

+ 1 - 0
src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreement.java

@@ -152,6 +152,7 @@ public class PtlAgreement implements Serializable {
     private String moneyType;
 
     /**
+     * @see com.ydtech.modules.protocol.constants.ValidStatus
      * 有效状态
      */
     @TableField(value = "valid_status")

+ 12 - 0
src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementController.java

@@ -111,6 +111,18 @@ public class PtlNewAgreementController extends BaseController {
         return ptlAgreementProductCostsNewService.costsUpdate(agreementProductCosts) ? HttpResult.ok("更新协议费用成功") : HttpResult.error("更新协议费用失败");
     }
 
+    @ApiOperation(value = "通过id禁用费用")
+    @PostMapping("/costs/disable/{costsId}")
+    public HttpResult costsDisable(@RequestBody CostsBatchDisableVo costsBatchDisableVo, @PathVariable String costsId) {
+        return ptlAgreementProductCostsNewService.costsDisable(costsId);
+    }
+
+    @ApiOperation(value = "禁用费用")
+    @PostMapping("/costs/batchDisable")
+    public HttpResult costsBatchDisable(@RequestBody CostsBatchDisableVo costsBatchDisableVo) {
+        return ptlAgreementProductCostsNewService.costsBatchDisable(costsBatchDisableVo.getCostsIdList());
+    }
+
     @ApiOperation(value = "删除协议费用")
     @PostMapping("/costs/delete")
     public HttpResult costsDelete(String costsId){

+ 7 - 0
src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsNew.java

@@ -46,6 +46,13 @@ public class PtlAgreementProductCostsNew {
     @TableField(value = "product_name")
     private String productName;
 
+    /**
+     * @see com.ydtech.modules.protocol.constants.ValidStatus
+     */
+    @ApiModelProperty(value = "费用状态")
+    @TableField(value = "valid_status")
+    private String validStatus;
+
     @ApiModelProperty(value = "费用比例(交强)")
     @TableField(value = "jq_car_costs_proportion")
     private String jqCarCostsProportion;

+ 1 - 0
src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCosts.java

@@ -16,6 +16,7 @@ import java.util.List;
 @Data
 public class AgreementProductCosts implements Serializable {
 
+    private static final long serialVersionUID = -1397990482130505322L;
 
     @TableId(value = "id", type = IdType.AUTO)
     @ApiModelProperty(value = "费用id")

+ 11 - 0
src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductQueryVo.java

@@ -1,13 +1,17 @@
 package com.ydtech.modules.protocols.entity.vo;
 
 import com.ydtech.core.page.PageRequest;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 import java.util.List;
 
+@EqualsAndHashCode(callSuper = true)
 @Data
 public class AgreementProductQueryVo extends PageRequest {
+
     @ApiModelProperty(value = "保险公司id")
     private String companyId;
 
@@ -40,6 +44,12 @@ public class AgreementProductQueryVo extends PageRequest {
     @ApiModelProperty(value = "是否有效")
     private String isEffective;
 
+    /**
+     * @see com.ydtech.modules.protocol.constants.ValidStatus
+     */
+    @ApiModelProperty(value = "有效状态")
+    private String validStatus;
+
     @ApiModelProperty(value = "费用因子描述")
     private String desc;
 
@@ -65,4 +75,5 @@ public class AgreementProductQueryVo extends PageRequest {
     private String nowCostsId;
 
 
+
 }

+ 24 - 0
src/main/java/com/ydtech/modules/protocols/entity/vo/CostsBatchDisableVo.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.protocols.entity.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @description: 批量删除实体
+ * @author: wenks
+ * @date: 2024/12/9 11:46
+ **/
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class CostsBatchDisableVo implements Serializable {
+
+    private static final long serialVersionUID = -5901195362841683700L;
+
+    private List<String> costsIdList;
+
+}

+ 37 - 6
src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewService.java

@@ -2,6 +2,7 @@ package com.ydtech.modules.protocols.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.vo.SysChannelGroupPageVo;
 import com.ydtech.modules.order.entity.vo.FeeOrderNewRecordVo;
 import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
@@ -14,14 +15,15 @@ import java.util.List;
 import java.util.Map;
 
 /**
-*@author: tz
-*@description: 协议承保规则属性 service
-*@create: 2024-2-22 15:44:29
-*/
+ * @author: tz
+ * @description: 协议承保规则属性 service
+ * @create: 2024-2-22 15:44:29
+ */
 public interface PtlAgreementProductCostsNewService extends IService<PtlAgreementProductCostsNew> {
 
     /**
      * 获取协议费用列表
+     *
      * @param page
      * @param agreementProductQueryVo
      * @return
@@ -32,6 +34,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 获取协议费用列表(用于分组费用关联)
+     *
      * @param page
      * @param sysChannelGroupPageVo
      * @return
@@ -40,6 +43,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 获取协议费用
+     *
      * @param costsId
      * @return
      */
@@ -48,10 +52,11 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
     List<AgreementProductCosts> costsGetList(String agreementId);
 
 
-    List<AgreementProductCosts> costsGetList(String agreementId,String productId);
+    List<AgreementProductCosts> costsGetList(String agreementId, String productId);
 
     /**
      * 添加协议费用
+     *
      * @param agreementProductCostsList
      * @return
      */
@@ -59,6 +64,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 更新协议费用
+     *
      * @param agreementProductCosts
      * @return
      */
@@ -66,6 +72,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 删除协议费用
+     *
      * @param costsId
      * @return
      */
@@ -73,6 +80,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 删除协议费用
+     *
      * @param ids
      * @return
      */
@@ -80,6 +88,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 复制协议费用
+     *
      * @param agreementProductCostsCopyVo
      * @return
      */
@@ -89,6 +98,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 费用审核
+     *
      * @param costsAuditVo
      * @return
      */
@@ -96,6 +106,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 费用批量审核
+     *
      * @param costsAuditVo
      * @return
      */
@@ -103,6 +114,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 费用批量更改费用起止期
+     *
      * @param agreementProductCostsVo
      * @return
      */
@@ -110,6 +122,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 费用批量更改费用
+     *
      * @param agreementProductCostsVo
      * @return
      */
@@ -117,6 +130,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 调整费用
+     *
      * @param feeOrderNewRecordVo
      * @return
      */
@@ -126,10 +140,27 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 获取现询费用
+     *
      * @param inquiryNowFeeQueryVo
      * @return
      */
     List<PtlAgreementProductCostsNew> getInquiryNowFee(InquiryNowFeeQueryVo inquiryNowFeeQueryVo);
 
-    PtlAgreementProductCostsNew getNoInquiryNowFee(String agreementId,String productCode);
+    PtlAgreementProductCostsNew getNoInquiryNowFee(String agreementId, String productCode);
+
+    /**
+     * 批量禁用协议
+     *
+     * @param costsIdList 协议列表
+     * @return
+     */
+    HttpResult costsBatchDisable(List<String> costsIdList);
+
+    /**
+     * 通过费用id禁用协议
+     *
+     * @param costsId 费用id
+     * @return
+     */
+    HttpResult costsDisable(String costsId);
 }

+ 90 - 14
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java

@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.constants.enums.dict.FeeAuditAuditstatus;
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.constants.enums.dict.agreement.ProductsType;
 import com.ydtech.constants.enums.dict.insurance.TrafficManagementVehicleType;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.vo.SysChannelGroupPageVo;
@@ -26,25 +28,33 @@ import com.ydtech.modules.fnc.service.InsFeeAuditHistoryService;
 import com.ydtech.modules.fnc.service.InsFeeAuditService;
 import com.ydtech.modules.fnc.service.impl.InsFeeAuditServiceImpl;
 import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsFeeOrder;
 import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.api.pingan.constants.order.OrderStatusCodeEnum;
+import com.ydtech.modules.order.entity.api.zijin.constants.enums.OrderStatusEnum;
 import com.ydtech.modules.order.entity.vo.FeeOrderNewRecordVo;
 import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
+import com.ydtech.modules.order.service.InsFeeOrderService;
 import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.protocol.constants.ValidStatus;
 import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.entity.po.PtlAreaLicense;
 import com.ydtech.modules.protocol.service.PtlAgreementService;
 import com.ydtech.modules.protocol.service.PtlAreaLicenseService;
+import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.modules.protocols.dao.PtlAgreementProductCostsNewMapper;
 import com.ydtech.modules.protocols.entity.po.*;
 import com.ydtech.modules.protocols.entity.vo.*;
 import com.ydtech.modules.protocols.service.*;
+import com.ydtech.utils.ObjectUtil;
 import com.ydtech.utils.idgen.IdGenerate;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -97,12 +107,8 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
     @Autowired
     private PtlAgreementProductCostsNewMapper ptlAgreementProductCostsNewMapper;
 
-    @Autowired
+    @Resource
     private InsFeeAuditHistoryService insFeeAuditHistoryService;
-    private InsFeeOrderConfigServiceImpl insFeeOrderConfigServiceImpl;
-    @Autowired
-    private InsFeeAuditServiceImpl insFeeAuditServiceImpl;
-
 
     @Override
     public Page<PtlAgreementProductCostsNew> getProductPage(Page page, SysChannelGroupPageVo sysChannelGroupPageVo) {
@@ -179,7 +185,9 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                         .gt(PtlAgreementProductCostsNew::getCostsEndDate, LocalDateTime.now());
             }
         }
-
+        // 费用状态
+        ptlAgreementProductCostsNewLambdaQueryWrapper
+                .eq(agreementProductQueryVo.getValidStatus() != null, PtlAgreementProductCostsNew::getValidStatus, agreementProductQueryVo.getValidStatus());
         //统配描述
         if (agreementProductQueryVo.getDesc() != null) {
             ptlAgreementProductCostsNewLambdaQueryWrapper.like(PtlAgreementProductCostsNew::getDesc, agreementProductQueryVo.getDesc());
@@ -360,16 +368,15 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                 }
                 if ("checkbox".equals(ptlAgreementUndwrtRulesAttr.getAttrType()) || "select".equals(ptlAgreementUndwrtRulesAttr.getAttrType())) {
                     //车辆类型不显示代码k33 显示普通货车
-                    if(ptlAgreementUndwrtRulesAttr.getAttrCode().equals("CarClass"))
-                    {
+                    if (ptlAgreementUndwrtRulesAttr.getAttrCode().equals("CarClass")) {
                         String[] split = v.get(i).getMin().split(",");
                         desc += ptlAgreementUndwrtRulesAttr.getAttrName() + "包含";
                         for (String s : split) {
                             desc += TrafficManagementVehicleType.getDesc(s) + ",";
                         }
-                        desc = desc.substring(0,desc.length()-1);
+                        desc = desc.substring(0, desc.length() - 1);
                         desc += "\n";
-                    }else{
+                    } else {
                         desc += ptlAgreementUndwrtRulesAttr.getAttrName() + "包含" + v.get(i).getMin() + "\n";
                     }
                 }
@@ -521,6 +528,7 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                 .lt(PtlAgreementProductCostsNew::getCostsStartDate, formattedDateTime)
                 .gt(PtlAgreementProductCostsNew::getCostsEndDate, formattedDateTime)
                 .eq(PtlAgreementProductCostsNew::getIsAudit, "1")//查找审核已通过的
+                .eq(PtlAgreementProductCostsNew::getValidStatus, ValidStatus.AVS_1.getCode()) // 有效状态
                 .orderBy(true, true, PtlAgreementProductCostsNew::getPriorityLevel));
 
         List<AgreementProductCosts> agreementProductCosts = new ArrayList<>();
@@ -721,7 +729,8 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
 //
 //            //单独处理车牌号
 //            if ("LicenseNo".equals(x.getAttrCode()) && (x.getMin() != null && !x.getMin().equals(""))) {
-////                x.setOperator(x.getDictLabal().getJSONObject(0).getString("parentNumber"));
+
+    /// /                x.setOperator(x.getDictLabal().getJSONObject(0).getString("parentNumber"));
 //                x.setOperator("0");
 //                x.setCostsId(ptlAgreementProductCostsNew.getId());
 //                x.setId(0);
@@ -761,7 +770,6 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
 //        return true;
 //
 //    }
-
     @Transactional
     @Override
     public boolean costsUpdate(AgreementProductCosts agreementProductCosts) {
@@ -785,10 +793,13 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
             //清空交强险信息
             agreementProductCosts.clearJqInfo();
         }
-        PtlAgreementProductCostsNew old = getById(agreementProductCosts.getId());
 
+        PtlAgreementProductCostsNew old = getById(agreementProductCosts.getId());
+        if (!ValidStatus.AVS_0.getCode().equals(old.getValidStatus())) {
+            throw new SystemException("请先禁用后再编辑费用");
+        }
         //更新费用主表信息
-        PtlAgreementProductCostsNew ptlAgreementProductCost= ptlAgreementProductCostsNewService.getById(agreementProductCosts.getId());
+        PtlAgreementProductCostsNew ptlAgreementProductCost = ptlAgreementProductCostsNewService.getById(agreementProductCosts.getId());
         PtlAgreementProductCostsNew ptlAgreementProductCostsNew = new PtlAgreementProductCostsNew();
         BeanUtils.copyProperties(agreementProductCosts, ptlAgreementProductCostsNew);
         //修改审核状态为未审核
@@ -2437,4 +2448,69 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         PtlAgreementProductCostsNew ptlAgreementProductCostsNews = baseMapper.selectOne(queryWrapper);
         return ptlAgreementProductCostsNews;
     }
+
+
+    @Override
+    public HttpResult costsDisable(String costsId) {
+        PtlAgreementProductCostsNew ptlAgreementProductCostsNew = getById(costsId);
+        AssertionUtils.isEmpty(ptlAgreementProductCostsNew, "未查询到此协议");
+
+        // 查询费用列表
+        List<InsFeeOrderNew> insFeeOrderNews = insFeeOrderNewService
+                .lambdaQuery()
+                .eq(InsFeeOrderNew::getCostsId, costsId)
+                .list();
+
+        List<String> insFeeOrderIdList = insFeeOrderNews.stream().map(InsFeeOrderNew::getCostsId).collect(Collectors.toList());
+        if (insFeeOrderIdList.isEmpty()) {
+            return HttpResult.ok("修改成功");
+        }
+
+        // 修改订单二维码状态
+        insAreaCompanyService.lambdaUpdate()
+                .set(InsAreaCompany::getCodeValidStatus, ValidStatus.AVS_0.getCode())
+                .in(InsAreaCompany::getId, insFeeOrderIdList)
+                .update();
+        ptlAgreementProductCostsNew.setValidStatus(ValidStatus.AVS_0.getCode());
+        boolean b = updateById(ptlAgreementProductCostsNew);
+        AssertionUtils.isSucceed(b, "修改费用状态失败");
+        return HttpResult.ok("修改成功");
+    }
+
+
+    @Override
+    @Transactional
+    public HttpResult<Object> costsBatchDisable(List<String> costsIdList) {
+        List<PtlAgreementProductCostsNew> list = lambdaQuery()
+                .in(PtlAgreementProductCostsNew::getId, costsIdList)
+                .list();
+
+        if (list.isEmpty() || list.size() != costsIdList.size()) {
+            throw new SystemException("请选择正确的费用");
+        }
+
+        // 查询费用列表
+        List<InsFeeOrderNew> insFeeOrderNews = insFeeOrderNewService
+                .lambdaQuery()
+                .in(InsFeeOrderNew::getCostsId, costsIdList)
+                .list();
+
+        List<String> insFeeOrderIdList = insFeeOrderNews.stream().map(InsFeeOrderNew::getCostsId).collect(Collectors.toList());
+        if (insFeeOrderIdList.isEmpty()) {
+            return HttpResult.ok("修改成功");
+        }
+
+        // 修改订单二维码状态
+        insAreaCompanyService.lambdaUpdate()
+                .set(InsAreaCompany::getCodeValidStatus, ValidStatus.AVS_0.getCode())
+                .in(InsAreaCompany::getId, insFeeOrderIdList)
+                .update();
+
+        list.forEach(ptlAgreementProductCostsNew -> ptlAgreementProductCostsNew.setValidStatus(ValidStatus.AVS_0.getCode()));
+
+        boolean b = updateBatchById(list);
+        AssertionUtils.isSucceed(b, "修改费用状态失败");
+        return HttpResult.ok("修改成功");
+    }
+
 }