Prechádzať zdrojové kódy

feature 报修登记

xiahan 4 mesiacov pred
rodič
commit
41fe12c9e8

+ 5 - 1
zhsw-common/pom.xml

@@ -12,7 +12,11 @@
     <artifactId>zhsw-common</artifactId>
 
     <dependencies>
-
+        <dependency>
+            <groupId>com.rongwei</groupId>
+            <artifactId>rw-common-component</artifactId>
+            <version>1.1-SNAPSHOT</version>
+        </dependency>
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-generator</artifactId>

+ 18 - 0
zhsw-common/src/main/java/com/rongwei/zhsw/system/dao/SwUserRepairDao.java

@@ -0,0 +1,18 @@
+package com.rongwei.zhsw.system.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwe.zhsw.system.domain.SwUserRepairDo;
+
+/**
+* @author libai
+* @description 针对表【sw_user_repair(用户报修)】的数据库操作Mapper
+* @createDate 2025-03-16 10:15:57
+* @Entity generator.domain.SwUserRepair
+*/
+public interface SwUserRepairDao extends BaseMapper<SwUserRepairDo> {
+
+}
+
+
+
+

+ 14 - 0
zhsw-common/src/main/java/com/rongwei/zhsw/system/service/RegistrationService.java

@@ -0,0 +1,14 @@
+package com.rongwei.zhsw.system.service;
+
+import com.rongwe.zhsw.system.vo.WeChatRepairReportVo;
+import com.rongwei.rwcommon.base.R;
+
+/**
+ * RegistrationService class
+ *
+ * @author XH
+ * @date 2025/03/17
+ */
+public interface RegistrationService {
+    R repairRegistration(WeChatRepairReportVo weChatRepairReportVo);
+}

+ 13 - 0
zhsw-common/src/main/java/com/rongwei/zhsw/system/service/SwUserRepairService.java

@@ -0,0 +1,13 @@
+package com.rongwei.zhsw.system.service;
+
+import com.rongwe.zhsw.system.domain.SwUserRepairDo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author libai
+* @description 针对表【sw_user_repair(用户报修)】的数据库操作Service
+* @createDate 2025-03-16 10:15:57
+*/
+public interface SwUserRepairService extends IService<SwUserRepairDo> {
+
+}

+ 98 - 0
zhsw-common/src/main/java/com/rongwei/zhsw/system/service/impl/RegistrationServiceImpl.java

@@ -0,0 +1,98 @@
+package com.rongwei.zhsw.system.service.impl;
+
+import com.rongwe.zhsw.system.domain.SwUserRepairDo;
+import com.rongwe.zhsw.system.vo.WeChatRepairReportVo;
+import com.rongwe.zhsw.system.vo.WeChatUploadVo;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.utils.SecurityUtil;
+import com.rongwei.rwcommoncomponent.file.dto.ImageScaleDto;
+import com.rongwei.rwcommoncomponent.file.service.impl.SysFileItemServiceImpl;
+import com.rongwei.rwcommoncomponent.file.utils.FileUtil;
+import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
+import com.rongwei.zhsw.system.service.RegistrationService;
+import com.rongwei.zhsw.system.utils.ZhswCommonUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Base64;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static com.rongwei.zhsw.system.utils.ZhswCommonUtils.initModelGeneralParameters;
+import static com.rongwei.zhsw.system.utils.ZhswCommonUtils.uniqueSign;
+
+/**
+ * RegistrationServiceImpl class
+ *
+ * @author XH
+ * @date 2025/03/17
+ */
+@Service
+public class RegistrationServiceImpl implements RegistrationService {
+    private static final Logger log = LoggerFactory.getLogger(RegistrationServiceImpl.class);
+    @Autowired
+    private SwUserRepairServiceImpl swUserRepairService;
+    @Autowired
+    private SysFileItemServiceImpl sysFileItemService;
+
+    @Override
+    public R repairRegistration(WeChatRepairReportVo weChatRepairReportVo) {
+        log.info("保存用户保修记录");
+
+        SwUserRepairDo swUserRepairDo = new SwUserRepairDo();
+        swUserRepairDo.setId(SecurityUtil.getUUID());
+        initModelGeneralParameters(swUserRepairDo, null);
+        swUserRepairDo.setDeclno(uniqueSign());
+        swUserRepairDo.setAddress(weChatRepairReportVo.getAddress());
+        swUserRepairDo.setContact(weChatRepairReportVo.getContact());
+        swUserRepairDo.setRepairtype(weChatRepairReportVo.getRepairType());
+        ZhswCommonUtils.replaceSysDictMethod(swUserRepairDo, SwUserRepairDo::getRepairtype, SwUserRepairDo::setRepairtype,
+                "repair_management_report_type");
+        swUserRepairDo.setRepairsource("2");
+        swUserRepairDo.setIscompleted("2");
+        swUserRepairDo.setFaultdescription(weChatRepairReportVo.getDescription());
+        swUserRepairDo.setContactnumber(weChatRepairReportVo.getPhone());
+        //用户上传的附件
+        List<WeChatUploadVo> images = weChatRepairReportVo.getImages();
+        List<SysFileItemDo> fileItemDos=null;
+        if(images!=null && !images.isEmpty()){
+            fileItemDos = images.stream().map(data -> {
+                return imgSave(data, swUserRepairDo.getId());
+            }).collect(Collectors.toList());
+        }
+        if(fileItemDos!=null && !fileItemDos.isEmpty()){
+            String imagesStr = fileItemDos.stream().map(data -> data.getFilename() + "-;-" + data.getId())
+                    .collect(Collectors.joining("^_^"));
+            swUserRepairDo.setImages(imagesStr);
+            sysFileItemService.saveBatch(fileItemDos);
+        }
+        swUserRepairService.save(swUserRepairDo);
+        return R.ok();
+    }
+
+
+    public SysFileItemDo imgSave(WeChatUploadVo weChatUploadVo,String id) {
+        String base64 = weChatUploadVo.getBase64();
+        // 微信临时文件的目录
+        String tempFilePath = weChatUploadVo.getTempFilePath();
+        String fileName =  tempFilePath.substring(tempFilePath.lastIndexOf("tmp/")+4);
+        ImageScaleDto scaleDto = ImageScaleDto.builder().scaleFlag(false).build();
+        FileUtil.uploadFile(Base64.getDecoder().decode(base64), "/upload_files/REPAIR", fileName, scaleDto);
+
+        SysFileItemDo sysFileItem= new SysFileItemDo();
+        sysFileItem.setFilename(fileName);
+        sysFileItem.setFilesize(weChatUploadVo.getSize());
+        sysFileItem.setFiletype(fileName.substring(fileName.lastIndexOf(".") + 1));
+        sysFileItem.setStoragetype("1");
+        sysFileItem.setFullpath("/upload_files/REPAIR" + fileName);
+        sysFileItem.setUrlpath("/files/REPAIR" + fileName);
+        sysFileItem.setRelationid(id);
+        sysFileItem.setId(SecurityUtil.getUUID());
+        sysFileItem.setCreatedate(new Date());
+        sysFileItem.setModifydate(new Date());
+        return sysFileItem;
+    }
+}

+ 23 - 0
zhsw-common/src/main/java/com/rongwei/zhsw/system/service/impl/SwUserRepairServiceImpl.java

@@ -0,0 +1,23 @@
+package com.rongwei.zhsw.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwe.zhsw.system.domain.SwUserRepairDo;
+import com.rongwei.zhsw.system.dao.SwUserRepairDao;
+
+import com.rongwei.zhsw.system.service.SwUserRepairService;
+import org.springframework.stereotype.Service;
+
+/**
+* @author libai
+* @description 针对表【sw_user_repair(用户报修)】的数据库操作Service实现
+* @createDate 2025-03-16 10:15:57
+*/
+@Service
+public class SwUserRepairServiceImpl extends ServiceImpl<SwUserRepairDao, SwUserRepairDo>
+    implements SwUserRepairService {
+
+}
+
+
+
+

+ 75 - 4
zhsw-common/src/main/java/com/rongwei/zhsw/system/utils/ZhswCommonUtils.java

@@ -1,7 +1,10 @@
 package com.rongwei.zhsw.system.utils;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.rongwei.commonservice.service.RedisService;
+import com.rongwei.rwadmincommon.system.dao.SysDictDao;
+import com.rongwei.rwadmincommon.system.domain.SysDictDo;
 import com.rongwei.rwadmincommon.system.domain.SysUserDo;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.BaseDo;
@@ -15,7 +18,12 @@ import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.annotation.PostConstruct;
 import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.List;
+import java.util.Random;
+import java.util.function.BiConsumer;
+import java.util.function.Function;
 
 /**
  * CXCommonUtils class
@@ -28,14 +36,17 @@ public class ZhswCommonUtils {
     private static final Logger log = LoggerFactory.getLogger(ZhswCommonUtils.class.getName());
     @Autowired
     private RedisService autoRedisService;
+    @Autowired
+    private SysDictDao auoSysDictDao;
 
-    private static RedisService redisService;
 
+    private static RedisService redisService;
+    private static SysDictDao sysDictDao;
 
     @PostConstruct
     public void info() {
         redisService = autoRedisService;
-
+        sysDictDao=auoSysDictDao;
     }
 
 
@@ -61,15 +72,75 @@ public class ZhswCommonUtils {
             userVo = getCurrentUser();
         }
         t.setDeleted("0");
+        t.setCreatedate(new Date());
+        t.setModifydate(new Date());
         if(userVo==null){
             return;
         }
-        t.setCreatedate(new Date());
-        t.setModifydate(new Date());
         t.setCreateuserid(userVo.getId());
         t.setCreateusername(userVo.getName());
         t.setModifyuserid(userVo.getId());
         t.setModifyusername(userVo.getName());
     }
 
+    /**
+     * 标识 用于业务系统的编号信息
+     * @return
+     */
+    public static  String uniqueSign() {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+        Random random = new Random();
+        int randomNumber = random.nextInt(9999);
+        String dateString = sdf.format(new Date());
+        return dateString + String.format("%04d",randomNumber); // 将时间戳和随机数拼接成字符串
+    }
+    /**
+     * 数据字典替换方法
+     *
+     * @param dictType    数据字典类型
+     * @param pojos       实体List
+     * @param getPojoData 需要替换字段的get方
+     * @param setPojoData 需要替换字段的set方法
+     * @param <T>
+     * @return
+     */
+    public static <T> void replaceSysDictMethod(List<T> pojos,
+                                                Function<T, String> getPojoData, BiConsumer<T, String> setPojoData,
+                                                String dictType) {
+        if (org.apache.commons.lang.StringUtils.isBlank(dictType)) {
+            return;
+        }
+        // 报表类型
+        List<SysDictDo> sysDictDoList = sysDictDao.selectList(new LambdaQueryWrapper<SysDictDo>()
+                .eq(BaseDo::getDeleted, "0")
+                .eq(SysDictDo::getDicttype, dictType));
+        if (sysDictDoList.isEmpty()) {
+            return;
+        }
+        // 循环实体
+        pojos.forEach(pojo -> {
+            // 获取数字字典
+            SysDictDo sysDictDo = sysDictDoList.stream().filter(dict -> dict.getValue().equals(getPojoData.apply(pojo))).findFirst().orElse(null);
+            setPojoData.accept(pojo, sysDictDo == null ? getPojoData.apply(pojo) : sysDictDo.getName());
+        });
+    }
+
+    public static <T> void replaceSysDictMethod(T pojo,
+                                                Function<T, String> getPojoData, BiConsumer<T, String> setPojoData,
+                                                String dictType) {
+        if (org.apache.commons.lang.StringUtils.isBlank(dictType)) {
+            return;
+        }
+        // 报表类型
+        List<SysDictDo> sysDictDoList = sysDictDao.selectList(new LambdaQueryWrapper<SysDictDo>()
+                .eq(BaseDo::getDeleted, "0")
+                .eq(SysDictDo::getDicttype, dictType));
+        if (sysDictDoList.isEmpty()) {
+            return;
+        }
+
+        // 获取数字字典
+        SysDictDo sysDictDo = sysDictDoList.stream().filter(dict -> dict.getValue().equals(getPojoData.apply(pojo))).findFirst().orElse(null);
+        setPojoData.accept(pojo, sysDictDo == null ? getPojoData.apply(pojo) : sysDictDo.getName());
+    }
 }

+ 0 - 7
zhsw-common/src/main/java/com/rongwei/zhsw/system/wechat/impl/WeChatLoginServiceImpl.java

@@ -174,11 +174,4 @@ public class WeChatLoginServiceImpl implements WeChatLoginService {
         return userByDsKey;
     }
 
-    public static void main(String[] args) {
-        String address = "江苏省苏州市昆山市花桥镇同城浦江大厦4号楼701";
-        if (!Strings.isNullOrEmpty(address)) {
-            address = StringUtils.left(address, address.length() - 11).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(address, address.length() - 11), StringUtils.length(address), "*"), "***"));
-        }
-        System.out.println(address);
-    }
 }

+ 105 - 0
zhsw-entity/src/main/java/com/rongwe/zhsw/system/domain/SwUserRepairDo.java

@@ -0,0 +1,105 @@
+package com.rongwe.zhsw.system.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+/**
+ * 用户报修
+ * @TableName sw_user_repair
+ */
+@TableName(value ="sw_user_repair")
+@Data
+public class SwUserRepairDo extends BaseDo {
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 申报编号
+     */
+    private String declno;
+
+    /**
+     * 申报户号
+     */
+    private String declaccnum;
+
+    /**
+     * 户名
+     */
+    private String accountname;
+
+    /**
+     * 地址
+     */
+    private String address;
+
+    /**
+     * 联系人
+     */
+    private String contact;
+
+    /**
+     * 联系电话
+     */
+    private String contactnumber;
+
+    /**
+     * 报修类型
+     */
+    private String repairtype;
+
+    /**
+     * 报修来源
+     */
+    private String repairsource;
+
+    /**
+     * 维修人
+     */
+    private String repairperson;
+
+    /**
+     * 维修人ID
+     */
+    private String repairpersonid;
+
+    /**
+     * 文件
+     */
+    private String file;
+
+    /**
+     * 维修时间
+     */
+    private Date repairtime;
+
+    /**
+     * 是否完成(1:是2:否)
+     */
+    private String iscompleted;
+
+    /**
+     * 故障说明
+     */
+    private String faultdescription;
+
+    /**
+     * 照片
+     */
+    private String images;
+}

+ 40 - 0
zhsw-entity/src/main/java/com/rongwe/zhsw/system/vo/WeChatRepairReportVo.java

@@ -0,0 +1,40 @@
+package com.rongwe.zhsw.system.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * WeChatRepairReportVo class
+ *
+ * @author XH
+ * @date 2025/03/16
+ */
+@Data
+public class WeChatRepairReportVo {
+    /**
+     * 地址
+     */
+    private String address;
+    /**
+     * 联系人
+     */
+    private String contact;
+    /**
+     * 故障描述
+     */
+    private String description;
+    /**
+     * 故障附件
+     */
+    private List<WeChatUploadVo> images;
+    /**
+     * 联系方式
+     */
+    private String phone;
+    /**
+     * "水龙头故障"
+     */
+    private String repairType;
+
+}

+ 21 - 0
zhsw-entity/src/main/java/com/rongwe/zhsw/system/vo/WeChatUploadVo.java

@@ -0,0 +1,21 @@
+package com.rongwe.zhsw.system.vo;
+
+import lombok.Data;
+
+/**
+ * WeChatUploadVo class
+ *
+ * @author XH
+ * @date 2025/03/16
+ */
+@Data
+public class WeChatUploadVo {
+    //base64
+    private String base64;
+    //类型 "image"
+    private String fileType;
+    // 大小 803355 (单位)字节
+    private long size;
+    //"http://tmp/pa0e3f17hzGW36f39448eadbe1b681e38ed76536bff4.jpg"
+    private String tempFilePath;
+}

+ 36 - 0
zhsw-server/src/main/java/com/rongwei/zhsw/system/controller/weChat/RegistrationController.java

@@ -0,0 +1,36 @@
+package com.rongwei.zhsw.system.controller.weChat;
+
+/**
+ * RegistrationController class
+ *
+ * @author XH
+ * @date 2025/03/16
+ */
+
+import com.rongwe.zhsw.system.vo.BillListSearchVo;
+import com.rongwe.zhsw.system.vo.WeChatRepairReportVo;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.zhsw.system.service.RegistrationService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+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;
+
+@RestController
+@RequestMapping("/wechat/registration")
+public class RegistrationController {
+
+
+    private static final Logger log = LoggerFactory.getLogger(BillController.class);
+
+    @Autowired
+    private RegistrationService registrationService;
+
+    @PostMapping("/repair")
+    private R repairRegistration(@RequestBody WeChatRepairReportVo weChatRepairReportVo) {
+        return registrationService.repairRegistration(weChatRepairReportVo);
+    }
+}