Compare commits

...

2 Commits

37 changed files with 2083 additions and 92 deletions

View File

@ -0,0 +1,7 @@
package com.nu.modules.orgInfo.api;
import com.nu.modules.orgInfo.entity.OrgInfoEntity;
public interface IOrgInfoApi {
OrgInfoEntity queryOrgInfoByCode(String orgCode);
}

View File

@ -0,0 +1,155 @@
package com.nu.modules.orgInfo.entity;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Description: 机构全部信息
* @Author: zmy
* @Date: 2025-07-09
* @Version: V1.0
*/
@Data
public class OrgInfoEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**机构id*/
private String orgId;
/**
* 机构/部门名称
*/
private String departName;
/**
* 机构编码
*/
private String orgCode;
/**
* 协议+域名
*/
private String url;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 区县
*/
private String district;
/**
* 业务平台类型
*/
private String platType;
/**
* 运营开始时间
*/
private Date operationStartTime;
/**
* 运营到期时间
*/
private Date operationEndTime;
/**
* 合同开始时间
*/
private Date contractStartTime;
/**
* 合同到期时间
*/
private Date contractEndTime;
/**
* 手机号
*/
private String mobile;
/**
* 传真
*/
private String fax;
/**
* 地址
*/
private String address;
/**
* 备注
*/
private String memo;
/**
* 应缴金额
*/
private BigDecimal payableAmount;
/**
* 机构图片
*/
private String picUrl;
/**微信id*/
private String openId;
/**微信名称*/
private String wechatName;
/**联系电话*/
private String tel;
/**咨询人姓名*/
private String name;
/**性别*/
private String sex;
/**民族*/
private String national;
/**出生日期*/
private java.util.Date birthDate;
/**住址(身份证上)*/
private String idCardAddress;
/**身份证号*/
private String idCard;
/**签发机关*/
private String issuingAuthority;
/**有效开始日期*/
private java.util.Date startTime;
/**有效结束日期*/
private java.util.Date endTime;
/**身份证正面*/
private String cardZmPath;
/**身份证反面*/
private String cardFmPath;
/**营业执照照片*/
private String comBusinessLicense;
/**企业名称*/
private String comName;
/**企业注册地址*/
private String comRegisterAddress;
/**企业信用代码*/
private String comCreditCode;
/**企业法人*/
private String comLegalPerson;
/**机构地址*/
private String orgAddress;
/**机构位置坐标:经度*/
private String orgCoordinateLo;
/**机构位置坐标:维度*/
private String orgCoordinateLa;
/**机构负责人*/
private String orgLeader;
/**机构负责人电话*/
private String orgLeaderPhone;
/**机构楼宇牌号*/
private String orgBuildingNumber;
/**机构房屋性质*/
private String orgPropertyType;
/**机构建筑面积*/
private Double orgBuildingArea;
/**机构省份 sys_category.id*/
private String orgProvince;
/**机构城市 sys_category.id*/
private String orgCity;
/**机构区域 sys_category.id*/
private String orgDistrict;
/**合同附件*/
private String contract;
/**合同备注*/
private String contractNote;
}

View File

@ -0,0 +1,8 @@
package com.nu.modules.workorder.api;
import com.nu.modules.workorder.entity.WorkOrderEntity;
public interface IWorkOrderApi {
int createWorkOrder(WorkOrderEntity workOrderEntity);
}

View File

@ -0,0 +1,54 @@
package com.nu.modules.workorder.entity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Description: 工单表
* @Author: zmy
* @Date: 2025-07-09
* @Version: V1.0
*/
@Data
public class WorkOrderEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
private String id;
/**区分同一工单用nu_word_order.id*/
private String pkId;
/**机构ID*/
private String orgId;
/**机构编码(可能不存在)*/
private String orgCode;
/**机构名称*/
private String orgName;
/**平台类型pc wechat pad*/
private String platType;
/**标题*/
private String title;
/**描述*/
private String content;
/**附件*/
private String filePath;
/**状态 0待接收 1处理中 3已解决 4工单异常 5外部原因*/
private String status;
/**创建人*/
private String createBy;
/**创建时间*/
private Date createTime;
/**回复内容*/
private String replyContent;
/**回复附件*/
private String replyFile;
/**回复时间*/
private Date replyTime;
/**处理人*/
private String handleBy;
/**工单提交人联系电话*/
private String tel;
/**工单提交人邮件地址*/
private String email;
}

View File

@ -0,0 +1,176 @@
package com.nu.modules.IssueInfo.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nu.modules.IssueInfo.entity.IssueInfo;
import com.nu.modules.IssueInfo.service.IIssueInfoService;
import com.nu.utils.RabbitMQUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.query.QueryRuleEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
* @Description: 发版日志
* @Author: jeecg-boot
* @Date: 2025-07-01
* @Version: V1.0
*/
@Api(tags = "发版日志")
@RestController
@RequestMapping("/admin/issueInfo")
@Slf4j
public class IssueInfoController extends JeecgController<IssueInfo, IIssueInfoService> {
@Autowired
private IIssueInfoService nuIssueInfoService;
@Autowired
private RabbitMQUtil rabbitMQUtil;
/**
* 分页列表查询
*
* @param nuIssueInfo
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "发版日志-分页列表查询")
@ApiOperation(value = "发版日志-分页列表查询", notes = "发版日志-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<IssueInfo>> queryPageList(IssueInfo nuIssueInfo,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
// 自定义查询规则
Map<String, QueryRuleEnum> customeRuleMap = new HashMap<>();
// 自定义多选的查询规则为LIKE_WITH_OR
customeRuleMap.put("issueType", QueryRuleEnum.LIKE_WITH_OR);
QueryWrapper<IssueInfo> queryWrapper = QueryGenerator.initQueryWrapper(nuIssueInfo, req.getParameterMap(), customeRuleMap);
Page<IssueInfo> page = new Page<IssueInfo>(pageNo, pageSize);
IPage<IssueInfo> pageList = nuIssueInfoService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
* @param nuIssueInfo
* @return
*/
@AutoLog(value = "发版日志-添加")
@ApiOperation(value = "发版日志-添加", notes = "发版日志-添加")
@RequiresPermissions("IssueInfo:nu_issue_info:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody IssueInfo nuIssueInfo) {
nuIssueInfoService.save(nuIssueInfo);
rabbitMQUtil.sendToExchange("hldy.fbrz.sync", "hldy.fbrz.sync", nuIssueInfo.getId());
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param nuIssueInfo
* @return
*/
@AutoLog(value = "发版日志-编辑")
@ApiOperation(value = "发版日志-编辑", notes = "发版日志-编辑")
@RequiresPermissions("IssueInfo:nu_issue_info:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
public Result<String> edit(@RequestBody IssueInfo nuIssueInfo) {
nuIssueInfoService.updateById(nuIssueInfo);
rabbitMQUtil.sendToExchange("hldy.fbrz.sync", "hldy.fbrz.sync", nuIssueInfo.getId());
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "发版日志-通过id删除")
@ApiOperation(value = "发版日志-通过id删除", notes = "发版日志-通过id删除")
@RequiresPermissions("IssueInfo:nu_issue_info:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
nuIssueInfoService.removeById(id);
rabbitMQUtil.sendToExchange("hldy.fbrz.sync", "hldy.fbrz.sync", id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "发版日志-批量删除")
@ApiOperation(value = "发版日志-批量删除", notes = "发版日志-批量删除")
@RequiresPermissions("IssueInfo:nu_issue_info:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
this.nuIssueInfoService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "发版日志-通过id查询")
@ApiOperation(value = "发版日志-通过id查询", notes = "发版日志-通过id查询")
@GetMapping(value = "/queryById")
public Result<IssueInfo> queryById(@RequestParam(name = "id", required = true) String id) {
IssueInfo nuIssueInfo = nuIssueInfoService.getById(id);
if (nuIssueInfo == null) {
return Result.error("未找到对应数据");
}
return Result.OK(nuIssueInfo);
}
/**
* 导出excel
*
* @param request
* @param nuIssueInfo
*/
@RequiresPermissions("IssueInfo:nu_issue_info:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, IssueInfo nuIssueInfo) {
return super.exportXls(request, nuIssueInfo, IssueInfo.class, "发版日志");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequiresPermissions("IssueInfo:nu_issue_info:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, IssueInfo.class);
}
}

View File

@ -0,0 +1,71 @@
package com.nu.modules.IssueInfo.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: 发版日志
* @Author: jeecg-boot
* @Date: 2025-07-01
* @Version: V1.0
*/
@Data
@TableName("nu_issue_info")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="nu_issue_info对象", description="发版日志")
public class IssueInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**ID*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "ID")
private String id;
/**是否删除 0未删除 1删除*/
@Excel(name = "是否删除 0未删除 1删除", width = 15)
@ApiModelProperty(value = "是否删除 0未删除 1删除")
@TableLogic
private String delFlag;
/**创建人*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期")
private Date updateTime;
/**所属机构*/
@ApiModelProperty(value = "所属机构")
private String sysOrgCode;
/**发版类型 0运维 1业务 2app 3小程序*/
@Excel(name = "发版类型 0运维 1业务 2app 3小程序", width = 15, dicCode = "issue_type")
@Dict(dicCode = "issue_type")
@ApiModelProperty(value = "发版类型 0运维 1业务 2app 3小程序")
private String issueType;
/**发版内容*/
@Excel(name = "发版内容", width = 15)
@ApiModelProperty(value = "发版内容")
private String content;
}

View File

@ -0,0 +1,14 @@
package com.nu.modules.IssueInfo.mapper;
import com.nu.modules.IssueInfo.entity.IssueInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 发版日志
* @Author: jeecg-boot
* @Date: 2025-07-01
* @Version: V1.0
*/
public interface IssueInfoMapper extends BaseMapper<IssueInfo> {
}

View File

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

View File

@ -0,0 +1,14 @@
package com.nu.modules.IssueInfo.service;
import com.nu.modules.IssueInfo.entity.IssueInfo;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 发版日志
* @Author: jeecg-boot
* @Date: 2025-07-01
* @Version: V1.0
*/
public interface IIssueInfoService extends IService<IssueInfo> {
}

View File

@ -0,0 +1,19 @@
package com.nu.modules.IssueInfo.service.impl;
import com.nu.modules.IssueInfo.entity.IssueInfo;
import com.nu.modules.IssueInfo.mapper.IssueInfoMapper;
import com.nu.modules.IssueInfo.service.IIssueInfoService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 发版日志
* @Author: jeecg-boot
* @Date: 2025-07-01
* @Version: V1.0
*/
@Service
public class IssueInfoServiceImpl extends ServiceImpl<IssueInfoMapper, IssueInfo> implements IIssueInfoService {
}

View File

@ -0,0 +1,91 @@
package com.nu.modules.orginfo.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nu.modules.orgInfo.api.IOrgInfoApi;
import com.nu.modules.orgInfo.entity.OrgInfoEntity;
import com.nu.modules.orginfo.entity.OrgAllInfo;
import com.nu.modules.orginfo.entity.OrgInfo;
import com.nu.modules.orginfo.service.IOrgInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
/**
* @Description: 机构附加信息
* @Author: zmy
* @Date: 2025-07-08
* @Version: V1.0
*/
@Api(tags="机构附加信息")
@RestController
@RequestMapping("/admin/orginfo")
@Slf4j
public class OrgInfoController extends JeecgController<OrgInfo, IOrgInfoService> {
@Autowired
private IOrgInfoService nuOrgInfoService;
@Autowired
private IOrgInfoApi orgInfoApi;
/**
* 分页列表查询
*
* @param nuOrgInfo
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "机构附加信息-分页列表查询")
@ApiOperation(value="机构附加信息-分页列表查询", notes="机构附加信息-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<OrgInfo>> queryPageList(OrgInfo nuOrgInfo,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<OrgInfo> queryWrapper = QueryGenerator.initQueryWrapper(nuOrgInfo, req.getParameterMap());
Page<OrgInfo> page = new Page<OrgInfo>(pageNo, pageSize);
IPage<OrgInfo> pageList = nuOrgInfoService.page(page, queryWrapper);
return Result.OK(pageList);
}
@ApiOperation(value="根据机构编码获取机构详情", notes="根据机构编码获取机构详情")
@GetMapping(value = "/getOrgInfo")
public Result<OrgAllInfo> getOrgInfo(@RequestParam("orgCode") String orgCode) {
OrgInfoEntity orgInfoEntity = orgInfoApi.queryOrgInfoByCode(orgCode);
OrgAllInfo result = new OrgAllInfo();
BeanUtils.copyProperties(orgInfoEntity,result);
return Result.OK(result);
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "机构附加信息-通过id查询")
@ApiOperation(value="机构附加信息-通过id查询", notes="机构附加信息-通过id查询")
@GetMapping(value = "/queryById")
public Result<OrgInfo> queryById(@RequestParam(name="id",required=true) String id) {
OrgInfo nuOrgInfo = nuOrgInfoService.getById(id);
if(nuOrgInfo==null) {
return Result.error("未找到对应数据");
}
return Result.OK(nuOrgInfo);
}
}

View File

@ -0,0 +1,155 @@
package com.nu.modules.orginfo.entity;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Description: 机构全部信息
* @Author: zmy
* @Date: 2025-07-09
* @Version: V1.0
*/
@Data
public class OrgAllInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**机构id*/
private String orgId;
/**
* 机构/部门名称
*/
private String departName;
/**
* 机构编码
*/
private String orgCode;
/**
* 协议+域名
*/
private String url;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 区县
*/
private String district;
/**
* 业务平台类型
*/
private String platType;
/**
* 运营开始时间
*/
private Date operationStartTime;
/**
* 运营到期时间
*/
private Date operationEndTime;
/**
* 合同开始时间
*/
private Date contractStartTime;
/**
* 合同到期时间
*/
private Date contractEndTime;
/**
* 手机号
*/
private String mobile;
/**
* 传真
*/
private String fax;
/**
* 地址
*/
private String address;
/**
* 备注
*/
private String memo;
/**
* 应缴金额
*/
private BigDecimal payableAmount;
/**
* 机构图片
*/
private String picUrl;
/**微信id*/
private String openId;
/**微信名称*/
private String wechatName;
/**联系电话*/
private String tel;
/**咨询人姓名*/
private String name;
/**性别*/
private String sex;
/**民族*/
private String national;
/**出生日期*/
private Date birthDate;
/**住址(身份证上)*/
private String idCardAddress;
/**身份证号*/
private String idCard;
/**签发机关*/
private String issuingAuthority;
/**有效开始日期*/
private Date startTime;
/**有效结束日期*/
private Date endTime;
/**身份证正面*/
private String cardZmPath;
/**身份证反面*/
private String cardFmPath;
/**营业执照照片*/
private String comBusinessLicense;
/**企业名称*/
private String comName;
/**企业注册地址*/
private String comRegisterAddress;
/**企业信用代码*/
private String comCreditCode;
/**企业法人*/
private String comLegalPerson;
/**机构地址*/
private String orgAddress;
/**机构位置坐标:经度*/
private String orgCoordinateLo;
/**机构位置坐标:维度*/
private String orgCoordinateLa;
/**机构负责人*/
private String orgLeader;
/**机构负责人电话*/
private String orgLeaderPhone;
/**机构楼宇牌号*/
private String orgBuildingNumber;
/**机构房屋性质*/
private String orgPropertyType;
/**机构建筑面积*/
private Double orgBuildingArea;
/**机构省份 sys_category.id*/
private String orgProvince;
/**机构城市 sys_category.id*/
private String orgCity;
/**机构区域 sys_category.id*/
private String orgDistrict;
/**合同附件*/
private String contract;
/**合同备注*/
private String contractNote;
}

View File

@ -0,0 +1,178 @@
package com.nu.modules.orginfo.entity;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: 机构附加信息
* @Author: zmy
* @Date: 2025-07-08
* @Version: V1.0
*/
@Data
@TableName("nu_org_info")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="nu_org_info对象", description="机构附加信息")
public class OrgInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.String id;
/**机构ID sys_depart.id 同管理端nu_org_apply_info.pk_id*/
@Excel(name = "机构ID sys_depart.id 同管理端nu_org_apply_info.pk_id", width = 15)
@ApiModelProperty(value = "机构ID sys_depart.id 同管理端nu_org_apply_info.pk_id")
private java.lang.String pkId;
/**微信id*/
@Excel(name = "微信id", width = 15)
@ApiModelProperty(value = "微信id")
private java.lang.String openId;
/**微信名称*/
@Excel(name = "微信名称", width = 15)
@ApiModelProperty(value = "微信名称")
private java.lang.String wechatName;
/**联系电话*/
@Excel(name = "联系电话", width = 15)
@ApiModelProperty(value = "联系电话")
private java.lang.String tel;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期")
private java.util.Date updateTime;
/**咨询人姓名*/
@Excel(name = "咨询人姓名", width = 15)
@ApiModelProperty(value = "咨询人姓名")
private java.lang.String name;
/**性别*/
@Excel(name = "性别", width = 15)
@ApiModelProperty(value = "性别")
private java.lang.String sex;
/**民族*/
@Excel(name = "民族", width = 15)
@ApiModelProperty(value = "民族")
private java.lang.String national;
/**出生日期*/
@Excel(name = "出生日期", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "出生日期")
private java.util.Date birthDate;
/**住址(身份证上)*/
@Excel(name = "住址(身份证上)", width = 15)
@ApiModelProperty(value = "住址(身份证上)")
private java.lang.String idCardAddress;
/**身份证号*/
@Excel(name = "身份证号", width = 15)
@ApiModelProperty(value = "身份证号")
private java.lang.String idCard;
/**签发机关*/
@Excel(name = "签发机关", width = 15)
@ApiModelProperty(value = "签发机关")
private java.lang.String issuingAuthority;
/**有效开始日期*/
@Excel(name = "有效开始日期", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "有效开始日期")
private java.util.Date startTime;
/**有效结束日期*/
@Excel(name = "有效结束日期", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "有效结束日期")
private java.util.Date endTime;
/**身份证正面*/
@Excel(name = "身份证正面", width = 15)
@ApiModelProperty(value = "身份证正面")
private java.lang.String cardZmPath;
/**身份证反面*/
@Excel(name = "身份证反面", width = 15)
@ApiModelProperty(value = "身份证反面")
private java.lang.String cardFmPath;
/**营业执照照片*/
@Excel(name = "营业执照照片", width = 15)
@ApiModelProperty(value = "营业执照照片")
private java.lang.String comBusinessLicense;
/**企业名称*/
@Excel(name = "企业名称", width = 15)
@ApiModelProperty(value = "企业名称")
private java.lang.String comName;
/**企业注册地址*/
@Excel(name = "企业注册地址", width = 15)
@ApiModelProperty(value = "企业注册地址")
private java.lang.String comRegisterAddress;
/**企业信用代码*/
@Excel(name = "企业信用代码", width = 15)
@ApiModelProperty(value = "企业信用代码")
private java.lang.String comCreditCode;
/**企业法人*/
@Excel(name = "企业法人", width = 15)
@ApiModelProperty(value = "企业法人")
private java.lang.String comLegalPerson;
/**机构地址*/
@Excel(name = "机构地址", width = 15)
@ApiModelProperty(value = "机构地址")
private java.lang.String orgAddress;
/**机构位置坐标:经度*/
@Excel(name = "机构位置坐标:经度", width = 15)
@ApiModelProperty(value = "机构位置坐标:经度")
private java.lang.String orgCoordinateLo;
/**机构位置坐标:维度*/
@Excel(name = "机构位置坐标:维度", width = 15)
@ApiModelProperty(value = "机构位置坐标:维度")
private java.lang.String orgCoordinateLa;
/**机构负责人*/
@Excel(name = "机构负责人", width = 15)
@ApiModelProperty(value = "机构负责人")
private java.lang.String orgLeader;
/**机构负责人电话*/
@Excel(name = "机构负责人电话", width = 15)
@ApiModelProperty(value = "机构负责人电话")
private java.lang.String orgLeaderPhone;
/**机构楼宇牌号*/
@Excel(name = "机构楼宇牌号", width = 15)
@ApiModelProperty(value = "机构楼宇牌号")
private java.lang.String orgBuildingNumber;
/**机构房屋性质*/
@Excel(name = "机构房屋性质", width = 15)
@ApiModelProperty(value = "机构房屋性质")
private java.lang.String orgPropertyType;
/**机构建筑面积*/
@Excel(name = "机构建筑面积", width = 15)
@ApiModelProperty(value = "机构建筑面积")
private java.lang.Double orgBuildingArea;
/**机构省份 sys_category.id*/
@Excel(name = "机构省份 sys_category.id", width = 15)
@ApiModelProperty(value = "机构省份 sys_category.id")
private java.lang.String orgProvince;
/**机构城市 sys_category.id*/
@Excel(name = "机构城市 sys_category.id", width = 15)
@ApiModelProperty(value = "机构城市 sys_category.id")
private java.lang.String orgCity;
/**机构区域 sys_category.id*/
@Excel(name = "机构区域 sys_category.id", width = 15)
@ApiModelProperty(value = "机构区域 sys_category.id")
private java.lang.String orgDistrict;
/**合同附件*/
@Excel(name = "合同附件", width = 15)
@ApiModelProperty(value = "合同附件")
private java.lang.String contract;
/**合同备注*/
@Excel(name = "合同备注", width = 15)
@ApiModelProperty(value = "合同备注")
private java.lang.String contractNote;
}

View File

@ -0,0 +1,17 @@
package com.nu.modules.orginfo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nu.modules.orginfo.entity.OrgAllInfo;
import com.nu.modules.orginfo.entity.OrgInfo;
import org.apache.ibatis.annotations.Param;
/**
* @Description: 机构附加信息
* @Author: zmy
* @Date: 2025-07-08
* @Version: V1.0
*/
public interface OrgInfoMapper extends BaseMapper<OrgInfo> {
OrgAllInfo queryOrgInfoByCode(@Param("orgCode") String orgCode);
}

View File

@ -0,0 +1,60 @@
<?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.nu.modules.orginfo.mapper.OrgInfoMapper">
<select id="queryOrgInfoByCode" resultType="com.nu.modules.orginfo.entity.OrgAllInfo">
select
d.id as orgId,
d.depart_name,
d.org_code,
d.url,
d.province,
d.city,
d.district,
d.plat_type,
d.operation_start_time,
d.operation_end_time,
d.contract_start_time,
d.contract_end_time,
d.mobile,
d.fax,
d.address,
d.memo,
d.payable_amount,
d.pic_url,
o.open_id,
o.wechat_name,
o.tel,
o.name,
o.sex,
o.national,
o.birth_date,
o.id_card_address,
o.id_card,
o.issuing_authority,
o.start_time,
o.end_time,
o.card_zm_path,
o.card_fm_path,
o.com_business_license,
o.com_name,
o.com_register_address,
o.com_credit_code,
o.com_legal_person,
o.org_address,
o.org_leader,
o.org_leader_phone,
o.org_building_number,
o.org_property_type,
o.org_building_area,
o.org_province,
o.org_city,
o.org_district,
o.contract,
o.contract_note
from sys_depart d
left join nu_org_info o
on d.id = o.pk_id
where d.org_code = #{orgCode}
</select>
</mapper>

View File

@ -0,0 +1,14 @@
package com.nu.modules.orginfo.service;
import com.nu.modules.orginfo.entity.OrgInfo;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 机构附加信息
* @Author: zmy
* @Date: 2025-07-08
* @Version: V1.0
*/
public interface IOrgInfoService extends IService<OrgInfo> {
}

View File

@ -0,0 +1,30 @@
package com.nu.modules.orginfo.service.impl;
import com.nu.modules.orgInfo.api.IOrgInfoApi;
import com.nu.modules.orgInfo.entity.OrgInfoEntity;
import com.nu.modules.orginfo.entity.OrgAllInfo;
import com.nu.modules.orginfo.entity.OrgInfo;
import com.nu.modules.orginfo.mapper.OrgInfoMapper;
import com.nu.modules.orginfo.service.IOrgInfoService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 机构附加信息
* @Author: zmy
* @Date: 2025-07-08
* @Version: V1.0
*/
@Service
public class OrgInfoServiceImpl extends ServiceImpl<OrgInfoMapper, OrgInfo> implements IOrgInfoService, IOrgInfoApi {
@Override
public OrgInfoEntity queryOrgInfoByCode(String orgCode) {
OrgAllInfo orgInfo = baseMapper.queryOrgInfoByCode(orgCode);
OrgInfoEntity result = new OrgInfoEntity();
BeanUtils.copyProperties(orgInfo,result);
return result;
}
}

View File

@ -0,0 +1,180 @@
package com.nu.modules.workorder.controller;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.query.QueryRuleEnum;
import org.jeecg.common.util.oConvertUtils;
import com.nu.modules.workorder.entity.WorkOrder;
import com.nu.modules.workorder.service.IWorkOrderService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
/**
* @Description: 工单表
* @Author: zmy
* @Date: 2025-07-08
* @Version: V1.0
*/
@Api(tags="工单表")
@RestController
@RequestMapping("/workorder/workOrder")
@Slf4j
public class WorkOrderController extends JeecgController<WorkOrder, IWorkOrderService> {
@Autowired
private IWorkOrderService workOrderService;
/**
* 分页列表查询
*
* @param workOrder
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "工单表-分页列表查询")
@ApiOperation(value="工单表-分页列表查询", notes="工单表-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<WorkOrder>> queryPageList(WorkOrder workOrder,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<WorkOrder> queryWrapper = QueryGenerator.initQueryWrapper(workOrder, req.getParameterMap());
Page<WorkOrder> page = new Page<WorkOrder>(pageNo, pageSize);
IPage<WorkOrder> pageList = workOrderService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
* @param workOrder
* @return
*/
@AutoLog(value = "工单表-添加")
@ApiOperation(value="工单表-添加", notes="工单表-添加")
@RequiresPermissions("workorder:nu_work_order:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody WorkOrder workOrder) {
workOrderService.save(workOrder);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param workOrder
* @return
*/
@AutoLog(value = "工单表-编辑")
@ApiOperation(value="工单表-编辑", notes="工单表-编辑")
@RequiresPermissions("workorder:nu_work_order:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody WorkOrder workOrder) {
workOrderService.updateById(workOrder);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "工单表-通过id删除")
@ApiOperation(value="工单表-通过id删除", notes="工单表-通过id删除")
@RequiresPermissions("workorder:nu_work_order:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
workOrderService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "工单表-批量删除")
@ApiOperation(value="工单表-批量删除", notes="工单表-批量删除")
@RequiresPermissions("workorder:nu_work_order:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.workOrderService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "工单表-通过id查询")
@ApiOperation(value="工单表-通过id查询", notes="工单表-通过id查询")
@GetMapping(value = "/queryById")
public Result<WorkOrder> queryById(@RequestParam(name="id",required=true) String id) {
WorkOrder workOrder = workOrderService.getById(id);
if(workOrder==null) {
return Result.error("未找到对应数据");
}
return Result.OK(workOrder);
}
/**
* 导出excel
*
* @param request
* @param workOrder
*/
@RequiresPermissions("workorder:nu_work_order:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, WorkOrder workOrder) {
return super.exportXls(request, workOrder, WorkOrder.class, "工单表");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequiresPermissions("workorder:nu_work_order:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, WorkOrder.class);
}
}

View File

@ -0,0 +1,113 @@
package com.nu.modules.workorder.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import org.jeecg.common.constant.ProvinceCityArea;
import org.jeecg.common.util.SpringContextUtils;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: 工单表
* @Author: zmy
* @Date: 2025-07-08
* @Version: V1.0
*/
@Data
@TableName("nu_work_order")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="nu_work_order对象", description="工单表")
public class WorkOrder implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.String id;
/**区分同一工单用nu_word_order.id*/
@Excel(name = "区分同一工单用nu_word_order.id", width = 15)
@ApiModelProperty(value = "区分同一工单用nu_word_order.id")
private java.lang.String pkId;
/**机构ID*/
@Excel(name = "机构ID", width = 15)
@ApiModelProperty(value = "机构ID")
private java.lang.String orgId;
/**机构编码(可能不存在)*/
@Excel(name = "机构编码(可能不存在)", width = 15)
@ApiModelProperty(value = "机构编码(可能不存在)")
private java.lang.String orgCode;
/**机构名称*/
@Excel(name = "机构名称", width = 15)
@ApiModelProperty(value = "机构名称")
private java.lang.String orgName;
/**平台类型pc wechat pad*/
@Dict(dicCode = "plat_type")
@Excel(name = "平台类型", width = 15)
@ApiModelProperty(value = "平台类型")
private java.lang.String platType;
/**标题*/
@Excel(name = "标题", width = 15)
@ApiModelProperty(value = "标题")
private java.lang.String title;
/**描述*/
@Excel(name = "描述", width = 15)
@ApiModelProperty(value = "描述")
private java.lang.String content;
/**附件*/
@Excel(name = "附件", width = 15)
@ApiModelProperty(value = "附件")
private java.lang.String filePath;
/**状态 0待接收 1处理中 3已解决 4工单异常 5外部原因*/
@Dict(dicCode = "work_order_status")
@Excel(name = "工单状态", width = 15)
@ApiModelProperty(value = "工单状态")
private java.lang.String status;
/**创建人*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private java.util.Date createTime;
/**回复内容*/
@Excel(name = "回复内容", width = 15)
@ApiModelProperty(value = "回复内容")
private java.lang.String replyContent;
/**回复附件*/
@Excel(name = "回复附件", width = 15)
@ApiModelProperty(value = "回复附件")
private java.lang.String replyFile;
/**回复时间*/
@Excel(name = "回复时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "回复时间")
private java.util.Date replyTime;
/**处理人*/
@Excel(name = "处理人", width = 15)
@ApiModelProperty(value = "处理人")
private java.lang.String handleBy;
/**工单提交人联系电话*/
@Excel(name = "工单提交人联系电话", width = 15)
@ApiModelProperty(value = "工单提交人联系电话")
private java.lang.String tel;
/**工单提交人邮件地址*/
@Excel(name = "工单提交人邮件地址", width = 15)
@ApiModelProperty(value = "工单提交人邮件地址")
private java.lang.String email;
}

View File

@ -0,0 +1,17 @@
package com.nu.modules.workorder.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.nu.modules.workorder.entity.WorkOrder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 工单表
* @Author: zmy
* @Date: 2025-07-08
* @Version: V1.0
*/
public interface WorkOrderMapper extends BaseMapper<WorkOrder> {
}

View File

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

View File

@ -0,0 +1,14 @@
package com.nu.modules.workorder.service;
import com.nu.modules.workorder.entity.WorkOrder;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 工单表
* @Author: zmy
* @Date: 2025-07-08
* @Version: V1.0
*/
public interface IWorkOrderService extends IService<WorkOrder> {
}

View File

@ -0,0 +1,28 @@
package com.nu.modules.workorder.service.impl;
import com.nu.modules.workorder.api.IWorkOrderApi;
import com.nu.modules.workorder.entity.WorkOrder;
import com.nu.modules.workorder.entity.WorkOrderEntity;
import com.nu.modules.workorder.mapper.WorkOrderMapper;
import com.nu.modules.workorder.service.IWorkOrderService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 工单表
* @Author: zmy
* @Date: 2025-07-08
* @Version: V1.0
*/
@Service
public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder> implements IWorkOrderService, IWorkOrderApi {
@Override
public int createWorkOrder(WorkOrderEntity workOrderEntity) {
WorkOrder workOrder = new WorkOrder();
BeanUtils.copyProperties(workOrderEntity,workOrder);
return baseMapper.insert(workOrder);
}
}

View File

@ -0,0 +1,28 @@
package com.nu.mq.orginfo.exceptionhandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.AmqpRejectAndDontRequeueException;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.listener.api.RabbitListenerErrorHandler;
import org.springframework.amqp.rabbit.support.ListenerExecutionFailedException;
import org.springframework.stereotype.Component;
@Slf4j
@Component("orgInfoMQErrorHandler")
public class OrgInfoMQExceptionHandler implements RabbitListenerErrorHandler {
@Override
public Object handleError(Message message, org.springframework.messaging.Message<?> message1, ListenerExecutionFailedException e) {
log.error("MQ消息处理失败 | 消息体: {} | 异常原因: {}", new String(message.getBody()), e.getCause().getMessage());
// 根据异常类型选择处理策略
// if (isRetryable(e)) {
// // 可重试异常抛出异常触发重试
// throw e;
// } else {
// 不可恢复异常拒绝消息且不重新入队
throw new AmqpRejectAndDontRequeueException("消息处理失败且禁止重试", e);
// }
}
}

View File

@ -0,0 +1,87 @@
package com.nu.mq.orginfo.listener;
import cn.hutool.core.util.IdUtil;
import com.nu.dto.OrgApplyInfoMQDto;
import com.nu.modules.orginfo.entity.OrgInfo;
import com.nu.modules.orginfo.service.IOrgInfoService;
import com.nu.modules.workorder.api.IWorkOrderApi;
import com.nu.modules.workorder.entity.WorkOrderEntity;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.entity.SysDepartEntity;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
@Slf4j
@Component
public class OrgInfoMQListener {
@Autowired
private IOrgInfoService orgInfoService;
@Autowired
private ISysBaseAPI sysBaseAPI;
@Autowired
private IWorkOrderApi workOrderApi;
/**
* 机构加盟-上传合同环节后-通知运维平台搭建对应业务平台
* 1需要在系统机构表中创建机构信息自动生成机构编码
* 2向机构附加信息表中插入数据
* @param dto
*/
@RabbitListener(
bindings = @QueueBinding(
value = @Queue(name = "hldy.orgApply.build"),
exchange = @Exchange(name = "hldy.orgApply.build", type = ExchangeTypes.DIRECT),
key = "hldy.orgApply.build"
),
errorHandler = "orgInfoMQErrorHandler"
)
public void handleNuBaseInfoSyncMessageStatus(OrgApplyInfoMQDto dto) {
OrgInfo orgInfo = new OrgInfo();
BeanUtils.copyProperties(dto,orgInfo);
orgInfo.setPkId(dto.getId());
//向机构附加信息表中插入数据
orgInfoService.save(orgInfo);
//在系统机构表中创建机构信息
SysDepartEntity sysDepart = new SysDepartEntity();
sysDepart.setId(dto.getId());
sysDepart.setCreateBy("admin");
sysDepart.setDepartName(dto.getComName());
sysDepart.setDepartOrder(0);
sysDepart.setOrgCategory("1");
sysDepart.setOrgType("1");
sysDepart.setDelFlag("0");
sysDepart.setIzLeaf(1);
sysDepart.setPlatType("ywjg");
String orgCode = sysBaseAPI.addOrg(sysDepart);
//新增工单
WorkOrderEntity workOrderEntity = new WorkOrderEntity();
String workOrderId = IdUtil.simpleUUID();
workOrderEntity.setId(workOrderId);
workOrderEntity.setPkId(workOrderId);
workOrderEntity.setOrgId(dto.getId());
workOrderEntity.setOrgCode(orgCode);
workOrderEntity.setOrgName(dto.getComName());
workOrderEntity.setPlatType("pc");
workOrderEntity.setTitle("机构加盟平台搭建");
workOrderEntity.setContent("机构加盟平台搭建");
workOrderEntity.setStatus("0");
workOrderEntity.setCreateBy(dto.getOperateBy());
workOrderEntity.setCreateTime(new Date());
workOrderEntity.setTel(dto.getOperateTelephone());
workOrderEntity.setEmail(dto.getOperateEmail());
workOrderApi.createWorkOrder(workOrderEntity);
}
}

View File

@ -0,0 +1,28 @@
package com.nu.mq.workorder.exceptionhandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.AmqpRejectAndDontRequeueException;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.listener.api.RabbitListenerErrorHandler;
import org.springframework.amqp.rabbit.support.ListenerExecutionFailedException;
import org.springframework.stereotype.Component;
@Slf4j
@Component("workOrderMQErrorHandler")
public class WorkOrderMQExceptionHandler implements RabbitListenerErrorHandler {
@Override
public Object handleError(Message message, org.springframework.messaging.Message<?> message1, ListenerExecutionFailedException e) {
log.error("MQ消息处理失败 | 消息体: {} | 异常原因: {}", new String(message.getBody()), e.getCause().getMessage());
// 根据异常类型选择处理策略
// if (isRetryable(e)) {
// // 可重试异常抛出异常触发重试
// throw e;
// } else {
// 不可恢复异常拒绝消息且不重新入队
throw new AmqpRejectAndDontRequeueException("消息处理失败且禁止重试", e);
// }
}
}

View File

@ -0,0 +1,38 @@
package com.nu.mq.workorder.listener;
import com.nu.dto.OrgApplyInfoMQDto;
import com.nu.modules.orginfo.entity.OrgInfo;
import com.nu.modules.orginfo.service.IOrgInfoService;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.entity.SysDepartEntity;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class WorkOrderMQListener {
/**
* 创建工单
*
* @param dto
*/
@RabbitListener(
bindings = @QueueBinding(
value = @Queue(name = "hldy.work.created"),
exchange = @Exchange(name = "hldy.work.created", type = ExchangeTypes.DIRECT),
key = "hldy.work.created"
),
errorHandler = "workOrderMQErrorHandler"
)
public void handleNuBaseInfoSyncMessageStatus() {
}
}

View File

@ -15,7 +15,7 @@ import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/nuIpadApi/versionManage")
@RequestMapping("/api/pad")
@CrossOrigin("*")
public class VersionManageApi {

View File

@ -1,75 +0,0 @@
package com.nu.modules.pad.appversionconfig.api;
import cn.hutool.core.util.StrUtil;
import com.nu.modules.pad.appversionconfig.entity.AppConfig;
import com.nu.modules.pad.appversionconfig.entity.R;
import com.nu.modules.pad.appversionconfig.entity.VersionInfo;
import com.nu.modules.pad.appversionconfig.service.IAppConfigService;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/api/pad")
@CrossOrigin("*")
public class VersionManageApiBK {
@Autowired
private IAppConfigService appConfigService;
/**
* APP版本更新
* 请求参数中其实不止传递了一下四个更多请看插件市场作者的文档https://ext.dcloud.net.cn/plugin?id=3931
* @param platform 平台android/ios
* @param name 应用名称
* @param version 应用版本名称 主版本号.次版本号.修订号
* @param code 应用版本号
* @return
*/
@AutoLog(value = "APP版本更新检测")
@RequestMapping("/versionUpdate")
public R check(String platform,String name,String version,String code) {
Map<String, Object> map = new HashMap<>();
VersionInfo info = new VersionInfo();
info.setUpdate_flag(0);
map.put("code", 100);
map.put("data", info);
AppConfig appConfig = appConfigService.findLastVersionInfo();
if(appConfig ==null) {
map.put("msg", "无版本配置信息");
return R.ok(map);
}
if(!StrUtil.isEmptyIfStr(version) && !StrUtil.isEmptyIfStr(platform)) {
int[] oldVers = StrUtil.splitToInt(version, ".");
int[] newVers = StrUtil.splitToInt(appConfig.getVersionCode(), ".");
boolean isUpdateFlag = false;
int length = oldVers.length > newVers.length ? newVers.length : oldVers.length;
for (int i = 0; i < length; i++) {
if(newVers[i] > oldVers[i]) {
isUpdateFlag = true;
break;
}
}
if(isUpdateFlag) {
info.setUpdate_flag(1);//0不需要更新1:需要更新
info.setVersion(appConfig.getVersionCode());
info.setUpdate_url(appConfig.getVersionUrl());
info.setUpdate_tips(appConfig.getUpdateTrips());
info.setForceupdate(appConfig.getIsForceUpdate());
map.put("code", 100);
map.put("msg", "应用程序需要更新");
map.put("data", info);
}
return R.ok(map);
}else {
map.put("code", 500);
map.put("msg", "请求参数不含版本号、平台");
map.put("data", info);
return R.ok(map);
}
}
}

View File

@ -120,7 +120,6 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/sys/getQrcodeToken/**", "anon"); //监听扫码
filterChainDefinitionMap.put("/sys/checkAuth", "anon"); //授权接口排除
filterChainDefinitionMap.put("/api/pad/versionUpdate", "anon");//pad端版本检测接口
filterChainDefinitionMap.put("/nuIpadApi/versionManage/versionUpdate", "anon");//pad端版本检测接口
filterChainDefinitionMap.put("/api/ocr/**", "anon");//阿里云证件识别
filterChainDefinitionMap.put("/ws/ssh/**", "anon");//SSH测试
filterChainDefinitionMap.put("/api/proxy/**", "anon");//代理请求

View File

@ -0,0 +1,215 @@
package com.nu.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @Description: 机构加盟
* @Author: 张明远
* @Date: 2025-07-08
* @Version: V1.0
*/
@Data
public class OrgApplyInfoMQDto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 机构ID orgId 同机构相同(申请时生成数据的id)
*/
private String pkId;
/**
* 微信id
*/
private String openId;
/**
* 微信名称
*/
private String wechatName;
/**
* 联系电话
*/
private String tel;
/**
* 状态 1审核中 2审核完成 3驳回
*/
private String status;
/**
* 变更状态 0可修改 1不可修改
*/
private String modifyStatus;
/**
* 构建状态构建状态1机构加盟小程序2加盟审核管理平台3加盟合同管理平台4平台搭建运维平台5账户初始化管理平台6信息推送公众号
*/
private String buildStatus;
//构建状态前后台处理逻辑字段
private String buildStatusVal;
/**
* 审核备注
*/
private String content;
/**
* 创建人
*/
private String createBy;
/**
* 创建日期
*/
private java.util.Date createTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新日期
*/
private java.util.Date updateTime;
/**
* 机构是否入驻0否 1是(是否入驻过
*/
private String izEntry;
/**
* 咨询人姓名
*/
private String name;
/**
* 性别
*/
private String sex;
/**
* 民族
*/
private String national;
/**
* 出生日期
*/
private java.util.Date birthDate;
/**
* 住址身份证上
*/
private String idCardAddress;
/**
* 身份证号
*/
private String idCard;
/**
* 签发机关
*/
private String issuingAuthority;
/**
* 有效开始日期
*/
private java.util.Date startTime;
/**
* 有效结束日期
*/
private java.util.Date endTime;
/**
* 身份证正面
*/
private String cardZmPath;
/**
* 身份证反面
*/
private String cardFmPath;
/**
* 营业执照照片
*/
private String comBusinessLicense;
/**
* 企业名称
*/
private String comName;
/**
* 企业注册地址
*/
private String comRegisterAddress;
/**
* 企业信用代码
*/
private String comCreditCode;
/**
* 企业法人
*/
private String comLegalPerson;
/**
* 机构地址
*/
private String orgAddress;
/**
* 机构位置坐标经度
*/
private String orgCoordinateLo;
/**
* 机构位置坐标纬度
*/
private String orgCoordinateLa;
/**
* 机构负责人
*/
private String orgLeader;
/**
* 机构负责人电话
*/
private String orgLeaderPhone;
/**
* 机构楼宇牌号
*/
private String orgBuildingNumber;
/**
* 机构房屋性质
*/
private String orgPropertyType;
/**
* 机构建筑面积
*/
private Double orgBuildingArea;
/**
* 机构省份 sys_category.id
*/
private String orgProvince;
/**
* 机构城市 sys_category.id
*/
private String orgCity;
/**
* 机构区域 sys_category.id
*/
private String orgDistrict;
/**
* 合同附件
*/
private String contract;
/**
* 合同备注
*/
private String contractNote;
/**
* 提交时间
*/
private java.util.Date commitTime;
/**
* 审核时间
*/
private java.util.Date auditTime;
/**
* 加盟时间
*/
private java.util.Date franchiseTime;
//加盟上传合同操作人
private String operateBy;
//加盟上传合同操作人电话
private String operateTelephone;
//加盟上传合同操作人邮箱
private String operateEmail;
}

View File

@ -0,0 +1,54 @@
package com.nu.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Description: 工单表
* @Author: zmy
* @Date: 2025-07-09
* @Version: V1.0
*/
@Data
public class WorkOrderMQDto implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
private String id;
/**区分同一工单用nu_word_order.id*/
private String pkId;
/**机构ID*/
private String orgId;
/**机构编码(可能不存在)*/
private String orgCode;
/**机构名称*/
private String orgName;
/**平台类型pc wechat pad*/
private String platType;
/**标题*/
private String title;
/**描述*/
private String content;
/**附件*/
private String filePath;
/**状态 0待接收 1处理中 3已解决 4工单异常 5外部原因*/
private String status;
/**创建人*/
private String createBy;
/**创建时间*/
private Date createTime;
/**回复内容*/
private String replyContent;
/**回复附件*/
private String replyFile;
/**回复时间*/
private Date replyTime;
/**处理人*/
private String handleBy;
/**工单提交人联系电话*/
private String tel;
/**工单提交人邮件地址*/
private String email;
}

View File

@ -6,6 +6,7 @@ import org.jeecg.common.api.dto.DataLogDTO;
import org.jeecg.common.api.dto.OnlineAuthDTO;
import org.jeecg.common.api.dto.message.*;
import org.jeecg.common.constant.enums.EmailTemplateEnum;
import org.jeecg.common.system.entity.SysDepartEntity;
import org.jeecg.common.system.vo.*;
import java.util.List;
@ -625,4 +626,6 @@ public interface ISysBaseAPI extends CommonAPI {
JSONObject getOrgInfoByNuId(String nuId);
JSONObject getOrgInfo(String orgCode);
String addOrg(SysDepartEntity sysDepart);
}

View File

@ -0,0 +1,177 @@
package org.jeecg.common.system.entity;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* <p>
* 部门表
* <p>
*
*/
@Data
public class SysDepartEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID
*/
private String id;
/**
* 父机构ID
*/
private String parentId;
/**
* 机构/部门名称
*/
private String departName;
/**
* 英文名
*/
private String departNameEn;
/**
* 缩写
*/
private String departNameAbbr;
/**
* 排序
*/
private Integer departOrder;
/**
* 描述
*/
private String description;
/**
* 机构类别 1=公司2=组织机构3=岗位
*/
private String orgCategory;
/**
* 机构类型
*/
private String orgType;
/**
* 机构编码
*/
private String orgCode;
/**
* 协议+域名
*/
private String url;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 区县
*/
private String district;
/**
* 业务平台类型
*/
private String platType;
/**
* 运营开始时间
*/
private Date operationStartTime;
/**
* 运营到期时间
*/
private Date operationEndTime;
/**
* 合同开始时间
*/
private Date contractStartTime;
/**
* 合同到期时间
*/
private Date contractEndTime;
/**
* 手机号
*/
private String mobile;
/**
* 传真
*/
private String fax;
/**
* 地址
*/
private String address;
/**
* 备注
*/
private String memo;
/**
* 应缴金额
*/
private BigDecimal payableAmount;
/**
* 状态1启用0不启用
*/
private String status;
/**
* 删除状态0正常1已删除
*/
private String delFlag;
/**
* 对接企业微信的ID
*/
private String qywxIdentifier;
/**
* 对接钉钉的部门ID
*/
private String dingIdentifier;
/**
* 创建人
*/
private String createBy;
/**
* 创建日期
*/
private Date createTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新日期
*/
private Date updateTime;
/**
* 租户ID
*/
private Integer tenantId;
/**
* 是否有叶子节点: 1是0否
*/
private Integer izLeaf;
/**
* 各机构服务器后台接口地址
*/
private String serverUrl;
/**
* 各机构服务器后台接口地址
*/
private String picUrl;
//update-begin---author:wangshuai ---date:20200308 for[JTC-119]在部门管理菜单下设置部门负责人新增字段负责人ids和旧的负责人ids
/**
* 部门负责人的ids
*/
private String directorUserIds;
/**
* 旧的部门负责人的ids(用于比较删除和新增)
*/
private String oldDirectorUserIds;
//update-end---author:wangshuai ---date:20200308 for[JTC-119]新增字段负责人ids和旧的负责人ids
}

View File

@ -203,7 +203,7 @@ public class SysDepart implements Serializable {
*/
private String serverUrl;
/**
* 各机构服务器后台接口地址
* 机构图片
*/
private String picUrl;

View File

@ -16,6 +16,7 @@ import com.google.common.collect.Maps;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.lang3.ArrayUtils;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.entity.SysDepartEntity;
import org.jeecg.modules.message.entity.SysMessageTemplate;
import org.jeecg.modules.message.handle.impl.DdSendMsgHandle;
import org.jeecg.modules.message.handle.impl.EmailSendMsgHandle;
@ -717,13 +718,14 @@ public class SysBaseApiImpl implements ISysBaseAPI {
/**
* 不要改排序 排序固定用first_letter asc
*
* @param pid
* @return
*/
@Override
public List<SysCategoryModel> queryCategoryByPid(String pid) {
QueryWrapper<SysCategory> qw = new QueryWrapper<>();
qw.eq("pid",pid);
qw.eq("pid", pid);
//专门解决获取行政区排序问题的
qw.orderByAsc("first_letter");
List<SysCategory> list = categoryMapper.selectList(qw);
@ -1891,10 +1893,10 @@ public class SysBaseApiImpl implements ISysBaseAPI {
@Override
public JSONObject getOrgInfoByNuId(String nuId) {
if(StringUtils.isBlank(nuId)){
if (StringUtils.isBlank(nuId)) {
return null;
}
String orgCode = nuId.substring(4, nuId.length()-3);
String orgCode = nuId.substring(4, nuId.length() - 3);
return queryOrgInfo(orgCode);
}
@ -1903,6 +1905,24 @@ public class SysBaseApiImpl implements ISysBaseAPI {
return queryOrgInfo(orgCode);
}
@Override
public String addOrg(SysDepartEntity sysDepart_) {
SysDepart sysDepart = new SysDepart();
BeanUtils.copyProperties(sysDepart_, sysDepart);
QueryWrapper<SysDepart> qw = new QueryWrapper<>();
qw.eq("org_category", "1")
.eq("org_type", "1")
.eq("del_flag", "0")
.orderByDesc("CAST(org_code AS SIGNED)")
.last("LIMIT 1");
SysDepart s_ = sysDepartService.getOne(qw);
int code = Integer.parseInt(s_.getOrgCode()) + 1;
sysDepart.setOrgCode(code+"");
sysDepart.setDepartOrder(code);
sysDepartService.save(sysDepart);
return code+"";
}
@Nullable
private JSONObject queryOrgInfo(String orgCode) {
QueryWrapper<SysDepart> qw = new QueryWrapper<>();
@ -1920,7 +1940,7 @@ public class SysBaseApiImpl implements ISysBaseAPI {
@Override
public Object queryAreaNameById(String id) {
QueryWrapper<SysCategory> qw = new QueryWrapper<>();
qw.eq("id",id);
qw.eq("id", id);
return categoryMapper.selectOne(qw);
}

12
pom.xml
View File

@ -450,7 +450,7 @@
<id>dev</id>
<activation>
<!--默认激活配置-->
<activeByDefault>false</activeByDefault>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!--当前环境-->
@ -462,20 +462,12 @@
<id>uat</id>
<activation>
<!--默认激活配置-->
<activeByDefault>true</activeByDefault>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<!--当前环境-->
<profile.name>uat</profile.name>
</properties>
</profile>
<!-- 生产 -->
<profile>
<id>prod</id>
<properties>
<!--当前环境-->
<profile.name>prod</profile.name>
</properties>
</profile>
</profiles>
</project>