浏览代码

核账管理

lyhzzz 2 年之前
父节点
当前提交
6cc5ec9213

+ 1 - 0
src/main/java/com/fdkankan/sale/common/RepairStatusEnum.java

@@ -18,6 +18,7 @@ public enum  RepairStatusEnum {
     TO_BE_REPAIRED(60, "设备维修"),
     TO_BE_TESTED(70, "维修测试"),
     TO_BE_PAID(80, "维修支付"),
+    TO_BE_PAID_OVER(82, "待支付到账"),
     TO_BE_RECOVERED(90, "备件回收"),
     TO_BE_CANCELED_RECOVERED(91, "备件回收"),
     TO_BE_SHIPPED(100, "维修完毕"),

+ 1 - 0
src/main/java/com/fdkankan/sale/common/RepairStatusEnumMsg.java

@@ -17,6 +17,7 @@ public enum RepairStatusEnumMsg {
     TO_BE_REPAIRED(60, "{userName}维修中"),
     TO_BE_TESTED(70, "{userName}正在测试"),
     TO_BE_PAID(80, "待支付费用"),
+    TO_BE_PAID_OVER(82, "待支付到账"),
     TO_BE_RECOVERED(90, "待回收备件"),
     TO_BE_CANCELED_RECOVERED(91, "待回收备件"),
     TO_BE_SHIPPED(100, "待取回/寄回设备"),

+ 1 - 0
src/main/java/com/fdkankan/sale/common/RepairStatusProcessComing.java

@@ -20,6 +20,7 @@ public enum RepairStatusProcessComing {
     TO_BE_REPAIRED(60, "维修中","设备维修","{userName}维修中","repairMan"),
     TO_BE_TESTED(70, "待测试","维修测试","{userName}正在测试","tester"),
     TO_BE_PAID(80, "待支付","维修支付","待支付费用","sale"),
+    TO_BE_PAID_OVER(82, "待支付到账","待支付到账","待支付到账",""),
     TO_BE_RECOVERED(90, "待回收","备件回收","待回收备件","repairSupply"),
     TO_BE_CANCELED_RECOVERED(91,"取消维修备件回收","备件回收", "待回收备件","repairSupply"),
     TO_BE_SHIPPED(100, "待发货","维修完毕","待取回/寄回设备","sale"),

+ 1 - 0
src/main/java/com/fdkankan/sale/common/RepairStatusProcessIng.java

@@ -25,6 +25,7 @@ public enum RepairStatusProcessIng {
     TO_BE_TESTED(70, "待测试","设备维修","{userName}完成维修","repairMan"),
     TO_BE_PAID(80, "待支付","维修测试","{userName}测试通过","tester"),
     TO_BE_TESTFAIL(81, "待支付","维修测试","{userName}测试不通过","tester"),
+    TO_BE_PAID_OVER(82, "待支付到账","待支付到账","待支付到账",""),
     TO_BE_RECOVERED(90, "待回收","维修支付","支付完成",""),
     TO_BE_CANCELED_RECOVERED(91,"取消维修备件回收","维修支付", "支付完成",""),
     TO_BE_SHIPPED(100, "待发货","备件回收","{userName}已回收备件","repairSupply"),

+ 1 - 0
src/main/java/com/fdkankan/sale/common/ResultCode.java

@@ -50,6 +50,7 @@ public enum ResultCode  {
     DING_CONFIG_ERROR(60024, "钉钉配置文件不存在"),
     DING_PHONE_ERROR(60025, "钉钉获取用户id失败"),
     DING_SEND_ERROR(60026, "发送钉钉失败"),
+    NOt_PAY(60027, "未进行支付登记"),
 
 
     ;

+ 50 - 0
src/main/java/com/fdkankan/sale/controller/RepairCheckAccountController.java

@@ -0,0 +1,50 @@
+package com.fdkankan.sale.controller;
+
+
+import com.fdkankan.sale.common.ResultData;
+import com.fdkankan.sale.entity.RepairCheckAccount;
+import com.fdkankan.sale.entity.SysUser;
+import com.fdkankan.sale.service.impl.RepairCheckAccountService;
+import com.fdkankan.sale.vo.request.RepairParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-06-07
+ */
+@RestController
+@RequestMapping("/sale/repairCheckAccount")
+public class RepairCheckAccountController extends BaseController{
+
+    @Autowired
+    RepairCheckAccountService repairCheckAccountService;
+
+    @PostMapping("/checkAccountList")
+    public ResultData checkAccountList(@RequestBody RepairParam param){
+        SysUser user = getUser();
+        if(user != null && user.getRoleId() != 1){
+            param.setUserId(user.getId());
+        }
+        return ResultData.ok(repairCheckAccountService.checkAccountList(param));
+    }
+
+    @PostMapping("/checkAccount")
+    public ResultData checkAccount(@RequestBody RepairCheckAccount param){
+        SysUser user = getUser();
+        if(user != null && user.getRoleId() != 1){
+            param.setSysUserId(user.getId());
+        }
+        repairCheckAccountService.checkAccount(param);
+        return ResultData.ok();
+    }
+}
+

+ 62 - 0
src/main/java/com/fdkankan/sale/entity/RepairCheckAccount.java

@@ -0,0 +1,62 @@
+package com.fdkankan.sale.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fdkankan.sale.typehandle.JsonArrayTypeHandler;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-06-07
+ */
+@Getter
+@Setter
+@TableName(value = "t_repair_check_account",autoResultMap = true)
+public class RepairCheckAccount implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 核账记录
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 工单号
+     */
+    @TableField("repair_id")
+    private String repairId;
+
+    /**
+     * 到账回单
+     */
+    @TableField(typeHandler = JsonArrayTypeHandler.class)
+    private String checkAccountImg;
+
+    @TableField("sys_user_id")
+    private Long sysUserId;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 1 - 1
src/main/java/com/fdkankan/sale/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
 
         generate(path,"sale", getTables(new String[]{
-                "t_repair_recovery",
+                "t_repair_check_account",
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 18 - 0
src/main/java/com/fdkankan/sale/mapper/IRepairCheckAccountMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.sale.mapper;
+
+import com.fdkankan.sale.entity.RepairCheckAccount;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-06-07
+ */
+@Mapper
+public interface IRepairCheckAccountMapper extends BaseMapper<RepairCheckAccount> {
+
+}

+ 2 - 0
src/main/java/com/fdkankan/sale/mapper/IRepairMapper.java

@@ -25,6 +25,8 @@ public interface IRepairMapper extends BaseMapper<Repair> {
 
     Page<RepairerVo> u8List(Page<Object> page, RepairParam param);
 
+    Page<RepairerVo> checkAccountList(Page<Object> page, RepairParam param);
+
     Page<RepairerVo> repairerOrderList(Page<Object> page, RepairParam param);
 
     Page<RepairerVo> testOrderList(Page<Object> page, RepairParam param);

+ 16 - 0
src/main/java/com/fdkankan/sale/service/IRepairCheckAccountService.java

@@ -0,0 +1,16 @@
+package com.fdkankan.sale.service;
+
+import com.fdkankan.sale.entity.RepairCheckAccount;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-06-07
+ */
+public interface IRepairCheckAccountService extends IService<RepairCheckAccount> {
+
+}

+ 3 - 0
src/main/java/com/fdkankan/sale/service/IRepairService.java

@@ -27,6 +27,9 @@ public interface IRepairService extends IService<Repair> {
 
     Page<RepairerVo> u8List(RepairParam param);
 
+    Page<RepairerVo> checkAccountList(RepairParam param);
+
+
     Page<RepairerVo> repairerOrderList(RepairParam param);
 
     Page<RepairerVo> testOrderList(RepairParam param);

+ 88 - 0
src/main/java/com/fdkankan/sale/service/impl/RepairCheckAccountService.java

@@ -0,0 +1,88 @@
+package com.fdkankan.sale.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.sale.common.PageInfo;
+import com.fdkankan.sale.common.RepairStatusEnum;
+import com.fdkankan.sale.common.ResultCode;
+import com.fdkankan.sale.entity.Repair;
+import com.fdkankan.sale.entity.RepairCheckAccount;
+import com.fdkankan.sale.entity.RepairPay;
+import com.fdkankan.sale.exception.BusinessException;
+import com.fdkankan.sale.service.*;
+import com.fdkankan.sale.util.DateUtil;
+import com.fdkankan.sale.util.StatusUtil;
+import com.fdkankan.sale.vo.request.RepairParam;
+import com.fdkankan.sale.vo.response.RepairRegisterPartVo;
+import com.fdkankan.sale.vo.response.RepairerVo;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class RepairCheckAccountService {
+
+    @Autowired
+    IRepairService repairService;
+    @Autowired
+    IRepairLogService repairLogService;
+    @Autowired
+    ISysUserService sysUserService;
+    @Autowired
+    IRepairCheckAccountService repairCheckAccountService;
+    @Autowired
+    RepairSupplyService repairSupplyService;
+    @Autowired
+    IRepairPayService repairPayService;
+
+    /**
+     * 维修备件管理 供应链
+     * statusParam 0 待备料,1已备料,2待回收
+     *      * status 0待接单,10待检测,20待报价,30待确认,40已取消,50待备料,60维修中,70待测试,
+     *      *        80待支付(已完结),90待回收,100待发货,110已发货
+     */
+    public Object checkAccountList(RepairParam param) {
+        List<Integer> repairStatus = StatusUtil.getCheckAccountStatus(param.getStatusParam());
+        param.setStatusList(repairStatus);
+        Page<RepairerVo>  voPage = repairService.checkAccountList(param);
+        sysUserService.setSaleNameAndRepairManName(voPage.getRecords());
+        return PageInfo.PageInfo(voPage);
+    }
+
+
+    public void checkAccount(RepairCheckAccount param) {
+        if(StringUtils.isBlank(param.getRepairId())){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        Repair repair = repairService.getById(param.getRepairId());
+        if(repair == null){
+            throw new BusinessException(ResultCode.REPAIR_NOT_EXITS);
+        }
+        if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_PAID_OVER.status())){
+            throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS);
+        }
+        RepairPay repairPay = repairPayService.getByRepairId(repair.getRepairId(), 1);
+        if(repairPay == null){
+            throw new BusinessException(ResultCode.NOt_PAY);
+        }
+
+        List<RepairRegisterPartVo> partVoList = repairSupplyService.partInfo(repair.getRepairId(), 1);
+
+        Integer status = null;
+        if(repairPay.getOrderType() == 0){
+            status = RepairStatusEnum.TO_BE_RECOVERED.status();
+        }
+        if(repairPay.getOrderType() == 1){
+            status = RepairStatusEnum.TO_BE_CANCELED_RECOVERED.status();
+        }
+        if(partVoList.size() <=0){
+            status = RepairStatusEnum.TO_BE_SHIPPED.status();
+        }
+
+        repairLogService.saveBySysUser(param.getSysUserId(),param.getRepairId(),status,repair.getStatus(),"到账登记");
+
+        repairCheckAccountService.save(param);
+
+    }
+}

+ 20 - 0
src/main/java/com/fdkankan/sale/service/impl/RepairCheckAccountServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fdkankan.sale.service.impl;
+
+import com.fdkankan.sale.entity.RepairCheckAccount;
+import com.fdkankan.sale.mapper.IRepairCheckAccountMapper;
+import com.fdkankan.sale.service.IRepairCheckAccountService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-06-07
+ */
+@Service
+public class RepairCheckAccountServiceImpl extends ServiceImpl<IRepairCheckAccountMapper, RepairCheckAccount> implements IRepairCheckAccountService {
+
+}

+ 8 - 9
src/main/java/com/fdkankan/sale/service/impl/RepairSaleService.java

@@ -265,14 +265,17 @@ public class RepairSaleService {
         BigDecimal payAmount;
         String orderSn = null;
         Integer status = null;
+        Integer orderType = null;
         if(repair.getStatus().equals(RepairStatusEnum.TO_BE_CANCELED.status())){
             payAmount = priceListService.getRobAmountByRepairId(repair.getRepairId());
             orderSn = "se_c"+DateUtil.getDate(DateUtil.repairIdFmt);
-            status = RepairStatusEnum.TO_BE_CANCELED_RECOVERED.status();
+            //status = RepairStatusEnum.TO_BE_CANCELED_RECOVERED.status();
+            orderType = 1;
         }else {
             payAmount = priceListService.getAmountByRepairId(repair.getRepairId());
             orderSn = "se_s"+DateUtil.getDate(DateUtil.repairIdFmt);
-            status = RepairStatusEnum.TO_BE_RECOVERED.status();
+            //status = RepairStatusEnum.TO_BE_RECOVERED.status();
+            orderType = 0;
         }
         RepairPay repairPay = new RepairPay();
         repairPay.setRepairId(repair.getRepairId());
@@ -282,16 +285,12 @@ public class RepairSaleService {
         repairPay.setSysUserId(userId);
         repairPay.setPayAmount(payAmount);
         repairPay.setPayTime(DateUtil.getDate());
-        repairPay.setOrderType(0);
+        repairPay.setOrderType(orderType);
         repairPay.setOrderSn(orderSn);
         repairPayService.save(repairPay);
 
-        List<RepairRegisterPartVo> partVoList = repairSupplyService.partInfo(repairPay.getRepairId(), 1);
-        if(partVoList.size() >0){
-            repairLogService.saveBySysUser(userId,param.getRepairId(),status,repair.getStatus(), "付款登记");
-        }else {
-            repairLogService.saveBySysUser(userId,param.getRepairId(),RepairStatusEnum.TO_BE_SHIPPED.status(),repair.getStatus(), "付款登记");
-        }
+
+        repairLogService.saveBySysUser(userId,param.getRepairId(),RepairStatusEnum.TO_BE_PAID_OVER.status(),repair.getStatus(), "付款登记");
 
     }
 

+ 5 - 0
src/main/java/com/fdkankan/sale/service/impl/RepairServiceImpl.java

@@ -74,6 +74,11 @@ public class RepairServiceImpl extends ServiceImpl<IRepairMapper, Repair> implem
     }
 
     @Override
+    public Page<RepairerVo> checkAccountList( RepairParam param) {
+        return this.getBaseMapper().checkAccountList(new Page<>(param.getPageNum(),param.getPageSize()),param);
+    }
+
+    @Override
     public Page<RepairerVo> repairerOrderList(RepairParam param) {
         return this.getBaseMapper().repairerOrderList(new Page<>(param.getPageNum(),param.getPageSize()),param);
     }

+ 13 - 0
src/main/java/com/fdkankan/sale/util/StatusUtil.java

@@ -95,6 +95,18 @@ public class StatusUtil {
         }
     }
 
+    public static List<Integer> getCheckAccountStatus(Integer statusParam) {
+
+        if(statusParam == null){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        switch (statusParam){
+            case 0 : return Collections.singletonList(81);
+            case 1 : return Arrays.asList(90,91,100,110);
+            default: throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+    }
+
 
     public static String getCameraName(Integer cameraType){
         switch (cameraType){
@@ -114,4 +126,5 @@ public class StatusUtil {
         return  null;
     }
 
+
 }

+ 5 - 0
src/main/resources/mapper/sale/RepairCheckAccountMapper.xml

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

+ 24 - 0
src/main/resources/mapper/sale/RepairMapper.xml

@@ -95,6 +95,30 @@
     </select>
 
 
+    <select id="checkAccountList" resultType="com.fdkankan.sale.vo.response.RepairerVo">
+        select distinct r.*,rr.check_result,o.create_time as orderReceivingTime,c.customer_name,c.company_name,
+        o.sys_user_id as saleId,rr.sys_user_id as repairManId
+        from t_repair r
+        left join  t_order_receiving o on r.repair_id = o.repair_id
+        left join  t_repair_register rr on r.repair_id = rr.repair_id
+        left join  t_customer c on r.repair_id = c.repair_id
+        where r.rec_status = 'A' and r.status in
+        <foreach item="status" collection="param.statusList" open="(" separator="," close=")">
+            #{status}
+        </foreach>
+        <if test="param.repairId != null and param.repairId != ''">
+            and r.repair_id like  concat ('%',#{param.repairId},'%')
+        </if>
+        <if test="param.cameraType != null">
+            and r.camera_type = #{param.cameraType}
+        </if>
+        <if test="param.cameraSnCode != null and param.cameraSnCode != ''">
+            and r.camera_sn_code like  concat ('%',#{param.cameraSnCode},'%')
+        </if>
+        order by r.create_time desc
+    </select>
+
+
     <select id="repairerOrderList" resultType="com.fdkankan.sale.vo.response.RepairerVo">
         select distinct  r.*,o.create_time as orderReceivingTime,c.customer_name,c.company_name,
                o.sys_user_id as saleId,rr.sys_user_id as repairManId