Kaynağa Gözat

基本文件

LIVE_YE 1 ay önce
ebeveyn
işleme
e0146e3120
37 değiştirilmiş dosya ile 3376 ekleme ve 43 silme
  1. 32 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/chinaArea/ChinaAreaController.java
  2. 104 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/work/BasicInfoController.java
  3. 104 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/work/ChargeDetailsController.java
  4. 104 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/work/WorkOrderFjController.java
  5. 104 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/work/WorkOrderInfoController.java
  6. 39 2
      ruoyi-admin/src/main/resources/application-druid.yml
  7. 105 0
      ruoyi-admin/src/main/resources/application-prod.yml
  8. 3 38
      ruoyi-admin/src/main/resources/application.yml
  9. 11 0
      ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
  10. 8 0
      ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeSelect.java
  11. 137 0
      ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/ChinaArea.java
  12. 1 1
      ruoyi-generator/src/main/resources/generator.yml
  13. 2 2
      ruoyi-generator/src/main/resources/vm/java/controller.java.vm
  14. 265 0
      ruoyi-system/src/main/java/com/ruoyi/system/domain/BasicInfo.java
  15. 127 0
      ruoyi-system/src/main/java/com/ruoyi/system/domain/ChargeDetails.java
  16. 98 0
      ruoyi-system/src/main/java/com/ruoyi/system/domain/WorkOrderFj.java
  17. 511 0
      ruoyi-system/src/main/java/com/ruoyi/system/domain/WorkOrderInfo.java
  18. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/BasicInfoMapper.java
  19. 63 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/ChargeDetailsMapper.java
  20. 21 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/ChinaAreaMapper.java
  21. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/WorkOrderFjMapper.java
  22. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/WorkOrderInfoMapper.java
  23. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IBasicInfoService.java
  24. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IChargeDetailsService.java
  25. 18 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IChinaAreaService.java
  26. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IWorkOrderFjService.java
  27. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IWorkOrderInfoService.java
  28. 96 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BasicInfoServiceImpl.java
  29. 93 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ChargeDetailsServiceImpl.java
  30. 131 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ChinaAreaServiceImpl.java
  31. 93 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WorkOrderFjServiceImpl.java
  32. 142 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WorkOrderInfoServiceImpl.java
  33. 145 0
      ruoyi-system/src/main/resources/mapper/system/BasicInfoMapper.xml
  34. 84 0
      ruoyi-system/src/main/resources/mapper/system/ChargeDetailsMapper.xml
  35. 17 0
      ruoyi-system/src/main/resources/mapper/system/ChinaAreaMapper.xml
  36. 75 0
      ruoyi-system/src/main/resources/mapper/system/WorkOrderFjMapper.xml
  37. 216 0
      ruoyi-system/src/main/resources/mapper/system/WorkOrderInfoMapper.xml

+ 32 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/chinaArea/ChinaAreaController.java

@@ -0,0 +1,32 @@
+package com.ruoyi.web.controller.chinaArea;
+
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.ChinaArea;
+import com.ruoyi.system.service.IChinaAreaService;
+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;
+
+import javax.annotation.Resource;
+
+/**
+ * @author tjf
+ * @Date: 2022/03/25/9:39
+ */
+@RestController
+@RequestMapping("/chinaArea")
+public class ChinaAreaController {
+
+    @Resource
+    private IChinaAreaService chinaAreaService;
+    /**
+     * 获取行政区域规划下拉树列表
+     */
+    @PostMapping("/treeSelect")
+    public AjaxResult treeSelect(@RequestBody ChinaArea chinaArea)
+    {
+        return chinaAreaService.selectChinaAreaList(chinaArea);
+    }
+}

+ 104 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/work/BasicInfoController.java

@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.work;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.BasicInfo;
+import com.ruoyi.system.service.IBasicInfoService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 基本信息Controller
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@RestController
+@RequestMapping("/basic/info")
+public class BasicInfoController extends BaseController
+{
+    @Autowired
+    private IBasicInfoService basicInfoService;
+
+    /**
+     * 查询基本信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('basic:info:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(BasicInfo basicInfo)
+    {
+        startPage();
+        List<BasicInfo> list = basicInfoService.selectBasicInfoList(basicInfo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出基本信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('basic:info:export')")
+    @Log(title = "基本信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BasicInfo basicInfo)
+    {
+        List<BasicInfo> list = basicInfoService.selectBasicInfoList(basicInfo);
+        ExcelUtil<BasicInfo> util = new ExcelUtil<BasicInfo>(BasicInfo.class);
+        util.exportExcel(response, list, "基本信息数据");
+    }
+
+    /**
+     * 获取基本信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('basic:info:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(basicInfoService.selectBasicInfoById(id));
+    }
+
+    /**
+     * 新增基本信息
+     */
+    @PreAuthorize("@ss.hasPermi('basic:info:add')")
+    @Log(title = "基本信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BasicInfo basicInfo)
+    {
+        return toAjax(basicInfoService.insertBasicInfo(basicInfo));
+    }
+
+    /**
+     * 修改基本信息
+     */
+    @PreAuthorize("@ss.hasPermi('basic:info:edit')")
+    @Log(title = "基本信息", businessType = BusinessType.UPDATE)
+    @PostMapping("/put")
+    public AjaxResult edit(@RequestBody BasicInfo basicInfo)
+    {
+        return toAjax(basicInfoService.updateBasicInfo(basicInfo));
+    }
+
+    /**
+     * 删除基本信息
+     */
+    @PreAuthorize("@ss.hasPermi('basic:info:remove')")
+    @Log(title = "基本信息", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(basicInfoService.deleteBasicInfoByIds(ids));
+    }
+}

+ 104 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/work/ChargeDetailsController.java

@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.work;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.ChargeDetails;
+import com.ruoyi.system.service.IChargeDetailsService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 工单收费详情Controller
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@RestController
+@RequestMapping("/charge/details")
+public class ChargeDetailsController extends BaseController
+{
+    @Autowired
+    private IChargeDetailsService chargeDetailsService;
+
+    /**
+     * 查询工单收费详情列表
+     */
+    @PreAuthorize("@ss.hasPermi('charge:details:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ChargeDetails chargeDetails)
+    {
+        startPage();
+        List<ChargeDetails> list = chargeDetailsService.selectChargeDetailsList(chargeDetails);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出工单收费详情列表
+     */
+    @PreAuthorize("@ss.hasPermi('charge:details:export')")
+    @Log(title = "工单收费详情", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ChargeDetails chargeDetails)
+    {
+        List<ChargeDetails> list = chargeDetailsService.selectChargeDetailsList(chargeDetails);
+        ExcelUtil<ChargeDetails> util = new ExcelUtil<ChargeDetails>(ChargeDetails.class);
+        util.exportExcel(response, list, "工单收费详情数据");
+    }
+
+    /**
+     * 获取工单收费详情详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('charge:details:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(chargeDetailsService.selectChargeDetailsById(id));
+    }
+
+    /**
+     * 新增工单收费详情
+     */
+    @PreAuthorize("@ss.hasPermi('charge:details:add')")
+    @Log(title = "工单收费详情", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ChargeDetails chargeDetails)
+    {
+        return toAjax(chargeDetailsService.insertChargeDetails(chargeDetails));
+    }
+
+    /**
+     * 修改工单收费详情
+     */
+    @PreAuthorize("@ss.hasPermi('charge:details:edit')")
+    @Log(title = "工单收费详情", businessType = BusinessType.UPDATE)
+    @PostMapping("/put")
+    public AjaxResult edit(@RequestBody ChargeDetails chargeDetails)
+    {
+        return toAjax(chargeDetailsService.updateChargeDetails(chargeDetails));
+    }
+
+    /**
+     * 删除工单收费详情
+     */
+    @PreAuthorize("@ss.hasPermi('charge:details:remove')")
+    @Log(title = "工单收费详情", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(chargeDetailsService.deleteChargeDetailsByIds(ids));
+    }
+}

+ 104 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/work/WorkOrderFjController.java

@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.work;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.WorkOrderFj;
+import com.ruoyi.system.service.IWorkOrderFjService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 工单_附件Controller
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@RestController
+@RequestMapping("/work/fj")
+public class WorkOrderFjController extends BaseController
+{
+    @Autowired
+    private IWorkOrderFjService workOrderFjService;
+
+    /**
+     * 查询工单_附件列表
+     */
+    @PreAuthorize("@ss.hasPermi('work:fj:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(WorkOrderFj workOrderFj)
+    {
+        startPage();
+        List<WorkOrderFj> list = workOrderFjService.selectWorkOrderFjList(workOrderFj);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出工单_附件列表
+     */
+    @PreAuthorize("@ss.hasPermi('work:fj:export')")
+    @Log(title = "工单_附件", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, WorkOrderFj workOrderFj)
+    {
+        List<WorkOrderFj> list = workOrderFjService.selectWorkOrderFjList(workOrderFj);
+        ExcelUtil<WorkOrderFj> util = new ExcelUtil<WorkOrderFj>(WorkOrderFj.class);
+        util.exportExcel(response, list, "工单_附件数据");
+    }
+
+    /**
+     * 获取工单_附件详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('work:fj:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(workOrderFjService.selectWorkOrderFjById(id));
+    }
+
+    /**
+     * 新增工单_附件
+     */
+    @PreAuthorize("@ss.hasPermi('work:fj:add')")
+    @Log(title = "工单_附件", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody WorkOrderFj workOrderFj)
+    {
+        return toAjax(workOrderFjService.insertWorkOrderFj(workOrderFj));
+    }
+
+    /**
+     * 修改工单_附件
+     */
+    @PreAuthorize("@ss.hasPermi('work:fj:edit')")
+    @Log(title = "工单_附件", businessType = BusinessType.UPDATE)
+    @PostMapping("/put")
+    public AjaxResult edit(@RequestBody WorkOrderFj workOrderFj)
+    {
+        return toAjax(workOrderFjService.updateWorkOrderFj(workOrderFj));
+    }
+
+    /**
+     * 删除工单_附件
+     */
+    @PreAuthorize("@ss.hasPermi('work:fj:remove')")
+    @Log(title = "工单_附件", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(workOrderFjService.deleteWorkOrderFjByIds(ids));
+    }
+}

+ 104 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/work/WorkOrderInfoController.java

@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.work;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.WorkOrderInfo;
+import com.ruoyi.system.service.IWorkOrderInfoService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 工单信息Controller
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@RestController
+@RequestMapping("/work/info")
+public class WorkOrderInfoController extends BaseController
+{
+    @Autowired
+    private IWorkOrderInfoService workOrderInfoService;
+
+    /**
+     * 查询工单信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('work:info:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(WorkOrderInfo workOrderInfo)
+    {
+        startPage();
+        List<WorkOrderInfo> list = workOrderInfoService.selectWorkOrderInfoList(workOrderInfo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出工单信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('work:info:export')")
+    @Log(title = "工单信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, WorkOrderInfo workOrderInfo)
+    {
+        List<WorkOrderInfo> list = workOrderInfoService.selectWorkOrderInfoList(workOrderInfo);
+        ExcelUtil<WorkOrderInfo> util = new ExcelUtil<WorkOrderInfo>(WorkOrderInfo.class);
+        util.exportExcel(response, list, "工单信息数据");
+    }
+
+    /**
+     * 获取工单信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('work:info:query')")
+    @GetMapping(value = "/{orderId}")
+    public AjaxResult getInfo(@PathVariable("orderId") String orderId)
+    {
+        return success(workOrderInfoService.selectWorkOrderInfoByOrderId(orderId));
+    }
+
+    /**
+     * 新增工单信息
+     */
+    @PreAuthorize("@ss.hasPermi('work:info:add')")
+    @Log(title = "工单信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody WorkOrderInfo workOrderInfo)
+    {
+        return toAjax(workOrderInfoService.insertWorkOrderInfo(workOrderInfo));
+    }
+
+    /**
+     * 修改工单信息
+     */
+    @PreAuthorize("@ss.hasPermi('work:info:edit')")
+    @Log(title = "工单信息", businessType = BusinessType.UPDATE)
+    @PostMapping("/put")
+    public AjaxResult edit(@RequestBody WorkOrderInfo workOrderInfo)
+    {
+        return toAjax(workOrderInfoService.updateWorkOrderInfo(workOrderInfo));
+    }
+
+    /**
+     * 删除工单信息
+     */
+    @PreAuthorize("@ss.hasPermi('work:info:remove')")
+    @Log(title = "工单信息", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{orderIds}")
+    public AjaxResult remove(@PathVariable String[] orderIds)
+    {
+        return toAjax(workOrderInfoService.deleteWorkOrderInfoByOrderIds(orderIds));
+    }
+}

+ 39 - 2
ruoyi-admin/src/main/resources/application-druid.yml

@@ -1,14 +1,51 @@
+# 项目相关配置
+ruoyi:
+    # 名称
+    name: 中新云工单
+    # 版本
+    version: 3.8.9
+    # 版权年份
+    copyrightYear: 2025
+    # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
+    profile: D:/ruoyi/uploadPath
+    # 获取ip地址开关
+    addressEnabled: false
+    # 验证码类型 math 数字计算 char 字符验证
+    captchaType: math
+
 # 数据源配置
 spring:
+    # redis 配置
+    redis:
+        # 地址
+        host: 60.171.161.56
+        # 端口,默认为6379
+        port: 20001
+        # 数据库索引
+        database: 4
+        # 密码
+        password: Boman123
+        # 连接超时时间
+        timeout: 10s
+        lettuce:
+            pool:
+                # 连接池中的最小空闲连接
+                min-idle: 0
+                # 连接池中的最大空闲连接
+                max-idle: 8
+                # 连接池的最大数据库连接数
+                max-active: 8
+                # #连接池最大阻塞等待时间(使用负值表示没有限制)
+                max-wait: -1ms
     datasource:
         type: com.alibaba.druid.pool.DruidDataSource
         driverClassName: com.mysql.cj.jdbc.Driver
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://60.171.161.56:25143/gongdan?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                 username: root
-                password: password
+                password: Boman123
             # 从库数据源
             slave:
                 # 从数据源开关/默认关闭

+ 105 - 0
ruoyi-admin/src/main/resources/application-prod.yml

@@ -0,0 +1,105 @@
+# 项目相关配置
+ruoyi:
+    # 名称
+    name: 中新云园区
+    # 版本
+    version: 3.8.7
+    # 版权年份
+    copyrightYear: 2025
+    # 实例演示开关
+    demoEnabled: true
+    # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
+    profile: /home/ruoyi/uploadPath/gongdan
+    # 获取ip地址开关
+    addressEnabled: false
+    # 验证码类型 math 数组计算 char 字符验证
+    captchaType: math
+
+
+# 数据源配置
+spring:
+    # redis 配置
+    redis:
+        # 地址
+        host: 127.0.0.1
+        # 端口,默认为6379
+        port: 6379
+        # 数据库索引
+        database: 4
+        # 密码
+        password: D3fQYAsw
+        # 连接超时时间
+        timeout: 10s
+        lettuce:
+            pool:
+                # 连接池中的最小空闲连接
+                min-idle: 0
+                # 连接池中的最大空闲连接
+                max-idle: 8
+                # 连接池的最大数据库连接数
+                max-active: 8
+                # #连接池最大阻塞等待时间(使用负值表示没有限制)
+                max-wait: -1ms
+
+    datasource:
+        type: com.alibaba.druid.pool.DruidDataSource
+        driverClassName: com.mysql.cj.jdbc.Driver
+        druid:
+            # 主库数据源
+            master:
+                url: jdbc:mysql://127.0.0.1:3306/gongdan?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
+                username: root
+                password: zhaoshang@2018
+            # 从库数据源
+            slave:
+                # 从数据源开关/默认关闭
+                enabled: false
+                url:
+                username:
+                password:
+            # 初始连接数
+            initialSize: 5
+            # 最小连接池数量
+            minIdle: 10
+            # 最大连接池数量
+            maxActive: 20
+            # 配置获取连接等待超时的时间
+            maxWait: 60000
+            # 配置连接超时时间
+            connectTimeout: 30000
+            # 配置网络超时时间
+            socketTimeout: 60000
+            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+            timeBetweenEvictionRunsMillis: 60000
+            # 配置一个连接在池中最小生存的时间,单位是毫秒
+            minEvictableIdleTimeMillis: 300000
+            # 配置一个连接在池中最大生存的时间,单位是毫秒
+            maxEvictableIdleTimeMillis: 900000
+            # 配置检测连接是否有效
+            validationQuery: SELECT 1 FROM DUAL
+            testWhileIdle: true
+            testOnBorrow: false
+            testOnReturn: false
+            webStatFilter:
+                enabled: true
+            statViewServlet:
+                enabled: false
+                # 设置白名单,不填则允许所有访问
+                allow:
+                url-pattern: /druid/*
+                # 控制台管理用户名和密码
+                login-username:
+                login-password:
+            filter:
+                stat:
+                    enabled: true
+                    # 慢SQL记录
+                    log-slow-sql: true
+                    slow-sql-millis: 1000
+                    merge-sql: true
+                wall:
+                    config:
+                        multi-statement-allow: true
+
+
+#极光推送

+ 3 - 38
ruoyi-admin/src/main/resources/application.yml

@@ -1,22 +1,8 @@
-# 项目相关配置
-ruoyi:
-  # 名称
-  name: RuoYi
-  # 版本
-  version: 3.8.9
-  # 版权年份
-  copyrightYear: 2025
-  # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
-  profile: D:/ruoyi/uploadPath
-  # 获取ip地址开关
-  addressEnabled: false
-  # 验证码类型 math 数字计算 char 字符验证
-  captchaType: math
 
 # 开发环境配置
 server:
   # 服务器的HTTP端口,默认为8080
-  port: 8080
+  port: 8077
   servlet:
     # 应用的访问路径
     context-path: /
@@ -53,6 +39,7 @@ spring:
     basename: i18n/messages
   profiles:
     active: druid
+    #active: prod
   # 文件上传
   servlet:
     multipart:
@@ -65,28 +52,6 @@ spring:
     restart:
       # 热部署开关
       enabled: true
-  # redis 配置
-  redis:
-    # 地址
-    host: localhost
-    # 端口,默认为6379
-    port: 6379
-    # 数据库索引
-    database: 0
-    # 密码
-    password:
-    # 连接超时时间
-    timeout: 10s
-    lettuce:
-      pool:
-        # 连接池中的最小空闲连接
-        min-idle: 0
-        # 连接池中的最大空闲连接
-        max-idle: 8
-        # 连接池的最大数据库连接数
-        max-active: 8
-        # #连接池最大阻塞等待时间(使用负值表示没有限制)
-        max-wait: -1ms
 
 # token配置
 token:
@@ -95,7 +60,7 @@ token:
   # 令牌密钥
   secret: abcdefghijklmnopqrstuvwxyz
   # 令牌有效期(默认30分钟)
-  expireTime: 30
+  expireTime: 21600
 
 # MyBatis配置
 mybatis:

+ 11 - 0
ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java

@@ -78,4 +78,15 @@ public class UserConstants
      */
     public static final int PASSWORD_MIN_LENGTH = 5;
     public static final int PASSWORD_MAX_LENGTH = 20;
+
+    /**
+     * 行政区域规划树形集合
+     */
+    public static final String CHINA_AREA = "china_area_list:";
+
+    public static final String ONE = "1";
+    public static final String TWO = "2";
+    public static final String THR = "3";
+    public static final String FOR = "4";
+    public static final String FIV = "5";
 }

+ 8 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeSelect.java

@@ -5,6 +5,7 @@ import java.util.List;
 import java.util.stream.Collectors;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.ruoyi.common.constant.UserConstants;
+import com.ruoyi.common.core.domain.entity.ChinaArea;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysMenu;
 import com.ruoyi.common.utils.StringUtils;
@@ -51,6 +52,13 @@ public class TreeSelect implements Serializable
         this.children = menu.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
     }
 
+    public TreeSelect(ChinaArea chinaArea)
+    {
+        this.id = chinaArea.getId();
+        this.label = chinaArea.getName();
+        this.children = chinaArea.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
+    }
+
     public Long getId()
     {
         return id;

+ 137 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/ChinaArea.java

@@ -0,0 +1,137 @@
+package com.ruoyi.common.core.domain.entity;
+
+
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author tjf
+ * @Date: 2022/03/25/9:41
+ */
+public class ChinaArea extends BaseEntity {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * id
+     */
+
+    private Long id;
+
+    /**
+     * 数据库字段id
+     */
+    private String areaId;
+
+    /**
+     * 上级ID,一级为0
+     */
+
+    private String pid;
+
+    /**
+     * 名称
+     */
+
+    private String name;
+
+    /**
+     * 层级
+     */
+
+    private Integer treeLevel;
+
+    /**
+     * 是否叶子节点  0:否   1:是
+     */
+
+    private Integer leaf;
+
+    /**
+     * 排序
+     */
+
+    private Long sort;
+
+    /** 子区域 */
+    private List<ChinaArea> children = new ArrayList<ChinaArea>();
+
+    public List<ChinaArea> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<ChinaArea> children) {
+        this.children = children;
+    }
+
+    public String getAreaId() {
+        return areaId;
+    }
+
+    public void setAreaId(String areaId) {
+        this.areaId = areaId;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getPid() {
+        return pid;
+    }
+
+    public void setPid(String pid) {
+        this.pid = pid;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getTreeLevel() {
+        return treeLevel;
+    }
+
+    public void setTreeLevel(Integer treeLevel) {
+        this.treeLevel = treeLevel;
+    }
+
+    public Integer getLeaf() {
+        return leaf;
+    }
+
+    public void setLeaf(Integer leaf) {
+        this.leaf = leaf;
+    }
+
+    public Long getSort() {
+        return sort;
+    }
+
+    public void setSort(Long sort) {
+        this.sort = sort;
+    }
+
+    @Override
+    public String toString() {
+        return "SysRegion{" +
+                "id=" + id +
+                ", pid=" + pid +
+                ", name='" + name + '\'' +
+                ", treeLevel=" + treeLevel +
+                ", leaf=" + leaf +
+                ", sort=" + sort +
+                '}';
+    }
+}

+ 1 - 1
ruoyi-generator/src/main/resources/generator.yml

@@ -1,7 +1,7 @@
 # 代码生成
 gen:
   # 作者
-  author: ruoyi
+  author: boman
   # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
   packageName: com.ruoyi.system
   # 自动去除表前缀,默认是false

+ 2 - 2
ruoyi-generator/src/main/resources/vm/java/controller.java.vm

@@ -96,7 +96,7 @@ public class ${ClassName}Controller extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('${permissionPrefix}:edit')")
     @Log(title = "${functionName}", businessType = BusinessType.UPDATE)
-    @PutMapping
+    @PostMapping("/put")
     public AjaxResult edit(@RequestBody ${ClassName} ${className})
     {
         return toAjax(${className}Service.update${ClassName}(${className}));
@@ -107,7 +107,7 @@ public class ${ClassName}Controller extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('${permissionPrefix}:remove')")
     @Log(title = "${functionName}", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{${pkColumn.javaField}s}")
+    @GetMapping("/delete/{${pkColumn.javaField}s}")
     public AjaxResult remove(@PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s)
     {
         return toAjax(${className}Service.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s));

+ 265 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/BasicInfo.java

@@ -0,0 +1,265 @@
+package com.ruoyi.system.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 基本信息对象 basic_info
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public class BasicInfo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    private Long id;
+
+    /** 用户ID */
+    @Excel(name = "用户ID")
+    private Long userId;
+
+    /** 单位名称 */
+    @Excel(name = "单位名称")
+    private String unitName;
+
+    /** 居住地的省份 */
+    private String provinceId;
+
+    /** 居住地的省份 */
+    @Excel(name = "居住地的省份")
+    private String province;
+
+    /** 居住地的城市 */
+    private String cityId;
+
+    /** 居住地的城市 */
+    @Excel(name = "居住地的城市")
+    private String city;
+
+    /** 居住地的区 */
+    private String regionId;
+
+    /** 居住地的区 */
+    @Excel(name = "居住地的区")
+    private String region;
+
+    /** 详细地址 */
+    @Excel(name = "详细地址")
+    private String detailedAddress;
+
+    /** 经度 */
+    @Excel(name = "经度")
+    private String lon;
+
+    /** 纬度 */
+    @Excel(name = "纬度")
+    private String lat;
+
+    /** 联系人 */
+    @Excel(name = "联系人")
+    private String personName;
+
+    /** 联系电话 */
+    @Excel(name = "联系电话")
+    private String phonenumber;
+
+    /** 性别(0男 1女 2未知) */
+    @Excel(name = "性别", readConverterExp = "0=男,1=女,2=未知")
+    private String sex;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+
+    public void setUserId(Long userId) 
+    {
+        this.userId = userId;
+    }
+
+    public Long getUserId() 
+    {
+        return userId;
+    }
+
+    public void setUnitName(String unitName) 
+    {
+        this.unitName = unitName;
+    }
+
+    public String getUnitName() 
+    {
+        return unitName;
+    }
+
+    public void setProvinceId(String provinceId) 
+    {
+        this.provinceId = provinceId;
+    }
+
+    public String getProvinceId() 
+    {
+        return provinceId;
+    }
+
+    public void setProvince(String province) 
+    {
+        this.province = province;
+    }
+
+    public String getProvince() 
+    {
+        return province;
+    }
+
+    public void setCityId(String cityId) 
+    {
+        this.cityId = cityId;
+    }
+
+    public String getCityId() 
+    {
+        return cityId;
+    }
+
+    public void setCity(String city) 
+    {
+        this.city = city;
+    }
+
+    public String getCity() 
+    {
+        return city;
+    }
+
+    public void setRegionId(String regionId) 
+    {
+        this.regionId = regionId;
+    }
+
+    public String getRegionId() 
+    {
+        return regionId;
+    }
+
+    public void setRegion(String region) 
+    {
+        this.region = region;
+    }
+
+    public String getRegion() 
+    {
+        return region;
+    }
+
+    public void setDetailedAddress(String detailedAddress) 
+    {
+        this.detailedAddress = detailedAddress;
+    }
+
+    public String getDetailedAddress() 
+    {
+        return detailedAddress;
+    }
+
+    public void setLon(String lon) 
+    {
+        this.lon = lon;
+    }
+
+    public String getLon() 
+    {
+        return lon;
+    }
+
+    public void setLat(String lat) 
+    {
+        this.lat = lat;
+    }
+
+    public String getLat() 
+    {
+        return lat;
+    }
+
+    public void setPersonName(String personName) 
+    {
+        this.personName = personName;
+    }
+
+    public String getPersonName() 
+    {
+        return personName;
+    }
+
+    public void setPhonenumber(String phonenumber) 
+    {
+        this.phonenumber = phonenumber;
+    }
+
+    public String getPhonenumber() 
+    {
+        return phonenumber;
+    }
+
+    public void setSex(String sex) 
+    {
+        this.sex = sex;
+    }
+
+    public String getSex() 
+    {
+        return sex;
+    }
+
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("userId", getUserId())
+            .append("unitName", getUnitName())
+            .append("provinceId", getProvinceId())
+            .append("province", getProvince())
+            .append("cityId", getCityId())
+            .append("city", getCity())
+            .append("regionId", getRegionId())
+            .append("region", getRegion())
+            .append("detailedAddress", getDetailedAddress())
+            .append("lon", getLon())
+            .append("lat", getLat())
+            .append("personName", getPersonName())
+            .append("phonenumber", getPhonenumber())
+            .append("sex", getSex())
+            .append("delFlag", getDelFlag())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 127 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/ChargeDetails.java

@@ -0,0 +1,127 @@
+package com.ruoyi.system.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 工单收费详情对象 charge_details
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public class ChargeDetails extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    private Long id;
+
+    /** 工单ID */
+    @Excel(name = "工单ID")
+    private String orderId;
+
+    /** 产品名称 */
+    @Excel(name = "产品名称")
+    private String productName;
+
+    /** 产品数量 */
+    @Excel(name = "产品数量")
+    private Long productNum;
+
+    /** 产品单位 */
+    @Excel(name = "产品单位")
+    private String productUnit;
+
+    /** 含税单价 */
+    @Excel(name = "含税单价")
+    private String unitPrice;
+
+    /** 含税总价 */
+    @Excel(name = "含税总价")
+    private String totalPrice;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+
+    public void setOrderId(String orderId) 
+    {
+        this.orderId = orderId;
+    }
+
+    public String getOrderId() 
+    {
+        return orderId;
+    }
+
+    public void setProductName(String productName) 
+    {
+        this.productName = productName;
+    }
+
+    public String getProductName() 
+    {
+        return productName;
+    }
+
+    public void setProductNum(Long productNum) 
+    {
+        this.productNum = productNum;
+    }
+
+    public Long getProductNum() 
+    {
+        return productNum;
+    }
+
+    public void setProductUnit(String productUnit) 
+    {
+        this.productUnit = productUnit;
+    }
+
+    public String getProductUnit() 
+    {
+        return productUnit;
+    }
+
+    public void setUnitPrice(String unitPrice) 
+    {
+        this.unitPrice = unitPrice;
+    }
+
+    public String getUnitPrice() 
+    {
+        return unitPrice;
+    }
+
+    public void setTotalPrice(String totalPrice) 
+    {
+        this.totalPrice = totalPrice;
+    }
+
+    public String getTotalPrice() 
+    {
+        return totalPrice;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("orderId", getOrderId())
+            .append("productName", getProductName())
+            .append("productNum", getProductNum())
+            .append("productUnit", getProductUnit())
+            .append("unitPrice", getUnitPrice())
+            .append("totalPrice", getTotalPrice())
+            .toString();
+    }
+}

+ 98 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/WorkOrderFj.java

@@ -0,0 +1,98 @@
+package com.ruoyi.system.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 工单_附件对象 work_order_fj
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public class WorkOrderFj extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 附件ID */
+    private Long id;
+
+    /** 工单id */
+    @Excel(name = "工单id")
+    private String orderId;
+
+    /** 附件名称 */
+    @Excel(name = "附件名称")
+    private String name;
+
+    /** 附件地址 */
+    @Excel(name = "附件地址")
+    private String url;
+
+    /** 附件类型 1:需求附件,2:签名 */
+    @Excel(name = "附件类型 1:需求附件,2:签名")
+    private String type;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+
+    public void setOrderId(String orderId) 
+    {
+        this.orderId = orderId;
+    }
+
+    public String getOrderId() 
+    {
+        return orderId;
+    }
+
+    public void setName(String name) 
+    {
+        this.name = name;
+    }
+
+    public String getName() 
+    {
+        return name;
+    }
+
+    public void setUrl(String url) 
+    {
+        this.url = url;
+    }
+
+    public String getUrl() 
+    {
+        return url;
+    }
+
+    public void setType(String type) 
+    {
+        this.type = type;
+    }
+
+    public String getType() 
+    {
+        return type;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("orderId", getOrderId())
+            .append("name", getName())
+            .append("url", getUrl())
+            .append("type", getType())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 511 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/WorkOrderInfo.java

@@ -0,0 +1,511 @@
+package com.ruoyi.system.domain;
+
+import java.util.Date;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 工单信息对象 work_order_info
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public class WorkOrderInfo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 工单ID */
+    private String orderId;
+
+    /** 单位名称 */
+    @Excel(name = "单位名称")
+    private String unitName;
+
+    /** 居住地的省份 */
+    @Excel(name = "居住地的省份")
+    private String provinceId;
+
+    /** 居住地的省份 */
+    @Excel(name = "居住地的省份")
+    private String province;
+
+    /** 居住地的城市 */
+    @Excel(name = "居住地的城市")
+    private String cityId;
+
+    /** 居住地的城市 */
+    @Excel(name = "居住地的城市")
+    private String city;
+
+    /** 居住地的区 */
+    @Excel(name = "居住地的区")
+    private String regionId;
+
+    /** 居住地的区 */
+    @Excel(name = "居住地的区")
+    private String region;
+
+    /** 详细地址 */
+    @Excel(name = "详细地址")
+    private String detailedAddress;
+
+    /** 经度 */
+    @Excel(name = "经度")
+    private String lon;
+
+    /** 纬度 */
+    @Excel(name = "纬度")
+    private String lat;
+
+    /** 联系人 */
+    @Excel(name = "联系人")
+    private String personName;
+
+    /** 联系电话 */
+    @Excel(name = "联系电话")
+    private String phonenumber;
+
+    /** 性别(0男 1女 2未知) */
+    @Excel(name = "性别", readConverterExp = "0=男,1=女,2=未知")
+    private String sex;
+
+    /** 工单类型(1:网络服务,2:设备服务,3:软件服务,4:开发服务,5:设计服务,6:其他服务) */
+    @Excel(name = "工单类型", readConverterExp = "1=:网络服务,2:设备服务,3:软件服务,4:开发服务,5:设计服务,6:其他服务")
+    private String type;
+
+    /** 客户需求 */
+    @Excel(name = "客户需求")
+    private String demand;
+
+    /** 是否签名(Y是 N否) */
+    @Excel(name = "是否签名", readConverterExp = "Y=是,N=否")
+    private String isSignature;
+
+    /** 是否满意(0:未评价,1:满意 ,2:不满意) */
+    @Excel(name = "是否满意", readConverterExp = "0=:未评价,1:满意,,=2:不满意")
+    private String evaluation;
+
+    /** 评价内容 */
+    @Excel(name = "评价内容")
+    private String evaluationContent;
+
+    /** 服务进展(0:待接单,1:进行中 ,2:已完成,3:已评价) */
+    @Excel(name = "服务进展", readConverterExp = "0=:待接单,1:进行中,,=2:已完成,3:已评价")
+    private String serviceProgress;
+
+    /** 派单情况(1:系统派单,2:自主接单) */
+    @Excel(name = "派单情况", readConverterExp = "1=:系统派单,2:自主接单")
+    private String orderPlacement;
+
+    /** 责任人id */
+    @Excel(name = "责任人id")
+    private Long responsibleId;
+
+    /** 责任人姓名 */
+    @Excel(name = "责任人姓名")
+    private String responsibleName;
+
+    /** 责任人姓名 */
+    @Excel(name = "接单时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date takeTime;
+
+    /** 项目名称 */
+    @Excel(name = "项目名称")
+    private String projectName;
+
+    /** 保质期(1:内,2外) */
+    @Excel(name = "保质期", readConverterExp = "1=:内,2外")
+    private String shelfLife;
+
+    /** 是否收费(Y是 N否) */
+    @Excel(name = "是否收费", readConverterExp = "Y=是,N=否")
+    private String isCharge;
+
+    /** 总费用 */
+    @Excel(name = "总费用")
+    private String totalCost;
+
+    /** 总费用(中文) */
+    @Excel(name = "总费用(中文)")
+    private String totalCostDx;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 需求附件 */
+    private List<WorkOrderFj> workOrderFjXqList;
+
+    /** 签名 */
+    private List<WorkOrderFj> workOrderFjQmList;
+
+    private List<ChargeDetails> chargeDetailsList;
+
+
+    public void setOrderId(String orderId) 
+    {
+        this.orderId = orderId;
+    }
+
+    public String getOrderId() 
+    {
+        return orderId;
+    }
+
+    public void setUnitName(String unitName) 
+    {
+        this.unitName = unitName;
+    }
+
+    public String getUnitName() 
+    {
+        return unitName;
+    }
+
+    public void setProvinceId(String provinceId) 
+    {
+        this.provinceId = provinceId;
+    }
+
+    public String getProvinceId() 
+    {
+        return provinceId;
+    }
+
+    public void setProvince(String province) 
+    {
+        this.province = province;
+    }
+
+    public String getProvince() 
+    {
+        return province;
+    }
+
+    public void setCityId(String cityId) 
+    {
+        this.cityId = cityId;
+    }
+
+    public String getCityId() 
+    {
+        return cityId;
+    }
+
+    public void setCity(String city) 
+    {
+        this.city = city;
+    }
+
+    public String getCity() 
+    {
+        return city;
+    }
+
+    public void setRegionId(String regionId) 
+    {
+        this.regionId = regionId;
+    }
+
+    public String getRegionId() 
+    {
+        return regionId;
+    }
+
+    public void setRegion(String region) 
+    {
+        this.region = region;
+    }
+
+    public String getRegion() 
+    {
+        return region;
+    }
+
+    public void setDetailedAddress(String detailedAddress) 
+    {
+        this.detailedAddress = detailedAddress;
+    }
+
+    public String getDetailedAddress() 
+    {
+        return detailedAddress;
+    }
+
+    public void setLon(String lon) 
+    {
+        this.lon = lon;
+    }
+
+    public String getLon() 
+    {
+        return lon;
+    }
+
+    public void setLat(String lat) 
+    {
+        this.lat = lat;
+    }
+
+    public String getLat() 
+    {
+        return lat;
+    }
+
+    public void setPersonName(String personName) 
+    {
+        this.personName = personName;
+    }
+
+    public String getPersonName() 
+    {
+        return personName;
+    }
+
+    public void setPhonenumber(String phonenumber) 
+    {
+        this.phonenumber = phonenumber;
+    }
+
+    public String getPhonenumber() 
+    {
+        return phonenumber;
+    }
+
+    public void setSex(String sex) 
+    {
+        this.sex = sex;
+    }
+
+    public String getSex() 
+    {
+        return sex;
+    }
+
+    public void setType(String type) 
+    {
+        this.type = type;
+    }
+
+    public String getType() 
+    {
+        return type;
+    }
+
+    public void setDemand(String demand) 
+    {
+        this.demand = demand;
+    }
+
+    public String getDemand() 
+    {
+        return demand;
+    }
+
+    public void setIsSignature(String isSignature) 
+    {
+        this.isSignature = isSignature;
+    }
+
+    public String getIsSignature() 
+    {
+        return isSignature;
+    }
+
+    public void setEvaluation(String evaluation) 
+    {
+        this.evaluation = evaluation;
+    }
+
+    public String getEvaluation() 
+    {
+        return evaluation;
+    }
+
+    public void setEvaluationContent(String evaluationContent) 
+    {
+        this.evaluationContent = evaluationContent;
+    }
+
+    public String getEvaluationContent() 
+    {
+        return evaluationContent;
+    }
+
+    public void setServiceProgress(String serviceProgress) 
+    {
+        this.serviceProgress = serviceProgress;
+    }
+
+    public String getServiceProgress() 
+    {
+        return serviceProgress;
+    }
+
+    public void setOrderPlacement(String orderPlacement) 
+    {
+        this.orderPlacement = orderPlacement;
+    }
+
+    public String getOrderPlacement() 
+    {
+        return orderPlacement;
+    }
+
+    public void setResponsibleId(Long responsibleId) 
+    {
+        this.responsibleId = responsibleId;
+    }
+
+    public Long getResponsibleId() 
+    {
+        return responsibleId;
+    }
+
+    public void setResponsibleName(String responsibleName) 
+    {
+        this.responsibleName = responsibleName;
+    }
+
+    public String getResponsibleName() 
+    {
+        return responsibleName;
+    }
+
+    public void setProjectName(String projectName) 
+    {
+        this.projectName = projectName;
+    }
+
+    public String getProjectName() 
+    {
+        return projectName;
+    }
+
+    public void setShelfLife(String shelfLife) 
+    {
+        this.shelfLife = shelfLife;
+    }
+
+    public String getShelfLife() 
+    {
+        return shelfLife;
+    }
+
+    public void setIsCharge(String isCharge) 
+    {
+        this.isCharge = isCharge;
+    }
+
+    public String getIsCharge() 
+    {
+        return isCharge;
+    }
+
+    public void setTotalCost(String totalCost) 
+    {
+        this.totalCost = totalCost;
+    }
+
+    public String getTotalCost() 
+    {
+        return totalCost;
+    }
+
+    public void setTotalCostDx(String totalCostDx) 
+    {
+        this.totalCostDx = totalCostDx;
+    }
+
+    public String getTotalCostDx() 
+    {
+        return totalCostDx;
+    }
+
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public List<WorkOrderFj> getWorkOrderFjXqList() {
+        return workOrderFjXqList;
+    }
+
+    public void setWorkOrderFjXqList(List<WorkOrderFj> workOrderFjXqList) {
+        this.workOrderFjXqList = workOrderFjXqList;
+    }
+
+    public List<WorkOrderFj> getWorkOrderFjQmList() {
+        return workOrderFjQmList;
+    }
+
+    public void setWorkOrderFjQmList(List<WorkOrderFj> workOrderFjQmList) {
+        this.workOrderFjQmList = workOrderFjQmList;
+    }
+
+    public List<ChargeDetails> getChargeDetailsList() {
+        return chargeDetailsList;
+    }
+
+    public void setChargeDetailsList(List<ChargeDetails> chargeDetailsList) {
+        this.chargeDetailsList = chargeDetailsList;
+    }
+
+    public String getDelFlag()
+    {
+        return delFlag;
+    }
+
+    public Date getTakeTime() {
+        return takeTime;
+    }
+
+    public void setTakeTime(Date takeTime) {
+        this.takeTime = takeTime;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("orderId", getOrderId())
+            .append("unitName", getUnitName())
+            .append("provinceId", getProvinceId())
+            .append("province", getProvince())
+            .append("cityId", getCityId())
+            .append("city", getCity())
+            .append("regionId", getRegionId())
+            .append("region", getRegion())
+            .append("detailedAddress", getDetailedAddress())
+            .append("lon", getLon())
+            .append("lat", getLat())
+            .append("personName", getPersonName())
+            .append("phonenumber", getPhonenumber())
+            .append("sex", getSex())
+            .append("type", getType())
+            .append("demand", getDemand())
+            .append("isSignature", getIsSignature())
+            .append("evaluation", getEvaluation())
+            .append("evaluationContent", getEvaluationContent())
+            .append("serviceProgress", getServiceProgress())
+            .append("orderPlacement", getOrderPlacement())
+            .append("responsibleId", getResponsibleId())
+            .append("responsibleName", getResponsibleName())
+            .append("projectName", getProjectName())
+            .append("shelfLife", getShelfLife())
+            .append("isCharge", getIsCharge())
+            .append("totalCost", getTotalCost())
+            .append("totalCostDx", getTotalCostDx())
+            .append("delFlag", getDelFlag())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/BasicInfoMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.BasicInfo;
+
+/**
+ * 基本信息Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface BasicInfoMapper 
+{
+    /**
+     * 查询基本信息
+     * 
+     * @param id 基本信息主键
+     * @return 基本信息
+     */
+    public BasicInfo selectBasicInfoById(Long id);
+
+    /**
+     * 查询基本信息列表
+     * 
+     * @param basicInfo 基本信息
+     * @return 基本信息集合
+     */
+    public List<BasicInfo> selectBasicInfoList(BasicInfo basicInfo);
+
+    /**
+     * 新增基本信息
+     * 
+     * @param basicInfo 基本信息
+     * @return 结果
+     */
+    public int insertBasicInfo(BasicInfo basicInfo);
+
+    /**
+     * 修改基本信息
+     * 
+     * @param basicInfo 基本信息
+     * @return 结果
+     */
+    public int updateBasicInfo(BasicInfo basicInfo);
+
+    /**
+     * 删除基本信息
+     * 
+     * @param id 基本信息主键
+     * @return 结果
+     */
+    public int deleteBasicInfoById(Long id);
+
+    /**
+     * 批量删除基本信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteBasicInfoByIds(Long[] ids);
+}

+ 63 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/ChargeDetailsMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.ChargeDetails;
+
+/**
+ * 工单收费详情Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface ChargeDetailsMapper 
+{
+    /**
+     * 查询工单收费详情
+     * 
+     * @param id 工单收费详情主键
+     * @return 工单收费详情
+     */
+    public ChargeDetails selectChargeDetailsById(Long id);
+
+    /**
+     * 查询工单收费详情列表
+     * 
+     * @param chargeDetails 工单收费详情
+     * @return 工单收费详情集合
+     */
+    public List<ChargeDetails> selectChargeDetailsList(ChargeDetails chargeDetails);
+
+    /**
+     * 新增工单收费详情
+     * 
+     * @param chargeDetails 工单收费详情
+     * @return 结果
+     */
+    public int insertChargeDetails(ChargeDetails chargeDetails);
+
+    /**
+     * 修改工单收费详情
+     * 
+     * @param chargeDetails 工单收费详情
+     * @return 结果
+     */
+    public int updateChargeDetails(ChargeDetails chargeDetails);
+
+    /**
+     * 删除工单收费详情
+     * 
+     * @param id 工单收费详情主键
+     * @return 结果
+     */
+    public int deleteChargeDetailsById(Long id);
+
+    /**
+     * 批量删除工单收费详情
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteChargeDetailsByIds(Long[] ids);
+
+    void deleteChargeDetailsByOrderId(String orderId);
+}

+ 21 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/ChinaAreaMapper.java

@@ -0,0 +1,21 @@
+package com.ruoyi.system.mapper;
+
+
+import com.ruoyi.common.core.domain.entity.ChinaArea;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @author tjf
+ * @Date: 2022/03/25/9:40
+ */
+@Mapper
+public interface ChinaAreaMapper {
+
+    /**
+     * 查询行政区域规划列表
+     * @return
+     */
+    List<ChinaArea> selectChinaAreaList(ChinaArea chinaArea);
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/WorkOrderFjMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.WorkOrderFj;
+
+/**
+ * 工单_附件Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface WorkOrderFjMapper 
+{
+    /**
+     * 查询工单_附件
+     * 
+     * @param id 工单_附件主键
+     * @return 工单_附件
+     */
+    public WorkOrderFj selectWorkOrderFjById(Long id);
+
+    /**
+     * 查询工单_附件列表
+     * 
+     * @param workOrderFj 工单_附件
+     * @return 工单_附件集合
+     */
+    public List<WorkOrderFj> selectWorkOrderFjList(WorkOrderFj workOrderFj);
+
+    /**
+     * 新增工单_附件
+     * 
+     * @param workOrderFj 工单_附件
+     * @return 结果
+     */
+    public int insertWorkOrderFj(WorkOrderFj workOrderFj);
+
+    /**
+     * 修改工单_附件
+     * 
+     * @param workOrderFj 工单_附件
+     * @return 结果
+     */
+    public int updateWorkOrderFj(WorkOrderFj workOrderFj);
+
+    /**
+     * 删除工单_附件
+     * 
+     * @param id 工单_附件主键
+     * @return 结果
+     */
+    public int deleteWorkOrderFjById(Long id);
+
+    /**
+     * 批量删除工单_附件
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteWorkOrderFjByIds(Long[] ids);
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/WorkOrderInfoMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.WorkOrderInfo;
+
+/**
+ * 工单信息Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface WorkOrderInfoMapper 
+{
+    /**
+     * 查询工单信息
+     * 
+     * @param orderId 工单信息主键
+     * @return 工单信息
+     */
+    public WorkOrderInfo selectWorkOrderInfoByOrderId(String orderId);
+
+    /**
+     * 查询工单信息列表
+     * 
+     * @param workOrderInfo 工单信息
+     * @return 工单信息集合
+     */
+    public List<WorkOrderInfo> selectWorkOrderInfoList(WorkOrderInfo workOrderInfo);
+
+    /**
+     * 新增工单信息
+     * 
+     * @param workOrderInfo 工单信息
+     * @return 结果
+     */
+    public int insertWorkOrderInfo(WorkOrderInfo workOrderInfo);
+
+    /**
+     * 修改工单信息
+     * 
+     * @param workOrderInfo 工单信息
+     * @return 结果
+     */
+    public int updateWorkOrderInfo(WorkOrderInfo workOrderInfo);
+
+    /**
+     * 删除工单信息
+     * 
+     * @param orderId 工单信息主键
+     * @return 结果
+     */
+    public int deleteWorkOrderInfoByOrderId(String orderId);
+
+    /**
+     * 批量删除工单信息
+     * 
+     * @param orderIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteWorkOrderInfoByOrderIds(String[] orderIds);
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IBasicInfoService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.BasicInfo;
+
+/**
+ * 基本信息Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IBasicInfoService 
+{
+    /**
+     * 查询基本信息
+     * 
+     * @param id 基本信息主键
+     * @return 基本信息
+     */
+    public BasicInfo selectBasicInfoById(Long id);
+
+    /**
+     * 查询基本信息列表
+     * 
+     * @param basicInfo 基本信息
+     * @return 基本信息集合
+     */
+    public List<BasicInfo> selectBasicInfoList(BasicInfo basicInfo);
+
+    /**
+     * 新增基本信息
+     * 
+     * @param basicInfo 基本信息
+     * @return 结果
+     */
+    public int insertBasicInfo(BasicInfo basicInfo);
+
+    /**
+     * 修改基本信息
+     * 
+     * @param basicInfo 基本信息
+     * @return 结果
+     */
+    public int updateBasicInfo(BasicInfo basicInfo);
+
+    /**
+     * 批量删除基本信息
+     * 
+     * @param ids 需要删除的基本信息主键集合
+     * @return 结果
+     */
+    public int deleteBasicInfoByIds(Long[] ids);
+
+    /**
+     * 删除基本信息信息
+     * 
+     * @param id 基本信息主键
+     * @return 结果
+     */
+    public int deleteBasicInfoById(Long id);
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IChargeDetailsService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.ChargeDetails;
+
+/**
+ * 工单收费详情Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IChargeDetailsService 
+{
+    /**
+     * 查询工单收费详情
+     * 
+     * @param id 工单收费详情主键
+     * @return 工单收费详情
+     */
+    public ChargeDetails selectChargeDetailsById(Long id);
+
+    /**
+     * 查询工单收费详情列表
+     * 
+     * @param chargeDetails 工单收费详情
+     * @return 工单收费详情集合
+     */
+    public List<ChargeDetails> selectChargeDetailsList(ChargeDetails chargeDetails);
+
+    /**
+     * 新增工单收费详情
+     * 
+     * @param chargeDetails 工单收费详情
+     * @return 结果
+     */
+    public int insertChargeDetails(ChargeDetails chargeDetails);
+
+    /**
+     * 修改工单收费详情
+     * 
+     * @param chargeDetails 工单收费详情
+     * @return 结果
+     */
+    public int updateChargeDetails(ChargeDetails chargeDetails);
+
+    /**
+     * 批量删除工单收费详情
+     * 
+     * @param ids 需要删除的工单收费详情主键集合
+     * @return 结果
+     */
+    public int deleteChargeDetailsByIds(Long[] ids);
+
+    /**
+     * 删除工单收费详情信息
+     * 
+     * @param id 工单收费详情主键
+     * @return 结果
+     */
+    public int deleteChargeDetailsById(Long id);
+}

+ 18 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IChinaAreaService.java

@@ -0,0 +1,18 @@
+package com.ruoyi.system.service;
+
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.ChinaArea;
+
+/**
+ * @author tjf
+ * @Date: 2022/03/25/9:39
+ */
+public interface IChinaAreaService {
+    /**
+     * 查询行政区域规划列表
+     * @param chinaArea
+     * @return
+     */
+    public AjaxResult selectChinaAreaList(ChinaArea chinaArea);
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IWorkOrderFjService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.WorkOrderFj;
+
+/**
+ * 工单_附件Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IWorkOrderFjService 
+{
+    /**
+     * 查询工单_附件
+     * 
+     * @param id 工单_附件主键
+     * @return 工单_附件
+     */
+    public WorkOrderFj selectWorkOrderFjById(Long id);
+
+    /**
+     * 查询工单_附件列表
+     * 
+     * @param workOrderFj 工单_附件
+     * @return 工单_附件集合
+     */
+    public List<WorkOrderFj> selectWorkOrderFjList(WorkOrderFj workOrderFj);
+
+    /**
+     * 新增工单_附件
+     * 
+     * @param workOrderFj 工单_附件
+     * @return 结果
+     */
+    public int insertWorkOrderFj(WorkOrderFj workOrderFj);
+
+    /**
+     * 修改工单_附件
+     * 
+     * @param workOrderFj 工单_附件
+     * @return 结果
+     */
+    public int updateWorkOrderFj(WorkOrderFj workOrderFj);
+
+    /**
+     * 批量删除工单_附件
+     * 
+     * @param ids 需要删除的工单_附件主键集合
+     * @return 结果
+     */
+    public int deleteWorkOrderFjByIds(Long[] ids);
+
+    /**
+     * 删除工单_附件信息
+     * 
+     * @param id 工单_附件主键
+     * @return 结果
+     */
+    public int deleteWorkOrderFjById(Long id);
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IWorkOrderInfoService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.WorkOrderInfo;
+
+/**
+ * 工单信息Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IWorkOrderInfoService 
+{
+    /**
+     * 查询工单信息
+     * 
+     * @param orderId 工单信息主键
+     * @return 工单信息
+     */
+    public WorkOrderInfo selectWorkOrderInfoByOrderId(String orderId);
+
+    /**
+     * 查询工单信息列表
+     * 
+     * @param workOrderInfo 工单信息
+     * @return 工单信息集合
+     */
+    public List<WorkOrderInfo> selectWorkOrderInfoList(WorkOrderInfo workOrderInfo);
+
+    /**
+     * 新增工单信息
+     * 
+     * @param workOrderInfo 工单信息
+     * @return 结果
+     */
+    public int insertWorkOrderInfo(WorkOrderInfo workOrderInfo);
+
+    /**
+     * 修改工单信息
+     * 
+     * @param workOrderInfo 工单信息
+     * @return 结果
+     */
+    public int updateWorkOrderInfo(WorkOrderInfo workOrderInfo);
+
+    /**
+     * 批量删除工单信息
+     * 
+     * @param orderIds 需要删除的工单信息主键集合
+     * @return 结果
+     */
+    public int deleteWorkOrderInfoByOrderIds(String[] orderIds);
+
+    /**
+     * 删除工单信息信息
+     * 
+     * @param orderId 工单信息主键
+     * @return 结果
+     */
+    public int deleteWorkOrderInfoByOrderId(String orderId);
+}

+ 96 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BasicInfoServiceImpl.java

@@ -0,0 +1,96 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.BasicInfoMapper;
+import com.ruoyi.system.domain.BasicInfo;
+import com.ruoyi.system.service.IBasicInfoService;
+
+/**
+ * 基本信息Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Service
+public class BasicInfoServiceImpl implements IBasicInfoService 
+{
+    @Autowired
+    private BasicInfoMapper basicInfoMapper;
+
+    /**
+     * 查询基本信息
+     * 
+     * @param id 基本信息主键
+     * @return 基本信息
+     */
+    @Override
+    public BasicInfo selectBasicInfoById(Long id)
+    {
+        return basicInfoMapper.selectBasicInfoById(id);
+    }
+
+    /**
+     * 查询基本信息列表
+     * 
+     * @param basicInfo 基本信息
+     * @return 基本信息
+     */
+    @Override
+    public List<BasicInfo> selectBasicInfoList(BasicInfo basicInfo)
+    {
+        return basicInfoMapper.selectBasicInfoList(basicInfo);
+    }
+
+    /**
+     * 新增基本信息
+     * 
+     * @param basicInfo 基本信息
+     * @return 结果
+     */
+    @Override
+    public int insertBasicInfo(BasicInfo basicInfo)
+    {
+        basicInfo.setCreateTime(DateUtils.getNowDate());
+        return basicInfoMapper.insertBasicInfo(basicInfo);
+    }
+
+    /**
+     * 修改基本信息
+     * 
+     * @param basicInfo 基本信息
+     * @return 结果
+     */
+    @Override
+    public int updateBasicInfo(BasicInfo basicInfo)
+    {
+        basicInfo.setUpdateTime(DateUtils.getNowDate());
+        return basicInfoMapper.updateBasicInfo(basicInfo);
+    }
+
+    /**
+     * 批量删除基本信息
+     * 
+     * @param ids 需要删除的基本信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBasicInfoByIds(Long[] ids)
+    {
+        return basicInfoMapper.deleteBasicInfoByIds(ids);
+    }
+
+    /**
+     * 删除基本信息信息
+     * 
+     * @param id 基本信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBasicInfoById(Long id)
+    {
+        return basicInfoMapper.deleteBasicInfoById(id);
+    }
+}

+ 93 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ChargeDetailsServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.ChargeDetailsMapper;
+import com.ruoyi.system.domain.ChargeDetails;
+import com.ruoyi.system.service.IChargeDetailsService;
+
+/**
+ * 工单收费详情Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Service
+public class ChargeDetailsServiceImpl implements IChargeDetailsService 
+{
+    @Autowired
+    private ChargeDetailsMapper chargeDetailsMapper;
+
+    /**
+     * 查询工单收费详情
+     * 
+     * @param id 工单收费详情主键
+     * @return 工单收费详情
+     */
+    @Override
+    public ChargeDetails selectChargeDetailsById(Long id)
+    {
+        return chargeDetailsMapper.selectChargeDetailsById(id);
+    }
+
+    /**
+     * 查询工单收费详情列表
+     * 
+     * @param chargeDetails 工单收费详情
+     * @return 工单收费详情
+     */
+    @Override
+    public List<ChargeDetails> selectChargeDetailsList(ChargeDetails chargeDetails)
+    {
+        return chargeDetailsMapper.selectChargeDetailsList(chargeDetails);
+    }
+
+    /**
+     * 新增工单收费详情
+     * 
+     * @param chargeDetails 工单收费详情
+     * @return 结果
+     */
+    @Override
+    public int insertChargeDetails(ChargeDetails chargeDetails)
+    {
+        return chargeDetailsMapper.insertChargeDetails(chargeDetails);
+    }
+
+    /**
+     * 修改工单收费详情
+     * 
+     * @param chargeDetails 工单收费详情
+     * @return 结果
+     */
+    @Override
+    public int updateChargeDetails(ChargeDetails chargeDetails)
+    {
+        return chargeDetailsMapper.updateChargeDetails(chargeDetails);
+    }
+
+    /**
+     * 批量删除工单收费详情
+     * 
+     * @param ids 需要删除的工单收费详情主键
+     * @return 结果
+     */
+    @Override
+    public int deleteChargeDetailsByIds(Long[] ids)
+    {
+        return chargeDetailsMapper.deleteChargeDetailsByIds(ids);
+    }
+
+    /**
+     * 删除工单收费详情信息
+     * 
+     * @param id 工单收费详情主键
+     * @return 结果
+     */
+    @Override
+    public int deleteChargeDetailsById(Long id)
+    {
+        return chargeDetailsMapper.deleteChargeDetailsById(id);
+    }
+}

+ 131 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ChinaAreaServiceImpl.java

@@ -0,0 +1,131 @@
+package com.ruoyi.system.service.impl;
+
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.TreeSelect;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.core.domain.entity.ChinaArea;
+import com.ruoyi.system.mapper.ChinaAreaMapper;
+import com.ruoyi.system.service.IChinaAreaService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static com.ruoyi.common.constant.UserConstants.CHINA_AREA;
+
+
+/**
+ * @author tjf
+ * @Date: 2022/03/25/9:39
+ */
+@Service
+public class ChinaAreaServiceImpl implements IChinaAreaService {
+
+    @Resource
+    private RedisCache redisService;
+
+    @Resource
+    private ChinaAreaMapper chinaAreaMapper;
+    /**
+     * 获取行政区域规划下拉树列表
+     * @param chinaArea
+     * @return
+     */
+    @Override
+    public AjaxResult selectChinaAreaList(ChinaArea chinaArea) {
+
+        //先去从redis获取
+        List<TreeSelect> treeSelects = redisService.getCacheList(CHINA_AREA+chinaArea.getPid());
+        if (treeSelects != null && treeSelects.size() > 0){
+            //log.info("从缓存中获取到区域集合");
+            return AjaxResult.success(treeSelects);
+        }
+        List<ChinaArea> chinaAreas = chinaAreaMapper.selectChinaAreaList(chinaArea);
+        if (chinaAreas != null && chinaAreas.size() > 0){
+            //log.info("从数据库中获取到行政区域集合");
+            redisService.setCacheList(CHINA_AREA+chinaArea.getPid(),chinaAreas);
+        }
+        return AjaxResult.success(chinaAreas);
+    }
+
+
+    /**
+     * 构建前端所需要下拉树结构
+     *
+     * @param chinaAreaList 行政区域列表
+     * @return 下拉树结构列表
+     */
+    public List<TreeSelect> buildChinaAreaTreeSelect(List<ChinaArea> chinaAreaList) {
+        List<ChinaArea> chinaAreaTrees = buildChinaAreaTree(chinaAreaList);
+        return chinaAreaTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
+    }
+
+
+    /**
+     * 构建前端所需要树结构
+     *
+     * @param chinaAreaList 行政区域列表
+     * @return 树结构列表
+     */
+    public List<ChinaArea> buildChinaAreaTree(List<ChinaArea> chinaAreaList) {
+        List<ChinaArea> returnList = new ArrayList<ChinaArea>();
+        List<String> tempList = new ArrayList<String>();
+        for (ChinaArea chinaArea : chinaAreaList) {
+            tempList.add(chinaArea.getAreaId());
+        }
+        for (Iterator<ChinaArea> iterator = chinaAreaList.iterator(); iterator.hasNext(); ) {
+            ChinaArea chinaArea = (ChinaArea) iterator.next();
+            // 如果是顶级节点, 遍历该父节点的所有子节点
+            if (!tempList.contains(chinaArea.getPid())) {
+                recursionFn(chinaAreaList, chinaArea);
+                returnList.add(chinaArea);
+            }
+        }
+        if (returnList.isEmpty()) {
+            returnList = chinaAreaList;
+        }
+        return returnList;
+    }
+
+
+    /**
+     * 递归列表
+     */
+    private void recursionFn(List<ChinaArea> chinaAreaList, ChinaArea c) {
+        // 得到子节点列表
+        List<ChinaArea> childList = getChildList(chinaAreaList, c);
+        c.setChildren(childList);
+        for (ChinaArea chinaArea : chinaAreaList) {
+            if (hasChild(chinaAreaList, chinaArea)) {
+                recursionFn(chinaAreaList, chinaArea);
+            }
+        }
+    }
+
+    /**
+     * 得到子节点列表
+     */
+    private List<ChinaArea> getChildList(List<ChinaArea> chinaAreaList, ChinaArea c) {
+        List<ChinaArea> tlist = new ArrayList<ChinaArea>();
+        Iterator<ChinaArea> it = chinaAreaList.iterator();
+        while (it.hasNext()) {
+            ChinaArea n = (ChinaArea) it.next();
+            if (StringUtils.isNotNull(n.getPid()) && n.getPid().equals(c.getAreaId())) {
+                tlist.add(n);
+            }
+        }
+        return tlist;
+    }
+
+    /**
+     * 判断是否有子节点
+     */
+    private boolean hasChild(List<ChinaArea> list, ChinaArea c) {
+        return getChildList(list, c).size() > 0;
+    }
+}

+ 93 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WorkOrderFjServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.WorkOrderFjMapper;
+import com.ruoyi.system.domain.WorkOrderFj;
+import com.ruoyi.system.service.IWorkOrderFjService;
+
+/**
+ * 工单_附件Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Service
+public class WorkOrderFjServiceImpl implements IWorkOrderFjService 
+{
+    @Autowired
+    private WorkOrderFjMapper workOrderFjMapper;
+
+    /**
+     * 查询工单_附件
+     * 
+     * @param id 工单_附件主键
+     * @return 工单_附件
+     */
+    @Override
+    public WorkOrderFj selectWorkOrderFjById(Long id)
+    {
+        return workOrderFjMapper.selectWorkOrderFjById(id);
+    }
+
+    /**
+     * 查询工单_附件列表
+     * 
+     * @param workOrderFj 工单_附件
+     * @return 工单_附件
+     */
+    @Override
+    public List<WorkOrderFj> selectWorkOrderFjList(WorkOrderFj workOrderFj)
+    {
+        return workOrderFjMapper.selectWorkOrderFjList(workOrderFj);
+    }
+
+    /**
+     * 新增工单_附件
+     * 
+     * @param workOrderFj 工单_附件
+     * @return 结果
+     */
+    @Override
+    public int insertWorkOrderFj(WorkOrderFj workOrderFj)
+    {
+        return workOrderFjMapper.insertWorkOrderFj(workOrderFj);
+    }
+
+    /**
+     * 修改工单_附件
+     * 
+     * @param workOrderFj 工单_附件
+     * @return 结果
+     */
+    @Override
+    public int updateWorkOrderFj(WorkOrderFj workOrderFj)
+    {
+        return workOrderFjMapper.updateWorkOrderFj(workOrderFj);
+    }
+
+    /**
+     * 批量删除工单_附件
+     * 
+     * @param ids 需要删除的工单_附件主键
+     * @return 结果
+     */
+    @Override
+    public int deleteWorkOrderFjByIds(Long[] ids)
+    {
+        return workOrderFjMapper.deleteWorkOrderFjByIds(ids);
+    }
+
+    /**
+     * 删除工单_附件信息
+     * 
+     * @param id 工单_附件主键
+     * @return 结果
+     */
+    @Override
+    public int deleteWorkOrderFjById(Long id)
+    {
+        return workOrderFjMapper.deleteWorkOrderFjById(id);
+    }
+}

+ 142 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WorkOrderInfoServiceImpl.java

@@ -0,0 +1,142 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.system.domain.ChargeDetails;
+import com.ruoyi.system.domain.WorkOrderFj;
+import com.ruoyi.system.mapper.ChargeDetailsMapper;
+import com.ruoyi.system.mapper.WorkOrderFjMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.WorkOrderInfoMapper;
+import com.ruoyi.system.domain.WorkOrderInfo;
+import com.ruoyi.system.service.IWorkOrderInfoService;
+
+import static com.ruoyi.common.constant.UserConstants.*;
+
+/**
+ * 工单信息Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Service
+public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService 
+{
+    @Autowired
+    private WorkOrderInfoMapper workOrderInfoMapper;
+
+    @Autowired
+    private WorkOrderFjMapper workOrderFjMapper;
+
+    @Autowired
+    private ChargeDetailsMapper chargeDetailsMapper;
+
+    /**
+     * 查询工单信息
+     * 
+     * @param orderId 工单信息主键
+     * @return 工单信息
+     */
+    @Override
+    public WorkOrderInfo selectWorkOrderInfoByOrderId(String orderId)
+    {
+        WorkOrderInfo workOrderInfo = workOrderInfoMapper.selectWorkOrderInfoByOrderId(orderId);
+        if(workOrderInfo!=null){
+            //查询附件
+            WorkOrderFj workOrderFj = new WorkOrderFj();
+            workOrderFj.setOrderId(orderId);
+            //workOrderFj.setType(USER_DISABLE);
+            List<WorkOrderFj> workOrderFjs = workOrderFjMapper.selectWorkOrderFjList(workOrderFj);
+            if(workOrderFjs!=null && !workOrderFjs.isEmpty()){
+                Map<String,List<WorkOrderFj>> map = workOrderFjs.stream().collect(Collectors.groupingBy(WorkOrderFj::getType));
+                workOrderInfo.setWorkOrderFjXqList(map.get(ONE));
+                workOrderInfo.setWorkOrderFjQmList(map.get(TWO));
+            }
+            //查询工单收费详情
+            ChargeDetails chargeDetails = new ChargeDetails();
+            chargeDetails.setOrderId(orderId);
+            List<ChargeDetails> chargeDetails1 = chargeDetailsMapper.selectChargeDetailsList(chargeDetails);
+            if(chargeDetails1!=null && !chargeDetails1.isEmpty()){
+                workOrderInfo.setChargeDetailsList(chargeDetails1);
+            }
+
+        }
+        return workOrderInfo;
+    }
+
+    /**
+     * 查询工单信息列表
+     * 
+     * @param workOrderInfo 工单信息
+     * @return 工单信息
+     */
+    @Override
+    public List<WorkOrderInfo> selectWorkOrderInfoList(WorkOrderInfo workOrderInfo)
+    {
+        return workOrderInfoMapper.selectWorkOrderInfoList(workOrderInfo);
+    }
+
+    /**
+     * 新增工单信息
+     * 
+     * @param workOrderInfo 工单信息
+     * @return 结果
+     */
+    @Override
+    public int insertWorkOrderInfo(WorkOrderInfo workOrderInfo)
+    {
+        workOrderInfo.setCreateTime(DateUtils.getNowDate());
+        return workOrderInfoMapper.insertWorkOrderInfo(workOrderInfo);
+    }
+
+    /**
+     * 修改工单信息
+     * 
+     * @param workOrderInfo 工单信息
+     * @return 结果
+     */
+    @Override
+    public int updateWorkOrderInfo(WorkOrderInfo workOrderInfo)
+    {
+        if(workOrderInfo.getChargeDetailsList()!=null && !workOrderInfo.getChargeDetailsList().isEmpty()){
+            //删除收费信息重新保存
+            chargeDetailsMapper.deleteChargeDetailsByOrderId(workOrderInfo.getOrderId());
+            //删除之后重新保存
+            for (ChargeDetails chargeDetails : workOrderInfo.getChargeDetailsList()) {
+                chargeDetails.setOrderId(workOrderInfo.getOrderId());
+                chargeDetailsMapper.insertChargeDetails(chargeDetails);
+            }
+        }
+        workOrderInfo.setUpdateTime(DateUtils.getNowDate());
+        return workOrderInfoMapper.updateWorkOrderInfo(workOrderInfo);
+    }
+
+    /**
+     * 批量删除工单信息
+     * 
+     * @param orderIds 需要删除的工单信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteWorkOrderInfoByOrderIds(String[] orderIds)
+    {
+        return workOrderInfoMapper.deleteWorkOrderInfoByOrderIds(orderIds);
+    }
+
+    /**
+     * 删除工单信息信息
+     * 
+     * @param orderId 工单信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteWorkOrderInfoByOrderId(String orderId)
+    {
+        return workOrderInfoMapper.deleteWorkOrderInfoByOrderId(orderId);
+    }
+}

+ 145 - 0
ruoyi-system/src/main/resources/mapper/system/BasicInfoMapper.xml

@@ -0,0 +1,145 @@
+<?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.ruoyi.system.mapper.BasicInfoMapper">
+    
+    <resultMap type="BasicInfo" id="BasicInfoResult">
+        <result property="id"    column="id"    />
+        <result property="userId"    column="user_id"    />
+        <result property="unitName"    column="unit_name"    />
+        <result property="provinceId"    column="province_id"    />
+        <result property="province"    column="province"    />
+        <result property="cityId"    column="city_id"    />
+        <result property="city"    column="city"    />
+        <result property="regionId"    column="region_id"    />
+        <result property="region"    column="region"    />
+        <result property="detailedAddress"    column="detailed_address"    />
+        <result property="lon"    column="lon"    />
+        <result property="lat"    column="lat"    />
+        <result property="personName"    column="person_name"    />
+        <result property="phonenumber"    column="phonenumber"    />
+        <result property="sex"    column="sex"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectBasicInfoVo">
+        select id, user_id, unit_name, province_id, province, city_id, city, region_id, region, detailed_address, lon, lat, person_name, phonenumber, sex, del_flag, create_by, create_time, update_by, update_time, remark from basic_info
+    </sql>
+
+    <select id="selectBasicInfoList" parameterType="BasicInfo" resultMap="BasicInfoResult">
+        <include refid="selectBasicInfoVo"/>
+        <where>  
+            <if test="userId != null "> and user_id = #{userId}</if>
+            <if test="unitName != null  and unitName != ''"> and unit_name like concat('%', #{unitName}, '%')</if>
+            <if test="provinceId != null  and provinceId != ''"> and province_id = #{provinceId}</if>
+            <if test="province != null  and province != ''"> and province = #{province}</if>
+            <if test="cityId != null  and cityId != ''"> and city_id = #{cityId}</if>
+            <if test="city != null  and city != ''"> and city = #{city}</if>
+            <if test="regionId != null  and regionId != ''"> and region_id = #{regionId}</if>
+            <if test="region != null  and region != ''"> and region = #{region}</if>
+            <if test="detailedAddress != null  and detailedAddress != ''"> and detailed_address = #{detailedAddress}</if>
+            <if test="lon != null  and lon != ''"> and lon = #{lon}</if>
+            <if test="lat != null  and lat != ''"> and lat = #{lat}</if>
+            <if test="personName != null  and personName != ''"> and person_name like concat('%', #{personName}, '%')</if>
+            <if test="phonenumber != null  and phonenumber != ''"> and phonenumber = #{phonenumber}</if>
+            <if test="sex != null  and sex != ''"> and sex = #{sex}</if>
+        </where>
+    </select>
+    
+    <select id="selectBasicInfoById" parameterType="Long" resultMap="BasicInfoResult">
+        <include refid="selectBasicInfoVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertBasicInfo" parameterType="BasicInfo" useGeneratedKeys="true" keyProperty="id">
+        insert into basic_info
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="userId != null">user_id,</if>
+            <if test="unitName != null">unit_name,</if>
+            <if test="provinceId != null">province_id,</if>
+            <if test="province != null">province,</if>
+            <if test="cityId != null">city_id,</if>
+            <if test="city != null">city,</if>
+            <if test="regionId != null">region_id,</if>
+            <if test="region != null">region,</if>
+            <if test="detailedAddress != null">detailed_address,</if>
+            <if test="lon != null">lon,</if>
+            <if test="lat != null">lat,</if>
+            <if test="personName != null">person_name,</if>
+            <if test="phonenumber != null">phonenumber,</if>
+            <if test="sex != null">sex,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="userId != null">#{userId},</if>
+            <if test="unitName != null">#{unitName},</if>
+            <if test="provinceId != null">#{provinceId},</if>
+            <if test="province != null">#{province},</if>
+            <if test="cityId != null">#{cityId},</if>
+            <if test="city != null">#{city},</if>
+            <if test="regionId != null">#{regionId},</if>
+            <if test="region != null">#{region},</if>
+            <if test="detailedAddress != null">#{detailedAddress},</if>
+            <if test="lon != null">#{lon},</if>
+            <if test="lat != null">#{lat},</if>
+            <if test="personName != null">#{personName},</if>
+            <if test="phonenumber != null">#{phonenumber},</if>
+            <if test="sex != null">#{sex},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateBasicInfo" parameterType="BasicInfo">
+        update basic_info
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="userId != null">user_id = #{userId},</if>
+            <if test="unitName != null">unit_name = #{unitName},</if>
+            <if test="provinceId != null">province_id = #{provinceId},</if>
+            <if test="province != null">province = #{province},</if>
+            <if test="cityId != null">city_id = #{cityId},</if>
+            <if test="city != null">city = #{city},</if>
+            <if test="regionId != null">region_id = #{regionId},</if>
+            <if test="region != null">region = #{region},</if>
+            <if test="detailedAddress != null">detailed_address = #{detailedAddress},</if>
+            <if test="lon != null">lon = #{lon},</if>
+            <if test="lat != null">lat = #{lat},</if>
+            <if test="personName != null">person_name = #{personName},</if>
+            <if test="phonenumber != null">phonenumber = #{phonenumber},</if>
+            <if test="sex != null">sex = #{sex},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteBasicInfoById" parameterType="Long">
+        delete from basic_info where id = #{id}
+    </delete>
+
+    <delete id="deleteBasicInfoByIds" parameterType="String">
+        delete from basic_info where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 84 - 0
ruoyi-system/src/main/resources/mapper/system/ChargeDetailsMapper.xml

@@ -0,0 +1,84 @@
+<?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.ruoyi.system.mapper.ChargeDetailsMapper">
+    
+    <resultMap type="ChargeDetails" id="ChargeDetailsResult">
+        <result property="id"    column="id"    />
+        <result property="orderId"    column="order_id"    />
+        <result property="productName"    column="product_name"    />
+        <result property="productNum"    column="product_num"    />
+        <result property="productUnit"    column="product_unit"    />
+        <result property="unitPrice"    column="unit_price"    />
+        <result property="totalPrice"    column="total_price"    />
+    </resultMap>
+
+    <sql id="selectChargeDetailsVo">
+        select id, order_id, product_name, product_num, product_unit, unit_price, total_price from charge_details
+    </sql>
+
+    <select id="selectChargeDetailsList" parameterType="ChargeDetails" resultMap="ChargeDetailsResult">
+        <include refid="selectChargeDetailsVo"/>
+        <where>  
+            <if test="orderId != null  and orderId != ''"> and order_id = #{orderId}</if>
+            <if test="productName != null  and productName != ''"> and product_name like concat('%', #{productName}, '%')</if>
+            <if test="productNum != null "> and product_num = #{productNum}</if>
+            <if test="productUnit != null  and productUnit != ''"> and product_unit = #{productUnit}</if>
+            <if test="unitPrice != null  and unitPrice != ''"> and unit_price = #{unitPrice}</if>
+            <if test="totalPrice != null  and totalPrice != ''"> and total_price = #{totalPrice}</if>
+        </where>
+    </select>
+    
+    <select id="selectChargeDetailsById" parameterType="Long" resultMap="ChargeDetailsResult">
+        <include refid="selectChargeDetailsVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertChargeDetails" parameterType="ChargeDetails" useGeneratedKeys="true" keyProperty="id">
+        insert into charge_details
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="orderId != null">order_id,</if>
+            <if test="productName != null">product_name,</if>
+            <if test="productNum != null">product_num,</if>
+            <if test="productUnit != null">product_unit,</if>
+            <if test="unitPrice != null">unit_price,</if>
+            <if test="totalPrice != null">total_price,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="orderId != null">#{orderId},</if>
+            <if test="productName != null">#{productName},</if>
+            <if test="productNum != null">#{productNum},</if>
+            <if test="productUnit != null">#{productUnit},</if>
+            <if test="unitPrice != null">#{unitPrice},</if>
+            <if test="totalPrice != null">#{totalPrice},</if>
+         </trim>
+    </insert>
+
+    <update id="updateChargeDetails" parameterType="ChargeDetails">
+        update charge_details
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="orderId != null">order_id = #{orderId},</if>
+            <if test="productName != null">product_name = #{productName},</if>
+            <if test="productNum != null">product_num = #{productNum},</if>
+            <if test="productUnit != null">product_unit = #{productUnit},</if>
+            <if test="unitPrice != null">unit_price = #{unitPrice},</if>
+            <if test="totalPrice != null">total_price = #{totalPrice},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteChargeDetailsById" parameterType="Long">
+        delete from charge_details where id = #{id}
+    </delete>
+
+    <delete id="deleteChargeDetailsByIds" parameterType="String">
+        delete from charge_details where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+    <delete id="deleteChargeDetailsByOrderId" parameterType="String">
+        delete from charge_details where order_id = #{orderId};
+    </delete>
+</mapper>

+ 17 - 0
ruoyi-system/src/main/resources/mapper/system/ChinaAreaMapper.xml

@@ -0,0 +1,17 @@
+<?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.boman.system.mapper.ChinaAreaMapper">
+
+    <resultMap type="ChinaArea" id="ChinaAreaResult">
+        <result property="areaId"    column="area_id"    />
+        <result property="name"    column="name"    />
+        <result property="pid"    column="pid"    />
+        <result property="sort"    column="sort"    />
+    </resultMap>
+    <select id="selectChinaAreaList" resultMap="ChinaAreaResult">
+        select area_id,name,pid,sort from china_area where pid = #{pid} order by sort
+    </select>
+
+</mapper>

+ 75 - 0
ruoyi-system/src/main/resources/mapper/system/WorkOrderFjMapper.xml

@@ -0,0 +1,75 @@
+<?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.ruoyi.system.mapper.WorkOrderFjMapper">
+    
+    <resultMap type="WorkOrderFj" id="WorkOrderFjResult">
+        <result property="id"    column="id"    />
+        <result property="orderId"    column="order_id"    />
+        <result property="name"    column="name"    />
+        <result property="url"    column="url"    />
+        <result property="type"    column="type"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectWorkOrderFjVo">
+        select id, order_id, name, url, type, remark from work_order_fj
+    </sql>
+
+    <select id="selectWorkOrderFjList" parameterType="WorkOrderFj" resultMap="WorkOrderFjResult">
+        <include refid="selectWorkOrderFjVo"/>
+        <where>  
+            <if test="orderId != null  and orderId != ''"> and order_id = #{orderId}</if>
+            <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
+            <if test="url != null  and url != ''"> and url = #{url}</if>
+            <if test="type != null  and type != ''"> and type = #{type}</if>
+        </where>
+    </select>
+    
+    <select id="selectWorkOrderFjById" parameterType="Long" resultMap="WorkOrderFjResult">
+        <include refid="selectWorkOrderFjVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertWorkOrderFj" parameterType="WorkOrderFj" useGeneratedKeys="true" keyProperty="id">
+        insert into work_order_fj
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="orderId != null">order_id,</if>
+            <if test="name != null and name != ''">name,</if>
+            <if test="url != null">url,</if>
+            <if test="type != null">type,</if>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="orderId != null">#{orderId},</if>
+            <if test="name != null and name != ''">#{name},</if>
+            <if test="url != null">#{url},</if>
+            <if test="type != null">#{type},</if>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateWorkOrderFj" parameterType="WorkOrderFj">
+        update work_order_fj
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="orderId != null">order_id = #{orderId},</if>
+            <if test="name != null and name != ''">name = #{name},</if>
+            <if test="url != null">url = #{url},</if>
+            <if test="type != null">type = #{type},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteWorkOrderFjById" parameterType="Long">
+        delete from work_order_fj where id = #{id}
+    </delete>
+
+    <delete id="deleteWorkOrderFjByIds" parameterType="String">
+        delete from work_order_fj where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 216 - 0
ruoyi-system/src/main/resources/mapper/system/WorkOrderInfoMapper.xml

@@ -0,0 +1,216 @@
+<?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.ruoyi.system.mapper.WorkOrderInfoMapper">
+    
+    <resultMap type="WorkOrderInfo" id="WorkOrderInfoResult">
+        <result property="orderId"    column="order_id"    />
+        <result property="unitName"    column="unit_name"    />
+        <result property="provinceId"    column="province_id"    />
+        <result property="province"    column="province"    />
+        <result property="cityId"    column="city_id"    />
+        <result property="city"    column="city"    />
+        <result property="regionId"    column="region_id"    />
+        <result property="region"    column="region"    />
+        <result property="detailedAddress"    column="detailed_address"    />
+        <result property="lon"    column="lon"    />
+        <result property="lat"    column="lat"    />
+        <result property="personName"    column="person_name"    />
+        <result property="phonenumber"    column="phonenumber"    />
+        <result property="sex"    column="sex"    />
+        <result property="type"    column="type"    />
+        <result property="demand"    column="demand"    />
+        <result property="isSignature"    column="is_signature"    />
+        <result property="evaluation"    column="evaluation"    />
+        <result property="evaluationContent"    column="evaluation_content"    />
+        <result property="serviceProgress"    column="service_progress"    />
+        <result property="orderPlacement"    column="order_placement"    />
+        <result property="responsibleId"    column="responsible_id"    />
+        <result property="responsibleName"    column="responsible_name"    />
+        <result property="takeTime"    column="take_time"    />
+        <result property="projectName"    column="project_name"    />
+        <result property="shelfLife"    column="shelf_life"    />
+        <result property="isCharge"    column="is_charge"    />
+        <result property="totalCost"    column="total_cost"    />
+        <result property="totalCostDx"    column="total_cost_dx"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectWorkOrderInfoVo">
+        select order_id, unit_name, province_id, province, city_id, city, region_id, region, detailed_address, lon, lat, person_name, phonenumber, sex, type, demand, is_signature, evaluation, evaluation_content, service_progress, order_placement, responsible_id, responsible_name,take_time, project_name, shelf_life, is_charge, total_cost, total_cost_dx, del_flag, create_by, create_time, update_by, update_time, remark from work_order_info
+    </sql>
+
+    <select id="selectWorkOrderInfoList" parameterType="WorkOrderInfo" resultMap="WorkOrderInfoResult">
+        <include refid="selectWorkOrderInfoVo"/>
+        <where>  
+            <if test="unitName != null  and unitName != ''"> and unit_name like concat('%', #{unitName}, '%')</if>
+            <if test="provinceId != null  and provinceId != ''"> and province_id = #{provinceId}</if>
+            <if test="province != null  and province != ''"> and province = #{province}</if>
+            <if test="cityId != null  and cityId != ''"> and city_id = #{cityId}</if>
+            <if test="city != null  and city != ''"> and city = #{city}</if>
+            <if test="regionId != null  and regionId != ''"> and region_id = #{regionId}</if>
+            <if test="region != null  and region != ''"> and region = #{region}</if>
+            <if test="detailedAddress != null  and detailedAddress != ''"> and detailed_address = #{detailedAddress}</if>
+            <if test="lon != null  and lon != ''"> and lon = #{lon}</if>
+            <if test="lat != null  and lat != ''"> and lat = #{lat}</if>
+            <if test="personName != null  and personName != ''"> and person_name like concat('%', #{personName}, '%')</if>
+            <if test="phonenumber != null  and phonenumber != ''"> and phonenumber = #{phonenumber}</if>
+            <if test="sex != null  and sex != ''"> and sex = #{sex}</if>
+            <if test="type != null  and type != ''"> and type = #{type}</if>
+            <if test="demand != null  and demand != ''"> and demand = #{demand}</if>
+            <if test="isSignature != null  and isSignature != ''"> and is_signature = #{isSignature}</if>
+            <if test="evaluation != null  and evaluation != ''"> and evaluation = #{evaluation}</if>
+            <if test="evaluationContent != null  and evaluationContent != ''"> and evaluation_content = #{evaluationContent}</if>
+            <if test="serviceProgress != null  and serviceProgress != ''"> and service_progress = #{serviceProgress}</if>
+            <if test="orderPlacement != null  and orderPlacement != ''"> and order_placement = #{orderPlacement}</if>
+            <if test="responsibleId != null "> and responsible_id = #{responsibleId}</if>
+            <if test="responsibleName != null  and responsibleName != ''"> and responsible_name like concat('%', #{responsibleName}, '%')</if>
+            <if test="projectName != null  and projectName != ''"> and project_name like concat('%', #{projectName}, '%')</if>
+            <if test="shelfLife != null  and shelfLife != ''"> and shelf_life = #{shelfLife}</if>
+            <if test="isCharge != null  and isCharge != ''"> and is_charge = #{isCharge}</if>
+            <if test="totalCost != null  and totalCost != ''"> and total_cost = #{totalCost}</if>
+            <if test="totalCostDx != null  and totalCostDx != ''"> and total_cost_dx = #{totalCostDx}</if>
+        </where>
+    </select>
+    
+    <select id="selectWorkOrderInfoByOrderId" parameterType="String" resultMap="WorkOrderInfoResult">
+        <include refid="selectWorkOrderInfoVo"/>
+        where order_id = #{orderId}
+    </select>
+
+    <insert id="insertWorkOrderInfo" parameterType="WorkOrderInfo">
+        insert into work_order_info
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="orderId != null">order_id,</if>
+            <if test="unitName != null">unit_name,</if>
+            <if test="provinceId != null">province_id,</if>
+            <if test="province != null">province,</if>
+            <if test="cityId != null">city_id,</if>
+            <if test="city != null">city,</if>
+            <if test="regionId != null">region_id,</if>
+            <if test="region != null">region,</if>
+            <if test="detailedAddress != null">detailed_address,</if>
+            <if test="lon != null">lon,</if>
+            <if test="lat != null">lat,</if>
+            <if test="personName != null">person_name,</if>
+            <if test="phonenumber != null">phonenumber,</if>
+            <if test="sex != null">sex,</if>
+            <if test="type != null">type,</if>
+            <if test="demand != null">demand,</if>
+            <if test="isSignature != null">is_signature,</if>
+            <if test="evaluation != null">evaluation,</if>
+            <if test="evaluationContent != null">evaluation_content,</if>
+            <if test="serviceProgress != null">service_progress,</if>
+            <if test="orderPlacement != null">order_placement,</if>
+            <if test="responsibleId != null">responsible_id,</if>
+            <if test="responsibleName != null">responsible_name,</if>
+            <if test="takeTime != null">take_time,</if>
+            <if test="projectName != null">project_name,</if>
+            <if test="shelfLife != null">shelf_life,</if>
+            <if test="isCharge != null">is_charge,</if>
+            <if test="totalCost != null">total_cost,</if>
+            <if test="totalCostDx != null">total_cost_dx,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="orderId != null">#{orderId},</if>
+            <if test="unitName != null">#{unitName},</if>
+            <if test="provinceId != null">#{provinceId},</if>
+            <if test="province != null">#{province},</if>
+            <if test="cityId != null">#{cityId},</if>
+            <if test="city != null">#{city},</if>
+            <if test="regionId != null">#{regionId},</if>
+            <if test="region != null">#{region},</if>
+            <if test="detailedAddress != null">#{detailedAddress},</if>
+            <if test="lon != null">#{lon},</if>
+            <if test="lat != null">#{lat},</if>
+            <if test="personName != null">#{personName},</if>
+            <if test="phonenumber != null">#{phonenumber},</if>
+            <if test="sex != null">#{sex},</if>
+            <if test="type != null">#{type},</if>
+            <if test="demand != null">#{demand},</if>
+            <if test="isSignature != null">#{isSignature},</if>
+            <if test="evaluation != null">#{evaluation},</if>
+            <if test="evaluationContent != null">#{evaluationContent},</if>
+            <if test="serviceProgress != null">#{serviceProgress},</if>
+            <if test="orderPlacement != null">#{orderPlacement},</if>
+            <if test="responsibleId != null">#{responsibleId},</if>
+            <if test="responsibleName != null">#{responsibleName},</if>
+            <if test="takeTime != null">#{takeTime},</if>
+            <if test="projectName != null">#{projectName},</if>
+            <if test="shelfLife != null">#{shelfLife},</if>
+            <if test="isCharge != null">#{isCharge},</if>
+            <if test="totalCost != null">#{totalCost},</if>
+            <if test="totalCostDx != null">#{totalCostDx},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateWorkOrderInfo" parameterType="WorkOrderInfo">
+        update work_order_info
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="unitName != null">unit_name = #{unitName},</if>
+            <if test="provinceId != null">province_id = #{provinceId},</if>
+            <if test="province != null">province = #{province},</if>
+            <if test="cityId != null">city_id = #{cityId},</if>
+            <if test="city != null">city = #{city},</if>
+            <if test="regionId != null">region_id = #{regionId},</if>
+            <if test="region != null">region = #{region},</if>
+            <if test="detailedAddress != null">detailed_address = #{detailedAddress},</if>
+            <if test="lon != null">lon = #{lon},</if>
+            <if test="lat != null">lat = #{lat},</if>
+            <if test="personName != null">person_name = #{personName},</if>
+            <if test="phonenumber != null">phonenumber = #{phonenumber},</if>
+            <if test="sex != null">sex = #{sex},</if>
+            <if test="type != null">type = #{type},</if>
+            <if test="demand != null">demand = #{demand},</if>
+            <if test="isSignature != null">is_signature = #{isSignature},</if>
+            <if test="evaluation != null">evaluation = #{evaluation},</if>
+            <if test="evaluationContent != null">evaluation_content = #{evaluationContent},</if>
+            <if test="serviceProgress != null">service_progress = #{serviceProgress},</if>
+            <if test="orderPlacement != null">order_placement = #{orderPlacement},</if>
+            <if test="responsibleId != null">responsible_id = #{responsibleId},</if>
+            <if test="responsibleName != null">responsible_name = #{responsibleName},</if>
+            <if test="takeTime != null">take_time = #{takeTime},</if>
+            <if test="projectName != null">project_name = #{projectName},</if>
+            <if test="shelfLife != null">shelf_life = #{shelfLife},</if>
+            <if test="isCharge != null">is_charge = #{isCharge},</if>
+            <if test="totalCost != null">total_cost = #{totalCost},</if>
+            <if test="totalCostDx != null">total_cost_dx = #{totalCostDx},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where order_id = #{orderId}
+    </update>
+
+    <delete id="deleteWorkOrderInfoByOrderId" parameterType="String">
+        delete from work_order_info where order_id = #{orderId}
+    </delete>
+
+    <delete id="deleteWorkOrderInfoByOrderIds" parameterType="String">
+        delete from work_order_info where order_id in 
+        <foreach item="orderId" collection="array" open="(" separator="," close=")">
+            #{orderId}
+        </foreach>
+    </delete>
+</mapper>