Parcourir la source

增减费用管理

FengChaoYu il y a 9 mois
Parent
commit
f510a89ef6

+ 22 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/settle/repair/DailyIncrDecrCostCountBean.java

@@ -0,0 +1,22 @@
+package com.gree.mall.manager.bean.settle.repair;
+
+import com.gree.mall.manager.plus.entity.SettleDailyIncrDecrCost;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+@EqualsAndHashCode(callSuper = true)
+@ApiModel
+@Data
+public class DailyIncrDecrCostCountBean extends SettleDailyIncrDecrCost {
+
+    @ApiModelProperty("人数")
+    private Integer personNums;
+    @ApiModelProperty("工单数量")
+    private Integer orderNums;
+    @ApiModelProperty("金额(元)")
+    private BigDecimal totalAmount;
+}

+ 53 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/settle/repair/DailyIncrDecrCostCountVO.java

@@ -0,0 +1,53 @@
+package com.gree.mall.manager.bean.settle.repair;
+
+import com.gree.mall.manager.annotation.ZfireField;
+import com.gree.mall.manager.enums.repair.settle.SummaryStatusEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel
+@ZfireField(tbName = "a")
+public class DailyIncrDecrCostCountVO {
+
+    @ApiModelProperty(value = "所属商户")
+    private String companyWechatName;
+
+    @ApiModelProperty(value = "导入批次号")
+    private String importBatchNo;
+
+    @ZfireField(ignoreSelect = true)
+    @ApiModelProperty(value = "人数")
+    private Integer personNums;
+
+    @ZfireField(ignoreSelect = true)
+    @ApiModelProperty(value = "数量(单)")
+    private Integer orderNums;
+
+    @ZfireField(ignoreSelect = true)
+    @ApiModelProperty(value = "金额(元)")
+    private BigDecimal totalAmount;
+
+    @ApiModelProperty(value = "状态")
+    private SummaryStatusEnum summaryStatus;
+
+    @ApiModelProperty(value = "导入操作人")
+    private Date importBy;
+
+    @ApiModelProperty(value = "导入时间")
+    private String importTime;
+
+    @ApiModelProperty(value = "汇总操作人")
+    private String doBy;
+
+    @ApiModelProperty(value = "汇总时间")
+    private Date doTime;
+
+    @ApiModelProperty(value = "汇总批次号")
+    private String doBatchNo;
+
+}

+ 76 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/settle/repair/DailyIncrDecrCostVO.java

@@ -0,0 +1,76 @@
+package com.gree.mall.manager.bean.settle.repair;
+
+import com.gree.mall.manager.annotation.ZfireField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel
+@ZfireField(tbName = "a")
+public class DailyIncrDecrCostVO {
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "id")
+    private String id;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "商户id")
+    private String companyWechatId;
+
+    @ApiModelProperty(value = "商户名称")
+    private String companyWechatName;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "服务人员编号")
+    private String serviceNumber;
+
+    @ApiModelProperty(value = "服务人员")
+    private String serviceName;
+
+    @ApiModelProperty(value = "网点编号")
+    private String websitNumber;
+
+    @ApiModelProperty(value = "网点名称")
+    private String websitName;
+
+    @ApiModelProperty(value = "身份证")
+    private String idCard;
+
+    @ApiModelProperty(value = "手机号码")
+    private String mobile;
+
+    @ApiModelProperty(value = "费用类型")
+    private String costType;
+
+    @ApiModelProperty(value = "金额")
+    private BigDecimal costAmount;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @ApiModelProperty(value = "减免月份")
+    private String reduceMonth;
+
+    @ApiModelProperty(value = "导入操作人")
+    private String importBy;
+
+    @ApiModelProperty(value = "导入时间")
+    private Date importTime;
+
+    @ApiModelProperty(value = "导入批次号")
+    private String importBatchNo;
+
+    @ApiModelProperty(value = "执行人")
+    private String doBy;
+
+    @ApiModelProperty(value = "执行时间")
+    private Date doTime;
+
+    @ApiModelProperty(value = "执行批次号")
+    private String doBatchNo;
+
+}

+ 17 - 4
mall-server-api/src/main/java/com/gree/mall/manager/commonmapper/CommonMapper.java

@@ -28,10 +28,7 @@ import com.gree.mall.manager.bean.settle.SettleExpenseItemVO;
 import com.gree.mall.manager.bean.settle.SettleExpenseVO;
 import com.gree.mall.manager.bean.settle.SettleMonthWagesVO;
 import com.gree.mall.manager.bean.settle.SettleMonthWagesWorkerVO;
-import com.gree.mall.manager.bean.settle.repair.DailyBankAccountVO;
-import com.gree.mall.manager.bean.settle.repair.DailyImportSummaryItemVO;
-import com.gree.mall.manager.bean.settle.repair.DailyImportSummaryVO;
-import com.gree.mall.manager.bean.settle.repair.DailyWithholdVO;
+import com.gree.mall.manager.bean.settle.repair.*;
 import com.gree.mall.manager.bean.workorder.*;
 import com.gree.mall.manager.enums.UserTypeEnum;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
@@ -655,4 +652,20 @@ public interface CommonMapper {
      * @return
      */
     IPage<DailyImportSummaryItemVO> repairDetailList(Page page, @Param("ex") ZfireParamBean zfireParamBean);
+
+    /**
+     * 增减费用管理列表
+     * @param page
+     * @param zfireParamBean
+     * @return
+     */
+    IPage<DailyIncrDecrCostCountVO> reduceCountList(Page page, @Param("ex") ZfireParamBean zfireParamBean);
+
+    /**
+     * 增减费用明细列表
+     * @param page
+     * @param zfireParamBean
+     * @return
+     */
+    IPage<DailyIncrDecrCostVO> repairSettleDailyincrDecrCostList(Page page, @Param("ex") ZfireParamBean zfireParamBean);
 }

+ 13 - 3
mall-server-api/src/main/java/com/gree/mall/manager/commonmapper/DailyMapper.java

@@ -1,6 +1,7 @@
 package com.gree.mall.manager.commonmapper;
 
 import com.baomidou.mybatisplus.annotation.SqlParser;
+import com.gree.mall.manager.bean.settle.repair.DailyIncrDecrCostCountBean;
 import com.gree.mall.manager.bean.settle.repair.DailyTotalCostBean;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -14,25 +15,34 @@ public interface DailyMapper {
      * @param importBatchNo
      */
     @SqlParser(filter = true)
-    void bindWorkerNumber2(@Param("importBatchNo") String importBatchNo);
+    void bindWorkerNumber2(@Param("companyWechatId") String companyWechatId, @Param("importBatchNo") String importBatchNo);
 
     /**
      * 汇总结算-绑定师傅编号
      * @param importBatchNo
      */
     @SqlParser(filter = true)
-    void bindWorkerNumber(@Param("importBatchNo") String importBatchNo);
+    void bindWorkerNumber(@Param("companyWechatId") String companyWechatId, @Param("importBatchNo") String importBatchNo);
     /**
      * 汇总结算-查询重复的
      */
     @SqlParser(filter = true)
-    List<String> queryDistinctOrderNo();
+    List<String> queryDistinctOrderNo(@Param("companyWechatId") String companyWechatId);
 
     @SqlParser(filter = true)
     List<DailyTotalCostBean> queryDailyTotalCost(
+            @Param("companyWechatId") String companyWechatId,
             @Param("importBatchNo") String importBatchNo,
             @Param("status") List<Integer> status,
             @Param("needSummaryStatus") List<String> needSummaryStatus
     );
 
+    @SqlParser(filter = true)
+    List<DailyIncrDecrCostCountBean> queryIncrDecrByBatch(
+            @Param("companyWechatId") String companyWechatId,
+            @Param("importBatchNo") String importBatchNo,
+            @Param("status") Integer status
+    );
+
+
 }

+ 101 - 1
mall-server-api/src/main/java/com/gree/mall/manager/controller/settle/repair/DailyImportSummaryController.java

@@ -5,10 +5,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.gree.mall.manager.annotation.ZfireList;
 import com.gree.mall.manager.bean.settle.repair.DailyImportSummaryItemVO;
 import com.gree.mall.manager.bean.settle.repair.DailyImportSummaryVO;
+import com.gree.mall.manager.bean.settle.repair.DailyIncrDecrCostCountVO;
+import com.gree.mall.manager.bean.settle.repair.DailyIncrDecrCostVO;
 import com.gree.mall.manager.constant.Constant;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.helper.ResponseHelper;
 import com.gree.mall.manager.logic.settle.repair.DailyImportSummaryLogic;
+import com.gree.mall.manager.plus.entity.SettleDailyIncrDecrCost;
 import com.gree.mall.manager.utils.excel.ExcelUtils;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.util.FieldUtils;
@@ -107,7 +110,7 @@ public class DailyImportSummaryController {
     }
 
     @PostMapping("/repair/detail/list/export")
-    @ApiOperation("导出")
+    @ApiOperation("结算数据导入明细-导出")
     public void listExport(
             @RequestBody ZfireParamBean zfireParamBean,
             HttpServletRequest request,
@@ -145,4 +148,101 @@ public class DailyImportSummaryController {
         dailyImportSummaryLogic.batchSummary(ids);
         return ResponseHelper.success();
     }
+
+    @ZfireList
+    @PostMapping("/reduceCount/list")
+    @ApiOperation(value = "增减费用管理-列表")
+    public ResponseHelper<IPage<DailyIncrDecrCostCountVO>> reduceCountPage(
+            @RequestBody ZfireParamBean zfireParamBean
+    ) {
+        IPage<DailyIncrDecrCostCountVO> page = dailyImportSummaryLogic.reduceCountPage(zfireParamBean);
+        return ResponseHelper.success(page, new TypeReference<DailyIncrDecrCostCountVO>() {
+        });
+    }
+
+    @PostMapping("/reduceCount/delete")
+    @ApiOperation(value = "增减费用管理-删除")
+    public ResponseHelper reduceCountDel(
+            @ApiParam(required = true, value = "导入批次号") @RequestParam String importBatchNo
+    ) {
+        dailyImportSummaryLogic.reduceCountDel(importBatchNo);
+        return ResponseHelper.success();
+    }
+
+
+    @PostMapping("/reduceCount/do")
+    @ApiOperation(value = "增减费用管理-执行")
+    public ResponseHelper reduceCountDo(
+            @ApiParam(required = true, value = "导入批次号") @RequestParam String importBatchNo
+    ) {
+        dailyImportSummaryLogic.reduceCountDo(importBatchNo);
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/reduce/batchDo")
+    @ApiOperation(value = "增减费用明细-批量执行")
+    public ResponseHelper reduceBatchDo(
+            @ApiParam(required = true, value = "id") @RequestParam List<Integer> ids
+    ) {
+        dailyImportSummaryLogic.reduceBatchDo(ids);
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/reduce/batchDel")
+    @ApiOperation(value = "增减费用明细-删除")
+    public ResponseHelper reduceBatchDel(
+            @ApiParam(required = true, value = "id") @RequestParam List<Integer> ids
+    ) {
+        dailyImportSummaryLogic.reduceBatchDel(ids);
+        return ResponseHelper.success();
+    }
+
+
+    @PostMapping("/reduce/update")
+    @ApiOperation(value = "增减费用明细-编辑")
+    public ResponseHelper reduceUpdate(
+            @ApiParam(value = "增减费用对象",required = true) @RequestBody
+                    SettleDailyIncrDecrCost cost
+    ) {
+        dailyImportSummaryLogic.reduceUpdate(cost);
+        return ResponseHelper.success();
+    }
+
+    @ApiOperation("增减费用-导入")
+    @PostMapping("/incrDecrCost/import")
+    public ResponseHelper importIncrDecrCost(
+            @ApiParam(required = true, value = "附件") @RequestPart("file") MultipartFile file,
+            @ApiParam(value = "导入批次号(覆盖导入时传入)") @RequestParam(required = false) String importBatchNo,
+            HttpServletRequest request
+    ) throws Exception {
+        List<Object> datas = ExcelUtils.importExcel(file);
+        dailyImportSummaryLogic.importIncrDecrCost(importBatchNo,datas ,request);
+        return ResponseHelper.success();
+    }
+
+    @ZfireList
+    @PostMapping("/incrDecrCost/list")
+    @ApiOperation(value = "增减费用管理-列表")
+    public ResponseHelper<IPage<DailyIncrDecrCostVO>> incrDecrCostList(
+            @RequestBody ZfireParamBean zfireParamBean
+    ) {
+        IPage<DailyIncrDecrCostVO> page = dailyImportSummaryLogic.incrDecrCostList(zfireParamBean);
+        return ResponseHelper.success(page, new TypeReference<DailyIncrDecrCostVO>() {
+        });
+    }
+
+    @PostMapping("/incrDecrCost/list/export")
+    @ApiOperation("增减费用管理-导出")
+    public void incrDecrCostListExport(
+            @RequestBody ZfireParamBean zfireParamBean,
+            HttpServletRequest request,
+            HttpServletResponse response
+    ) throws Exception {
+        //2.查询要导出的内容
+        IPage<DailyIncrDecrCostVO> page = dailyImportSummaryLogic.incrDecrCostList(zfireParamBean);
+        //3.导出
+        FieldUtils.exportData(page.getRecords(), zfireParamBean.getExportFields(), request, response);
+    }
+
+
 }

+ 284 - 19
mall-server-api/src/main/java/com/gree/mall/manager/logic/settle/repair/DailyImportSummaryLogic.java

@@ -3,11 +3,10 @@ package com.gree.mall.manager.logic.settle.repair;
 import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
-import com.gree.mall.manager.bean.settle.repair.DailyImportSummaryItemVO;
-import com.gree.mall.manager.bean.settle.repair.DailyImportSummaryVO;
-import com.gree.mall.manager.bean.settle.repair.DailyTotalCostBean;
+import com.gree.mall.manager.bean.settle.repair.*;
 import com.gree.mall.manager.commonmapper.CommonMapper;
 import com.gree.mall.manager.commonmapper.DailyMapper;
 import com.gree.mall.manager.constant.Constant;
@@ -54,6 +53,7 @@ public class DailyImportSummaryLogic {
     private final SettleDailyWithholdService settleDailyWithholdService;
     private final SettleDailyResidualInsuranceService settleDailyResidualInsuranceService;
     private final SettleDailyRemaineBuckleService settleDailyRemaineBuckleService;
+    private final SettleDailyIncrDecrCostService settleDailyIncrDecrCostService;
 
 
     public IPage<DailyImportSummaryVO> page(ZfireParamBean zfireParamBean) {
@@ -189,6 +189,8 @@ public class DailyImportSummaryLogic {
             bean.setCreateTime(new Date());
             bean.setWebsitName(row.get(46));
             bean.setWebsitNumber(row.get(44));
+            bean.setCompanyWechatId(adminUser.getAdminCompanyWechat().getCompanyWechatId());
+            bean.setCompanyWechatName(adminUser.getAdminCompanyWechat().getCompanyName());
             if (StringUtils.isNotBlank(row.get(51))) {
                 bean.setSettlementTime(new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").parse(row.get(51)));
             }
@@ -214,7 +216,7 @@ public class DailyImportSummaryLogic {
         }
         if (("reduce").equals(type)) {
             settleDailyReduceCostService.saveBatch(reduceList);
-            dailyMapper.bindWorkerNumber2(batchNo);
+            dailyMapper.bindWorkerNumber2(adminUser.getAdminCompanyWechat().getCompanyWechatId(), batchNo);
             //判断是否有匹配失败的师傅编号的
             List<SettleDailyReduceCost> list = settleDailyReduceCostService.lambdaQuery()
                     .eq(SettleDailyReduceCost::getWorkerNumber, "")
@@ -226,7 +228,7 @@ public class DailyImportSummaryLogic {
             //判断是否存在导入重复的工单号
         } else {
             settleDailyImportSummaryItemService.saveBatch(summaryItemList);
-            dailyMapper.bindWorkerNumber(batchNo);
+            dailyMapper.bindWorkerNumber(adminUser.getAdminCompanyWechat().getCompanyWechatId(), batchNo);
             //判断是否有匹配失败的师傅编号的
             List<SettleDailyImportSummaryItem> list = settleDailyImportSummaryItemService.lambdaQuery()
                     .eq(SettleDailyImportSummaryItem::getWorkerNumber, "")
@@ -236,7 +238,7 @@ public class DailyImportSummaryLogic {
             if (list.size() > 0)
                 throw new RemoteServiceException("姓名:" + list.get(0).getRepairName() + ",派工序号:" + list.get(0).getDispatchOrderNo() + "找不到对应的师傅编号");
             //判断是否存在导入重复的工单号
-            List<String> errList = dailyMapper.queryDistinctOrderNo();
+            List<String> errList = dailyMapper.queryDistinctOrderNo(adminUser.getAdminCompanyWechat().getCompanyWechatId());
             if (!CollectionUtils.isEmpty(errList)) {
                 errorData = errorData.append(StringUtils.join(errList, ","));
             }
@@ -298,7 +300,7 @@ public class DailyImportSummaryLogic {
         }
         settleDailyIssueSummaryRecordService.lambdaUpdate().eq(SettleDailyIssueSummaryRecord::getSummaryBatchNo, summaryBatchNo).remove();
         //查询统计数据
-        List<DailyTotalCostBean> costBeans = dailyMapper.queryDailyTotalCost(importBatchNo, DailyConstant.SUMMARY_STATUS_CAN_DO, DailyConstant.SUMMARY_STATUS_ARRAY);
+        List<DailyTotalCostBean> costBeans = dailyMapper.queryDailyTotalCost(adminUser.getAdminCompanyWechat().getCompanyWechatId(), importBatchNo, DailyConstant.SUMMARY_STATUS_CAN_DO, DailyConstant.SUMMARY_STATUS_ARRAY);
 
         String nowMonth = DateUtil.format(new Date(), "yyyyMM");
         List<SettleDailyIssueSummaryRecord> issueList = new ArrayList<>();
@@ -370,6 +372,8 @@ public class DailyImportSummaryLogic {
             issue.setWithholdCost(BigDecimal.valueOf(0));
             issue.setIssueCost(totalFee);
             issue.setInstall(install);
+            issue.setCompanyWechatId(adminUser.getAdminCompanyWechat().getCompanyWechatId());
+            issue.setCompanyWechatName(adminUser.getAdminCompanyWechat().getCompanyName());
 
             if (install == null || !install) {
                 //暂扣金额
@@ -402,6 +406,8 @@ public class DailyImportSummaryLogic {
                 importSummaryItem.setSummaryStatus(DailyConstant.SUMMARY_STATUS_HAS);
                 importSummaryItem.setSummaryBatchNo(summaryBatchNo);
                 importSummaryItem.setMonth(nowMonth);
+                importSummaryItem.setCompanyWechatId(adminUser.getAdminCompanyWechat().getCompanyWechatId());
+                importSummaryItem.setCompanyWechatName(adminUser.getAdminCompanyWechat().getCompanyName());
                 if (issueSummaryRecord.getServiceNumber().equals(importSummaryItem.getWorkerNumber())
                         && issueSummaryRecord.getSummaryNumber().equals(importSummaryItem.getSummaryNumber())) {
                     importSummaryItem.setIssueSalaryId(issueSummaryRecord.getId());
@@ -436,6 +442,8 @@ public class DailyImportSummaryLogic {
             insurance.setCreateTime(new Date());
             insurance.setCreateBy(opName);
             insurance.setSummaryBatchNo(summaryBatchNo);
+            insurance.setCompanyWechatId(adminUser.getAdminCompanyWechat().getCompanyWechatId());
+            insurance.setCompanyWechatName(adminUser.getAdminCompanyWechat().getCompanyName());
             insurance.insert();
 
             for (SettleDailyWithhold withhold : withholds) {
@@ -499,7 +507,7 @@ public class DailyImportSummaryLogic {
     /**
      * 处理历史费用
      *
-     * @param issue 汇总数据
+     * @param issue     汇总数据
      * @param adminUser
      */
     @Transactional
@@ -690,17 +698,17 @@ public class DailyImportSummaryLogic {
 
         Integer count = settleDailyImportSummaryItemService.lambdaQuery()
                 .eq(SettleDailyImportSummaryItem::getCompanyWechatId, adminUser.getCompanyWechatId())
-                .in(SettleDailyImportSummaryItem::getId,ids)
-                .eq(SettleDailyImportSummaryItem::getSummaryStatus,DailyConstant.SUMMARY_STATUS_HAS)
+                .in(SettleDailyImportSummaryItem::getId, ids)
+                .eq(SettleDailyImportSummaryItem::getSummaryStatus, DailyConstant.SUMMARY_STATUS_HAS)
                 .count();
-        if(count > 0){
+        if (count > 0) {
             throw new RemoteServiceException("存在已汇总的数据,无法删除");
         }
 
         settleDailyImportSummaryItemService.lambdaUpdate()
                 .eq(SettleDailyImportSummaryItem::getCompanyWechatId, adminUser.getCompanyWechatId())
-                .in(SettleDailyImportSummaryItem::getId,ids)
-                .in(SettleDailyImportSummaryItem::getSummaryStatus,DailyConstant.SUMMARY_STATUS_CAN_DEL)
+                .in(SettleDailyImportSummaryItem::getId, ids)
+                .in(SettleDailyImportSummaryItem::getSummaryStatus, DailyConstant.SUMMARY_STATUS_CAN_DEL)
                 .remove();
     }
 
@@ -712,9 +720,9 @@ public class DailyImportSummaryLogic {
         }
 
         settleDailyImportSummaryItemService.lambdaUpdate()
-                .set(SettleDailyImportSummaryItem::getSummaryStatus,DailyConstant.SUMMARY_STATUS_WAIT)
-                .in(SettleDailyImportSummaryItem::getSummaryStatus,DailyConstant.SUMMARY_STATUS_CAN_DO)
-                .in(SettleDailyImportSummaryItem::getId,ids)
+                .set(SettleDailyImportSummaryItem::getSummaryStatus, DailyConstant.SUMMARY_STATUS_WAIT)
+                .in(SettleDailyImportSummaryItem::getSummaryStatus, DailyConstant.SUMMARY_STATUS_CAN_DO)
+                .in(SettleDailyImportSummaryItem::getId, ids)
                 .update();
     }
 
@@ -726,9 +734,266 @@ public class DailyImportSummaryLogic {
         }
 
         settleDailyImportSummaryItemService.lambdaUpdate()
-                .set(SettleDailyImportSummaryItem::getSummaryStatus,DailyConstant.SUMMARY_STATUS_NOT)
-                .eq(SettleDailyImportSummaryItem::getSummaryStatus,DailyConstant.SUMMARY_STATUS_WAIT)
-                .in(SettleDailyImportSummaryItem::getId,ids)
+                .set(SettleDailyImportSummaryItem::getSummaryStatus, DailyConstant.SUMMARY_STATUS_NOT)
+                .eq(SettleDailyImportSummaryItem::getSummaryStatus, DailyConstant.SUMMARY_STATUS_WAIT)
+                .in(SettleDailyImportSummaryItem::getId, ids)
                 .update();
     }
+
+    public IPage<DailyIncrDecrCostCountVO> reduceCountPage(ZfireParamBean zfireParamBean) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        FieldUtils.supplyParam(zfireParamBean, DailyIncrDecrCostCountVO.class, adminUser);
+
+        return commonMapper.reduceCountList(new Page(zfireParamBean.getPageNum(), zfireParamBean.getPageSize()), zfireParamBean);
+    }
+
+    @Transactional
+    public void reduceCountDel(String importBatchNo) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+
+        if (adminUser.getType() == 2) {
+            throw new RemoteServiceException("平台账号禁止操作");
+        }
+
+        Integer count = settleDailyIncrDecrCostService.lambdaQuery()
+                .eq(SettleDailyIncrDecrCost::getCompanyWechatId, adminUser.getAdminCompanyWechat().getCompanyWechatId())
+                .eq(SettleDailyIncrDecrCost::getImportBatchNo, importBatchNo)
+                .eq(SettleDailyIncrDecrCost::getDoStatus, DailyConstant.DO_STATUS_HAS)
+                .count();
+        if (count > 0) {
+            throw new RemoteServiceException("该批次已执行,无法删除。");
+        }
+        settleDailyIncrDecrCostService.lambdaUpdate()
+                .eq(SettleDailyIncrDecrCost::getCompanyWechatId, adminUser.getAdminCompanyWechat().getCompanyWechatId())
+                .eq(SettleDailyIncrDecrCost::getImportBatchNo, importBatchNo)
+                .eq(SettleDailyIncrDecrCost::getDoStatus, DailyConstant.DO_STATUS_NOT)
+                .remove();
+    }
+
+    /**
+     * 批量执行 -增减费用数据
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void reduceCountDo(String importBatchNo) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+
+        if (adminUser.getType() == 2) {
+            throw new RemoteServiceException("平台账号禁止操作");
+        }
+
+        String opName = adminUser.getNickName();
+        String doBatchNo = commonLogic.generateNo("JZ", "reduceBatchNo", 13);
+        String nowMonth = DateUtil.format(new Date(), "yyyyMM");
+        List<DailyIncrDecrCostCountBean> beans = dailyMapper.queryIncrDecrByBatch(adminUser.getAdminCompanyWechat().getCompanyWechatId(), importBatchNo, DailyConstant.DO_STATUS_NOT);
+        if (beans.size() == 0) {
+            throw new RemoteServiceException("没有可扣减的数据");
+        }
+        List<SettleDailyIssueSummaryRecord> records = new ArrayList<>();
+        List<String> serviceNumberList = new ArrayList<>();
+        List<String> websiteNumberList = new ArrayList<>();
+        for (DailyIncrDecrCostCountBean bean : beans) {
+            SettleDailyIssueSummaryRecord issueRecord = settleDailyIssueSummaryRecordService
+                    .getOne(Wrappers.<SettleDailyIssueSummaryRecord>lambdaQuery()
+                            .eq(SettleDailyIssueSummaryRecord::getCompanyWechatId, adminUser.getAdminCompanyWechat().getCompanyWechatId())
+                            .eq(SettleDailyIssueSummaryRecord::getStatus, DailyConstant.ISSUE_STATUS_NOT)
+                            .eq(SettleDailyIssueSummaryRecord::getServiceNumber, bean.getServiceNumber())
+                            .eq(SettleDailyIssueSummaryRecord::getWebsitNumber, bean.getWebsitNumber())
+                            .orderByDesc(SettleDailyIssueSummaryRecord::getIssueCost)
+                            .last("limit 1"));
+            if (issueRecord != null) {
+                BigDecimal incrDecrCost = new BigDecimal(0);
+                if (issueRecord.getIncrDecrCost() != null) {
+                    incrDecrCost = incrDecrCost.add(issueRecord.getIncrDecrCost());
+                }
+                incrDecrCost = incrDecrCost.add(bean.getTotalAmount());
+                BigDecimal issueCost = issueRecord.getIssueCost().add(incrDecrCost);
+                issueRecord.setIncrDecrCost(incrDecrCost);
+                issueRecord.setIssueCost(issueCost);
+                issueRecord.setUpdateBy(opName);
+                issueRecord.setUpdateTime(new Date());
+                if (issueCost.doubleValue() < 0) {
+                    //设置为0
+                    issueCost = BigDecimal.valueOf(0);
+                    issueRecord.setIssueCost(issueCost);
+                    BigDecimal extra = BigDecimal.valueOf(0).subtract(issueCost);
+                    saveRemaineBuckle(extra, DictCodeEnum.INCR_DECR_DAILY.toString(), bean.getServiceNumber(),
+                            Constant.DAILY_PREFIX + issueRecord.getSummaryNumber(), bean.getWebsitName(), bean.getWebsitNumber(), opName);
+                }
+                records.add(issueRecord);
+                serviceNumberList.add(bean.getServiceNumber());
+                websiteNumberList.add(bean.getWebsitNumber());
+            }
+        }
+        if (records.size() == 0) {
+            throw new RemoteServiceException("暂无可扣回费用");
+        }
+        settleDailyIssueSummaryRecordService.updateBatchById(records);
+        //修改增减费用执行记录
+        settleDailyIncrDecrCostService.lambdaUpdate()
+                .set(SettleDailyIncrDecrCost::getDoTime, new Date())
+                .set(SettleDailyIncrDecrCost::getDoBy, opName)
+                .set(SettleDailyIncrDecrCost::getDoStatus, DailyConstant.DO_STATUS_HAS)
+                .set(SettleDailyIncrDecrCost::getUpdateBy, opName)
+                .set(SettleDailyIncrDecrCost::getUpdateTime, new Date())
+                .set(SettleDailyIncrDecrCost::getDoBatchNo, doBatchNo)
+                .set(SettleDailyIncrDecrCost::getReduceMonth, nowMonth)
+                .eq(SettleDailyIncrDecrCost::getCompanyWechatId, adminUser.getAdminCompanyWechat().getCompanyWechatId())
+                .eq(SettleDailyIncrDecrCost::getImportBatchNo, importBatchNo)
+                .eq(SettleDailyIncrDecrCost::getDoStatus, DailyConstant.DO_STATUS_NOT)
+                .in(SettleDailyIncrDecrCost::getWebsitNumber, websiteNumberList)
+                .in(SettleDailyIncrDecrCost::getServiceNumber, serviceNumberList)
+                .update();
+    }
+
+    public void saveRemaineBuckle(BigDecimal buckle, String type, String workerNumber,
+                                  String summaryBatchNo, String websiteName, String websiteNumber, String opName) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+
+        if (adminUser.getType() == 2) {
+            throw new RemoteServiceException("平台账号禁止操作");
+        }
+
+        SettleDailyRemaineBuckle bean = new SettleDailyRemaineBuckle();
+        bean.setCostType(type);
+        bean.setBuckleAmount(buckle);
+        bean.setIsBuckle(false);
+        bean.setWorkerNumber(workerNumber);
+        bean.setSummaryBatchNo(summaryBatchNo);
+        bean.setCreateBy(opName);
+        bean.setCreateTime(new Date());
+        bean.setWebsitName(websiteName);
+        bean.setWebsitNumber(websiteNumber);
+        bean.setCompanyWechatId(adminUser.getAdminCompanyWechat().getCompanyWechatId());
+        bean.setCompanyWechatName(adminUser.getAdminCompanyWechat().getCompanyName());
+        bean.insert();
+    }
+
+    public void reduceBatchDo(List<Integer> ids) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+
+        if (adminUser.getType() == 2) {
+            throw new RemoteServiceException("平台账号禁止操作");
+        }
+
+        Integer count = settleDailyIncrDecrCostService.lambdaQuery()
+                .eq(SettleDailyIncrDecrCost::getCompanyWechatId, adminUser.getAdminCompanyWechat().getCompanyWechatId())
+                .in(SettleDailyIncrDecrCost::getId, ids)
+                .eq(SettleDailyIncrDecrCost::getDoStatus, DailyConstant.DO_STATUS_HAS)
+                .count();
+        if (count > 0) {
+            throw new RemoteServiceException("存在已执行的数据,请重新选择.");
+        }
+
+        String opName = adminUser.getNickName();
+        settleDailyIncrDecrCostService.lambdaUpdate()
+                .set(SettleDailyIncrDecrCost::getDoStatus, DailyConstant.DO_STATUS_HAS)
+                .set(SettleDailyIncrDecrCost::getDoTime, new Date())
+                .set(SettleDailyIncrDecrCost::getDoBy, opName)
+                .eq(SettleDailyIncrDecrCost::getCompanyWechatId, adminUser.getAdminCompanyWechat().getCompanyWechatId())
+                .in(SettleDailyIncrDecrCost::getId, ids)
+                .eq(SettleDailyIncrDecrCost::getDoStatus, DailyConstant.DO_STATUS_NOT).update();
+    }
+
+    @Transactional
+    public void reduceBatchDel(List<Integer> ids) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+
+        if (adminUser.getType() == 2) {
+            throw new RemoteServiceException("平台账号禁止操作");
+        }
+
+        Integer count = settleDailyIncrDecrCostService.lambdaQuery()
+                .eq(SettleDailyIncrDecrCost::getCompanyWechatId, adminUser.getAdminCompanyWechat().getCompanyWechatId())
+                .in(SettleDailyIncrDecrCost::getId, ids)
+                .eq(SettleDailyIncrDecrCost::getDoStatus, DailyConstant.DO_STATUS_HAS)
+                .count();
+        if (count > 0) {
+            throw new RemoteServiceException("存在已执行的数据,请重新选择.");
+        }
+        settleDailyIncrDecrCostService.lambdaUpdate()
+                .eq(SettleDailyIncrDecrCost::getCompanyWechatId, adminUser.getAdminCompanyWechat().getCompanyWechatId())
+                .in(SettleDailyIncrDecrCost::getId, ids)
+                .eq(SettleDailyIncrDecrCost::getDoStatus, DailyConstant.DO_STATUS_NOT).remove();
+    }
+
+    @Transactional
+    public void reduceUpdate(SettleDailyIncrDecrCost cost) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+
+        if (adminUser.getType() == 2) {
+            throw new RemoteServiceException("平台账号禁止操作");
+        }
+
+        SettleDailyIncrDecrCost queryCost = settleDailyIncrDecrCostService.getById(cost.getId());
+        if (queryCost == null) {
+            throw new RemoteServiceException("当前数据不存在.");
+        }
+        if (queryCost.getDoStatus() != null && queryCost.getDoStatus() == 1) {
+            throw new RemoteServiceException("已经执行无法编编辑.");
+        }
+        queryCost.setCostAmount(cost.getCostAmount());
+        queryCost.updateById();
+    }
+
+    /**
+     * 导入增减费用数据
+     *
+     * @param importBatchNo
+     * @param datas
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @Transactional
+    public void importIncrDecrCost(String importBatchNo, List<Object> datas, HttpServletRequest request) throws Exception {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+
+        if (adminUser.getType() == 2) {
+            throw new RemoteServiceException("平台账号禁止操作");
+        }
+        String opName = adminUser.getNickName();
+        log.info("【导入增减费用】:{}", DateUtils.formatDate(new Date()));
+        List<SettleDailyIncrDecrCost> incrDecrCostList = new ArrayList<>();
+        //传入批次号删除数据
+        if (importBatchNo != null) {
+            settleDailyIncrDecrCostService.lambdaUpdate()
+                    .eq(SettleDailyIncrDecrCost::getImportBatchNo, importBatchNo)
+                    .remove();
+        }
+
+        String batchNo = commonLogic.generateNo("JM", "IncrDecr", 11);
+        for (int i = 0; i < datas.size(); i++) {
+            List<String> row = (List<String>) datas.get(i);
+            SettleDailyIncrDecrCost bean = new SettleDailyIncrDecrCost();
+            bean.setImportBatchNo(batchNo);
+            bean.setServiceName(row.get(1));
+            bean.setServiceNumber(row.get(2));
+            bean.setWebsitNumber(row.get(3));
+            bean.setWebsitName(row.get(4));
+            bean.setSummaryNumber(row.get(5));
+            bean.setSummaryName(row.get(6));
+            bean.setIdCard(row.get(7));
+            bean.setMobile(row.get(8));
+            bean.setCostType(row.get(9));
+            if (null != row.get(10)) {
+                bean.setCostAmount(new BigDecimal(row.get(10)));
+            }
+            bean.setRemark(row.get(11));
+            bean.setReduceMonth(row.get(12));
+            bean.setDoStatus(DailyConstant.DO_STATUS_NOT);
+            bean.setImportBy(opName);
+            bean.setImportTime(new Date());
+            bean.setCompanyWechatId(adminUser.getAdminCompanyWechat().getCompanyWechatId());
+            bean.setCompanyWechatName(adminUser.getAdminCompanyWechat().getCompanyName());
+            incrDecrCostList.add(bean);
+        }
+        settleDailyIncrDecrCostService.saveBatch(incrDecrCostList);
+    }
+
+    public IPage<DailyIncrDecrCostVO> incrDecrCostList(ZfireParamBean zfireParamBean) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        FieldUtils.supplyParam(zfireParamBean, DailyIncrDecrCostVO.class, adminUser);
+
+        return commonMapper.repairSettleDailyincrDecrCostList(new Page(zfireParamBean.getPageNum(), zfireParamBean.getPageSize()), zfireParamBean);
+    }
 }

+ 35 - 0
mall-server-api/src/main/resources/mapper/CommonMapper.xml

@@ -1104,5 +1104,40 @@
         ${ex.orderBy}
     </select>
 
+    <select id="reduceCountList"
+            resultType="com.gree.mall.manager.bean.settle.repair.DailyIncrDecrCostCountVO">
+        SELECT
+            import_batch_no,
+            count(service_number) personNums,
+            count(id) orderNums,
+            sum(cost_amount) totalAmount,
+            do_status,
+            import_by,
+            import_time,
+            do_by,
+            do_time,
+            do_batch_no
+        FROM
+            settle_daily_incr_decr_cost a
+        ${ex.query}
+        <if test="ex.orderBy == null or ex.orderBy ==''">
+            ORDER BY a.create_time DESC
+        </if>
+        ${ex.orderBy}
+    </select>
+
+    <select id="repairSettleDailyincrDecrCostList"
+            resultType="com.gree.mall.manager.bean.settle.repair.DailyIncrDecrCostVO">
+        SELECT
+        ${ex.selected}
+        FROM
+        settle_daily_incr_decr_cost a
+        ${ex.query}
+        <if test="ex.orderBy == null or ex.orderBy ==''">
+            ORDER BY a.create_time DESC
+        </if>
+        ${ex.orderBy}
+    </select>
+
 
 </mapper>

+ 26 - 5
mall-server-api/src/main/resources/mapper/DailyMapper.xml

@@ -13,7 +13,8 @@
             c.company_wechat_id = a.company_wechat_id,
             c.company_wechat_name = a.company_name
         WHERE
-            c.import_batch_no = #{importBatchNo}
+            c.company_wechat_id = #{companyWechatId}
+            AND c.import_batch_no = #{importBatchNo}
     </update>
     <update id="bindWorkerNumber">
         UPDATE
@@ -26,11 +27,14 @@
             c.company_wechat_id = a.company_wechat_id,
             c.company_wechat_name = a.company_name
         WHERE
-            c.import_batch_no = #{importBatchNo}
+            c.company_wechat_id = #{companyWechatId}
+            AND c.import_batch_no = #{importBatchNo}
     </update>
     <select id="queryDistinctOrderNo" resultType="java.lang.String">
         select dispatch_order_no from settle_daily_import_summary_item
-        where order_status in ('已转结算待汇总','待退旧件','待总部日审','待总部审批','待总部日结审批','已汇总')
+        where
+            company_wechat_id = #{companyWechatId}
+        AND order_status in ('已转结算待汇总','待退旧件','待总部日审','待总部审批','待总部日结审批','已汇总')
         group by concat(self_no,dispatch_order_no)
         having count(1)>1
     </select>
@@ -52,8 +56,8 @@
         join (select DISTINCT c.worker_number,a.idcard from settle_daily_bank_account a
         join user b on a.idcard=b.id_card
         join websit_user c on b.user_id=c.user_id) b on a.worker_number=b.worker_number
-        where 1=1
-
+        where
+        company_wechat_id = #{companyWechatId}
         <if test="status != null and status.size()> 0">
             and summary_status in
             <foreach collection="status" item="statusSItem" index="index"
@@ -74,4 +78,21 @@
         group by worker_number
         order by total_fee desc
     </select>
+
+    <select id="queryIncrDecrByBatch"
+            resultType="com.gree.mall.manager.bean.settle.repair.DailyIncrDecrCostCountBean">
+        select
+        sdidc.*,
+        sum(cost_amount) totalAmount
+        from
+        settle_daily_incr_decr_cost sdidc
+        where
+        company_wechat_id = #{companyWechatId}
+        do_status = #{status}
+        <if test="importBatchNo != '' and importBatchNo != null">
+            and import_batch_no = #{importBatchNo}
+        </if>
+        group by
+        service_number,websit_number
+    </select>
 </mapper>

BIN
mall-server-api/src/main/resources/template/增减费用模板(新).xlsx