提交 add4b7de authored 作者: wulf's avatar wulf

初始项目

上级
package com.isoft91.gonn.gps;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(basePackages = "com.isoft91.gonn.gps.**.mapper")
public class GonnPmsApplication {
public static void main(String[] args) {
SpringApplication.run(GonnPmsApplication.class, args);
}
}
package com.isoft91.gonn.gps.business.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.isoft91.gonn.gps.business.dto.BaseStationInfoDto;
import com.isoft91.gonn.gps.business.service.IBaseStationInfoService;
import com.isoft91.gonn.gps.business.service.IComputerRoomInfoService;
import com.isoft91.gonn.gps.utils.Result.Ret;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 前端控制器
* </p>
*
* @author jiangpengpeng
* @since 2021-04-02
*/
@RestController
@RequestMapping("/base-station-info")
public class BaseStationInfoController {
@Autowired
private IBaseStationInfoService iBaseStationInfoService;
/**
* 新分页查询2.0
*/
@Transactional(propagation = Propagation.NOT_SUPPORTED)
@PostMapping("/pages")
@ApiOperation(value = "分页查询项目", notes = "")
@ApiImplicitParams({
@ApiImplicitParam(name = "page", value = "当前页", required = true),
@ApiImplicitParam(name = "size", value = "页大小", required = true)})
public Ret selectPages(BaseStationInfoDto searchDto, Integer page, Integer size) {
if (page == null && size == null) {
return Ret.error().setMsg("当前页和页大小不能为空");
}
IPage iPage = iBaseStationInfoService.selectPages(searchDto, new Page(page, size));
return Ret.ok().setData(iPage);
}
}
package com.isoft91.gonn.gps.business.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.isoft91.gonn.gps.business.dto.BaseStationInfoDto;
import com.isoft91.gonn.gps.utils.Result.Ret;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 前端控制器
* </p>
*
* @author jiangpengpeng
* @since 2021-04-02
*/
@RestController
@RequestMapping("/computer-room-info")
public class ComputerRoomInfoController {
}
package com.isoft91.gonn.gps.business.controller;
import com.isoft91.gonn.gps.business.service.IOaCBusiConfService;
import com.isoft91.gonn.gps.business.vo.OaCBusiConfVo;
import com.isoft91.gonn.gps.utils.Result.Ret;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 前端控制器
* </p>
*
* @author wulingfang
* @since 2021-06-28
*/
@RestController
@RequestMapping("/conf/oa-cbusi-conf")
public class OaCBusiConfController {
@Autowired
IOaCBusiConfService oaCBusiConfService;
@Transactional(propagation = Propagation.NOT_SUPPORTED)
@PostMapping("/list")
@ApiOperation(value = "不分页查询模型", notes = "")
public Ret selectList( @RequestBody OaCBusiConfVo vo) {
return Ret.ok().setData(oaCBusiConfService.selectList(vo));
}
}
package com.isoft91.gonn.gps.business.controller;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.isoft91.gonn.gps.business.dto.QuerySDeptDTO;
import com.isoft91.gonn.gps.business.dto.ResultSDeptDTO;
import com.isoft91.gonn.gps.business.entity.SDept;
import com.isoft91.gonn.gps.business.service.ISDeptService;
import com.isoft91.gonn.gps.utils.DozerUtils;
import com.isoft91.gonn.gps.utils.Result.Ret;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 部门表 前端控制器
* </p>
*
* @author 91isoft
* @since 2019-12-30
*/
@RestController
@RequestMapping("/sdept")
public class SDeptController {
@Autowired
ISDeptService isDeptServiceImpl;
@Transactional(rollbackFor = Exception.class)
@PutMapping("/{businessId:\\w+}")
@ApiOperation(value = "修改部门信息", notes = "")
public Ret updateDeptById(@PathVariable(value = "businessId") String businessId, QuerySDeptDTO sDeptDTO) {
SDept sDept = DozerUtils.map(sDeptDTO, SDept.class);
//判断id 是否为空
if (StrUtil.isNotEmpty(businessId)) {
sDept.setBusinessId(businessId);
if (isDeptServiceImpl.updateById(sDept)) {
return Ret.ok().setMsg("修改成功").setData(sDept);
} else {
return Ret.error().setMsg("修改失败");
}
} else {
return Ret.error().setMsg("deptId不能为空");
}
}
@Transactional(rollbackFor = Exception.class)
@DeleteMapping("/{businessId:\\w+}")
@ApiOperation(value = "物理删除部门信息", notes = "")
public Ret removeDeptById(@PathVariable(value = "businessId") String businessId) {
if (StrUtil.isNotBlank(businessId)) {
return Ret.ok().setData(isDeptServiceImpl.delete(businessId));
} else {
return Ret.error().setMsg("deptId不能为空");
}
}
@Transactional(rollbackFor = Exception.class)
@PutMapping("/logDel/{businessId:\\w+}")
@ApiOperation(value = "逻辑删除部门", notes = "")
public Ret logicalDeleteDeptById(@PathVariable(value = "businessId") String businessId) {
if (StrUtil.isNotBlank(businessId) && isDeptServiceImpl.logicalDelete(businessId) > 0) {
return Ret.ok().setMsg("操作成功");
} else {
return Ret.error().setMsg("deptId不能为空");
}
}
@Transactional(propagation = Propagation.NOT_SUPPORTED)
@GetMapping
@ApiOperation(value = "查询所有部门信息(不带分页)", notes = "查询所有部门信息列表(传id即查询编辑页信息)")
public Ret<List<ResultSDeptDTO>> selectDeptList(QuerySDeptDTO querySDeptDTO) {
return Ret.ok().setData(isDeptServiceImpl.getDeptList(querySDeptDTO));
}
@Transactional(propagation = Propagation.NOT_SUPPORTED)
@GetMapping("/page")
@ApiOperation(value = "分页部门信息", notes = "")
@ApiImplicitParams({
@ApiImplicitParam(name = "page", value = "当前页", required = true),
@ApiImplicitParam(name = "size", value = "页大小", required = true)})
public Ret<IPage<ResultSDeptDTO>> selectDeptListPage(QuerySDeptDTO querySDeptDTO, Integer page, Integer size) {
if (page == null && size == null) {
return Ret.error().setMsg("当前页和页大小不能为空");
}
return Ret.ok().setData(isDeptServiceImpl.getDeptListPage(new Page<>(page, size), querySDeptDTO));
}
}
package com.isoft91.gonn.gps.business.controller;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.isoft91.gonn.gps.business.dto.*;
import com.isoft91.gonn.gps.business.entity.SDictionary;
import com.isoft91.gonn.gps.business.service.ISDictionaryService;
import com.isoft91.gonn.gps.utils.DozerUtils;
import com.isoft91.gonn.gps.utils.Result.Ret;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* <p>
* 数据字典 前端控制器
* </p>
*
* @author 91isoft
* @since 2019-12-25
*/
@RestController
@RequestMapping("/sdictionary")
public class SDictionaryController {
@Autowired
ISDictionaryService dictionaryServiceImpl;
@Transactional(rollbackFor=Exception.class)
@PostMapping
@ApiOperation(value = "添加数据字典", notes = "添加数据字典")
@ApiImplicitParams({
@ApiImplicitParam(name = "type" ,value ="数据字典type",required = false),
@ApiImplicitParam(name = "name",value ="数据字典名称"),
@ApiImplicitParam(name = "value",value ="数据字典value")
})
public Ret insert(QuerySDictionaryDTO dictionaryDto) {
SDictionary dictionary = DozerUtils.map(dictionaryDto, SDictionary.class);
if (dictionaryServiceImpl.save(dictionary) ) {
return Ret.ok().setMsg("添加成功").setData(dictionaryDto);
} else {
return Ret.error().setMsg("添加失败");
}
}
@Transactional(rollbackFor=Exception.class)
@PutMapping("/{businessId:\\w+}")
@ApiOperation(value = "修改数据字典", notes = "")
public Ret updateById(@PathVariable(value = "businessId") String businessId, QuerySDictionaryDTO dictionaryDto) {
SDictionary dictionary = DozerUtils.map(dictionaryDto, SDictionary.class);
//判断id 是否为空
if (StrUtil.isNotEmpty(businessId)) {
dictionary.setBusinessId(businessId);
if (dictionaryServiceImpl.updateById(dictionary)) {
return Ret.ok().setMsg("修改成功").setData(dictionary);
} else {
return Ret.error().setMsg("修改失败");
}
} else {
return Ret.error().setMsg("businessId不能为空");
}
}
@Transactional(rollbackFor=Exception.class)
@DeleteMapping("/{businessId:\\w+}")
@ApiOperation(value = "物理删除数据字典", notes = "")
public Ret removeById(@PathVariable(value="businessId") String businessId) {
if (StrUtil.isNotBlank(businessId)) {
return Ret.ok().setData(dictionaryServiceImpl.delete(businessId));
}else {
return Ret.error().setMsg("businessId不能为空");
}
}
@Transactional(rollbackFor=Exception.class)
@PutMapping("/logDel/{businessId:\\w+}")
@ApiOperation(value = "逻辑删除数据字典", notes = "")
public Ret logicalDeleteById(@PathVariable(value="businessId") String businessId) {
if (StrUtil.isNotBlank(businessId) && dictionaryServiceImpl.logicalDelete(businessId) > 0) {
return Ret.ok().setMsg("操作成功");
}else {
return Ret.error().setMsg("businessId不能为空");
}
}
@Transactional(propagation=Propagation.NOT_SUPPORTED )
@GetMapping("byId")
@ApiOperation(value = "根据id查询数据字典列表")
public Ret<ResultSDictionaryDTO> selectDicById(String businessId) {
return Ret.ok().setData(dictionaryServiceImpl.getDictionaryByID(businessId));
}
@Transactional(propagation=Propagation.NOT_SUPPORTED )
@GetMapping
@ApiOperation(value = "查询所有数据字典列表(不带分页)", notes = "查询数据字典列表(传id即查询编辑页信息)")
public Ret<List<ResultSDictionaryDTO>> selectList(QuerySDictionaryDTO dictionary) {
return Ret.ok().setData(dictionaryServiceImpl.getDictionaryList(dictionary));
}
@Transactional(propagation=Propagation.NOT_SUPPORTED )
@GetMapping("/page")
@ApiOperation(value = "分页查询数据字典", notes = "")
@ApiImplicitParams({
@ApiImplicitParam(name = "page", value = "当前页", required = true),
@ApiImplicitParam(name = "size", value = "页大小", required = true)})
public Ret<IPage<ResultSDictionaryDTO>> selectListPage(QuerySDictionaryDTO sDictionary, Integer page, Integer size) {
if (page == null && size == null) {
return Ret.error().setMsg("当前页和页大小不能为空");
}
return Ret.ok().setData(dictionaryServiceImpl.getDictionaryListPage(new Page<>(page,size),sDictionary));
}
@Transactional(propagation=Propagation.NOT_SUPPORTED )
@GetMapping("/pageBy")
@ApiOperation(value = "条件分页查询数据字典")
@ApiImplicitParams({
@ApiImplicitParam(name = "page", value = "当前页", required = true),
@ApiImplicitParam(name = "size", value = "页大小", required = true)})
public Ret<IPage> selectListPageBy(QuerySDictionaryDTO querySDictionaryDTO, Integer page, Integer size) {
if (page == null && size == null) {
return Ret.error().setMsg("当前页和页大小不能为空");
}
IPage iPage = dictionaryServiceImpl.getDictionaryListPageBy(new Page<>(page, size),querySDictionaryDTO);
return Ret.ok().setData(iPage);
}
@Transactional(propagation=Propagation.NOT_SUPPORTED)
@GetMapping("/getDictionaryListByType")
@ApiOperation(value = "根据类型查询数据字典")
@ApiImplicitParams({
@ApiImplicitParam(name = "type", value = "数据字典类型", required = true)})
public Ret<IPage<ResultSDictionaryDTO>> getDictionaryListByType(String type) {
if (type == null || type == ""){
return Ret.error().setMsg("数据的字典类型不能为空");
}
List dictionaryListByType = dictionaryServiceImpl.getDictionaryListByType(type);
return Ret.ok().setData(dictionaryListByType);
}
@Transactional(propagation=Propagation.NOT_SUPPORTED )
@GetMapping("/getGradeDic")
@ApiOperation(value = "获取业务级联数据(0310)")
@ApiImplicitParams({
// @ApiImplicitParam(name = "type", value = "数据字典类型", required = false)
})
public Ret<IPage<ResultSDictionaryDTO>> getGradeDic() {
Map dictionaryListByType = dictionaryServiceImpl.getGradeDic();
return Ret.ok().setData(dictionaryListByType);
}
@Transactional(propagation=Propagation.NOT_SUPPORTED )
@GetMapping("/getTemplateType")
@ApiOperation(value = "查询所有模板类型")
public Ret<List<ResultSearchDTO>> selectTemplateTypeList() {
return Ret.ok().setData(dictionaryServiceImpl.getTemplateTypeList());
}
@Transactional(propagation=Propagation.NOT_SUPPORTED )
@GetMapping("/getTemplateGrade")
@ApiOperation(value = "查询所有模板级别")
public Ret<List<ResultSearchDTO>> selectTemplateGradeList() {
return Ret.ok().setData(dictionaryServiceImpl.getTemplateGradeList());
}
@Transactional(propagation=Propagation.NOT_SUPPORTED )
@GetMapping("/getProjecetStage")
@ApiOperation(value = "查询项目阶段")
public Ret<List<SdProjectStageDTO>> getProjecetStage(){
return dictionaryServiceImpl.getProjecetStage();
}
@Transactional(propagation=Propagation.NOT_SUPPORTED )
@GetMapping("/getServiceStage")
@ApiOperation(value = "查询业务阶段")
public Ret<List<SdServiceStageDTO>> getServiceStage(){
return dictionaryServiceImpl.getServiceStage();
}
}
package com.isoft91.gonn.gps.business.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.isoft91.gonn.gps.business.dto.BaseStationInfoDto;
import com.isoft91.gonn.gps.business.dto.ProvinceDto;
import com.isoft91.gonn.gps.business.service.ISProvinceService;
import com.isoft91.gonn.gps.business.vo.ProvinceVo;
import com.isoft91.gonn.gps.utils.Result.Ret;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
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 java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author wulingfang
* @since 2021-04-15
*/
@RestController
@RequestMapping("/info/s-province")
public class SProvinceController {
@Autowired
ISProvinceService provinceService;
@Transactional(propagation = Propagation.NOT_SUPPORTED)
@PostMapping("/instProvince")
@ApiOperation(value = "分页查询项目", notes = "")
public Ret instProvince(@RequestBody ProvinceVo provinceDto) {
return Ret.ok().setData( provinceService.instProvince(provinceDto));
}
}
package com.isoft91.gonn.gps.business.controller;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.isoft91.gonn.gps.business.dto.QuerySRoleDTO;
import com.isoft91.gonn.gps.business.dto.ResultSDictionaryDTO;
import com.isoft91.gonn.gps.business.dto.ResultSRoleDTO;
import com.isoft91.gonn.gps.business.entity.SRole;
import com.isoft91.gonn.gps.business.service.ISRoleService;
import com.isoft91.gonn.gps.utils.DozerUtils;
import com.isoft91.gonn.gps.utils.Result.Ret;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 角色表 前端控制器
* </p>
*
* @author 91isoft
* @since 2019-12-30
*/
@RestController
@RequestMapping("/srole")
public class SRoleController {
@Autowired
ISRoleService isRoleServiceImpl;
@Transactional(rollbackFor=Exception.class)
@PutMapping("/{businessId:\\w+}")
@ApiOperation(value = "修改角色信息", notes = "")
public Ret updateRoleById(@PathVariable(value="businessId") String businessId, QuerySRoleDTO sRoleDTO) {
SRole sRole = DozerUtils.map(sRoleDTO, SRole.class);
//判断id 是否为空
if (StrUtil.isNotEmpty(businessId)) {
sRole.setBusinessId(businessId);
if (isRoleServiceImpl.updateById(sRole)) {
return Ret.ok().setMsg("修改成功").setData(sRole);
} else {
return Ret.error().setMsg("修改失败");
}
} else {
return Ret.error().setMsg("businessId不能为空");
}
}
@Transactional(rollbackFor=Exception.class)
@DeleteMapping("/{businessId:\\w+}")
@ApiOperation(value = "物理删除角色信息", notes = "")
public Ret removeRoleById(@PathVariable(value="businessId") String businessId) {
if (StrUtil.isNotBlank(businessId)) {
return Ret.ok().setData(isRoleServiceImpl.delete(businessId));
}else {
return Ret.error().setMsg("businessId不能为空");
}
}
@Transactional(rollbackFor=Exception.class)
@PutMapping("/logDel/{businessId:\\w+}")
@ApiOperation(value = "逻辑删除角色信息", notes = "")
public Ret logicalDeleteRoleById(@PathVariable(value="businessId") String businessId) {
if (StrUtil.isNotBlank(businessId) && isRoleServiceImpl.logicalDelete(businessId) > 0) {
return Ret.ok().setMsg("操作成功");
}else {
return Ret.error().setMsg("businessId不能为空");
}
}
@Transactional(propagation= Propagation.NOT_SUPPORTED )
@GetMapping
@ApiOperation(value = "查询所有角色信息列表(不带分页)", notes = "查询所有角色信息列表(传id即查询编辑页信息)")
public Ret<List<ResultSRoleDTO>> selectRoleList(QuerySRoleDTO querySRoleDTO) {
return Ret.ok().setData(isRoleServiceImpl.getRoleList(querySRoleDTO));
}
@Transactional(propagation=Propagation.NOT_SUPPORTED )
@GetMapping("/page")
@ApiOperation(value = "分页查询角色信息", notes = "")
@ApiImplicitParams({
@ApiImplicitParam(name = "page", value = "当前页", required = true),
@ApiImplicitParam(name = "size", value = "页大小", required = true)})
public Ret<IPage<ResultSDictionaryDTO>> selectListPage(QuerySRoleDTO querySRoleDTO, Integer page, Integer size) {
if (page == null && size == null) {
return Ret.error().setMsg("当前页和页大小不能为空");
}
return Ret.ok().setData(isRoleServiceImpl.getRoleListPage(new Page<>(page,size),querySRoleDTO));
}
}
package com.isoft91.gonn.gps.business.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 用户表 前端控制器
* </p>
*
* @author jiangpengpeng
* @since 2020-01-09
*/
@RestController
@RequestMapping("/suser/s-user")
public class SUserController {
}
package com.isoft91.gonn.gps.business.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 用户角色表 前端控制器
* </p>
*
* @author jiangpengpeng
* @since 2020-02-20
*/
@RestController
@RequestMapping("/suserrole/s-user-role")
public class SUserRoleController {
}
package com.isoft91.gonn.gps.business.controller;
import com.isoft91.gonn.gps.business.service.impl.SUserSYNServiceImpl;
import com.isoft91.gonn.gps.sys.service.CommonMesServiceImpl;
import com.isoft91.gonn.gps.utils.Result.Ret;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.DigestUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
@RestController
@RequestMapping("/userSYN")
public class SUserSYNController {
@Autowired
private SUserSYNServiceImpl sUserSYNService;
@Value("${global.path.serverAuthenticateStaticKey}")
private String key;
@Value("${global.path.app_secret}")
private String secret;
@ApiOperation(value = "同步用户", notes = "同步用户")
//@ApiImplicitParams({@ApiImplicitParam(name = "businessId", value = "businessId", required = false, dataType = "varchar")})
@GetMapping(value = "/synUser")
public Ret addUser(String timestamp, String sign) {
return sUserSYNService.synUser(timestamp, sign);
}
//后台同步数据
@GetMapping(value = "/synInfo")
public Ret synInfo() {
String round =Long.toString(System.currentTimeMillis() / 1000L);
String sign=secret+round+key;
sign= CommonMesServiceImpl.sha1(sign);
sign = DigestUtils.md5DigestAsHex(sign.getBytes());
return sUserSYNService.synUser(round, sign);
}
}
package com.isoft91.gonn.gps.business.dto;
import lombok.Data;
import java.util.List;
@Data
public class BaseStationInfoDto {
/**
* 网络类型
*/
private String networkType;
/**
* 运营商
*/
private String operator;
/**
* 站名
*/
private String jzName;
/**
* 站号
*/
private String jzNumber;
}
package com.isoft91.gonn.gps.business.dto;
import lombok.Data;
import java.util.List;
@Data
public class ProvinceDto {
private String name;
private String level;
private List<String> center;
private String district;
private String objectId;
}
package com.isoft91.gonn.gps.business.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author 武斌
* @date 2019/12/31 - 13:55
*/
@Data
public class QuerySDeptDTO {
private String code;
private String businessId;
private String parentId;
private String name;
private Integer caseCount;
private Integer sort;
}
package com.isoft91.gonn.gps.business.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
@Data
public class QuerySDictionaryDTO {
private String businessId;
private String pid;
private String type;
private String name;
private String value;
private String remarks;
private String flag;
private String delFlag;
}
package com.isoft91.gonn.gps.business.dto;
import lombok.Data;
@Data
public class QuerySRoleDTO {
private String businessId;
private String roleName;
private String code;
}
package com.isoft91.gonn.gps.business.dto;
import lombok.Data;
/**
* @author 武斌
* @date 2019/12/31 - 13:55
*/
@Data
public class ResultSDeptDTO {
private String code;
private String businessId;
private String parentId;
private String name;
private Integer caseCount;
private Integer sort;
}
package com.isoft91.gonn.gps.business.dto;
import lombok.Data;
@Data
public class ResultSDictionaryDTO {
private String businessId;
private String pid;
private String type;
private String name;
private String serviceName;
private String value;
private String child;
}
package com.isoft91.gonn.gps.business.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @Author: 武斌
* @Description:
* @Date: 2020/3/25 14:06
*/
@Data
public class ResultSDictionaryPageDTO {
private String businessId;
private String pid;
private String type;
private String name;
private String serviceName;
private String remarks;
private String value;
private String child;
private String createName;
private String updateName;
@JsonFormat(timezone = "GMT+8",pattern = "yyyy/MM/dd HH:mm:ss")
private LocalDateTime createDate;
@JsonFormat(timezone = "GMT+8",pattern = "yyyy/MM/dd HH:mm:ss")
private LocalDateTime updateDate;
}
package com.isoft91.gonn.gps.business.dto;
import lombok.Data;
@Data
public class ResultSRoleDTO {
private String businessId;
private String roleName;
private String code;
}
package com.isoft91.gonn.gps.business.dto;
import lombok.Data;
import java.util.List;
/*
* @author 武斌
* @date
*/
@Data
public class ResultSearchDTO {
private String name;
private String value;
private List<ResultSDictionaryDTO> child;
}
package com.isoft91.gonn.gps.business.dto;
import lombok.Data;
/**
* TODO
*
* @author :jiangpengpeng
* @date:2020/2/19 14:00
*/
@Data
public class SdProjectStageDTO {
private String name;
private String value;
}
package com.isoft91.gonn.gps.business.dto;
import lombok.Data;
/**
* TODO
*
* @author :jiangpengpeng
* @date:2020/2/19 14:00
*/
@Data
public class SdServiceStageDTO {
private String name;
private String value;
}
package com.isoft91.gonn.gps.business.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.isoft91.gonn.gps.common.entity.IdEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/**
* <p>
*
* </p>
*
* @author jiangpengpeng
* @since 2021-04-02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("base_station_info")
public class BaseStationInfo extends IdEntity {
private static final long serialVersionUID = 1L;
/**
* id号
*/
@TableField("number")
private String number;
/**
* 网络类型
*/
@TableField("network_type")
private String networkType;
/**
* 运营商
*/
@TableField("operator")
private String operator;
/**
* 入网时间
*/
@TableField("start_time")
private String startTime;
/**
* 需求号
*/
@TableField("demand_number")
private String demandNumber;
/**
* 站名
*/
@TableField("jz_name")
private String jzName;
/**
* 站号
*/
@TableField("jz_number")
private Integer jzNumber;
/**
* 基站地址
*/
@TableField("jz_address")
private String jzAddress;
/**
* 经度
*/
@TableField("longitude")
private String longitude;
/**
* 维度
*/
@TableField("dimension")
private String dimension;
/**
* 设备型号
*/
@TableField("unit_type")
private String unitType;
/**
* 数量
*/
@TableField("jz_num")
private String jzNum;
/**
* 海拔
*/
@TableField("height")
private String height;
/**
* 设备建设方式
*/
@TableField("building_modes")
private String buildingModes;
/**
* 维护联系人
*/
@TableField("whb_user")
private String whbUser;
/**
* 维护联系电话
*/
@TableField("whb_phone")
private String whbPhone;
/**
* 区域
*/
@TableField("region_id")
private String regionId;
/**
* 部门
*/
@TableField("dept_id")
private String deptId;
/**
* 物理区域
*/
@TableField("region")
private String region;
/**
* 上联机房
*/
@TableField("computer_room")
private String computerRoom;
/**
* 上联机房id
*/
@TableField("computer_room_id")
private String computerRoomId;
/**
* 传输方式
*/
@TableField("transmission_mode")
private String transmissionMode;
/**
* 网元信息
*/
@TableField("network_element_information")
private String networkElementInformation;
}
package com.isoft91.gonn.gps.business.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.isoft91.gonn.gps.common.entity.IdEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/**
* <p>
*
* </p>
*
* @author jiangpengpeng
* @since 2021-04-02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("computer_room_info")
public class ComputerRoomInfo extends IdEntity {
private static final long serialVersionUID = 1L;
/**
* id号
*/
@TableField("number")
private String number;
/**
* 产权单位
*/
@TableField("owner_unit")
private String ownerUnit;
/**
* 机房名称
*/
@TableField("computer_room_name")
private String computerRoomName;
/**
* 机房地址
*/
@TableField("computer_room_address")
private String computerRoomAddress;
/**
* 机房机柜
*/
@TableField("cabinet")
private String cabinet;
/**
* 机房机架
*/
@TableField("frame")
private String frame;
/**
* 经度
*/
@TableField("longitude")
private String longitude;
/**
* 维度
*/
@TableField("dimension")
private String dimension;
/**
* 供电电压
*/
@TableField("voltage")
private String voltage;
/**
* 功率
*/
@TableField("power")
private String power;
/**
* 备用电池组
*/
@TableField("spare_batteries")
private String spareBatteries;
/**
* 电器防雷系统
*/
@TableField("lightning_protection_system")
private String lightningProtectionSystem;
/**
* 空调排风系统
*/
@TableField("conditioning_exhaust_system")
private String conditioningExhaustSystem;
/**
* 消防系统
*/
@TableField("fire_fighting_system")
private String fireFightingSystem;
/**
* 门禁
*/
@TableField("access_control")
private String accessControl;
/**
* 是否远程监控
*/
@TableField("is_long_range_monitor")
private String isLongRangeMonitor;
/**
* 上联机房
*/
@TableField("computer_room")
private String computerRoom;
/**
* 上联机房id
*/
@TableField("computer_room_id")
private String computerRoomId;
/**
* 维护联系人
*/
@TableField("whb_user")
private String whbUser;
/**
* 维护联系电话
*/
@TableField("whb_phone")
private String whbPhone;
/**
* 区域
*/
@TableField("region_id")
private String regionId;
/**
* 部门
*/
@TableField("dept_id")
private String deptId;
/**
* 物理区域
*/
@TableField("region")
private String region;
}
package com.isoft91.gonn.gps.business.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.isoft91.gonn.gps.common.entity.DelStatus;
import com.isoft91.gonn.gps.common.entity.FlagStatus;
import com.isoft91.gonn.gps.common.entity.IdEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
*
* </p>
*
* @author wulingfang
* @since 2021-06-28
*/
@Data
@Accessors(chain = true)
@TableName("oa_c_busi_conf")
public class OaCBusiConf implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("id")
@TableField(fill = FieldFill.INSERT)
private String id;
@TableField("type")
private String type;
@TableField("name")
private String name;
@TableField("key")
private String key;
@TableField("value")
private String value;
@TableField("pid")
private Integer pid;
@TableField("create_by")
private String createBy;
@TableField("create_date")
private LocalDateTime createDate;
@TableField("update_by")
private String updateBy;
@TableField("update_date")
private LocalDateTime updateDate;
@TableField("flag")
private String flag;
@TableField("remarks")
private String remarks;
/**
* 对应单位id
*/
@TableField("comid")
private Integer comid;
/**
* 删除标记(0:正常;1:删除;2:审核)
*/
@TableField(value="DEL_FLAG", fill = FieldFill.INSERT)
protected String delFlag;
/**
* 设置删除
*/
public void setDeleted(){
this.setDelFlag(DelStatus.DELETED.getStatus());
}
/**
* 设置非删除
*/
public void setNotDeleted(){
this.setDelFlag(DelStatus.NORMAL.getStatus());
}
/**
* 设置启用
*/
public void setStart(){
this.setFlag(FlagStatus.NORMAL.getStatus());
}
/**
* 设置停用
*/
public void setStop(){
this.setFlag(FlagStatus.ABNORMAL.getStatus());
}
/**
* 设置非删除&启用
*/
public void setNormal(){
this.setFlag(FlagStatus.NORMAL.getStatus());
this.setDelFlag(DelStatus.NORMAL.getStatus());
}
/**
* 设置非删除&启用
*/
public void setPublish(){
this.setFlag(FlagStatus.NORMAL.getStatus());
this.setDelFlag(DelStatus.NORMAL.getStatus());
}
}
package com.isoft91.gonn.gps.business.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
//import com.sun.xml.internal.bind.v2.model.core.ID;
import com.isoft91.gonn.gps.common.entity.DataEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 部门表
* </p>
*
* @author 91isoft
* @since 2019-12-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("s_dept")
public class SDept extends DataEntity {
private static final long serialVersionUID = 1L;
/**
* 部门code
*/
@TableField("CODE")
private String code;
/**
* ID
*/
@TableId("BUSINESS_ID")
private String businessId;
/**
* 上级部门id
*/
@TableField("PARENT_ID")
private String parentId;
/**
* 部门名称
*/
@TableField("NAME")
private String name;
/**
* 层级
*/
@TableField("CASE_COUNT")
private Integer caseCount;
/**
* 排序
*/
@TableField("SORT")
private Integer sort;
/**
* 创建人
*/
/* @TableField("CREATE_BY")
private String createBy;
*//**
* 创建日期*//*
@TableField("CREATE_DATE")
private LocalDateTime createDate;
*//**
* 修改人*//*
@TableField("UPDATE_BY")
private String updateBy;
*//**
* 修改日期*//*
@TableField("UPDATE_DATE")
private LocalDateTime updateDate;
*//**
* 删除标识 1 删除 0 未删除 2 审核
*//*
@TableField("DEL_FLAG")
private String delFlag;
*//**
* 启用标记(0:停用;1:启用)
*//*
@TableField("FLAG")
private String flag;
*//**
* 备注
*//*
@TableField("REMARKS")
private String remarks;*/
}
package com.isoft91.gonn.gps.business.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import com.isoft91.gonn.gps.common.entity.IdEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 数据字典
* </p>
*
* @author 91isoft
* @since 2019-12-25
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("s_dictionary")
public class SDictionary extends IdEntity<SDictionary> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 父节点id
*/
@TableField("PID")
private String pid;
/**
* 类型
*/
@TableField("TYPE")
private String type;
/**
* 名字
*/
@TableField("NAME")
private String name;
/**
* 值
*/
@TableField("VALUE")
private String value;
/**
* 备注
*/
@TableField("REMARKS")
private String remarks;
}
package com.isoft91.gonn.gps.business.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.isoft91.gonn.gps.common.entity.IdEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
*
* </p>
*
* @author wulingfang
* @since 2021-04-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("s_province")
public class SProvince extends IdEntity<SProvince> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 父节点id
*/
@TableField("PID")
private String pid;
/**
* 名字
*/
@TableField("NAME")
private String name;
@TableField("OBJECTID")
private String objectid;
/**
* 类型
*/
@TableField("layer")
private String layer;
/**
* 备注
*/
@TableField("REMARKS")
private String remarks;
/**
* 经度
*/
@TableField("longitude")
private String longitude;
/**
* 维度
*/
@TableField("dimension")
private String dimension;
}
package com.isoft91.gonn.gps.business.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.isoft91.gonn.gps.common.entity.DataEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* 角色表
* </p>
*
* @author 91isoft
* @since 2019-12-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("s_role")
public class SRole extends DataEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 业务主键
*/
@TableId("BUSINESS_ID")
private String businessId;
/**
* 角色名称
*/
@TableField("ROLE_NAME")
private String roleName;
/**
* 创建人
*/
/* @TableField("CREATE_BY")
private String createBy;*/
/**
* 创建日期
*/
/*@TableField("CREATE_DATE")
private LocalDateTime createDate;*/
/**
* 修改人
*/
/*@TableField("UPDATE_BY")
private String updateBy;
*/
/**
* 修改日期
*/
/* @TableField("UPDATE_DATE")
private LocalDateTime updateDate;
*/
/**
* 删除标识 1 删除 0 未删除 2 审核
*/
/* @TableField("DEL_FLAG")
private String delFlag;
*//**
* 启用标记(0:停用;1:启用)
*//*
@TableField("FLAG")
private String flag;
*//**
* 备注
*//*
@TableField("REMARKS")
private String remarks;
*/
/**
* 编号
*/
@TableField("CODE")
private String code;
}
package com.isoft91.gonn.gps.business.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.isoft91.gonn.gps.common.entity.DataEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 用户表
* </p>
*
* @author jiangpengpeng
* @since 2020-01-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("s_user")
public class SUser extends DataEntity {
private static final long serialVersionUID = 1L;
/**
* 业务主键
*/
@TableId("BUSINESS_ID")
private String businessId;
/**
* 用户名
*/
@TableField("LOGIN_NAME")
private String loginName;
/**
* 密码
*/
@TableField("PASSWORD")
private String password;
/**
* 姓名
*/
@TableField("NAME")
private String name;
/**
* 性别(0:男,1:女)
*/
@TableField("SEX")
private String sex;
/**
* 手机号码
*/
@TableField("PHONE")
private String phone;
/**
* 部门表id
*/
@TableField("DEPT_ID")
private String deptId;
/**
* 邮箱
*/
@TableField("EMAIL")
private String email;
/* *//**
* 创建人
*//*
@TableField("CREATE_BY")
private String createBy;
*//**
* 创建日期
*//*
@TableField("CREATE_DATE")
private LocalDateTime createDate;
*//**
* 修改人
*//*
@TableField("UPDATE_BY")
private String updateBy;
*//**
* 修改日期
*//*
@TableField("UPDATE_DATE")
private LocalDateTime updateDate;
*//**
* 删除标识 1 删除 0 未删除 2 审核
*//*
@TableField("DEL_FLAG")
private String delFlag;
*//**
* 启用标记(0:停用;1:启用)
*//*
@TableField("FLAG")
private String flag;
*/
/**
* 备注
*/
@TableField("REMARKS")
private String remarks;
}
package com.isoft91.gonn.gps.business.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* <p>
* 用户角色表
* </p>
*
* @author jiangpengpeng
* @since 2020-02-20
*/
@Data
@Accessors(chain = true)
@TableName("s_user_role")
public class SUserRole {
private static final long serialVersionUID = 1L;
/**
* 用户id
*/
@TableId("BUSINESS_ID")
private String businessId;
/**
* 用户id
*/
@TableField("USER_ID")
private String userId;
/**
* 角色id
*/
@TableField("ROLE_ID")
private String roleId;
}
package com.isoft91.gonn.gps.business.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SUserSYN {
/**
* 用户id
*/
private String businessId;
/**
* 用户姓名
*/
private String name;
/**
* 部门id
*/
private String deptId;
/**
* 角色id
*/
private String roleId;
/**
* 角色名称
*/
private String roleName;
/**
* 电子邮件
*/
private String email;
}
package com.isoft91.gonn.gps.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.isoft91.gonn.gps.business.entity.BaseStationInfo;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jiangpengpeng
* @since 2021-04-02
*/
public interface BaseStationInfoMapper extends BaseMapper<BaseStationInfo> {
}
package com.isoft91.gonn.gps.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.isoft91.gonn.gps.business.entity.ComputerRoomInfo;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jiangpengpeng
* @since 2021-04-02
*/
public interface ComputerRoomInfoMapper extends BaseMapper<ComputerRoomInfo> {
}
package com.isoft91.gonn.gps.business.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.isoft91.gonn.gps.business.entity.OaCBusiConf;
import com.isoft91.gonn.gps.business.vo.OaCBusiConfVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* <p>
* Mapper 接口
* </p>
*
* @author wulingfang
* @since 2021-06-28
*/
public interface OaCBusiConfMapper extends BaseMapper<OaCBusiConf> {
List<OaCBusiConf> selectConfList(@Param("vo") OaCBusiConfVo vo);
}
package com.isoft91.gonn.gps.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.isoft91.gonn.gps.business.dto.QuerySDeptDTO;
import com.isoft91.gonn.gps.business.dto.ResultSDeptDTO;
import com.isoft91.gonn.gps.business.entity.SDept;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* <p>
* 部门表 Mapper 接口
* </p>
*
* @author 91isoft
* @since 2019-12-30
*/
public interface SDeptMapper extends BaseMapper<SDept> {
@Select("<script>" +
"SELECT * " +
"FROM s_dept where del_flag = '0' and flag = '1' order by sort asc</script> ")
List<ResultSDeptDTO> getDeptList(QuerySDeptDTO dictionary);
@Select("<script>SELECT * FROM s_dept WHERE 1=1 "
+ "<if test=\"delFlag !=null and delFlag != '' \"> and DEL_FLAG = #{delFlag} </if> "
+ "<if test=\"flag !=null and flag != '' \"> and FLAG = #{flag} </if>"
+ "<if test=\"name !=null and name != '' \"> and NAME like concat('%',#{name},'%') </if> "
+ " order by sort asc</script>")
List<SDept> findAll(SDept sysDept);
@Select("<script>" +
" select s.BUSINESS_ID FROM " +
" s_dept s " +
"where s.PARENT_ID=#{parentId} and s.`NAME` like concat('%',#{type},'%')" +
"</script>")
String selectByParentId (@Param("parentId") String parentId,@Param("type")String type);
}
package com.isoft91.gonn.gps.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.isoft91.gonn.gps.business.entity.SDept;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface SDeptSYNRepo extends BaseMapper<SDept> {
@Insert("<script>insert into s_dept(business_id," +
"parent_id," +
"name," +
"case_count," +
"sort," +
"code," +
"create_by," +
"create_date," +
"update_by," +
"update_date," +
"del_flag," +
"flag) value " +
"<foreach collection =\"sDepts\" item=\"item\" separator=\",\" > " +
"(" +
"#{item.businessId}, " +
"#{item.parentId}, " +
"#{item.name}, " +
"#{item.caseCount}, " +
"#{item.sort}," +
"#{item.code}," +
"#{item.createBy}," +
"#{item.createDate}," +
"#{item.updateBy}," +
"#{item.updateDate}," +
"#{item.delFlag}," +
"#{item.flag}" +
")" +
"</foreach></script>")
int saveDeptSYN(@Param("sDepts") List<SDept> sDepts);
@Update("delete from s_dept where 1=1")
void removeAll();
}
package com.isoft91.gonn.gps.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.isoft91.gonn.gps.business.dto.*;
import com.isoft91.gonn.gps.business.entity.SDictionary;
import org.apache.ibatis.annotations.*;
import java.util.List;
/**
* <p>
* 数据字典 Mapper 接口
* </p>
*
* @author 91isoft
* @since 2019-12-25
*/
@Mapper
public interface SDictionaryMapper extends BaseMapper<SDictionary> {
@Select("<script>" +
"SELECT * " +
"FROM s_dictionary where del_flag = '0' and flag = '1' </script> ")
List<ResultSDictionaryDTO> getDictionaryList(QuerySDictionaryDTO dictionary);
@Select("<script>" +
" SELECT value,#{mapper} as name FROM `s_dictionary` where type = #{serviceType} " +
" </script> ")
@Results({
@Result(property = "child", javaType = List.class, column = "{value=value,name=name}",
many = @Many(select = "com.isoft91.gonn.pms.business.sdictionary.mapper.SDictionaryMapper.selectChild"))
})
List<ResultSearchDTO> selectGradeList(String serviceType, String mapper);
@Select("<script>" +
" select s1.business_id,s1.type,s1.name,s1.value, s2.name as serviceName from s_dictionary s1 " +
"left join s_dictionary s2 on s1.value = s2.value " +
"where s1.value LIKE concat('%',#{value},'%') and s1.Type = #{name} and s2.type = #{value} " +
" </script> ")
List<ResultSDictionaryDTO> selectChild(String value, String name);
@Select("<script>SELECT " +
"sd.`NAME` AS NAME, " +
"sd.`VALUE` AS " +
"VALUE " +
" " +
"FROM " +
"s_dictionary sd " +
"WHERE " +
"sd.FLAG = #{flag} " +
"AND sd.DEL_FLAG = #{delFlag} " +
"AND sd.TYPE = #{type}</script>")
List<SdProjectStageDTO> getProjecetStage(SDictionary sDictionary);
@Select("<script>SELECT " +
"sd.`NAME` AS NAME, " +
"sd.`VALUE` AS " +
"VALUE " +
" " +
"FROM " +
"s_dictionary sd " +
"WHERE " +
"sd.FLAG = #{flag} " +
"AND sd.DEL_FLAG = #{delFlag} " +
"AND sd.TYPE = #{type}</script>")
List<SdServiceStageDTO> getServiceStage(SDictionary sDictionary);
@Select("<script>" +
"SELECT " +
"sd.`NAME` " +
"FROM " +
"s_dictionary sd " +
"WHERE " +
"sd.`VALUE` = #{value} " +
"AND sd.TYPE = #{type} " +
"and sd.FLAG='1' " +
" and sd.DEL_FLAG='0' " +
"</script>")
List<String> NameByTypeValue(@Param("type") String type, @Param("value") String value);
@Select("<script>" +
"SELECT " +
"sd.`VALUE` " +
"FROM " +
"s_dictionary sd " +
"WHERE " +
"sd.`NAME` = #{name} " +
"AND sd.TYPE = #{type} " +
"and sd.FLAG='1' " +
" and sd.DEL_FLAG='0' " +
"</script>")
List<String> valueByTypeName(@Param("type") String type, @Param("name") String name);
@Select("<script>" +
"SELECT " +
"sd.BUSINESS_ID, " +
"sd.TYPE, " +
"sd.NAME, " +
"sd.VALUE, " +
"sd.REMARKS, " +
"su1.NAME as createName, " +
"sd.CREATE_DATE, " +
"su2.NAME as updateName, " +
"sd.UPDATE_DATE " +
"FROM " +
"s_dictionary sd " +
"LEFT JOIN s_user su1 ON sd.CREATE_BY = su1.BUSINESS_ID " +
"LEFT JOIN s_user su2 ON sd.UPDATE_BY = su2.BUSINESS_ID " +
"WHERE " +
"<if test=\"querySDictionaryDTO.delFlag!=null\"> sd.DEL_FLAG=#{querySDictionaryDTO.delFlag}</if>\n" +
"<if test=\"querySDictionaryDTO.flag!=null and querySDictionaryDTO.flag !=''\">AND sd.FLAG=#{querySDictionaryDTO.flag}</if>\n" +
"<if test=\"querySDictionaryDTO.name!=null and querySDictionaryDTO.name !=''\"> AND sd.NAME like concat('%',#{querySDictionaryDTO.name},'%') </if>" +
"<if test=\"querySDictionaryDTO.type!=null and querySDictionaryDTO.type !=''\"> AND sd.TYPE like concat('%',#{querySDictionaryDTO.type},'%') </if>" +
"<if test=\"querySDictionaryDTO.value!=null and querySDictionaryDTO.value !='' \"> AND sd.VALUE like concat('%',#{querySDictionaryDTO.value},'%') </if>" +
"order By sd.CREATE_DATE DESC" +
"</script>")
IPage<ResultSDictionaryPageDTO> selSDictionaryPage(@Param("querySDictionaryDTO") QuerySDictionaryDTO querySDictionaryDTO, @Param("page") Page page);
}
package com.isoft91.gonn.gps.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.isoft91.gonn.gps.business.entity.SProvince;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* Mapper 接口
* </p>
*
* @author wulingfang
* @since 2021-04-15
*/
public interface SProvinceMapper extends BaseMapper<SProvince> {
SProvince selectProvinceByName(@Param("name")String name);
}
package com.isoft91.gonn.gps.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.isoft91.gonn.gps.business.dto.QuerySRoleDTO;
import com.isoft91.gonn.gps.business.dto.ResultSRoleDTO;
import com.isoft91.gonn.gps.business.entity.SRole;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* <p>
* 角色表 Mapper 接口
* </p>
*
* @author 91isoft
* @since 2019-12-30
*/
public interface SRoleMapper extends BaseMapper<SRole> {
@Select("<script>" +
"SELECT * " +
"FROM s_role where del_flag = '0' and flag = '1' </script> ")
List<ResultSRoleDTO> getDictionaryList(QuerySRoleDTO SRole);
@Select("<script> select su.ROLE_NAME from s_user_role sur,s_role su " +
"where sur.ROLE_ID=su.BUSINESS_ID and sur.USER_ID=#{userID} and su.ROLE_NAME=#{roleName}" +
"</script>")
String selectByUserID(@Param("userID") String userID, @Param("roleName") String roleName);
@Select("<script> select su.BUSINESS_ID,su.ROLE_NAME,su.`CODE` from s_user_role sur,s_role su " +
"where sur.ROLE_ID=su.BUSINESS_ID and sur.USER_ID=#{userID} " +
"</script>")
List<ResultSRoleDTO> selectByUserIDs(@Param("userID") String userID);
}
package com.isoft91.gonn.gps.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.isoft91.gonn.gps.business.entity.SRole;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface SRoleSYNRepo extends BaseMapper<SRole> {
//int removeAll();
@Insert("<script>insert into s_role (business_id, " +
"role_name, " +
"code, " +
"create_by, " +
"create_date, " +
"update_by, " +
"update_date, " +
"del_flag, " +
"flag ) value " +
"<foreach collection =\"sRoles\" item=\"item\" separator=\",\" > " +
"(" +
"#{item.businessId}, " +
"#{item.roleName}, " +
"#{item.businessId}, " +
"#{item.createBy}, " +
"#{item.createDate}, " +
"#{item.updateBy}, " +
"#{item.updateDate}, " +
"#{item.delFlag}, " +
"#{item.flag}" +
")" +
"</foreach></script>")
int saveRoleSYN(@Param("sRoles") List<SRole> sRoles);
@Update("delete from s_role where 1=1")
void removeAll();
}
package com.isoft91.gonn.gps.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.isoft91.gonn.gps.business.entity.SUser;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
/**
* <p>
* 用户表 Mapper 接口
* </p>
*
* @author jiangpengpeng
* @since 2020-01-09
*/
public interface SUserMapper extends BaseMapper<SUser> {
/**
* @param sUserList
* @return
*/
@Insert("<script>insert into s_user(business_id," +
"name," +
"login_name," +
"password," +
"sex," +
"email, " +
"remarks," +
"dept_id," +
"create_by," +
"create_date," +
"update_by," +
"update_date," +
"del_flag," +
"flag) value" +
"<foreach collection =\"sUserList\" item=\"item\" separator=\",\" > " +
"(" +
"#{item.businessId}," +
"#{item.name}," +
"#{item.loginName}," +
"#{item.password}," +
"#{item.sex}," +
"#{item.email}," +
"#{item.remarks}," +
"#{item.deptId}," +
"#{item.createBy}," +
"#{item.createDate}," +
"#{item.updateBy}," +
"#{item.updateDate}," +
"#{item.delFlag}," +
"#{item.flag}" +
")" +
"</foreach></script>")
int saveUserSYN(@Param("sUserList") List<SUser> sUserList);
/**
* 删除
*/
@Update("delete from s_user where 1=1")
void removeAll();
@Select("<script> " +
"select su.`NAME` from s_user_role sur, s_user su where " +
"sur.ROLE_ID=#{roleId} and sur.USER_ID=su.BUSINESS_ID " +
"<if test=\"userId!='' and userId != null\"> AND su.BUSINESS_ID = #{userId} </if> " +
"<if test=\"deptId!='' and deptId != null\"> and su.DEPT_ID=#{deptId}</if> " +
"</script>")
String selectName(@Param("userId") String userId, @Param("deptId") String deptId, @Param("roleId") String roleId);
@Select("<script> " +
"select su.BUSINESS_ID from s_user_role sur, s_user su where " +
"sur.ROLE_ID=#{roleId} and sur.USER_ID=su.BUSINESS_ID " +
"<if test=\"userId!='' and userId != null\"> AND su.BUSINESS_ID = #{userId} </if> " +
"<if test=\"deptId!='' and deptId != null\"> and su.DEPT_ID=#{deptId}</if> " +
"</script>")
List<Integer> selectId(@Param("userId") String userId, @Param("deptId") String deptId, @Param("roleId") String roleId);
}
package com.isoft91.gonn.gps.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.isoft91.gonn.gps.business.entity.SUserRole;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* <p>
* 用户角色表 Mapper 接口
* </p>
*
* @author jiangpengpeng
* @since 2020-02-20
*/
public interface SUserRoleMapper extends BaseMapper<SUserRole> {
@Select("<script>SELECT " +
"sur.ROLE_ID " +
"FROM " +
"s_user_role sur " +
"WHERE " +
"sur.USER_ID = #{userId}</script>")
List<String> selectRole(@Param("userId") String userId);
}
package com.isoft91.gonn.gps.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.isoft91.gonn.gps.business.entity.SUserRole;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface SUserRoleSYNRepo extends BaseMapper<SUserRole> {
@Insert("<script>insert into s_user_role(business_id," +
"user_id," +
"role_id) value " +
"<foreach collection =\"sUserRoles\" item=\"item\" separator=\",\" > " +
"(" +
"#{item.businessId}, " +
"#{item.userId}, " +
"#{item.roleId})" +
"</foreach></script>")
int saveUserRoleSYN(@Param("sUserRoles") List<SUserRole> sUserRoles);
@Update("delete from s_user_role where 1=1")
void removeAll();
}
package com.isoft91.gonn.gps.business.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.isoft91.gonn.gps.business.dto.BaseStationInfoDto;
import com.isoft91.gonn.gps.business.entity.BaseStationInfo;
/**
* <p>
* 服务类
* </p>
*
* @author jiangpengpeng
* @since 2021-04-02
*/
public interface IBaseStationInfoService extends IService<BaseStationInfo> {
IPage selectPages(BaseStationInfoDto searchDto, Page page);
}
package com.isoft91.gonn.gps.business.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.isoft91.gonn.gps.business.dto.BaseStationInfoDto;
import com.isoft91.gonn.gps.business.entity.ComputerRoomInfo;
/**
* <p>
* 服务类
* </p>
*
* @author jiangpengpeng
* @since 2021-04-02
*/
public interface IComputerRoomInfoService extends IService<ComputerRoomInfo> {
}
package com.isoft91.gonn.gps.business.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.isoft91.gonn.gps.business.entity.OaCBusiConf;
import com.isoft91.gonn.gps.business.vo.OaCBusiConfVo;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author wulingfang
* @since 2021-06-28
*/
public interface IOaCBusiConfService extends IService<OaCBusiConf> {
List<OaCBusiConf> selectList(OaCBusiConfVo dto);
}
package com.isoft91.gonn.gps.business.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.isoft91.gonn.gps.business.dto.QuerySDeptDTO;
import com.isoft91.gonn.gps.business.entity.SDept;
import java.util.List;
/**
* <p>
* 部门表 服务类
* </p>
*
* @author 91isoft
* @since 2019-12-30
*/
public interface ISDeptService extends IService<SDept> {
int logicalDelete(String id);
int delete(String id);
List getDeptList(QuerySDeptDTO sDeptDTO);
IPage getDeptListPage(Page page, QuerySDeptDTO sDeptDTO);
}
\ No newline at end of file
package com.isoft91.gonn.gps.business.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.isoft91.gonn.gps.business.dto.QuerySDictionaryDTO;
import com.isoft91.gonn.gps.business.dto.ResultSearchDTO;
import com.isoft91.gonn.gps.business.dto.SdProjectStageDTO;
import com.isoft91.gonn.gps.business.dto.SdServiceStageDTO;
import com.isoft91.gonn.gps.business.entity.SDictionary;
import com.isoft91.gonn.gps.utils.Result.Ret;
import java.util.List;
import java.util.Map;
/**
* <p>
* 数据字典 服务类
* </p>
*
* @author 91isoft
* @since 2019-12-25
*/
public interface ISDictionaryService extends IService<SDictionary> {
int logicalDelete(String id);
int delete(String id);
List getDictionaryList(QuerySDictionaryDTO sDictionary);
SDictionary getDictionaryByID(String sDictionaryId);
IPage getDictionaryListPage(Page page, QuerySDictionaryDTO sDictionary);
/**
* 条件分页查询数据字典
*/
IPage getDictionaryListPageBy(Page page,QuerySDictionaryDTO querySDictionaryDTO);
List getDictionaryListByType(String type);
Map getGradeDic();
/**
* 查询所有模板类型数据
*/
List<ResultSearchDTO> getTemplateTypeList();
/**
* 查询所有模板级别数据
*/
List<ResultSearchDTO> getTemplateGradeList();
Ret<List<SdProjectStageDTO>> getProjecetStage();
Ret<List<SdServiceStageDTO>> getServiceStage();
}
package com.isoft91.gonn.gps.business.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.isoft91.gonn.gps.business.dto.ProvinceDto;
import com.isoft91.gonn.gps.business.entity.SProvince;
import com.isoft91.gonn.gps.business.vo.ProvinceVo;
import com.isoft91.gonn.gps.utils.Result.Ret;
import java.util.List;
public interface ISProvinceService extends IService<SProvince> {
Ret instProvince(ProvinceVo provinceDto);
}
package com.isoft91.gonn.gps.business.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.isoft91.gonn.gps.business.dto.QuerySRoleDTO;
import com.isoft91.gonn.gps.business.entity.SRole;
import java.util.List;
/**
* <p>
* 角色表 服务类
* </p>
*
* @author 91isoft
* @since 2019-12-30
*/
public interface ISRoleService extends IService<SRole> {
/**
* 逻辑删除
*/
int logicalDelete(String id);
/**
* 物理删除
*/
int delete(String id);
/**
* 获取角色列表
*/
List getRoleList(QuerySRoleDTO sRole);
/**
* 分页显示角色列表
*/
IPage getRoleListPage(Page page, QuerySRoleDTO sRole);
/**
* 根据id获取角色列表
*/
List getRoleListById(String id);
}
package com.isoft91.gonn.gps.business.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.isoft91.gonn.gps.business.entity.SUserRole;
/**
* <p>
* 用户角色表 服务类
* </p>
*
* @author jiangpengpeng
* @since 2020-02-20
*/
public interface ISUserRoleService extends IService<SUserRole> {
}
package com.isoft91.gonn.gps.business.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.isoft91.gonn.gps.business.entity.SUser;
/**
* <p>
* 用户表 服务类
* </p>
*
* @author jiangpengpeng
* @since 2020-01-09
*/
public interface ISUserService extends IService<SUser> {
}
package com.isoft91.gonn.gps.business.service;
import com.isoft91.gonn.gps.utils.Result.Ret;
public interface SUserSYNService {
/**
* 同步 用户表
*
* @param
* @return
*/
Ret synUser(String timestamp, String sign);
}
package com.isoft91.gonn.gps.business.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.isoft91.gonn.gps.business.dto.BaseStationInfoDto;
import com.isoft91.gonn.gps.business.entity.BaseStationInfo;
import com.isoft91.gonn.gps.business.entity.SUser;
import com.isoft91.gonn.gps.business.mapper.BaseStationInfoMapper;
import com.isoft91.gonn.gps.business.mapper.SUserMapper;
import com.isoft91.gonn.gps.business.service.IBaseStationInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author jiangpengpeng
* @since 2021-04-02
*/
@Service
public class BaseStationInfoServiceImpl extends ServiceImpl<BaseStationInfoMapper, BaseStationInfo> implements IBaseStationInfoService {
@Autowired
SUserMapper sUserMapper;
@Override
public IPage selectPages(BaseStationInfoDto searchDto, Page page) {
//获取当前登录人部门
String userId = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
SUser sUser = sUserMapper.selectById(userId);
return null;
}
}
package com.isoft91.gonn.gps.business.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.isoft91.gonn.gps.business.dto.BaseStationInfoDto;
import com.isoft91.gonn.gps.business.entity.ComputerRoomInfo;
import com.isoft91.gonn.gps.business.entity.SUser;
import com.isoft91.gonn.gps.business.mapper.ComputerRoomInfoMapper;
import com.isoft91.gonn.gps.business.mapper.SUserMapper;
import com.isoft91.gonn.gps.business.service.IComputerRoomInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author jiangpengpeng
* @since 2021-04-02
*/
@Service
public class ComputerRoomInfoServiceImpl extends ServiceImpl<ComputerRoomInfoMapper, ComputerRoomInfo> implements IComputerRoomInfoService {
}
package com.isoft91.gonn.gps.business.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.isoft91.gonn.gps.business.entity.OaCBusiConf;
import com.isoft91.gonn.gps.business.mapper.OaCBusiConfMapper;
import com.isoft91.gonn.gps.business.service.IOaCBusiConfService;
import com.isoft91.gonn.gps.business.vo.OaCBusiConfVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author wulingfang
* @since 2021-06-28
*/
@Service
public class OaCBusiConfServiceImpl extends ServiceImpl<OaCBusiConfMapper, OaCBusiConf> implements IOaCBusiConfService {
@Autowired
OaCBusiConfMapper oaCBusiConfMapper;
@Override
public List<OaCBusiConf> selectList(OaCBusiConfVo dto) {
return oaCBusiConfMapper.selectConfList(dto);
}
}
package com.isoft91.gonn.gps.business.service.impl;
import cn.hutool.core.util.StrUtil;
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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.isoft91.gonn.gps.business.dto.QuerySDeptDTO;
import com.isoft91.gonn.gps.business.dto.ResultSDeptDTO;
import com.isoft91.gonn.gps.business.entity.SDept;
import com.isoft91.gonn.gps.business.mapper.SDeptMapper;
import com.isoft91.gonn.gps.business.service.ISDeptService;
import com.isoft91.gonn.gps.utils.DozerUtils;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 部门表 服务实现类
* </p>
*
* @author 91isoft
* @since 2019-12-30
*/
@Service
public class SDeptServiceImpl extends ServiceImpl<SDeptMapper, SDept> implements ISDeptService {
@Override
public int logicalDelete(String id) {
SDept sDept = new SDept();
sDept.setDeleted();
sDept.setStop();
sDept.setBusinessId(id);
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("business_id", id);
int line = this.baseMapper.updateById(sDept);
return line;
}
@Override
public int delete(String id) {
return this.baseMapper.deleteById(id);
}
@Override
public List getDeptList(QuerySDeptDTO sDeptDTO) {
QueryWrapper queryWrapper = getQueryWrapper(sDeptDTO);
queryWrapper.select().orderByDesc("SORT");
List<SDept> sDepts = this.baseMapper.selectList(queryWrapper);
List<ResultSDeptDTO> resultSDeptDTOSDtos = DozerUtils.mapList(sDepts, ResultSDeptDTO.class);
return resultSDeptDTOSDtos;
}
@Override
public IPage getDeptListPage(Page page, QuerySDeptDTO sDeptDTO) {
QueryWrapper queryWrapper = getQueryWrapper(sDeptDTO);
return this.baseMapper.selectPage(page, queryWrapper);
}
private QueryWrapper getQueryWrapper(QuerySDeptDTO sDeptDTO) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.ne("del_flag", "1");
queryWrapper.ne("flag", "0");
if (StrUtil.isNotBlank(sDeptDTO.getBusinessId())){
queryWrapper.eq("busienss_id", sDeptDTO.getBusinessId());
}
return queryWrapper;
}
}
package com.isoft91.gonn.gps.business.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.isoft91.gonn.gps.business.dto.*;
import com.isoft91.gonn.gps.business.entity.SDictionary;
import com.isoft91.gonn.gps.business.mapper.SDictionaryMapper;
import com.isoft91.gonn.gps.business.service.ISDictionaryService;
import com.isoft91.gonn.gps.common.entity.DelStatus;
import com.isoft91.gonn.gps.common.entity.FlagStatus;
import com.isoft91.gonn.gps.utils.DozerUtils;
import com.isoft91.gonn.gps.utils.Result.Ret;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
* 数据字典 服务实现类
* </p>
*
* @author 91isoft
* @since 2019-12-25
*/
@Service
public class SDictionaryServiceImpl extends ServiceImpl<SDictionaryMapper, SDictionary> implements ISDictionaryService {
@Value("${dictionary.mapper}")
private String mapper;
@Value("${dictionary.templateType.service}")
private String serviceType;
@Value("${dictionary.templateType.project}")
private String projectType;
@Value("${dictionary.templateStage.project}")
private String projectStageType;
@Value("${dictionary.templateStage.business}")
private String businessStageType;
@Value("${dictionary.templateStage.service}")
private String serviceStageType;
@Value("${dictionary.tempType}")
private String tempType;
@Autowired
SDictionaryMapper sDictionaryMapper;
@Override
public int logicalDelete(String id) {
SDictionary sDictionary = new SDictionary();
sDictionary.setDeleted();
sDictionary.setStop();
sDictionary.setBusinessId(id);
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("business_id", id);
int line = this.baseMapper.updateById(sDictionary);
return line;
}
@Override
public int delete(String id) {
return this.baseMapper.deleteById(id);
}
@Override
public List<ResultSDictionaryDTO> getDictionaryList(QuerySDictionaryDTO sDictionary) {
QueryWrapper queryWrapper = getQueryWrapper(sDictionary);
List<SDictionary> sDictionaries = this.baseMapper.selectList(queryWrapper);
List<ResultSDictionaryDTO> resultSictionaryDtos = DozerUtils.mapList(sDictionaries, ResultSDictionaryDTO.class);
return resultSictionaryDtos;
}
@Override
public SDictionary getDictionaryByID(String sDictionaryId) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.ne("del_flag", "1");
queryWrapper.ne("flag", "0");
queryWrapper.eq("BUSINESS_ID", sDictionaryId);
return this.baseMapper.selectOne(queryWrapper);
}
@Override
public IPage getDictionaryListPage(Page page, QuerySDictionaryDTO sDictionary) {
QueryWrapper queryWrapper = getQueryWrapper(sDictionary);
return this.baseMapper.selectPage(page, queryWrapper);
}
/**
* 条件分页查询数据字典
*/
@Override
public IPage getDictionaryListPageBy(Page page, QuerySDictionaryDTO querySDictionaryDTO) {
/*QueryWrapper<SDictionary> queryWrapper = new QueryWrapper();
queryWrapper.ne("del_flag", "1");
queryWrapper.ne("flag", "0");
queryWrapper.orderByDesc("create_date");
queryWrapper.like(StringUtils.isNotBlank(querySDictionaryDTO.getName()), "name", querySDictionaryDTO.getName())
.like(StringUtils.isNotBlank(querySDictionaryDTO.getType()), "type", querySDictionaryDTO.getType())
.like(StringUtils.isNotBlank(querySDictionaryDTO.getValue()), "value", querySDictionaryDTO.getValue())
.eq(StringUtils.isNotBlank(querySDictionaryDTO.getPid()), "PID", querySDictionaryDTO.getPid())
.eq(StringUtils.isNotBlank(querySDictionaryDTO.getBusinessId()), "BUSINESS_ID", querySDictionaryDTO.getBusinessId());*/
querySDictionaryDTO.setFlag(FlagStatus.NORMAL.getStatus());
querySDictionaryDTO.setDelFlag(DelStatus.NORMAL.getStatus());
return this.baseMapper.selSDictionaryPage(querySDictionaryDTO,page);
}
/**
* 根据类型查询数据字典
*
* @param type
* @return
*/
@Override
public List getDictionaryListByType(String type) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.ne("del_flag", "1");
queryWrapper.ne("flag", "0");
queryWrapper.eq("TYPE", type);
return this.baseMapper.selectList(queryWrapper);
}
@Override
public Map getGradeDic() {
Map map = new HashMap();
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TYPE", projectType);
List<SDictionary> dictionaries = this.baseMapper.selectList(wrapper);
List<ResultSDictionaryDTO> resultSDictionaryDTOS = DozerUtils.mapList(dictionaries,ResultSDictionaryDTO.class);
map.put("projectStage",resultSDictionaryDTOS);
wrapper = new QueryWrapper();
wrapper.eq("TYPE",businessStageType);
dictionaries = this.baseMapper.selectList(wrapper);
resultSDictionaryDTOS = DozerUtils.mapList(dictionaries,ResultSDictionaryDTO.class);
map.put("businessStage",resultSDictionaryDTOS);
wrapper = new QueryWrapper();
wrapper.eq("TYPE",serviceStageType);
map.put("serviceStage",sDictionaryMapper.selectGradeList(serviceType,mapper));
return map;
}
@Override
public List<ResultSearchDTO> getTemplateTypeList() {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.ne("del_flag", "1");
queryWrapper.ne("flag", "0");
queryWrapper.eq("type", tempType);
List<SDictionary> sDictionaries = this.baseMapper.selectList(queryWrapper);
List<ResultSearchDTO> resultTemplateDTOs = DozerUtils.mapList(sDictionaries, ResultSearchDTO.class);
for (ResultSearchDTO dto: resultTemplateDTOs){
if (serviceType.equals(dto.getValue())){
queryWrapper = new QueryWrapper();
queryWrapper.eq("type",serviceType);
dto.setChild(DozerUtils.mapList(sDictionaryMapper.selectList(queryWrapper),ResultSDictionaryDTO.class));
}
}
return resultTemplateDTOs;
}
@Override
public List<ResultSearchDTO> getTemplateGradeList() {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.ne("del_flag", "1");
queryWrapper.ne("flag", "0");
queryWrapper.eq("type", "TEMP_GRADE");
List<SDictionary> sDictionaries = this.baseMapper.selectList(queryWrapper);
List<ResultSearchDTO> resultTemplateDTOs = DozerUtils.mapList(sDictionaries, ResultSearchDTO.class);
return resultTemplateDTOs;
}
/**
* 查询项目数据字典项目阶段
* []
*
* @return {@link Ret<List<SdProjectStageDTO>>}
* @throws
* @author jiangpengpeng
* @date 2020/2/19 14:03
*/
@Override
public Ret<List<SdProjectStageDTO>> getProjecetStage() {
SDictionary sDictionary = new SDictionary();
sDictionary.setType(projectStageType);
sDictionary.setNormal();
List<SdProjectStageDTO> projecetStage = sDictionaryMapper.getProjecetStage(sDictionary);
if (projecetStage.size() == 0) {
return Ret.error().setMsg("未查找到项目阶段");
}
return Ret.ok().setData(projecetStage);
}
@Override
public Ret<List<SdServiceStageDTO>> getServiceStage() {
SDictionary sDictionary = new SDictionary();
sDictionary.setType(serviceStageType);
sDictionary.setNormal();
List<SdServiceStageDTO> serviceStageDTOList = sDictionaryMapper.getServiceStage(sDictionary);
if (serviceStageDTOList.size() == 0) {
return Ret.error().setMsg("未查找到项目阶段");
}
return Ret.ok().setData(serviceStageDTOList);
}
private QueryWrapper getQueryWrapper(QuerySDictionaryDTO sDictionary) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.ne("del_flag", "1");
queryWrapper.ne("flag", "0");
if (StrUtil.isNotBlank(sDictionary.getBusinessId())) {
queryWrapper.eq("busienss_id", sDictionary.getBusinessId());
}
if (StrUtil.isNotBlank(sDictionary.getType())) {
queryWrapper.eq("type", sDictionary.getType());
}
if (StrUtil.isNotBlank(sDictionary.getName())) {
queryWrapper.eq("name", sDictionary.getName());
}
if (StrUtil.isNotBlank(sDictionary.getValue())) {
queryWrapper.eq("value", sDictionary.getValue());
}
return queryWrapper;
}
}
package com.isoft91.gonn.gps.business.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.isoft91.gonn.gps.business.dto.ProvinceDto;
import com.isoft91.gonn.gps.business.entity.SProvince;
import com.isoft91.gonn.gps.business.mapper.SProvinceMapper;
import com.isoft91.gonn.gps.business.service.ISProvinceService;
import com.isoft91.gonn.gps.business.vo.ProvinceVo;
import com.isoft91.gonn.gps.utils.Result.Ret;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author wulingfang
* @since 2021-04-15
*/
@Service
public class SProvinceServiceImpl extends ServiceImpl<SProvinceMapper, SProvince> implements ISProvinceService {
@Autowired
SProvinceMapper sProvinceMapper;
@Override
public Ret instProvince(ProvinceVo provinceDto) {
boolean a=false;
for (ProvinceDto dto: provinceDto.getProvinceDto()) {
SProvince province=new SProvince();
province.setName(dto.getName());
province.setLayer(dto.getLevel());
province.setLongitude(dto.getCenter().get(0));
province.setDimension(dto.getCenter().get(1));
if(StringUtils.isNotBlank(dto.getDistrict())){
//根据名称查询id
SProvince province1 = sProvinceMapper.selectProvinceByName(dto.getDistrict());
province.setPid(province1.getBusinessId());
}
province.setObjectid(dto.getObjectId());
int insert = sProvinceMapper.insert(province);
if (insert>0){
a=true;
}
}
if(a){
return Ret.ok();
}else {
return Ret.error();
}
}
}
package com.isoft91.gonn.gps.business.service.impl;
import cn.hutool.core.util.StrUtil;
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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.isoft91.gonn.gps.business.dto.QuerySRoleDTO;
import com.isoft91.gonn.gps.business.dto.ResultSRoleDTO;
import com.isoft91.gonn.gps.business.entity.SRole;
import com.isoft91.gonn.gps.business.mapper.SRoleMapper;
import com.isoft91.gonn.gps.business.service.ISRoleService;
import com.isoft91.gonn.gps.utils.DozerUtils;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 角色表 服务实现类
* </p>
*
* @author 91isoft
* @since 2019-12-30
*/
@Service
public class SRoleServiceImpl extends ServiceImpl<SRoleMapper, SRole> implements ISRoleService {
@Override
public int logicalDelete(String id) {
SRole sRole = new SRole();
sRole.setDeleted();
sRole.setStop();
sRole.setBusinessId(id);
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("business_id", id);
int line = this.baseMapper.updateById(sRole);
return line;
}
@Override
public int delete(String id) {
return this.baseMapper.deleteById(id);
}
@Override
public List getRoleList(QuerySRoleDTO sRole) {
QueryWrapper queryWrapper = getQueryWrapper(sRole);
List<SRole> sRoles = this.baseMapper.selectList(queryWrapper);
List<ResultSRoleDTO> resultSRoleDTOS = DozerUtils.mapList(sRoles, ResultSRoleDTO.class);
return resultSRoleDTOS;
}
@Override
public IPage getRoleListPage(Page page, QuerySRoleDTO sRole) {
QueryWrapper queryWrapper = getQueryWrapper(sRole);
return this.baseMapper.selectPage(page, queryWrapper);
}
@Override
public List getRoleListById(String id) {
return null;
}
private QueryWrapper getQueryWrapper(QuerySRoleDTO sRole) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.ne("del_flag", "1");
queryWrapper.ne("flag", "0");
if (StrUtil.isNotBlank(sRole.getBusinessId())) {
queryWrapper.eq("busienss_id", sRole.getBusinessId());
}
return queryWrapper;
}
}
package com.isoft91.gonn.gps.business.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.isoft91.gonn.gps.business.entity.SUserRole;
import com.isoft91.gonn.gps.business.mapper.SUserRoleMapper;
import com.isoft91.gonn.gps.business.service.ISUserRoleService;
import org.springframework.stereotype.Service;
/**
* <p>
* 用户角色表 服务实现类
* </p>
*
* @author jiangpengpeng
* @since 2020-02-20
*/
@Service
public class SUserRoleServiceImpl extends ServiceImpl<SUserRoleMapper, SUserRole> implements ISUserRoleService {
}
package com.isoft91.gonn.gps.business.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.isoft91.gonn.gps.business.entity.*;
import com.isoft91.gonn.gps.business.mapper.SDeptSYNRepo;
import com.isoft91.gonn.gps.business.mapper.SRoleSYNRepo;
import com.isoft91.gonn.gps.business.mapper.SUserMapper;
import com.isoft91.gonn.gps.business.mapper.SUserRoleSYNRepo;
import com.isoft91.gonn.gps.config.exception.PmsTemplateExecution;
import com.isoft91.gonn.gps.utils.DozerUtils;
import com.isoft91.gonn.gps.utils.Result.Ret;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.*;
@Service
@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED)
@Slf4j
public class SUserSYNServiceImpl extends ServiceImpl<SUserMapper, SUser> {
@Autowired
private SRoleSYNRepo sRoleSYNRepo;
@Autowired
private SDeptSYNRepo sDeptSYNRepo;
@Autowired
SDeptServiceImpl sDeptService;
@Autowired
SUserServiceImpl sUserService;
@Autowired
SRoleServiceImpl sRoleService;
@Autowired
SUserRoleServiceImpl sUserRoleService;
@Autowired
private SUserMapper sUserMapper;
@Autowired
private SUserRoleSYNRepo sUserRoleSYNRepo;
@Autowired
private PasswordEncoder passwordEncoder;
@Value("${global.path.user_synchronized}")
private String USER_SYNCHRONIZED;
@Value("${global.path.app_id}")
private String APP_ID;
@Value("${global.path.dept}")
private String dept;
@Value("${global.path.user}")
private String user;
@Value("${global.path.role}")
private String role;
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public Ret synUser(String timestamp, String sign) {
String token = "";
// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
//创建get请求
HttpGet httpGet = new HttpGet(USER_SYNCHRONIZED + "/token?app_id=" + APP_ID + "&timestamp=" + timestamp + "&sign=" + sign);
// 响应模型
CloseableHttpResponse response = null;
try {
// 配置信息
RequestConfig requestConfig = RequestConfig.custom()
// 设置连接超时时间(单位毫秒)
.setConnectTimeout(5000)
// 设置请求超时时间(单位毫秒)
.setConnectionRequestTimeout(5000)
// socket读写超时时间(单位毫秒)
.setSocketTimeout(5000)
// 设置是否允许重定向(默认为true)
.setRedirectsEnabled(true).build();
// 将上面的配置信息 运用到这个Get请求里
httpGet.setConfig(requestConfig);
// 由客户端执行(发送)Get请求
response = httpClient.execute(httpGet);
// 从响应模型中获取响应实体
HttpEntity responseEntity = response.getEntity();
if (response.getStatusLine().getStatusCode() == 200 && responseEntity != null) {
//取出实体中的数据
String str = EntityUtils.toString(responseEntity);
//将数据转换成json数据
//JSONObject jsonObject = JSONObject.parseObject(str);
String str1 = JSONObject.parseObject(str).get("data").toString();
Map mapTypes = JSON.parseObject(str1);
token = mapTypes.get("token").toString();
} else {
return Ret.error().setMsg("操作失败");
}
} catch (Exception e) {
throw new PmsTemplateExecution("操作失败");
} finally {
try {
// 释放资源
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return synUsers(token);
//return new CyPersistModel(200);
}
/**
* 同步用户
*
* @return
*/
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public Ret synUsers(String token) {
List<SDept> sDepts = this.saveDept(token);
List<SRole> sRoles = this.saveRole(token);
List<SUserSYN> sUserSYNS = this.saveUser(token);
List<SUser> sUserList = new ArrayList<>();
List<SUserRole> sUserRoles = new ArrayList<>();
for (SUserSYN sUserSYN : sUserSYNS) {
SUser sUser = DozerUtils.map(sUserSYN, SUser.class);
sUser.setLoginName(sUserSYN.getBusinessId());
sUser.setPassword(passwordEncoder.encode(sUserSYN.getBusinessId()));
sUser.setBusinessId(sUserSYN.getBusinessId());
sUser.setCreateBy(SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString());
sUser.setUpdateBy(sUser.getCreateBy());
sUser.setEmail(sUserSYN.getEmail());
sUser.setCreateDate(LocalDateTime.now());
sUser.setUpdateDate(LocalDateTime.now());
sUser.setNormal();
sUserList.add(sUser);
if (sUserSYN.getRoleId() != null &&
!"".equals(sUserSYN.getRoleId())) {
String[] strs = String.valueOf(sUserSYN.getRoleId()).split(",");
List<String> list = new ArrayList<>();
Collections.addAll(list, strs);
for (String role : list) {
SUserRole sUserRole = new SUserRole();
sUserRole.setBusinessId(UUID.randomUUID().toString().replaceAll("-", ""));
sUserRole.setUserId(sUserSYN.getBusinessId());
sUserRole.setRoleId(role);
sUserRoles.add(sUserRole);
}
}
}
sUserRoleSYNRepo.removeAll();
sUserMapper.removeAll();
sRoleSYNRepo.removeAll();
sDeptSYNRepo.removeAll();
int deptRes = sDeptSYNRepo.saveDeptSYN(sDepts);
int roleRes = sRoleSYNRepo.saveRoleSYN(sRoles);
int userRes = sUserMapper.saveUserSYN(sUserList);
if (userRes > 0) {
userRes = sUserRoleSYNRepo.saveUserRoleSYN(sUserRoles);
}
if (deptRes == 0 ||
roleRes == 0 ||
userRes == 0) {
throw new PmsTemplateExecution("操作失败");
}
return Ret.ok().setMsg("操作成功");
}
/**
* 保存部门表
*
* @param token
* @return
*/
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public List<SDept> saveDept(String token) {
List<SDept> sDepts = new ArrayList<>();
// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
//创建get请求
HttpGet httpGet = new HttpGet(USER_SYNCHRONIZED + dept + "?token=" + token);
// 响应模型
CloseableHttpResponse response = null;
try {
// 配置信息
RequestConfig requestConfig = RequestConfig.custom()
// 设置连接超时时间(单位毫秒)
.setConnectTimeout(5000)
// 设置请求超时时间(单位毫秒)
.setConnectionRequestTimeout(5000)
// socket读写超时时间(单位毫秒)
.setSocketTimeout(5000)
// 设置是否允许重定向(默认为true)
.setRedirectsEnabled(true).build();
// 将上面的配置信息 运用到这个Get请求里
httpGet.setConfig(requestConfig);
// 由客户端执行(发送)Get请求
response = httpClient.execute(httpGet);
// 从响应模型中获取响应实体
HttpEntity responseEntity = response.getEntity();
if (response.getStatusLine().getStatusCode() == 200 && responseEntity != null) {
//取出实体中的数据
String str = EntityUtils.toString(responseEntity);
//将数据转换成json数据
JSONObject jsonObject = JSONObject.parseObject(str);
JSONArray jsonArray = JSONObject.parseArray(jsonObject.get("data").toString());
//将json数组转换成list数组
SDept dept0 = new SDept();
dept0.setName("广厦网络");
dept0.setCode("0");
dept0.setBusinessId("0");
dept0.setNormal();
dept0.setUpdateBy(SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString());
dept0.setCreateBy(dept0.getUpdateBy());
dept0.setCreateDate(LocalDateTime.now());
dept0.setUpdateDate(LocalDateTime.now());
sDepts.add(dept0);
for (int i = 0; i < jsonArray.size(); i++) {
SDept dept = new SDept();
//判断部门id是否为空,不为空继续,为空跳过进行下一个循环
if (jsonArray.getJSONObject(i).get("id") != null) {
dept.setName(String.valueOf(jsonArray.getJSONObject(i).get("name")));
dept.setParentId(String.valueOf(jsonArray.getJSONObject(i).get("pid")));
dept.setSort(Integer.parseInt(String.valueOf(jsonArray.getJSONObject(i).get("sort"))));
dept.setBusinessId(String.valueOf(jsonArray.getJSONObject(i).get("id")));
dept.setCode(dept.getBusinessId());
dept.setNormal();
dept.setUpdateBy(SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString());
dept.setCreateBy(dept0.getUpdateBy());
dept.setCreateDate(LocalDateTime.now());
dept.setUpdateDate(LocalDateTime.now());
sDepts.add(dept);
} else {
continue;
}
}
}
} catch (Exception e) {
} finally {
try {
// 释放资源
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return sDepts;
}
/**
* 保存角色表
*
* @param token
* @return
*/
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public List<SRole> saveRole(String token) {
List<SRole> sRoles = new ArrayList<>();
// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
//创建get请求
HttpGet httpGet = new HttpGet(USER_SYNCHRONIZED + role + "?token=" + token);
// 响应模型
CloseableHttpResponse response = null;
try {
// 配置信息
RequestConfig requestConfig = RequestConfig.custom()
// 设置连接超时时间(单位毫秒)
.setConnectTimeout(5000)
// 设置请求超时时间(单位毫秒)
.setConnectionRequestTimeout(5000)
// socket读写超时时间(单位毫秒)
.setSocketTimeout(5000)
// 设置是否允许重定向(默认为true)
.setRedirectsEnabled(true).build();
// 将上面的配置信息 运用到这个Get请求里
httpGet.setConfig(requestConfig);
// 由客户端执行(发送)Get请求
response = httpClient.execute(httpGet);
// 从响应模型中获取响应实体
HttpEntity responseEntity = response.getEntity();
if (response.getStatusLine().getStatusCode() == 200 && responseEntity != null) {
//取出实体中的数据
String str = EntityUtils.toString(responseEntity);
//将数据转换成json数据
JSONObject jsonObject = JSONObject.parseObject(str);
JSONArray jsonArray = JSONObject.parseArray(jsonObject.get("data").toString());
//将json数组转换成list数组
for (int i = 0; i < jsonArray.size(); i++) {
SRole sRole = new SRole();
//判断角色id是否为空,不为空继续,为空跳过进行下一个循环
if (jsonArray.getJSONObject(i).get("id") != null &&
jsonArray.getJSONObject(i).get("title") != null) {
sRole.setBusinessId(String.valueOf(jsonArray.getJSONObject(i).get("id")));
sRole.setRoleName(String.valueOf(jsonArray.getJSONObject(i).get("title")));
sRole.setCode(sRole.getBusinessId());
sRole.setNormal();
sRole.setCreateBy(SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString());
sRole.setUpdateBy(sRole.getCreateBy());
sRole.setCreateDate(LocalDateTime.now());
sRole.setUpdateDate(LocalDateTime.now());
sRoles.add(sRole);
} else {
continue;
}
}
}
} catch (Exception e) {
} finally {
try {
// 释放资源
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return sRoles;
}
/**
* 保存用户表
*
* @param token
* @return
*/
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public List<SUserSYN> saveUser(String token) {
List<SUserSYN> sUserSYNS = new ArrayList<>();
// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
//创建get请求
HttpGet httpGet = new HttpGet(USER_SYNCHRONIZED + user + "?token=" + token);
// 响应模型
CloseableHttpResponse response = null;
try {
// 配置信息
RequestConfig requestConfig = RequestConfig.custom()
// 设置连接超时时间(单位毫秒)
.setConnectTimeout(5000)
// 设置请求超时时间(单位毫秒)
.setConnectionRequestTimeout(5000)
// socket读写超时时间(单位毫秒)
.setSocketTimeout(5000)
// 设置是否允许重定向(默认为true)
.setRedirectsEnabled(true).build();
// 将上面的配置信息 运用到这个Get请求里
httpGet.setConfig(requestConfig);
// 由客户端执行(发送)Get请求
response = httpClient.execute(httpGet);
// 从响应模型中获取响应实体
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
String str = EntityUtils.toString(responseEntity);
JSONObject jsonObject = JSONObject.parseObject(str);
JSONArray jsonArray = JSONObject.parseArray(jsonObject.get("data").toString());
//将json数组转换成list数组
for (int i = 0; i < jsonArray.size(); i++) {
SUserSYN sUserSYN = new SUserSYN();
//判断用户id是否为空,不为空继续,为空跳过进行下一个循环
if (jsonArray.getJSONObject(i).get("id") != null) {
sUserSYN.setBusinessId(String.valueOf(jsonArray.getJSONObject(i).get("id")));
sUserSYN.setDeptId(String.valueOf(jsonArray.getJSONObject(i).get("d_id")));
sUserSYN.setName(String.valueOf(jsonArray.getJSONObject(i).get("name")));
sUserSYN.setRoleId(String.valueOf(jsonArray.getJSONObject(i).get("roles")));
sUserSYN.setEmail(String.valueOf(jsonArray.getJSONObject(i).get("email")));
sUserSYNS.add(sUserSYN);
} else {
continue;
}
}
}
} catch (Exception e) {
} finally {
try {
// 释放资源
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return sUserSYNS;
}
}
package com.isoft91.gonn.gps.business.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.isoft91.gonn.gps.business.entity.SUser;
import com.isoft91.gonn.gps.business.mapper.SUserMapper;
import com.isoft91.gonn.gps.business.service.ISUserService;
import org.springframework.stereotype.Service;
/**
* <p>
* 用户表 服务实现类
* </p>
*
* @author jiangpengpeng
* @since 2020-01-09
*/
@Service
public class SUserServiceImpl extends ServiceImpl<SUserMapper, SUser> implements ISUserService {
}
package com.isoft91.gonn.gps.business.vo;
import lombok.Data;
@Data
public class OaCBusiConfVo {
private String type;
private String key;
private String value;
private String pId;
}
package com.isoft91.gonn.gps.business.vo;
import com.isoft91.gonn.gps.business.dto.ProvinceDto;
import lombok.Data;
import java.util.List;
@Data
public class ProvinceVo {
private List<ProvinceDto> provinceDto;
}
package com.isoft91.gonn.gps.common.aop;
import io.swagger.annotations.ApiOperation;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.*;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
/**
* 系统日志:切面处理类
*/
@Aspect
@Component
public class SysLogAspect implements Ordered {
private static Logger logger ;
//定义切点 @Pointcut
@Pointcut("execution(* com.isoft91.gonn.gps.business.*.controller..*.*(..)),order=3") //切点
public void webRequestLog(){}
@Pointcut("execution(* com.isoft91.gonn.gps.business.*.controller..*.*(..)),order=3") //切点
public void webExceptionLog(){}
@Before("webRequestLog()")
@Order(1)
public void doBefore(JoinPoint joinPoint){
try {
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 异常通知 用于拦截异常日志
*
* @param joinPoint
* @param e
*/
@Order(0)
@AfterThrowing(pointcut = "webExceptionLog()", throwing = "e")
public void doAfterThrowing(JoinPoint joinPoint, Throwable e) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
try {
} catch (Exception ex) {
//记录本地异常日志
e.printStackTrace();
logger.error("==异常通知异常==");
}
}
@Override
public int getOrder() {
return 0;
}
/**
* 获取 方法上的注释
* @param joinPoint
* @return
*/
private String getMethodMess(JoinPoint joinPoint){
String value = "";
try {
Signature signature = joinPoint.getSignature();
MethodSignature methodSignature = (MethodSignature) signature;
Method targetMethod = methodSignature.getMethod();
Method realMethod = joinPoint.getTarget().getClass().getDeclaredMethod(signature.getName(), targetMethod.getParameterTypes());
if (realMethod.isAnnotationPresent(ApiOperation.class)) {
ApiOperation apiOperation = (ApiOperation) realMethod.getAnnotation(ApiOperation.class);
value = apiOperation.value();
}
}catch (Exception e) {
e.printStackTrace();
}
return value;
}
}
package com.isoft91.gonn.gps.common.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* Created with family.
* author: cy
* Date: 16/6/23
* Time: 上午10:04
* description: data 实体 常用属性
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public abstract class DataEntity<T> implements Serializable {
protected static final long serialVersionUID = 1L;
/**
* 创建人
*/
// @TableField("CREATE_BY")
@TableField(value="CREATE_BY", fill = FieldFill.INSERT)
protected String createBy;
/**
* 创建日期
*/
@TableField(value="CREATE_DATE", fill = FieldFill.INSERT)
@DateTimeFormat(pattern="yyyy/MM/dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy/MM/dd HH:mm:ss")
protected LocalDateTime createDate;
/**
* 修改人
*/
// @TableField("UPDATE_BY")
@TableField(value="UPDATE_BY", fill = FieldFill.INSERT_UPDATE)
protected String updateBy;
/**
* 修改日期
*/
@TableField(value="UPDATE_DATE", fill = FieldFill.INSERT_UPDATE)
@DateTimeFormat(pattern="yyyy/MM/dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy/MM/dd HH:mm:ss")
protected LocalDateTime updateDate;
/**
* 删除标记(0:正常;1:删除;2:审核)
*/
@TableField(value="DEL_FLAG", fill = FieldFill.INSERT)
protected String delFlag;
/**
* 启用标记(0:停用;1:启用)
*/
@TableField(value="FLAG", fill = FieldFill.INSERT)
protected String flag;
/**
* 设置删除
*/
public void setDeleted(){
this.setDelFlag(DelStatus.DELETED.getStatus());
}
/**
* 设置非删除
*/
public void setNotDeleted(){
this.setDelFlag(DelStatus.NORMAL.getStatus());
}
/**
* 设置启用
*/
public void setStart(){
this.setFlag(FlagStatus.NORMAL.getStatus());
}
/**
* 设置停用
*/
public void setStop(){
this.setFlag(FlagStatus.ABNORMAL.getStatus());
}
/**
* 设置非删除&启用
*/
public void setNormal(){
this.setFlag(FlagStatus.NORMAL.getStatus());
this.setDelFlag(DelStatus.NORMAL.getStatus());
}
/**
* 设置非删除&启用
*/
public void setPublish(){
this.setFlag(FlagStatus.NORMAL.getStatus());
this.setDelFlag(DelStatus.NORMAL.getStatus());
}
}
package com.isoft91.gonn.gps.common.entity;
/**
* Created with family.
* author: cy
* Date: 16/6/23
* Time: 下午2:06
* description:
*/
public enum DelStatus {
//正常0 逻辑删除1
NORMAL("0"),DELETED("1");
private String status;
public String getStatus(){
return status;
}
private DelStatus(String status){
this.status = status;
}
}
package com.isoft91.gonn.gps.common.entity;
/**
* Created with family.
* author: cy
* Date: 16/6/23
* Time: 下午2:06
* description:
*/
public enum FieldFilterStatus {
// 筛选1 不参与筛选 0
FILTER("1"),NOT_FILTER("0");
private String status;
public String getStatus(){
return status;
}
private FieldFilterStatus(String status){
this.status = status;
}
}
package com.isoft91.gonn.gps.common.entity;
/**
* Created with family.
* author: cy
* Date: 16/6/23
* Time: 下午2:06
* description:
*/
public enum FieldHeaderStatus {
// 显示在表头 1 不显示 0
SHOW("1"),NOT_SHOW("0");
private String status;
public String getStatus(){
return status;
}
private FieldHeaderStatus(String status){
this.status = status;
}
}
package com.isoft91.gonn.gps.common.entity;
/**
* Created with family.
* author: cy
* Date: 16/6/23
* Time: 下午2:06
* description:
*/
public enum FieldSortStatus {
// 参与排序 1 不排序 0
SORT("1"),NOT_SORT("0");
private String status;
public String getStatus(){
return status;
}
private FieldSortStatus(String status){
this.status = status;
}
}
package com.isoft91.gonn.gps.common.entity;
public enum FixedField {
createBy("createBy", "创建人"),
createDate("createDate","创建时间"),
updateBy("updateBy","更新人"),
updateDate("updateDate","更新时间"),
projectStage("stage","业务阶段"),
state("state","流程状态"),
name("name","任务节点")
;
private String label;
private String fieldName;
public static String getNameByLabel(String label) {
for (FixedField fix : FixedField.values()) {
if (fix.getLabel().equals(label)) {
return fix.getFieldName();
}
}
return null;
}
public static boolean equalsFieldId(String label) {
for (FixedField fix : FixedField.values()) {
if (fix.getLabel().equals(label)) {
return true;
}
}
return false;
}
public String getFieldName(){
return fieldName;
}
public String getLabel(){
return label;
}
private FixedField(String label, String fieldName){
this.label = label;
this.fieldName = fieldName;
}
}
package com.isoft91.gonn.gps.common.entity;
/**
* Created with family.
* author: cy
* Date: 16/6/23
* Time: 下午2:06
* description:
*/
public enum FlagStatus {
//启用1 停用0
PUBLISHED("2"),NORMAL("1"),ABNORMAL("0");
private String status;
public String getStatus(){
return status;
}
private FlagStatus(String status){
this.status = status;
}
}
package com.isoft91.gonn.gps.common.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.util.UUID;
/**
* Created with family.
* author: cy
* Date: 16/6/2
* Time: 上午9:15
* description: id entity
*/
@Data
public abstract class IdEntity<T> extends DataEntity<T> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 编号
*/
@TableId("BUSINESS_ID")
@TableField(fill = FieldFill.INSERT)
private String businessId;
@TableField(exist = false)
protected String token;
public void setBusinessId(String businessId) {
this.businessId = businessId;
}
/**
* 通用设置ID
*/
public void setCommonBusinessId(){
this.setBusinessId(UUID.randomUUID().toString().replaceAll("-", ""));
}
}
\ No newline at end of file
package com.isoft91.gonn.gps.common.entity;
/**
* done
*
* @author :jiangpengpeng
* @date:2020/2/28 14:33
*/
public enum InstanceStates {
UNCOMMIT("0", "未提交审核"),
INREVIEW("1", "审核中"),
REJECTED("2", "已驳回"),
INWRITE("3", "待填写"),
PASSED("4", "已通过"),
BREAKINREVIEW("5", "终止审核中"),
BREAKINWRITE("6", "终止待填写"),
BREAKREJECTED("7", "终止已驳回"),
BREAKPASSED("8", "已终止"),
DELETE("10", "已删除"),
DELETEINREVIEW("9", "删除审核中"),
DELETEREJECTED("12", "删除已驳回"),
DELETEINWRITE("11", "待填写");
private String code;
private String message;
public String getCode() {
return code;
}
public String getMessage() {
return message;
}
public static String getMessByCode(String code) {
for (InstanceStates states : InstanceStates.values()) {
if (states.getCode().equals(code)) {
return states.getMessage();
}
}
return null;
}
private InstanceStates(String code, String message) {
this.code = code;
this.message = message;
}
}
package com.isoft91.gonn.gps.common.entity;
/**
* @Author: jiangpengpeng
* @Description:
* @Date: Created in 11:21 2019/9/11
* @Modified By:
*/
import lombok.Getter;
@Getter
public enum KDFormIdEnum {
MATERIAL("PAEZ_001"),//物料
OUT_STOCK("SAL_OUTSTOCK"),//出库单
STOCK("BD_STOCK"),//仓库
CUSTOMER("BD_Customer");//客户
private String formid;
KDFormIdEnum(String formid) {
this.formid = formid;
}
}
package com.isoft91.gonn.gps.common.entity;
import lombok.Getter;
/**
* 付款单是否可编辑
*
* @author :jiangpengpeng
* @date:2020/4/16 14:02
*/
@Getter
public enum PayIsWriteStatus {
WRITE("1"),
NOWRITE("0");
private String status;
PayIsWriteStatus(String status){
this.status = status;
};
}
package com.isoft91.gonn.gps.common.entity;
import lombok.Getter;
/**
* 付款单状态
*
* @author :jiangpengpeng
* @date:2020/4/16 14:02
*/
@Getter
public enum PayStatus {
RUN("0"),
HADPAY("1"),
REJECT("2"),
BREAK("5");
private String status;
PayStatus(String status){
this.status = status;
};
}
package com.isoft91.gonn.gps.common.entity;
public enum RoleType {
TIJIAOREN("提交人"),
ERJIJINGLI("二级经理"),
SANJIYUANGONG("三级员工(可进行新增基站操作)"),
SANJIJINGLI("三级经理"),
JIHUAYUHEGUIBUJINGLI("计划与合规部经理"),
WEIHUSANJIJINGLI("维护三级经理"),
QUYUZHUGUAN("区域主管"),
HEGUIBU("合规部"),
GUISHUBUMEN("department"),
GUISHUFUZEREN("personInCharge"),
JIANSHEBUMEN("buildDept"),
JIANSHEFUZEREN("buildUser");
private String status;
public String getStatus() {
return status;
}
private RoleType(String status) {
this.status = status;
}
}
package com.isoft91.gonn.gps.common.generator;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class CodeGenerator {
/**
* <p>
* 读取控制台内容
* </p>
*/
public static String scanner(String tip) {
Scanner scanner = new Scanner(System.in);
StringBuilder help = new StringBuilder();
help.append("请输入" + tip + ":");
System.out.println(help.toString());
if (scanner.hasNext()) {
String ipt = scanner.next();
if (StrUtil.isNotBlank(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("请输入正确的" + tip + "!");
}
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java/");
gc.setAuthor("wulingfang");
gc.setOpen(false);
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://123.114.208.158:33060/oa?useUnicode=true&characterEncoding=utf-8&useSSL=false");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("gonn");
dsc.setPassword("qazxsw!2");
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setModuleName(scanner("模块名"));
pc.setParent("com.isoft91.gonn.gps.business");
mpg.setPackageInfo(pc);
// 自定义配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
// 如果模板引擎是 freemarker
String templatePath = "/templates/mapper.xml.ftl";
// 如果模板引擎是 velocity
// String templatePath = "/templates/mapper.xml.vm";
// 自定义输出配置
List<FileOutConfig> focList = new ArrayList<>();
// 自定义配置会被优先输出
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名
return projectPath + "/src/main/resources/mapper/" + pc.getModuleName()
+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
// 配置模板
TemplateConfig templateConfig = new TemplateConfig();
// 配置自定义输出模板
// templateConfig.setEntity();
// templateConfig.setService();
// templateConfig.setController();
templateConfig.setXml(null);
mpg.setTemplate(templateConfig);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
strategy.setSuperEntityColumns("id");
strategy.setControllerMappingHyphenStyle(true);
strategy.setTablePrefix("_");
strategy.setSuperEntityClass("com.isoft91.gonn.gps.common.entity.IdEntity");
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
strategy.entityTableFieldAnnotationEnable(true);
mpg.setStrategy(strategy);
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
}
}
package com.isoft91.gonn.gps.common.help;
import org.springframework.stereotype.Component;
/**
* TODO 生成项目编号和获取当前登录人部门信息
*
* @author :jiangpengpeng
* @date:2020/4/17 16:14
*/
@Component
public class GetDept {
}
package com.isoft91.gonn.gps.common.help;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class StartProcessHelper {
}
package com.isoft91.gonn.gps.common.help;
import org.springframework.stereotype.Component;
import java.util.UUID;
@Component
public class UUIDGenerator {
public String getNextId() {
return UUID.randomUUID().toString().replaceAll("-", "");
}
}
\ No newline at end of file
package com.isoft91.gonn.gps.config.exception;
import lombok.Data;
@Data
public class ExceptionCommon extends RuntimeException {
public ExceptionCommon(){
super();
}
/**
* 指定详细描述构造通用异常
* @param detailedMessage 详细描述
*/
public ExceptionCommon(String detailedMessage) {
super(detailedMessage);
}
public ExceptionCommon(String message, Throwable cause) {
super(message, cause);
}
}
package com.isoft91.gonn.gps.config.exception;
import com.isoft91.gonn.gps.utils.Result.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import javax.servlet.http.HttpServletRequest;
@RestControllerAdvice
public class MyExceptionHandler {
@Value("${spring.servlet.multipart.max-file-size}")
private String maxFileSize;
@ExceptionHandler(MaxUploadSizeExceededException.class)
@ResponseBody
public Ret uploadException(MaxUploadSizeExceededException e) {
return Ret.error().setMsg("超出支持的最大上传文件大小(" + maxFileSize +")!");
}
@ExceptionHandler(Exception.class)
@ResponseBody
public Ret<?> handleException(HttpServletRequest request, Exception ex) {
String msg = null;
if (ex instanceof ExceptionCommon) {
ExceptionCommon bizException = (ExceptionCommon) ex;
msg = bizException.getMessage();
}
if (msg == null) {
msg = ex.getMessage();
}
return Ret.error().setData(msg);
}
}
package com.isoft91.gonn.gps.config.exception;
/**
* Done
*
* @author :jiangpengpeng
* @date:2020/1/7 16:52
*/
public class PmsTemplateExecution extends RuntimeException {
public PmsTemplateExecution(String message){
super(message);
}
}
package com.isoft91.gonn.gps.config.exception;
public class UsernameNotExistException extends RuntimeException {
public UsernameNotExistException(String message) {
super(message);
}
}
package com.isoft91.gonn.gps.config.filter;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.filter.GenericFilterBean;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
public class JwtFilter extends GenericFilterBean {
@Value("${jwt.tokenHeader}")
private String tokenHeader;
@Value("${jwt.tokenPrefix}")
private String tokenPrefix;
@Value("${jwt.secret}")
private String secret;
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) servletRequest;
try {
String jwtToken = req.getHeader(tokenHeader);
if (jwtToken == null) {
filterChain.doFilter(req, servletResponse);
return;
}
Claims claims = Jwts.parser().setSigningKey(secret).parseClaimsJws(jwtToken.replace(tokenPrefix, ""))
.getBody();
String username = claims.getSubject();//获取当前登录用户名
List<GrantedAuthority> authorities = AuthorityUtils.commaSeparatedStringToAuthorityList((String) claims.get("authorities"));
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, null, authorities);
SecurityContextHolder.getContext().setAuthentication(token);
} catch (Exception e) {
System.out.println(e);
}
filterChain.doFilter(req, servletResponse);
}
}
package com.isoft91.gonn.gps.config.filter;
import com.alibaba.fastjson.JSON;
import com.isoft91.gonn.gps.config.exception.UsernameNotExistException;
import com.isoft91.gonn.gps.sys.entity.User;
import com.isoft91.gonn.gps.sys.service.UserDetailsServiceImpl;
import com.isoft91.gonn.gps.utils.Result.ResultEnums;
import com.isoft91.gonn.gps.utils.Result.Ret;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
/**
* 登陆信息 验证过滤器: JwtLoginFilter
*/
public class JwtLoginFilter extends AbstractAuthenticationProcessingFilter {
@Autowired
private UserDetailsServiceImpl userDetailsService;
@Value("${jwt.tokenHeader}")
private String tokenHeader;
@Value("${jwt.tokenPrefix}")
private String tokenPrefix;
@Value("${jwt.secret}")
private String secret;
@Value("${jwt.expiration}")
private int expiration;
public JwtLoginFilter(String defaultFilterProcessesUrl, AuthenticationManager authenticationManager) {
super(new AntPathRequestMatcher(defaultFilterProcessesUrl));
setAuthenticationManager(authenticationManager);
}
/**
* 接收并解析用户登陆信息 /login,为已验证的用户返回一个已填充的身份验证令牌,表示成功的身份验证
*/
@Override
public Authentication attemptAuthentication(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws AuthenticationException, IOException, ServletException {
//得到用户登陆信息,并封装到 Authentication 中,供自定义用户组件使用.
//这里并没有对用户名密码进行验证,而是使用 AuthenticationProvider 提供的 authenticate 方法
//返回一个完全经过身份验证的对象
return getAuthenticationManager().authenticate(new UsernamePasswordAuthenticationToken( (String)httpServletRequest.getParameter("username"), (String)httpServletRequest.getParameter("password")));
}
/**
*
* 登陆成功后,此方法会被调用,因此我们可以在次方法中生成token,并返回给客户端
*/
@Override
protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException {
Collection<? extends GrantedAuthority> authorities = authResult.getAuthorities();
StringBuffer as = new StringBuffer();
StringBuilder roleName = new StringBuilder();
/* for(GrantedAuthority authority: authorities) {
as.append(authority.getAuthority()).append(",");
}*/
as.append(authResult.getName()).append(",");
// as.append(userRoles);
String jwt = Jwts.builder()
.claim("authorities", as)//配置用户角色
.setSubject(authResult.getName())
.setExpiration(new Date(System.currentTimeMillis() + expiration))
.signWith(SignatureAlgorithm.HS512,secret)
.compact();
response.setContentType("application/json;charset=utf-8");
// response.setHeader("token", jwt);
PrintWriter out = response.getWriter();
// out.write(new ObjectMapper().writeValueAsString(jwt));
Map<String,String> resultMap = new HashMap<>();
resultMap.put(tokenHeader, jwt);
resultMap.put("role", roleName.toString());
User user = (User) authResult.getPrincipal();
resultMap.put("email", user.getEmail());
String resJson = JSON.toJSONString(Ret.build(ResultEnums.LOGIN_SUCCESS).setData(resultMap));
out.write(resJson);
out.flush();
out.close();
}
@Override
protected void unsuccessfulAuthentication(HttpServletRequest req, HttpServletResponse resp, AuthenticationException failed) throws IOException, ServletException {
resp.setContentType("application/json;charset=utf-8");
PrintWriter out = resp.getWriter();
String tipInfo;
if (failed.getCause() instanceof UsernameNotExistException) {
tipInfo = failed.getMessage();
// } else if (failed.getCause() instanceof RedisConnectionFailureException) {
// tipInfo = "Redis连接失败";
} else if (failed instanceof BadCredentialsException) {
tipInfo = "用户名或密码错误";
} else {
tipInfo = failed.getMessage();
}
String resJson = JSON.toJSONString(Ret.build(ResultEnums.LOGIN_ERROR).setData(tipInfo));
out.write(resJson);
out.flush();
out.close();
}
}
package com.isoft91.gonn.gps.config.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class MyFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
ParameterRequestWrapper parmsRequest = new ParameterRequestWrapper((HttpServletRequest)servletRequest);
filterChain.doFilter(parmsRequest, servletResponse);
}
@Override
public void destroy() {
}
}
package com.isoft91.gonn.gps.config.filter;
import com.alibaba.fastjson.JSON;
import com.isoft91.gonn.gps.utils.StringJsonUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpHeaders;
import org.springframework.http.MediaType;
import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* @author: lucifer
* @date: 2019/8/21
* @description:
*/
public class ParameterRequestWrapper extends HttpServletRequestWrapper {
private Map<String , String[]> params = new HashMap<>();
public ParameterRequestWrapper(HttpServletRequest request) {
// 将request交给父类,以便于调用对应方法的时候,将其输出,其实父亲类的实现方式和第一种new的方式类似
super(request);
//将参数表,赋予给当前的Map以便于持有request中的参数
Map<String, String[]> requestMap=request.getParameterMap();
System.out.println("转化前参数:"+JSON.toJSONString(requestMap));
this.params.putAll(requestMap);
this.modifyParameterValues();
System.out.println("转化后参数:"+JSON.toJSONString(params));
}
/**
* 重写getInputStream方法 post类型的请求参数必须通过流才能获取到值
*/
@Override
public ServletInputStream getInputStream() throws IOException {
//非json类型,直接返回
/* if(!super.getHeader(HttpHeaders.CONTENT_TYPE).equalsIgnoreCase(MediaType.APPLICATION_JSON_VALUE)){
return super.getInputStream();
}*/
if(!super.getHeader(HttpHeaders.CONTENT_TYPE).equalsIgnoreCase(MediaType.APPLICATION_JSON_UTF8_VALUE)){
return super.getInputStream();
}
//为空,直接返回
String json = IOUtils.toString(super.getInputStream(), "utf-8");
if (StringUtils.isEmpty(json)) {
return super.getInputStream();
}
System.out.println("转化前参数:"+json);
Map<String,Object> map= StringJsonUtils.jsonStringToMap(json);
System.out.println("转化后参数:"+JSON.toJSONString(map));
ByteArrayInputStream bis = new ByteArrayInputStream(JSON.toJSONString(map).getBytes("utf-8"));
return new MyServletInputStream(bis);
}
/**
* 将parameter的值去除空格后重写回去
*/
public void modifyParameterValues(){
Set<String> set =params.keySet();
Iterator<String> it=set.iterator();
while(it.hasNext()){
String key= it.next();
String[] values = params.get(key);
values[0] = values[0].trim();
params.put(key, values);
}
}
/**
* 重写getParameter 参数从当前类中的map获取
*/
@Override
public String getParameter(String name) {
String[]values = params.get(name);
if(values == null || values.length == 0) {
return null;
}
return values[0];
}
/**
* 重写getParameterValues
*/
@Override
public String[] getParameterValues(String name) {//同上
return params.get(name);
}
class MyServletInputStream extends ServletInputStream{
private ByteArrayInputStream bis;
public MyServletInputStream(ByteArrayInputStream bis){
this.bis=bis;
}
@Override
public boolean isFinished() {
return true;
}
@Override
public boolean isReady() {
return true;
}
@Override
public void setReadListener(ReadListener listener) {
}
@Override
public int read(){
return bis.read();
}
}
}
\ No newline at end of file
package com.isoft91.gonn.gps.config.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class XssFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
XssFilterWrapper xssFilterWrapper=new XssFilterWrapper((HttpServletRequest) servletRequest);
filterChain.doFilter(xssFilterWrapper,servletResponse);
}
@Override
public void destroy() {
}
}
package com.isoft91.gonn.gps.config.filter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.util.regex.Pattern;
public class XssFilterWrapper extends HttpServletRequestWrapper {
HttpServletRequest orgRequest = null;
public XssFilterWrapper(HttpServletRequest request) {
super(request);
orgRequest=request;
}
/**
* 覆盖getParameter方法,将参数名和参数值都做xss & sql过滤。<br/>
* 如果需要获得原始的值,则通过super.getParameterValues(name)来获取<br/>
* getParameterNames,getParameterValues和getParameterMap也可能需要覆盖
*/
@Override
public String getParameter(String name) {
String value=super.getParameter(xssEncode(name));
if (value!=null){
value=xssEncode(value);
}
return value;
}
@Override
public String getHeader(String name) {
String value=super.getHeader(xssEncode(name));
if (value!=null){
value=xssEncode(value);
}
return value;
}
/**
* 将容易引起xss & sql漏洞的半角字符直接替换成全角字符
*
* @param s
* @return
*/
private static String xssEncode(String s){
if(s==null || s.isEmpty()){
return s;
}else {
s=stripXSSAndSql(s);
}
StringBuilder sb=new StringBuilder(s.length()+16);
for (int i=0;i<s.length();i++){
char c=s.charAt(i);
switch (c){
case '>':
sb.append(">");
break;
case '<':
sb.append("<");
break;
case '&':
sb.append("&");// 转义&
break;
case '#':
sb.append("#");// 转义#
break;
default:
sb.append(c);
break;
}
}
return sb.toString();
}
/**
* 获取最原始的request
*
* @return
*/
public HttpServletRequest getOrgRequest() {
return orgRequest;
}
/**
* 获取最原始的request的静态方法
*
* @return
*/
public static HttpServletRequest getOrgRequest(HttpServletRequest req) {
if (req instanceof XssFilterWrapper) {
return ((XssFilterWrapper) req).getOrgRequest();
}
return req;
}
public static String stripXSSAndSql(String value){
if(value!=null){
Pattern scriptPattern = Pattern.compile("<[\r\n| | ]*script[\r\n| | ]*>(.*?)</[\r\n| | ]*script[\r\n| | ]*>", Pattern.CASE_INSENSITIVE);
value = scriptPattern.matcher(value).replaceAll("");
// Avoid anything in a src="http://www.yihaomen.com/article/java/..." type of e-xpression
scriptPattern = Pattern.compile("src[\r\n| | ]*=[\r\n| | ]*[\\\"|\\\'](.*?)[\\\"|\\\']", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
value = scriptPattern.matcher(value).replaceAll("");
// Remove any lonesome </script> tag
scriptPattern = Pattern.compile("</[\r\n| | ]*script[\r\n| | ]*>", Pattern.CASE_INSENSITIVE);
value = scriptPattern.matcher(value).replaceAll("");
// Remove any lonesome <script ...> tag
scriptPattern = Pattern.compile("<[\r\n| | ]*script(.*?)>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
value = scriptPattern.matcher(value).replaceAll("");
// Avoid eval(...) expressions
scriptPattern = Pattern.compile("eval\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
value = scriptPattern.matcher(value).replaceAll("");
// Avoid e-xpression(...) expressions
scriptPattern = Pattern.compile("e-xpression\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
value = scriptPattern.matcher(value).replaceAll("");
// Avoid javascript:... expressions
scriptPattern = Pattern.compile("javascript[\r\n| | ]*:[\r\n| | ]*", Pattern.CASE_INSENSITIVE);
value = scriptPattern.matcher(value).replaceAll("");
// Avoid vbscript:... expressions
scriptPattern = Pattern.compile("vbscript[\r\n| | ]*:[\r\n| | ]*", Pattern.CASE_INSENSITIVE);
value = scriptPattern.matcher(value).replaceAll("");
// Avoid οnlοad= expressions
scriptPattern = Pattern.compile("onload(.*?)=", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
value = scriptPattern.matcher(value).replaceAll("");
}
return value;
}
}
package com.isoft91.gonn.gps.config.mvc;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
.maxAge(3600)
.allowCredentials(true);
}
}
package com.isoft91.gonn.gps.config.mybatisPlus;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.isoft91.gonn.gps.common.entity.DelStatus;
import com.isoft91.gonn.gps.common.entity.FlagStatus;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.UUID;
/**
* @description: This is a handler class for meta object.
* @author: Breaker93
* @createTime: 2019/9/21 11:08
*/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
//String user = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
System.out.println(UUID.randomUUID().toString().replaceAll("-", ""));
this.setFieldValByName("businessId", UUID.randomUUID().toString().replaceAll("-", ""), metaObject);
//this.setFieldValByName("createBy", user, metaObject);
this.setFieldValByName("createDate", LocalDateTime.now(), metaObject);
//this.setFieldValByName("updateBy", user, metaObject);
this.setFieldValByName("updateDate", LocalDateTime.now(), metaObject);
this.setFieldValByName("delFlag", DelStatus.NORMAL.getStatus(), metaObject);
if (metaObject.getValue("flag") == null){
this.setFieldValByName("flag", FlagStatus.NORMAL.getStatus(), metaObject);
}
}
@Override
public void updateFill(MetaObject metaObject) {
String user = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
// User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
this.setFieldValByName("updateBy", user, metaObject);
this.setFieldValByName("updateDate", LocalDateTime.now(), metaObject);
}
}
package com.isoft91.gonn.gps.config.mybatisPlus;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @description: This a config class for mybatis-plus.
* @author: Breaker93
* @createTime: 2019/9/21 16:05
*/
@Configuration
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
// @Bean
// public IdentifierGenerator idGenerator() {
// return new CustomIdGenerator();
// }
}
package com.isoft91.gonn.gps.config.security;
import com.alibaba.fastjson.JSON;
import com.isoft91.gonn.gps.utils.Result.ResultEnums;
import com.isoft91.gonn.gps.utils.Result.Ret;
import org.springframework.security.authentication.InsufficientAuthenticationException;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class RestAuthenticationEntryPoint implements AuthenticationEntryPoint {
/**
* 实现AuthenticationEntryPoint的commence方法自定义校验不通过的方法
* @param request
* @param response
* @param e
* @throws IOException
* @throws ServletException
*/
@Override
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) throws IOException, ServletException {
// 捕获AuthenticationException中的message,并封装成自定义异常抛出
response.setCharacterEncoding("utf-8");
//header 起作用
response.setHeader("Content-type", "application/json;charset=UTF-8");
if (e instanceof InsufficientAuthenticationException) {
response.getWriter().write(JSON.toJSONString(Ret.build(ResultEnums.UNAUTHORIZED)));
} else {
response.getWriter().write(JSON.toJSONString(Ret.error()));
}
}
}
\ No newline at end of file
package com.isoft91.gonn.gps.config.security;
import com.isoft91.gonn.gps.config.filter.JwtFilter;
import com.isoft91.gonn.gps.config.filter.JwtLoginFilter;
import com.isoft91.gonn.gps.config.filter.MyFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Bean
PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
// 通过@Bean注入配置文件中的参数
@Bean
JwtLoginFilter getJwtLoginFilter() throws Exception {
return new JwtLoginFilter("/login", authenticationManager());
}
@Bean
MyFilter getMyFilter(){
return new MyFilter();
}
// 通过@Bean注入配置文件中的参数
@Bean
JwtFilter getJwtFilter(){
return new JwtFilter();
}
public DaoAuthenticationProvider authenticationProvider() {
DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
provider.setHideUserNotFoundExceptions(false);
provider.setUserDetailsService(userDetailsService);
provider.setPasswordEncoder(passwordEncoder());
return provider;
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/login","/login/loginIn","/login/successLo/**","/v2/api-docs", "/configuration/ui", "/swagger-resources", "/configuration/security", "/doc.html", "/webjars/**","/swagger-resources/configuration/ui","/swagge‌​r-ui.html").permitAll()
.antMatchers("/**").authenticated()
.and()
// 不需要session
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.exceptionHandling() //验证不通过的配置
.authenticationEntryPoint(new RestAuthenticationEntryPoint())
// .accessDeniedHandler(new MyAccessDeniedHandler())
.and()
.cors()
.and()
.authenticationProvider(authenticationProvider())
.addFilterBefore(getJwtLoginFilter(), UsernamePasswordAuthenticationFilter.class)
.addFilterBefore(getJwtFilter(), UsernamePasswordAuthenticationFilter.class)
.csrf().disable();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}
}
package com.isoft91.gonn.gps.config.swagger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* Swagger2配置类
*
* @author David
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
//@Value("${swagger.swagger}")
//private boolean enableSwagger;
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
//.enable(enableSwagger)
.select()
.apis(RequestHandlerSelectors.basePackage("com.isoft91.gonn.pms.business"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("主要业务服务")
.description("业务模块接口API")
.termsOfServiceUrl("http://127.0.0.1:8089/")
.version("1.0")
.build();
}
}
package com.isoft91.gonn.gps.sys.controller;
import com.isoft91.gonn.gps.sys.service.CommonMesServiceImpl;
import com.isoft91.gonn.gps.utils.Result.Ret;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
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.RestController;
import java.security.NoSuchAlgorithmException;
/**
* TODO
*
* @author :jiangpengpeng
* @date:2020/3/25 13:38
*/
@RequestMapping("/commonMes")
@RestController
public class CommonMesController {
@Autowired
CommonMesServiceImpl commonMesService;
@GetMapping("/getPermission")
@ApiOperation(value = "权限", notes = "查询区域")
@ApiImplicitParams({
@ApiImplicitParam(name = "timestamp" ,value="sha1加密" ,required = true ),
@ApiImplicitParam(name = "sign", value = "md5加密timestamp", required = true),
@ApiImplicitParam(name = "userId", value = "用户id", required = true)
})
public Ret getPermission(String timestamp ,String sign,String userId,String flag) throws NoSuchAlgorithmException {
return commonMesService.getPermission(timestamp,sign,userId,flag);
}
@GetMapping("/getArea")
@ApiOperation(value = "查询区域", notes = "查询区域")
@ApiImplicitParams({
@ApiImplicitParam(name = "timestamp" ,value="sha1加密" ,required = true ),
@ApiImplicitParam(name = "sign", value = "md5加密timestamp", required = true)
})
public Ret getArea(String timestamp ,String sign){
return commonMesService.getArea(timestamp,sign);
}
@GetMapping("/getServiceLine")
@ApiOperation(value = "查询业务线", notes = "查询业务线")
@ApiImplicitParams({
@ApiImplicitParam(name = "timestamp" ,value="sha1加密" ,required = true ),
@ApiImplicitParam(name = "sign", value = "md5加密timestamp", required = true)
})
public Ret getServiceLine(String timestamp ,String sign){
return commonMesService.getServiceLine(timestamp,sign);
}
@GetMapping("/getOperator")
@ApiOperation(value = "查询运营商", notes = "查询运营商")
@ApiImplicitParams({
@ApiImplicitParam(name = "timestamp" ,value="sha1加密" ,required = true ),
@ApiImplicitParam(name = "sign", value = "md5加密timestamp", required = true)
})
public Ret getOperator(String timestamp ,String sign){
return commonMesService.getOperator(timestamp,sign);
}
@GetMapping("/getNeedSouce")
@ApiOperation(value = "查询需求来源", notes = "查询需求来源")
@ApiImplicitParams({
@ApiImplicitParam(name = "timestamp" ,value="sha1加密" ,required = true ),
@ApiImplicitParam(name = "sign", value = "md5加密timestamp", required = true)
})
public Ret getNeedSouce(String timestamp ,String sign){
return commonMesService.getNeedSouce(timestamp,sign);
}
@GetMapping("/getUpper")
@ApiOperation(value = "查询上游客户", notes = "查询上游客户")
@ApiImplicitParams({
@ApiImplicitParam(name = "timestamp" ,value="sha1加密" ,required = true ),
@ApiImplicitParam(name = "sign", value = "md5加密timestamp", required = true)
})
public Ret getUpper(String timestamp ,String sign){
return commonMesService.getUpper(timestamp,sign);
}
@GetMapping("/getJzState")
@ApiOperation(value = "查询基站状态", notes = "查询基站状态")
@ApiImplicitParams({
@ApiImplicitParam(name = "timestamp" ,value="sha1加密" ,required = true ),
@ApiImplicitParam(name = "sign", value = "md5加密timestamp", required = true)
})
public Ret getJzState(String timestamp ,String sign){
return commonMesService.getJzState(timestamp,sign);
}
}
package com.isoft91.gonn.gps.sys.controller;
import com.isoft91.gonn.gps.utils.Result.Ret;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/file")
public class FileController {
@Value("${file.upload}")
private String uploadPath;
@PostMapping("/uploadList")
public Ret upload(@RequestParam("files") MultipartFile[] files){
List fileList = new ArrayList();
// 多文件上传
for (MultipartFile file : files){
// 带后缀名的文件名
String originalFilename = file.getOriginalFilename();
int index = originalFilename.lastIndexOf(".");
//获取文件的后缀名
String suffix = "";
String noSuffixFilename = originalFilename;
if(index != -1){
suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
noSuffixFilename = originalFilename.substring(0, index);
}
// DONE: 获取文件file除去后缀名后的文件名
String newFilename = new StringBuilder(noSuffixFilename).append(".").append(System.currentTimeMillis()).append(suffix).toString();
// 存储路径
String filePath = new StringBuilder(uploadPath)
.append(File.separator)
.append(newFilename)
.toString();
File targetFile = new File(filePath);
File parentFile = new File(uploadPath);
try {
if(!parentFile.exists()){
parentFile.mkdirs();
}
if(!targetFile.exists()){
targetFile.createNewFile();
}
// 保存文件
file.transferTo(targetFile);
Map fileInfo = new HashMap();
fileInfo.put("name", originalFilename);
fileInfo.put("url", newFilename);
fileList.add(fileInfo);
} catch (IOException e) {
e.printStackTrace();
return Ret.error().setMsg(e.getMessage());
}
}
return Ret.ok().setData(fileList);
}
@PostMapping("/upload")
public Ret upload(MultipartFile file){
// 带后缀名的文件名
String originalFilename = file.getOriginalFilename();
int index = originalFilename.lastIndexOf(".");
//获取文件的后缀名
String suffix = "";
String noSuffixFilename = originalFilename;
if(index != -1){
suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
noSuffixFilename = originalFilename.substring(0, index);
}
// DONE: 获取文件file除去后缀名后的文件名
String newFilename = new StringBuilder(noSuffixFilename).append(".").append(System.currentTimeMillis()).append(suffix).toString();
// 存储路径
String filePath = new StringBuilder(uploadPath)
.append(File.separator)
.append(newFilename)
.toString();
File targetFile = new File(filePath);
File parentFile = new File(uploadPath);
try {
if(!parentFile.exists()){
parentFile.mkdirs();
}
if(!targetFile.exists()){
targetFile.createNewFile();
}
// 保存文件
file.transferTo(targetFile);
Map fileInfo = new HashMap();
fileInfo.put("name", originalFilename);
fileInfo.put("url", newFilename);
return Ret.ok().setData(fileInfo);
} catch (IOException e) {
e.printStackTrace();
return Ret.error().setMsg(e.getMessage());
}
}
@PostMapping("/remove")
public Ret remove(String url){
String path = new StringBuilder(uploadPath).append(File.separator).append(url).toString();
File file = new File(path);
if(file.delete()){
return Ret.ok();
}else {
return Ret.error().setMsg("文件删除失败");
}
}
@PostMapping("/download")
public void download(HttpServletResponse response, String url) throws FileNotFoundException {
// 下载本地文件
String filePath = new StringBuilder(uploadPath).append(File.separator).append(url).toString();
// 读到流中
InputStream inStream = new FileInputStream(filePath);// 文件的存放路径
// 设置输出的格式
// response.reset();
response.setContentType("bin");
response.addHeader("Content-Disposition", "attachment; filename=\"" + url + "\"");
// 循环取出流中的数据
byte[] b = new byte[100];
int len;
try {
while ((len = inStream.read(b)) > 0)
response.getOutputStream().write(b, 0, len);
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.isoft91.gonn.gps.sys.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* TODO
*
* @author :jiangpengpeng
* @date:2020/3/23 14:59
*/
@RestController
@RequestMapping("kingdee")
public class KingDeeController {
}
package com.isoft91.gonn.gps.sys.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
@Slf4j
@RestController
@RequestMapping("/login")
public class LoginController {
}
package com.isoft91.gonn.gps.sys.dto;
import lombok.Data;
/**
* @author 武斌
* @date 2019/12/31 - 13:48
*/
@Data
public class QuerySUserDTO {
private String businessId;
private String loginName;
private String password;
private String name;
private String sex;
private String phone;
private String deptId;
private String email;
private String remarks;
}
package com.isoft91.gonn.gps.sys.dto;
import lombok.Data;
/**
* @author 武斌
* @date 2019/12/31 - 13:49
*/
@Data
public class ResultSUserDTO {
private String businessId;
private String loginName;
private String password;
private String name;
private String sex;
private String phone;
private String deptId;
private String email;
private String remarks;
}
package com.isoft91.gonn.gps.sys.entity;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 区域
*
* @author :jiangpengpeng
* @date:2020/3/25 14:57
*/
@Data
public class Area {
//区域id
private String id;
//区域名称
private String region_name;
//区域状态(1:正常 , 0:关闭)
private String region_state;
//上级区域
private String pid;
//创建时间
private LocalDateTime create_time;
//区域等级
private String level;
}
package com.isoft91.gonn.gps.sys.entity;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 基站状态
*
* @author :jiangpengpeng
* @date:2020/3/25 15:40
*/
@Data
public class JzState {
private String cate_id;
private String cate_name;
private String pid;
private String state;
private LocalDateTime create_time;
private String level;
}
package com.isoft91.gonn.gps.sys.entity;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 需求来源
*
* @author :jiangpengpeng
* @date:2020/3/25 15:35
*/
@Data
public class NeedSource {
private String sources_id;
private String sources_name;
private String sources_state;
private LocalDateTime create_time;
}
package com.isoft91.gonn.gps.sys.entity;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 运营商
*
* @author :jiangpengpeng
* @date:2020/3/25 15:33
*/
@Data
public class Operator {
private String operator_id;
private String operator_name;
private String operator_state;
private String pid;
private LocalDateTime create_time;
private String level;
}
package com.isoft91.gonn.gps.sys.entity;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 业务线
*
* @author :jiangpengpeng
* @date:2020/3/25 15:31
*/
@Data
public class ServiceLine {
//主键
private String business_id;
//业务线名称
private String business_name;
//业务线状态
private String business_state;
//创建时间
private LocalDateTime create_time;
}
package com.isoft91.gonn.gps.sys.entity;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 上游客户
*
* @author :jiangpengpeng
* @date:2020/3/25 15:38
*/
@Data
public class Upper {
private String customers_id;
private String customers_name;
private String customers_state;
private LocalDateTime create_Time;
}
package com.isoft91.gonn.gps.sys.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
/**
* UserDetails是SpringSecurity验证框架内部提供的用户验证接口,主要是来完成自定义用户认证功能,
* 需要实现getAuthorities方法内容,将定义的角色列表添加到授权的列表内。
*/
@Data
@TableName("s_user")
public class User implements UserDetails {
@TableId("BUSINESS_ID")
/**主键id*/
private String businessId;
/**
* 用户名
*/
private String loginName;
/**
* 密码
*/
private String password;
/**
* 姓名
*/
private String name;
/**
* 性别
*/
private String sex;
/**
* 电话
*/
private String phone;
/**
* 部门id
*/
private String deptId;
/**
* 邮箱
*/
private String email;
/**
* 创建人
*/
private String createBy;
/**
* 创建日期
*/
private Date createDate;
/**
* 修改人
*/
private String updateBy;
/**
* 修改日期
*/
private Date updateDate;
/**
* 删除标识
*/
private String delFlag;
/**
* 启用标识
*/
private String flag;
/**
* 备注
*/
private String remarks;
@TableField(exist = false)
private Collection<? extends GrantedAuthority> authorities;
public User(String loginName, String password, String authorities) {
this.loginName = loginName;
this.password = password;
this.authorities = Collections.singleton(new SimpleGrantedAuthority(authorities));
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return authorities;
}
@Override
public String getUsername() {
return loginName;
}
/**
* 账户是否过期
*/
@Override
public boolean isAccountNonExpired() {
return true;
}
/**
* 账户是否被冻结
*/
@Override
public boolean isAccountNonLocked() {
return true;
}
/**
* 账户密码是否过期
*/
@Override
public boolean isCredentialsNonExpired() {
return true;
}
/**
* 账户是否可用
*/
@Override
public boolean isEnabled() {
return true;
}
}
package com.isoft91.gonn.gps.sys.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.isoft91.gonn.gps.sys.entity.User;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface UserMapper extends BaseMapper<User> {
/**根据角色id查询用户*/
@Select("select * from `user` where `user`.BUSINESS_ID in(SELECT s_user_role.USER_ID from s_user_role where s_user_role.ROLE_ID=#{roleId})")
List<User> selectUserByRoleId(@Param("roleId")String roleId);
/**查询所有用户*/
@Select("select * from user")
List<User> selectAllUser();
/**根据部门id查询用户*/
@Select("SELECT `user`.* FROM `user` JOIN s_dept ON `user`.DEPT_ID = s_dept.BUSINESS_ID WHERE s_dept.BUSINESS_ID = #{deptId}")
List<User> selectUserByDeptId(String deptId);
}
package com.isoft91.gonn.gps.sys.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.isoft91.gonn.gps.config.exception.PmsTemplateExecution;
import com.isoft91.gonn.gps.sys.entity.*;
import com.isoft91.gonn.gps.utils.Result.Ret;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* 基础信息数据调用
*
* @author :jiangpengpeng
* @date:2020/3/25 13:48
*/
@Service
public class CommonMesServiceImpl {
@Value("${global.path.user_synchronized}")
private String USER_SYNCHRONIZED;
@Value("${global.path.app_id}")
private String APP_ID;
@Value("${global.path.regions}")
private String regions;
@Value("${global.path.business}")
private String business;
@Value("${global.path.operators}")
private String operators;
@Value("${global.path.source}")
private String source;
@Value("${global.path.customers}")
private String customers;
@Value("${global.path.basestate}")
private String basestate;
@Value("${global.path.permission}")
private String permission;
@Value("${global.path.app_secret}")
private String app_secret;
@Value("${global.path.serverAuthenticateStaticKey}")
private String serverAuthenticateStaticKey;
//获取token
public String getToken(String timestamp, String sign) {
String token = "";
// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
//创建get请求
HttpGet httpGet = new HttpGet(USER_SYNCHRONIZED + "/token?app_id=" + APP_ID + "&timestamp=" + timestamp + "&sign=" + sign);
// 响应模型
CloseableHttpResponse response = null;
try {
// 配置信息
RequestConfig requestConfig = RequestConfig.custom()
// 设置连接超时时间(单位毫秒)
.setConnectTimeout(5000)
// 设置请求超时时间(单位毫秒)
.setConnectionRequestTimeout(5000)
// socket读写超时时间(单位毫秒)
.setSocketTimeout(5000)
// 设置是否允许重定向(默认为true)
.setRedirectsEnabled(true).build();
// 将上面的配置信息 运用到这个Get请求里
httpGet.setConfig(requestConfig);
// 由客户端执行(发送)Get请求
response = httpClient.execute(httpGet);
// 从响应模型中获取响应实体
HttpEntity responseEntity = response.getEntity();
if (response.getStatusLine().getStatusCode() == 200 && responseEntity != null) {
//取出实体中的数据
String str = EntityUtils.toString(responseEntity);
//将数据转换成json数据
//JSONObject jsonObject = JSONObject.parseObject(str);
String str1 = JSONObject.parseObject(str).get("data").toString();
Map mapTypes = JSON.parseObject(str1);
token = mapTypes.get("token").toString();
} else {
return "";
}
} catch (Exception e) {
throw new PmsTemplateExecution("操作失败");
} finally {
try {
// 释放资源
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return token;
}
public List getResponse(String token, Class t, String path, String userId) {
List tList = new ArrayList<>();
// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
//创建get请求
HttpGet httpGet = new HttpGet(USER_SYNCHRONIZED + path + "?token=" + token);
if (!StringUtils.isAnyEmpty(userId)) {
httpGet = new HttpGet(USER_SYNCHRONIZED + path + "?uid=" + userId + "&token=" + token);
}
// 响应模型
CloseableHttpResponse response = null;
try {
// 配置信息
RequestConfig requestConfig = RequestConfig.custom()
// 设置连接超时时间(单位毫秒)
.setConnectTimeout(5000)
// 设置请求超时时间(单位毫秒)
.setConnectionRequestTimeout(5000)
// socket读写超时时间(单位毫秒)
.setSocketTimeout(5000)
// 设置是否允许重定向(默认为true)
.setRedirectsEnabled(true).build();
// 将上面的配置信息 运用到这个Get请求里
httpGet.setConfig(requestConfig);
// 由客户端执行(发送)Get请求
response = httpClient.execute(httpGet);
// 从响应模型中获取响应实体
HttpEntity responseEntity = response.getEntity();
if (response.getStatusLine().getStatusCode() == 200 && responseEntity != null) {
//取出实体中的数据
String str = EntityUtils.toString(responseEntity);
//将数据转换成json数据
JSONObject jsonObject = JSONObject.parseObject(str);
tList = JSONObject.parseArray(jsonObject.get("data").toString(), t);
}
} catch (Exception e) {
} finally {
try {
// 释放资源
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return tList;
}
public String getPerResponse(String token, Class t, String path, String userId, String flag) {
String dept = "";
// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
//创建get请求
HttpGet httpGet = new HttpGet(USER_SYNCHRONIZED + path + "?token=" + token);
if (!StringUtils.isAnyEmpty(userId)) {
httpGet = new HttpGet(USER_SYNCHRONIZED + path + "?uid=" + userId + "&token=" + token);
}
// 响应模型
CloseableHttpResponse response = null;
try {
// 配置信息
RequestConfig requestConfig = RequestConfig.custom()
// 设置连接超时时间(单位毫秒)
.setConnectTimeout(5000)
// 设置请求超时时间(单位毫秒)
.setConnectionRequestTimeout(5000)
// socket读写超时时间(单位毫秒)
.setSocketTimeout(5000)
// 设置是否允许重定向(默认为true)
.setRedirectsEnabled(true).build();
// 将上面的配置信息 运用到这个Get请求里
httpGet.setConfig(requestConfig);
// 由客户端执行(发送)Get请求
response = httpClient.execute(httpGet);
// 从响应模型中获取响应实体
HttpEntity responseEntity = response.getEntity();
if (response.getStatusLine().getStatusCode() == 200 && responseEntity != null) {
//取出实体中的数据
String str = EntityUtils.toString(responseEntity);
//将数据转换成json数据
JSONObject jsonObject = JSONObject.parseObject(str);
JSONArray jsonArray = JSONObject.parseArray(jsonObject.get("data").toString());
for (int i = 0; i < jsonArray.size(); i++) {
JSONArray jsonArray1 = JSONObject.parseArray(jsonArray.get(i).toString());
for (int j = 0; j < jsonArray1.size(); j++) {
if (jsonArray1.get(j).toString().equals(flag)) {
for (int g = 0; g < jsonArray1.size(); g++) {
if (!jsonArray1.get(g).toString().equals("in") && !jsonArray1.get(g).toString().equals(flag)) {
dept = jsonArray1.get(g).toString();
break;
}
}
}
continue;
}
}
}
} catch (Exception e) {
} finally {
try {
// 释放资源
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return dept;
}
/**
* 获取区域
* [timestamp, sign]
*
* @return {@link Ret}
* @throws
* @author jiangpengpeng
* @date 2020/3/25 15:45
*/
public Ret getArea(String timestamp, String sign) {
String token = this.getToken(timestamp, sign);
if (StringUtils.isAnyEmpty(token)) {
return Ret.error().setMsg("token获取失败");
}
List response = this.getResponse(token, Area.class, regions, "");
return Ret.ok().setData(response);
}
/**
* 业务线
* [timestamp, sign]
*
* @return {@link Ret}
* @throws
* @author jiangpengpeng
* @date 2020/3/25 16:05
*/
public Ret getServiceLine(String timestamp, String sign) {
String token = this.getToken(timestamp, sign);
if (StringUtils.isAnyEmpty(token)) {
return Ret.error().setMsg("token获取失败");
}
List response = this.getResponse(token, ServiceLine.class, business, "");
return Ret.ok().setData(response);
}
public Ret getOperator(String timestamp, String sign) {
String token = this.getToken(timestamp, sign);
if (StringUtils.isAnyEmpty(token)) {
return Ret.error().setMsg("token获取失败");
}
List response = this.getResponse(token, Operator.class, operators, "");
return Ret.ok().setData(response);
}
public Ret getNeedSouce(String timestamp, String sign) {
String token = this.getToken(timestamp, sign);
if (StringUtils.isAnyEmpty(token)) {
return Ret.error().setMsg("token获取失败");
}
List response = this.getResponse(token, NeedSource.class, source, "");
return Ret.ok().setData(response);
}
public Ret getUpper(String timestamp, String sign) {
String token = this.getToken(timestamp, sign);
if (StringUtils.isAnyEmpty(token)) {
return Ret.error().setMsg("token获取失败");
}
List response = this.getResponse(token, Upper.class, customers, "");
return Ret.ok().setData(response);
}
public Ret getJzState(String timestamp, String sign) {
String token = this.getToken(timestamp, sign);
if (StringUtils.isAnyEmpty(token)) {
return Ret.error().setMsg("token获取失败");
}
List response = this.getResponse(token, JzState.class, basestate, "");
return Ret.ok().setData(response);
}
public Ret getPermission(String timestamp, String sign, String userId, String flag) throws NoSuchAlgorithmException {
timestamp = Long.toString(System.currentTimeMillis() / 1000L);
//timestamp = "1565169731";
sign = app_secret + timestamp + serverAuthenticateStaticKey;
sign = CommonMesServiceImpl.sha1(sign);
sign = DigestUtils.md5DigestAsHex(sign.getBytes());
String token = this.getToken(timestamp, sign);
if (StringUtils.isAnyEmpty(token)) {
return Ret.error().setMsg("token获取失败");
}
String response = this.getPerResponse(token, JzState.class, permission, userId, flag);
String[] split = response.split(",");
List<String> strings = Arrays.asList(split);
return Ret.ok().setData(strings);
}
/**
* sha1加密
*
* @param
* @return
* @throws NoSuchAlgorithmException
*/
public static String sha1(String decript) {
try {
MessageDigest digest = java.security.MessageDigest
.getInstance("SHA-1");
digest.update(decript.getBytes());
byte messageDigest[] = digest.digest();
// Create Hex String
StringBuffer hexString = new StringBuffer();
// 字节数组转换为 十六进制 数
for (int i = 0; i < messageDigest.length; i++) {
String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
if (shaHex.length() < 2) {
hexString.append(0);
}
hexString.append(shaHex);
}
return hexString.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}
}
package com.isoft91.gonn.gps.sys.service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* Done
*
* @author :jiangpengpeng
* @date:2020/2/7 13:35
*/
@Transactional
@Service
@Slf4j
public class KingdeePayMyselfServiceImpl {
}
package com.isoft91.gonn.gps.sys.service;
/**
* @Author: jiangpengpeng
* @Description:
* @Date: Created in 11:19 2019/9/11
* @Modified By:
*/
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.isoft91.gonn.gps.utils.Result.Ret;
import com.isoft91.gonn.gps.utils.http.HttpUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @Description: 金蝶物料接口实现类
* @date 2019/1/4 14:24
*/
@Transactional
@Service
@Slf4j
public class KingdeeServiceImpl {
public Ret login(String url, String content) {
ResponseEntity<String> responseEntity = HttpUtil.httpPost(url, content);
//获取登录cookie
if (responseEntity.getStatusCode() == HttpStatus.OK) {
String login_cookie = "";
Set<String> keys = responseEntity.getHeaders().keySet();
for (String key : keys) {
if (key.equalsIgnoreCase("Set-Cookie")) {
List<String> cookies = responseEntity.getHeaders().get(key);
for (String cookie : cookies) {
if (cookie.startsWith("kdservice-sessionid")) {
login_cookie = cookie;
break;
}
}
}
}
Map<String, Object> map = new HashMap<>();
map.put("cookie", login_cookie);
return Ret.ok().setData(map);
}
Map<String, Object> result = JSON.parseObject(responseEntity.getBody());
return Ret.error().setMsg(result.get("Message").toString());
}
public Ret save(String url, String cookie, String content) {
//保存
Map<String, Object> header = new HashMap<>();
header.put("Cookie", cookie);
String result = HttpUtil.httpPost(url, header, content);
JSONObject jsonObject = JSON.parseObject(result);
Map<String, Object> map = (Map<String, Object>) jsonObject.get("Result");
Map<String, Object> responseStatus = (Map<String, Object>) map.get("ResponseStatus");
Boolean isSuccess = (Boolean) responseStatus.get("IsSuccess");
if (isSuccess) {
return Ret.ok().setData(JSON.toJSONString(map));
} else {
List<Map<String, Object>> errors = (List<Map<String, Object>>) responseStatus.get("Errors");
return Ret.error().setData(JSON.toJSONString(errors));
}
}
}
package com.isoft91.gonn.gps.sys.service;
import org.springframework.stereotype.Service;
@Service
public class UserDetailsServiceImpl {
}
package com.isoft91.gonn.gps.utils;
import com.isoft91.gonn.gps.sys.service.CommonMesServiceImpl;
import com.isoft91.gonn.gps.utils.Result.Ret;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.security.NoSuchAlgorithmException;
import java.util.List;
/**
* 登录之后获取权限
*
* @author :jiangpengpeng
* @date:2020/8/10 9:12
*/
@Component
public class AuthorityUtil {
@Autowired
CommonMesServiceImpl commonMesService;
private static final String dept = "department_id";
private static final String REGION = "region_id";
public static List<String> sdepts;
public static List<String> region;
public void getAuthority(String userId){
sdepts = null;
region = null;
try {
Ret permission = commonMesService.getPermission("", "", userId, dept);
sdepts = (List<String>) permission.getData();
Ret permission2 = commonMesService.getPermission("", "", userId, REGION);
region = (List<String>) permission2.getData();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
}
package com.isoft91.gonn.gps.utils;
/**
* @Author: jiangpengpeng
* @Description:
* @Date: Created in 11:16 2019/9/11
* @Modified By:
*/
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @date 2019/1/7 15:58
*/
@Slf4j
public class BaseUtil {
private BaseUtil() {
}
;
/**
* 构造登录参数
*
* @param dbid 账套id
* @param userName 用户名
* @param password 密码
* @param lang 语言
* @return
*/
public static String buildLogin(String dbid, String userName, String password, int lang) {
Map<String, Object> param = new HashMap<>(4);
param.put("acctID", dbid);
param.put("username", userName);
param.put("password", password);
param.put("lcid", lang);
return JSON.toJSONString(param);
}
/**
* 构造付款单参数
*
* @return {@link }
* @throws
* @author jiangpengpeng
* @date 2020/2/7 14:36
*/
public static String buildPay(String template, String payMes, String formid) {
JSONObject basic = JSON.parseObject(template);
Map<String, Object> model = (Map<String, Object>) basic.get("Model");
/*=====================================================配置参数*/
Map fbilltypeid = (Map) model.get("FBILLTYPEID");
fbilltypeid.put("FNUMBER", "FKSQ001_SYS");
model.put("FDATE", "2020-03-24 00:00:00");
model.put("FCONTACTUNITTYPE", "BD_Supplier");
Map fcontactunit = (Map) model.get("FCONTACTUNIT");
fcontactunit.put("FNumber", "GSGYS-0001");
model.put("FRECTUNITTYPE", "BD_Supplier");
Map frectunit = (Map) model.get("FRECTUNIT");
frectunit.put("FNumber", "GSGYS-0001");
Map fcurrencyid = (Map) model.get("FCURRENCYID");
fcurrencyid.put("FNumber", "PRE001");
Map fpayorgid = (Map) model.get("FPAYORGID");
fpayorgid.put("FNumber", "1000");
Map fsettleorgid = (Map) model.get("FSETTLEORGID");
fsettleorgid.put("FNumber", "1000");
Map fpurchaseorgid = (Map) model.get("FPURCHASEORGID");
fpurchaseorgid.put("FNumber", "1000");
Map fpurchasedeptid = (Map) model.get("FPURCHASEDEPTID");
fpurchasedeptid.put("FNumber", "01.00");
model.put("FDOCUMENTSTATUS", "Z");
model.put("FCANCELSTATUS", "A");
Map fapplyorgid = (Map) model.get("FAPPLYORGID");
fapplyorgid.put("FNumber", "1000");
Map fsettlecur = (Map) model.get("FSETTLECUR");
fsettlecur.put("FNUMBER", "PRE001");
List<Map> fpayapplyentry = (List<Map>) model.get("FPAYAPPLYENTRY");
Map fpaypurposeid = (Map) fpayapplyentry.get(0).get("FPAYPURPOSEID");
fpaypurposeid.put("FNumber", "SFKYT08_SYS");
fpayapplyentry.get(0).put("FENDDATE", "2020-03-24 00:00:00");
fpayapplyentry.get(0).put("FEXPECTPAYDATE", "2020-03-24 00:00:00");
fpayapplyentry.get(0).put("FAPPLYAMOUNTFOR", 1000.0);
basic.put("Model", model);
JSONObject jsonObject = new JSONObject();
jsonObject.put("formid", formid);
jsonObject.put("data", basic);
return jsonObject.toString();
}
/**
* 构造提交、审核参数
*
* @param formid 表单id
* @param numbers 编码 多个编码以,分隔
* @param numbers 审核标示 多个以,分隔 和编码一一对应
* @return
*/
public static String buildParam(String formid, String numbers, String flags) {
JSONObject jsonObject = new JSONObject();
JSONObject param = new JSONObject();
if (flags != null) {
String[] arr_flag = flags.split(",");
param.put("InterationFlags", arr_flag);
}
String[] arr_number = numbers.split(",");
param.put("Numbers", arr_number);
jsonObject.put("formid", formid);
jsonObject.put("data", JSON.toJSONString(param));
return JSON.toJSONString(jsonObject);
}
/**
* 构造获取合同参数
*
* @param formid 表单id
* @param projectCode 项目编号
* @param
* @return
*/
public static Map buileContract(String projectCode, String formid) {
Map<String, Object> param = new HashMap<>();
param.put("formid", formid);
param.put("number", projectCode);
return param;
}
}
package com.isoft91.gonn.gps.utils;
import java.text.SimpleDateFormat;
public class DateUtils {
static public Long dateToMillisecond(String date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//要转换的日期格式,根据实际调整""里面内容
try {
Long dateToSecond = sdf.parse(date).getTime();//sdf.parse()实现日期转换为Date格式,然后getTime()转换为毫秒数值
System.out.print(dateToSecond);
return dateToSecond;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
package com.isoft91.gonn.gps.utils;
import com.google.common.collect.Lists;
import org.dozer.DozerBeanMapper;
import java.util.Collection;
import java.util.List;
public class DozerUtils {
private DozerUtils() {
}
/**
* 持有Dozer单例, 避免重复创建DozerMapper消耗资源.
*/
private static DozerBeanMapper dozer = new DozerBeanMapper();
/**
* 基于Dozer转换对象的类型.
*/
public static <T> T map(Object source, Class<T> destinationClass) {
return dozer.map(source, destinationClass);
}
/**
* 基于Dozer转换Collection中对象的类型.
*/
public static <T> List<T> mapList(Collection<?> sourceList, Class<T> destinationClass) {
List<T> destinationList = Lists.newArrayList();
for (Object sourceObject : sourceList) {
T destinationObject = dozer.map(sourceObject, destinationClass);
destinationList.add(destinationObject);
}
return destinationList;
}
/**
* 基于Dozer将对象A的值拷贝到对象B中.
*/
public static void copy(Object source, Object destinationObject) {
dozer.map(source, destinationObject);
}
}
package com.isoft91.gonn.gps.utils;
import org.apache.poi.ss.usermodel.Workbook;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
/**
* TODO
*
* @author :jiangpengpeng
* @date:2020/1/2 15:00
*/
public class EasyPoiUtil {
public static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) {
try {
response.setCharacterEncoding("UTF-8");
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
workbook.write(response.getOutputStream());
} catch (IOException e) {
throw new RuntimeException(e.getMessage());
}
}
}
package com.isoft91.gonn.gps.utils;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* TODO
*
* @author :jiangpengpeng
* @date:2020/2/5 14:42
*/
@Data
@Component
public class KingDeeUrl {
/**
* 基础地址
*/
@Value("${kingdee.url}")
private String url;
/**
* 登录接口
*/
@Value("${kingdee.login}")
private String login;
/**
* 保存接口
*/
@Value("${kingdee.save}")
private String save;
/**
* 提交接口
*/
@Value("${kingdee.submit}")
private String submit;
/**
* 删除接口
*/
@Value("${kingdee.delete}")
private String delete;
/**
* 反审核接口
*/
@Value("${kingdee.unAudit}")
private String unAudit;
/**
* 审核接口
*/
@Value("${kingdee.audit}")
private String audit;
/**
* 用户名
*/
@Value("${kingdee.user}")
private String username;
/**
* 密码
*/
@Value("${kingdee.password}")
private String password;
/**
* 账套id
*/
@Value("${kingdee.DBid}")
private String DBid;
/*
* 数据格式
* */
@Value("${kingdee.Icon}")
private int Icon;
}
package com.isoft91.gonn.gps.utils;
import com.alibaba.fastjson.JSONObject;
import com.isoft91.gonn.gps.sys.service.KingdeeServiceImpl;
import com.isoft91.gonn.gps.utils.Result.Ret;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.Map;
/**
* TODO
*
* @author :jiangpengpeng
* @date:2020/2/7 13:47
*/
@Transactional
@Service
@Slf4j
public class KingdeeCommon {
@Autowired
KingDeeUrl kingDeeUrl;
@Autowired
KingdeeServiceImpl kingdeeService;
/**
* 金蝶登录方法
*
* @return {@link }
* @throws
* @author jiangpengpeng
* @date 2020/2/7 13:49
*/
public String KindeeLogin() {
String loginParam = BaseUtil.buildLogin(kingDeeUrl.getDBid(), kingDeeUrl.getUsername(), kingDeeUrl.getPassword(), kingDeeUrl.getIcon());
Ret login = kingdeeService.login(kingDeeUrl.getUrl() + kingDeeUrl.getLogin(), loginParam);
if ("400".equals(login.getCode())) {
// this.dbError("登录金蝶系统失败" +login.getMessage());
log.info("【登录金蝶系统失败】:{}", login.getMsg());
return null;
} else {
Map<String, Object> map = (Map<String, Object>) login.getData();
return map.get("cookie").toString();
}
}
public String getTask(String url, String date) {
CloseableHttpResponse response = null;
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
try {
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("Content-Type", "application/json;charset=utf-8");
StringEntity postingString = new StringEntity(date, "utf-8");
httpPost.setEntity(postingString);
// 配置信息
RequestConfig requestConfig = RequestConfig.custom()
// 设置连接超时时间(单位毫秒)
.setConnectTimeout(5000)
// 设置请求超时时间(单位毫秒)
.setConnectionRequestTimeout(5000)
// socket读写超时时间(单位毫秒)
.setSocketTimeout(5000)
// 设置是否允许重定向(默认为true)
.setRedirectsEnabled(true).build();
// 将上面的配置信息 运用到这个post请求里
httpPost.setConfig(requestConfig);
// 由客户端执行(发送)post请求
response = httpClient.execute(httpPost);
// 从响应模型中获取响应实体
HttpEntity responseEntity = response.getEntity();
if (response.getStatusLine().getStatusCode() == 200 && responseEntity != null) {
//取出实体中的数据
String str = EntityUtils.toString(responseEntity);
//将数据转换成json数据
JSONObject jsonObject = JSONObject.parseObject(str);
String code = jsonObject.get("code").toString();
return jsonObject.toJSONString();
}
} catch (Exception e) {
} finally {
try {
// 释放资源
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
}
}
package com.isoft91.gonn.gps.utils;
import okhttp3.*;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.io.File;
import java.util.Iterator;
import java.util.Map;
//import org.apache.commons.lang3.exception.ExceptionUtils;
/**
*
* @author David
*/
@Component
public class OkHttpUtil {
private static final Logger logger = LoggerFactory.getLogger(OkHttpUtil.class);
// @Autowired
private OkHttpClient okHttpClient = new OkHttpClient();
/**
* get
*
* @param url 请求的url
* @param queries 请求的参数,在浏览器?后面的数据,没有可以传null
* @return
*/
public String get(String url, Map<String, String> queries, Map<String, String> headerParams) {
String responseBody = "";
StringBuffer sb = new StringBuffer(url);
if (queries != null && queries.keySet().size() > 0) {
boolean firstFlag = true;
Iterator iterator = queries.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry<String, String>) iterator.next();
if (firstFlag) {
sb.append("?" + entry.getKey() + "=" + entry.getValue());
firstFlag = false;
} else {
sb.append("&" + entry.getKey() + "=" + entry.getValue());
}
}
}
Request.Builder requestBuilder = new Request.Builder().url(url);
if(headerParams != null){
for(Map.Entry<String, String> entry : headerParams.entrySet()) {
requestBuilder.addHeader(entry.getKey(), entry.getValue());
}
}
Request request = requestBuilder.url(sb.toString())
.build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp put error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return responseBody;
}
/**
* post
*
* @param url 请求的url
* @param queries post 地址
* @param body 请求参数
*
* @return
*/
public String post(String url, Map<String, String> queries, Map<String, String> headerParams,Map<String, String> body) {
String responseBody = "";
FormBody.Builder builder = new FormBody.Builder();
//添加参数
if (body != null && body.keySet().size() > 0) {
for (String key : body.keySet()) {
builder.add(key, body.get(key));
}
}
//拼接地址
StringBuffer sb = new StringBuffer(url);
if (queries != null && queries.keySet().size() > 0) {
boolean firstFlag = true;
Iterator iterator = queries.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry<String, String>) iterator.next();
if (firstFlag) {
sb.append("?" + entry.getKey() + "=" + entry.getValue());
firstFlag = false;
} else {
sb.append("&" + entry.getKey() + "=" + entry.getValue());
}
}
}
url = sb.toString();
Request.Builder requestBuilder = new Request.Builder().url(url);
for(Map.Entry<String, String> entry : headerParams.entrySet()) {
requestBuilder.addHeader(entry.getKey(), entry.getValue());
}
Request request = requestBuilder.post(builder.build()).build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp post error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return responseBody;
}
/**
* post
*
* @param url 请求的url
* @param json post form 提交的参数
* @return
*/
public String postForJson(String url, Map<String, String> queries, Map<String, String> headerParams,String json) {
RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json);
String responseBody = "";
//拼接地址
StringBuffer sb = new StringBuffer(url);
if (queries != null && queries.keySet().size() > 0) {
boolean firstFlag = true;
Iterator iterator = queries.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry<String, String>) iterator.next();
if (firstFlag) {
sb.append("?" + entry.getKey() + "=" + entry.getValue());
firstFlag = false;
} else {
sb.append("&" + entry.getKey() + "=" + entry.getValue());
}
}
}
url = sb.toString();
Request.Builder requestBuilder = new Request.Builder().url(url);
for(Map.Entry<String, String> entry : headerParams.entrySet()) {
requestBuilder.addHeader(entry.getKey(), entry.getValue());
}
Request request = requestBuilder.post(requestBody).build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
String string = response.body().string();
return string;
}
} catch (Exception e) {
logger.error("okhttp post error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return responseBody;
}
/**
* post 上传文件
*
* @param url
* @param params
* @param fileType
* @return
*/
public String postFile(String url, Map<String, Object> params, String fileType, Map<String, String> headerParams) {
String responseBody = "";
MultipartBody.Builder builder = new MultipartBody.Builder();
//添加参数
if (params != null && params.keySet().size() > 0) {
for (String key : params.keySet()) {
if (params.get(key) instanceof File) {
File file = (File) params.get(key);
builder.addFormDataPart(key, file.getName(), RequestBody.create(MediaType.parse(fileType), file));
continue;
}
builder.addFormDataPart(key, params.get(key).toString());
}
}
Request.Builder requestBuilder = new Request.Builder();
for(Map.Entry<String, String> entry : headerParams.entrySet()) {
requestBuilder.addHeader(entry.getKey(), entry.getValue());
}
Request request = requestBuilder.url(url).post(builder.build()).build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp postFile error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return responseBody;
}
}
\ No newline at end of file
package com.isoft91.gonn.gps.utils;
/**
* @Author: jiangpengpeng
* @Description:
* @Date: Created in 11:00 2019/9/16
* @Modified By:
*/
import com.alibaba.fastjson.JSON;
import com.isoft91.gonn.gps.utils.Result.Ret;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
/**
* 配置文件工具类
*
* @author yule
* @date 2018/9/28 16:26
*/
public class PropertiesUtils {
private static final Logger logger = LoggerFactory.getLogger(PropertiesUtils.class);
/**
* 读取json文件,返回json字符串
*
* @param fileName
* @return
*/
public static String readJsonFile(String fileName) {
FileReader fileReader = null;
Reader reader = null;
try {
ClassPathResource classPathResource = new ClassPathResource(fileName);
reader = new InputStreamReader(classPathResource.getInputStream(), "UTF-8");
int ch;
StringBuffer sb = new StringBuffer();
while ((ch = reader.read()) != -1) {
sb.append((char) ch);
}
reader.close();
String jsonStr = sb.toString();
return jsonStr;
} catch (IOException e) {
e.printStackTrace();
logger.error("读取文件报错", e);
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
/**
* 时间格式转换
*
* @param date
* @return
*/
public static String kingDeeTime(Date date) {
String timeFormat=null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (date == null) {
timeFormat = sdf.format(new Date());
}else {
timeFormat = sdf.format(date);
}
return timeFormat;
}
/**
* @param
* @return
* @author: jiangpengpeng
* @description: 返回值状态
* @date: 2019/9/18 14:31
*/
public static String getResultStaus(Ret Result) {
if ("400".equals(Result.getCode())){
return "false";
}
Map data = (Map) JSON.parse(Result.getData().toString());
Map responseStatus = (Map) data.get("ResponseStatus");
return responseStatus.get("IsSuccess").toString();
}
;
}
package com.isoft91.gonn.gps.utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
@Component
public class RedisUtils {
@Autowired
private RedisTemplate<String, String> redisTemplate;
/**
* 读取缓存
*
* @param key
* @return
*/
public String get(final String key) {
return redisTemplate.opsForValue().get(key);
}
public Long getExpire(final String key) {
return redisTemplate.getExpire(key);
}
/**
* 写入缓存
*/
public boolean set(final String key, String value) {
boolean result = false;
try {
redisTemplate.opsForValue().set(key, value);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 写入缓存(并设置有效时间)
*/
public boolean set(final String key, String value, Long time) {
boolean result = false;
try {
redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 更新缓存
*/
public boolean getAndSet(final String key, String value) {
boolean result = false;
try {
redisTemplate.opsForValue().getAndSet(key, value);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 删除缓存
*/
public boolean delete(final String key) {
boolean result = false;
try {
redisTemplate.delete(key);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
package com.isoft91.gonn.gps.utils.Result;
import lombok.Data;
/**
* TODO
*
* @author :jiangpengpeng
* @date:2020/4/1 10:12
*/
@Data
public class CommitMessageUtil {
public static final String pass = "通过";
public static final String nopass = "驳回";
}
package com.isoft91.gonn.gps.utils.Result;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.isoft91.gonn.gps.config.exception.ExceptionCommon;
/**
* 请求上下文
* 主要用来生成/获取请求id等信息
* <p>
* 访问controller时生成
* controller在return时候获取
* Created by yc on 2017/3/28.
*/
public class RequestContext {
private static ThreadLocal<RequestInfo> requestInfoTheadLocal = new ThreadLocal<>();
private RequestContext(){}
/**
* 生成并设置
*
* @return
*/
public static void setRequestInfo(RequestInfo requestInfo) {
if(requestInfo == null){
throw new ExceptionCommon("requestInfo is null");
}
requestInfoTheadLocal.remove();
long requestId = IdWorker.getId();
requestInfo.setRequestId(requestId);
requestInfoTheadLocal.set(requestInfo);
}
/**
* 获取
*
* @return
*/
public static RequestInfo getRequestInfo() {
return requestInfoTheadLocal.get();
}
/**
* 清除
*/
public static void clear() {
requestInfoTheadLocal.remove();
}
}
package com.isoft91.gonn.gps.utils.Result;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
@NoArgsConstructor
public class RequestInfo implements Serializable {
private static final long serialVersionUID = 1L;
private long requestId;
}
package com.isoft91.gonn.gps.utils.Result;
public enum ResultEnums {
SUCCESS("200", "操作成功"),
LOGIN_SUCCESS("200","登录成功"),
DEL_TEM_ERROR("200","登录成功"),
ERROR("400", "操作失败"),
LOGIN_ERROR("401","登录失败"),
UNAUTHORIZED("402", "未认证(签名错误)"),
SYSTEM_ERROR("403", "系统异常"),
NOT_FIND("404", "接口找不到"),
BUSINESS_ERROR("500", "业务逻辑错误");
private String code;
private String msg;
ResultEnums(String code, String msg) {
this.code = code;
this.msg = msg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
package com.isoft91.gonn.gps.utils.Result;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.core.annotation.Order;
import java.io.Serializable;
@Setter
@Getter
public class Ret<T> implements Serializable {
private static final long serialVersionUID = 1L;
@Order(1)
@ApiModelProperty(value = "响应状态码")
private String code;
@Order(2)
@ApiModelProperty(value = "响应描述")
private String msg;
@Order(3)
@ApiModelProperty(value = "请求时间")
private Long timestamp;
@Order(4)
@ApiModelProperty(value = "请求ID")
private String requestId;
@Order(5)
@ApiModelProperty(value = "响应数据")
private T data;
public Ret(ResultEnums resultEnums) {
this.code = resultEnums.getCode();
this.msg = resultEnums.getMsg();
this.timestamp = System.currentTimeMillis();
if (RequestContext.getRequestInfo() != null) {
this.requestId = String.valueOf(RequestContext.getRequestInfo().getRequestId());
}
}
public Ret(ResultEnums resultEnums, T data) {
this.code = resultEnums.getCode();
this.msg = resultEnums.getMsg();
this.timestamp = System.currentTimeMillis();
this.data = data;
if (RequestContext.getRequestInfo() != null) {
this.requestId = String.valueOf(RequestContext.getRequestInfo().getRequestId());
}
}
//构建成功返回
public static Ret build(ResultEnums resultEnums) {
return new Ret(resultEnums);
}
//构建成功返回
public static Ret ok() {
return new Ret(ResultEnums.SUCCESS);
}
//构建错误返回
public static Ret error() {
return new Ret(ResultEnums.ERROR);
}
public String getMsg() {
return msg;
}
public Ret<T> setMsg(String msg) {
this.msg = msg;
return this;
}
public T getData() {
return data;
}
public Ret<T> setData(T data) {
this.data = data;
return this;
}
}
package com.isoft91.gonn.gps.utils;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
public class StringJsonUtils {
public static Map<String, Object> jsonStringToMap(String jsonString ){
Map<String, Object> map =new HashMap<>();
JSONObject jsonObject =JSONObject.parseObject(jsonString);
for(Object k :jsonObject.keySet()){
Object o=jsonObject.get(k);
if(o instanceof JSONArray){
List<Map<String, Object>> list=new ArrayList<>();
Iterator<Object> it = ((JSONArray) o).iterator();
while (it.hasNext()){
Object obj=it.next();
list.add(jsonObject);
list.add(jsonStringToMap(obj.toString()));
}
map.put(k.toString(),list);
}else if(o instanceof JSONObject){
// 如果内层是json对象的话,继续解析
map.put(k.toString(), jsonStringToMap(o.toString()));
}else {
// 如果内层是普通对象的话,直接放入map中
// map.put(k.toString(), o.toString().trim());
if (o instanceof String) {
map.put(k.toString(), o.toString().trim());
} else {
map.put(k.toString(), o);
}
}
}
return map;
}
}
package com.isoft91.gonn.gps.utils;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
/**
* 对象属性去除前后空格工具类
*/
public class StringStr {
public static void beanAttributeValueTrim(Object bean) throws Exception {
if (bean != null) {
//获取所有的字段包括public,private,protected,private
Field[] fields = bean.getClass().getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
Field f = fields[i];
if (f.getType().getName().equals("java.lang.String")) {
String key = f.getName();
//获取字段名
Object value = getFieldValue(bean, key);
if (value == null)
continue;
setFieldValue(bean, key, value.toString().trim());
}
}
}
}
private static Object getFieldValue(Object bean, String fieldName)
throws Exception {
StringBuffer result = new StringBuffer();
String methodName = result.append("get")
.append(fieldName.substring(0, 1).toUpperCase())
.append(fieldName.substring(1)).toString();
Object rObject = null;
Method method = null;
@SuppressWarnings("rawtypes")
Class[] classArr = new Class[0];
method = bean.getClass().getMethod(methodName, classArr);
rObject = method.invoke(bean, new Object[0]);
return rObject;
}
private static void setFieldValue(Object bean, String fieldName, Object value)
throws Exception {
StringBuffer result = new StringBuffer();
String methodName = result.append("set")
.append(fieldName.substring(0, 1).toUpperCase())
.append(fieldName.substring(1)).toString();
//利用反射调用bean.set方法将value设置到字段
@SuppressWarnings("rawtypes")
Class[] classArr = new Class[1];
classArr[0] = "java.lang.String".getClass();
Method method = bean.getClass().getMethod(methodName, classArr);
method.invoke(bean, value);
}
}
package com.isoft91.gonn.gps.utils.http;
/**
* @Author: jiangpengpeng
* @Description:
* @Date: Created in 11:15 2019/9/11
* @Modified By:
*/
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.util.CollectionUtils;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.util.Map;
import java.util.Set;
public class HttpUtil {
private HttpUtil(){
}
/**
* 连接超时时间
*/
private static final int CONN_TIMEOUT = 999999999;
/**
* 请求超时时间
*/
private static final int READ_TIMEOUT = 999999999;
private static RestTemplate restTemplate = null;
static{
//设置超时时间
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(CONN_TIMEOUT);
requestFactory.setReadTimeout(READ_TIMEOUT);
restTemplate = new RestTemplate(requestFactory);
}
/**
* 设置header公共参数
*/
private static HttpHeaders initHeader(){
HttpHeaders headers = new HttpHeaders();
headers.add("Accept", "application/json");
headers.add("Accpet-Encoding", "gzip");
headers.add("Content-Encoding", "UTF-8");
headers.add("Content-Type", "application/json; charset=UTF-8");
return headers;
}
/**
* 设置header参数
* @param httpHeaders
* @param headers
*/
private static void setHeaderParam(HttpHeaders httpHeaders, Map<String,Object> headers){
if(!CollectionUtils.isEmpty(headers)){
Set<String> keys = headers.keySet();
for(String key:keys){
httpHeaders.add(key,headers.get(key).toString());
}
}
}
/**
* 设置参数
* @param param
* @return
*/
private static MultiValueMap<String,Object> setParam(Map<String,Object> param){
MultiValueMap<String,Object> valueMap = new LinkedMultiValueMap<>();
if(CollectionUtils.isEmpty(param)){
return valueMap;
}
Set<String> paramKeys = param.keySet();
for(String key:paramKeys){
valueMap.add(key,param.get(key).toString());
}
return valueMap;
}
/**
* 发送Get请求
* @param url 请求地址
* @param headers 请求头参数
* @return
*/
public static String httpGet(String url,Map<String,Object> headers){
//初始化header公共参数
HttpHeaders httpHeaders = initHeader();
//设置header参数
setHeaderParam(httpHeaders,headers);
//发送请求
HttpEntity httpEntity = new HttpEntity(null,httpHeaders);
ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.GET,httpEntity,String.class);
return responseEntity.getBody();
}
/**
*
* http://36.110.39.213:8989/Home/Index/getProNumber?formid=PAEZ_ProjectNo&number=测试测试111
* http://36.110.39.213:8989/Home/Index/getContractNumber?formid=PAEZ_ProjectNo&projectCode=YTTT-4-LTBQ-19001
*/
/**
* 发送Get请求
* @param url 请求地址
* @param headers 请求头参数
* @param param 查询参数
* @return
*/
public static String httpGet(String url, Map<String,Object> headers,Map<String,Object> param){
//如果查询参数为空,则调用不带参数的Get请求
if(CollectionUtils.isEmpty(param)){
return httpGet(url,headers);
}
//组装查询参数
Set<String> keys = param.keySet();
StringBuilder builder = new StringBuilder();
builder.append("?");
for(String key:keys){
builder.append(key).append("=").append(param.get(key)).append("&");
}
builder.deleteCharAt(builder.lastIndexOf("&"));
url = url+builder.toString();
//发送请求
return httpGet(url,headers);
}
/**
* 发送Post请求
* @param url 请求地址
* @param param 请求参数
* @return
*/
public static String httpPost(String url,Map<String,Object> param){
//初始化header公共参数
HttpHeaders httpHeaders = initHeader();
//设置参数
MultiValueMap<String,Object> valueMap = setParam(param);
//发送请求
return toPost(url,httpHeaders,valueMap);
}
/**
* 发送Post请求
* @param url 请求地址
* @param json json格式参数参数
* @return
*/
public static ResponseEntity<String> httpPost(String url, String json){
//初始化header公共参数
HttpHeaders httpHeaders = initHeader();
//发送请求
return toPost(url,httpHeaders,json);
}
/**
* 发送Post请求
* @param url 请求地址
* @param json json格式参数参数
* @return
*/
public static String httpPost(String url,Map<String,Object> header,String json){
//初始化header公共参数
HttpHeaders httpHeaders = initHeader();
setHeaderParam(httpHeaders,header);
//发送请求
return toPost(url,httpHeaders,json).getBody();
}
/**
* 发送POST请求
* @param url 请求地址
* @param headers 请求头参数
* @param param 查询参数
* @return
*/
public static String httpPost(String url, Map<String,Object> headers,Map<String,Object> param){
//初始化header公共参数
HttpHeaders httpHeaders = initHeader();
//设置header参数
setHeaderParam(httpHeaders,headers);
//设置参数
MultiValueMap<String,Object> valueMap = setParam(param);
return toPost(url,httpHeaders,valueMap);
}
/**
* 发送请求
* @param valueMap
* @param httpHeaders
* @param url
* @return
*/
private static String toPost(String url, HttpHeaders httpHeaders, MultiValueMap<String,Object> valueMap){
HttpEntity<MultiValueMap<String,Object>> httpEntity = new HttpEntity<>(valueMap,httpHeaders);
ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST,httpEntity,String.class);
return responseEntity.getBody();
}
/**
* 发送请求
* @param valueMap
* @param httpHeaders
* @param url
* @return
*/
private static String toGet(String url, HttpHeaders httpHeaders, MultiValueMap<String,Object> valueMap){
HttpEntity<MultiValueMap<String,Object>> httpEntity = new HttpEntity<>(valueMap,httpHeaders);
ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.GET,httpEntity,String.class);
return responseEntity.getBody();
}
/**
* 发送请求
* @param json
* @param httpHeaders
* @param url
* @return
*/
private static ResponseEntity<String> toPost(String url, HttpHeaders httpHeaders, String json){
HttpEntity<String> httpEntity = new HttpEntity<>(json,httpHeaders);
ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST,httpEntity,String.class);
return responseEntity;
}
}
{
"Creator": "",
"NeedUpDateFields": [],
"NeedReturnFields": [],
"IsDeleteEntry": "true",
"SubSystemId": "",
"IsVerifyBaseDataField": "false",
"IsEntryBatchFill": "true",
"ValidateFlag": "true",
"NumberSearch": "true",
"InterationFlags": "",
"IsAutoSubmitAndAudit": "false",
"Model": {
"FCOSTCENTERID": 0,
"FCreateOrgId": {
"FNumber": "1000"
},
"FNumber": "",
"FName": "",
"FCODE": "",
"FBUSINESSTYPE": "3",
"FRELATIONTYPE": "PAEZ_ProjectNo",
"FUseOrgId": {
"FNumber": "1000"
},
"FDescription": "",
"FWORKACTIVEID": [
{
"FNumber": ""
}
],
"FRELATION": {
"FNumber": ""
},
"FISDEFAULT": "false",
"FSUPPLIERNO": ""
}
}
\ No newline at end of file
server:
port: 8031
tomcat:
max-swallow-size: -1
spring:
activiti:
database-schema-update: true #自动更新数据库结构
check-process-definitions: false #自动检查、部署流程定义文件
datasource:
driver-class-name: com.mysql.jdbc.Driver
#url: jdbc:mysql://123.56.169.148:3306/pms?useUnicode=true&characterEncoding=utf8&serverTimezone=CTT
#username: gonn
#password: abcd!@#$
url: jdbc:mysql://123.114.208.158:33060/oa?useUnicode=true&characterEncoding=utf8&serverTimezone=CTT
username: gonn
password: qazxsw!2
redis:
host: 127.0.0.1
#host: 172.18.0.9
port: 6379
database: 0
jedis:
pool:
max-active: 100
max-wait: 3000
max-idle: 20
min-idle: 2
timeout: 5000
password:
jackson:
date-format: yyyy/MM/dd HH:mm:ss
time-zone: CTT
default-property-inclusion: non_null
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
file:
upload: D:/upload
jwt:
tokenHeader: Authorization
tokenPrefix: Bearer
secret: 91isoft_jwt
expiration: 60000000 # 1000分钟
address: C:\Users\isoft_zhang\Desktop #下载地址
global:
keyUser: INJq4HXEGI
path:
# 同步用户
app_id: b617866c20482d133d5de66fceb37da3
user_synchronized: http://jz.gonn.com.cn/v1
dept: /deptrank
user: /staffs
role: /roles
# 其他基础信息
regions: /regions
business: /business
operators: /operators
source: /source
customers: /customers
basestate: /basestate
permission: /permission
app_secret: 4d8e605fa7ed546c4bcb33dee1381179
serverAuthenticateStaticKey: de5kio2f
# user_synchronized: http://39.155.253.71:10038/v1
kingdee:
url: http://36.110.39.211/k3cloud/
login: Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc
save: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc
submit: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc
audit: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc
delete: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Delete.common.kdsvc
unAudit: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.UnAudit.common.kdsvc
user: Administrator
password: 9inOAJrH1Pifue@2021
DBid: 5e64f6ff0bd47f
Icon: 2052
mybatis-plus:
mapper-locations: classpath:mapper/**/*Mapper.xml
dictionary:
companyType: companyType
templateLevel:
one: 1
two: 2
three: 3
templateType:
project: project #项目类型
service: service #业务类型
business: business #商机类型
break: break #拆站或者取消需求
templateStage:
project: PROJECT_STAGE
service: SERVICE_STAGE
business: business_stage
mapper: PROJECT_SERVICE_MAPPER
tempType: TEMP_TYPE
tempGrade: TEMP_GRADE
#特殊标识
pmsField:
fieldSrviceType: serviceType
projectId: projectId
projectNumber: projectNumber
template:
processfile:
path: D://processfile//
# 业务信息
gs:
api: https://oa.gonn.com.cn/api.php
openkey: 5bdfcedb618e1e03abf18e391278c1f4
cat: opencat
project: openpaymentDetails
projectA: ProPayList
emPayList: EmPayList
sup: opensupplier
cust: opencustomer
newApi: https://oa.gonn.com.cn/api.php
newApi2: https://oa.gonn.com.cn/api.php
fk: openfk
create: create
openfkinfo: openfkinfo
list: list
fkinfor: fkinfor
update: update
project:
url: http://123.56.169.148:8088/page/index.html#/
workOrder:
saveTodoUrl: http://123.56.169.148:8095/todo/saveOutSideTodo
updateTodoUrl: http://123.56.169.148:8095/todo/updateOutSideTodo
secret: 8fe8c28a6b3e4783b345664ad378abtt
appid: gxpms2021todo
specialDept:
whb: whb
swagger:
swagger: true
server:
port: 8085
tomcat:
max-swallow-size: -1
spring:
activiti:
database-schema-update: true #自动更新数据库结构
check-process-definitions: false #自动检查、部署流程定义文件
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://101.200.87.54:10036/pms?useUnicode=true&characterEncoding=utf8&serverTimezone=CTT
username: pms
password: CWib^nygsUeA4ay1
redis:
host: 172.17.209.175
port: 6379
database: 0
jedis:
pool:
max-active: 100
max-wait: 3000
max-idle: 20
min-idle: 2
timeout: 5000
jackson:
date-format: yyyy/MM/dd HH:mm:ss
time-zone: CTT
default-property-inclusion: non_null
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
file:
upload: /work/upload
jwt:
tokenHeader: Authorization
tokenPrefix: Bearer
secret: 91isoft_jwt
expiration: 60000000 # 1000分钟
address: /work/download #下载地址
global:
keyUser: INJq4HXEGI
path:
# 同步用户
app_id: b617866c20482d133d5de66fceb37da3
user_synchronized: http://jz.gonn.com.cn/v1
dept: /deptrank
user: /staffs
role: /roles
# 其他基础信息
regions: /regions
business: /business
operators: /operators
source: /source
customers: /customers
basestate: /basestate
permission: /permission
app_secret: 4d8e605fa7ed546c4bcb33dee1381179
serverAuthenticateStaticKey: de5kio2f
# user_synchronized: http://39.155.253.71:10038/v1
kingdee:
url: http://36.110.39.211/k3cloud/
login: Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc
save: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc
submit: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc
audit: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc
delete: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Delete.common.kdsvc
unAudit: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.UnAudit.common.kdsvc
user: Administrator
password: 9inOAJrH1Pifue@2021
DBid: 5e64f6ff0bd47f
Icon: 2052
mybatis-plus:
mapper-locations: classpath:mapper/**/*Mapper.xml
dictionary:
companyType: companyType
templateLevel:
one: 1
two: 2
three: 3
templateType:
project: project #项目类型
service: service #业务类型
business: business #商机类型
break: break #拆站或者取消需求
templateStage:
project: PROJECT_STAGE
service: SERVICE_STAGE
business: business_stage
mapper: PROJECT_SERVICE_MAPPER
tempType: TEMP_TYPE
tempGrade: TEMP_GRADE
#特殊标识
pmsField:
fieldSrviceType: serviceType
projectId: projectId
projectNumber: projectNumber
template:
processfile:
path: /work/processfile/
# 业务信息
gs:
api: https://oa.gonn.com.cn/api.php
openkey: 5bdfcedb618e1e03abf18e391278c1f4
cat: opencat
project: openpaymentDetails
projectA: ProPayList
emPayList: EmPayList
sup: opensupplier
cust: opencustomer
newApi: https://oa.gonn.com.cn/api.php
newApi2: https://oa.gonn.com.cn/api.php
fk: openfk
create: create
openfkinfo: openfkinfo
list: list
fkinfor: fkinfor
update: update
specialDept:
whb: whb
server:
port: 38081
tomcat:
max-swallow-size: -1
spring:
activiti:
database-schema-update: true #自动更新数据库结构
check-process-definitions: false #自动检查、部署流程定义文件
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://39.155.253.70:10036/gonn_pms?useUnicode=true&characterEncoding=utf8&serverTimezone=CTT
username: root
password: pvv5718J0CwhNfn4B^8^H3igPj#oiQkX
redis:
host: 192.168.1.70
port: 6379
database: 0
jedis:
pool:
max-active: 100
max-wait: 3000
max-idle: 20
min-idle: 2
timeout: 5000
jackson:
date-format: yyyy/MM/dd HH:mm:ss
time-zone: CTT
default-property-inclusion: non_null
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
file:
upload: /work/upload
jwt:
tokenHeader: Authorization
tokenPrefix: Bearer
secret: 91isoft_jwt
expiration: 60000000 # 1000分钟
address: /work/download #下载地址
global:
keyUser: INJq4HXEGI
path:
# 同步用户
app_id: b617866c20482d133d5de66fceb37da3
user_synchronized: http://jz-test.gonn.tech/v1
dept: /deptrank
user: /staffs
role: /roles
# 其他基础信息
regions: /regions
business: /business
operators: /operators
source: /source
customers: /customers
basestate: /basestate
permission: /permission
app_secret: 4d8e605fa7ed546c4bcb33dee1381179
serverAuthenticateStaticKey: de5kio2f
# user_synchronized: http://39.155.253.71:10038/v1
kingdee:
url: http://36.110.39.211/k3cloud/
login: Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc
save: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc
submit: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc
audit: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc
user: Administrator
password: 666666
DBid: 5da1768e3a4525
Icon: 2052
mybatis-plus:
mapper-locations: classpath:mapper/**/*Mapper.xml
dictionary:
companyType: companyType
templateLevel:
one: 1
two: 2
three: 3
templateType:
project: project #项目类型
service: service #业务类型
business: business #商机类型
break: break #拆站或者取消需求
templateStage:
project: PROJECT_STAGE
service: SERVICE_STAGE
business: business_stage
mapper: PROJECT_SERVICE_MAPPER
tempType: TEMP_TYPE
tempGrade: TEMP_GRADE
#特殊标识
pmsField:
fieldSrviceType: serviceType
projectId: projectId
projectNumber: projectNumber
template:
processfile:
path: /work/processfile/
# 业务信息
gs:
api: http://chengye-dev.gonn.tech/api.php
openkey: 5bdfcedb618e1e03abf18e391278c1f4
cat: opencat
sup: opensupplier
cust: opencustomer
newApi: http://chengye-dev.gonn.tech/api.php
newApi2: http://chengye-dev.gonn.tech/api.php
fk: openfk
create: create
openfkinfo: openfkinfo
list: list
fkinfor: fkinfor
update: update
specialDept:
whb: whb
server:
port: 38081
tomcat:
max-swallow-size: -1
spring:
activiti:
database-schema-update: true #自动更新数据库结构
check-process-definitions: false #自动检查、部署流程定义文件
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://39.155.253.71:3306/gonn_pms?useUnicode=true&characterEncoding=utf8&serverTimezone=CTT
username: root
password: aLN%4Jx7ZsmsoMlOB0XEd7
redis:
host: 192.168.1.71
port: 6379
database: 0
jedis:
pool:
max-active: 100
max-wait: 3000
max-idle: 20
min-idle: 2
timeout: 5000
jackson:
date-format: yyyy/MM/dd HH:mm:ss
time-zone: CTT
default-property-inclusion: non_null
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
file:
upload: /work/upload
jwt:
tokenHeader: Authorization
tokenPrefix: Bearer
secret: 91isoft_jwt
expiration: 60000000 # 1000分钟
address: /work/download #下载地址
global:
keyUser: INJq4HXEGI
path:
# 同步用户
app_id: b617866c20482d133d5de66fceb37da3
user_synchronized: http://jz-test.gonn.tech/v1
dept: /deptrank
user: /staffs
role: /roles
# 其他基础信息
regions: /regions
business: /business
operators: /operators
source: /source
customers: /customers
basestate: /basestate
permission: /permission
app_secret: 4d8e605fa7ed546c4bcb33dee1381179
serverAuthenticateStaticKey: de5kio2f
# user_synchronized: http://39.155.253.71:10038/v1
kingdee:
url: http://36.110.39.211/k3cloud/
login: Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc
save: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc
submit: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc
audit: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc
user: Administrator
password: 666666
DBid: 5da1768e3a4525
Icon: 2052
mybatis-plus:
mapper-locations: classpath:mapper/**/*Mapper.xml
dictionary:
companyType: companyType
templateLevel:
one: 1
two: 2
three: 3
templateType:
project: project #项目类型
service: service #业务类型
business: business #商机类型
break: break #拆站或者取消需求
templateStage:
project: PROJECT_STAGE
service: SERVICE_STAGE
business: business_stage
mapper: PROJECT_SERVICE_MAPPER
tempType: TEMP_TYPE
tempGrade: TEMP_GRADE
#特殊标识
pmsField:
fieldSrviceType: serviceType
projectId: projectId
projectNumber: projectNumber
template:
processfile:
path: /work/processfile/
# 业务信息
gs:
api: http://chengye-dev.gonn.tech/api.php
openkey: 5bdfcedb618e1e03abf18e391278c1f4
cat: opencat
sup: opensupplier
cust: opencustomer
newApi: http://chengye-dev.gonn.tech/api.php
newApi2: http://chengye-dev.gonn.tech/api.php
fk: openfk
create: create
openfkinfo: openfkinfo
list: list
fkinfor: fkinfor
update: update
specialDept:
whb: whb
server:
port: 38081
tomcat:
max-swallow-size: -1
spring:
activiti:
database-schema-update: true #自动更新数据库结构
check-process-definitions: false #自动检查、部署流程定义文件
datasource:
driver-class-name: com.mysql.jdbc.Driver
# url: jdbc:mysql://39.155.253.71:3306/gonn_pms?useUnicode=true&characterEncoding=utf8&serverTimezone=CTT&useSSL=false
url: jdbc:mysql://39.155.253.71:3306/gonn_pms?useUnicode=true&characterEncoding=utf8&serverTimezone=CTT&useSSL=false
username: root
password: aLN%4Jx7ZsmsoMlOB0XEd7
# pssword: pvv5718J0CwhNfn4B^8^H3igPj#oiQkX
# 开发
# url: jdbc:mysql://106.2.11.235:32306/gonn_pms?useUnicode=true&characterEncoding=utf8&serverTimezone=CTT
# 测试
# url: jdbc:mysql://106.2.13.198:32306/gonn_pms?useUnicode=true&characterEncoding=utf8&serverTimezone=CTT
# username: root
# password: pvv5718J0CwhNfn4B^8^H3igPj#oiQkX
jackson:
date-format: yyyy/MM/dd HH:mm:ss
time-zone: CTT
default-property-inclusion: non_null
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
file:
upload: /work/upload
jwt:
tokenHeader: Authorization
tokenPrefix: Bearer
secret: 91isoft_jwt
expiration: 60000000 # 1000分钟
address: /work/download #下载地址
global:
path:
app_id: b617866c20482d133d5de66fceb37da3
user_synchronized: http://jz-test.gonn.tech/v1
dept: /deptrank
user: /staffs
role: /roles
regions: /regions
business: /business
operators: /operators
source: /source
customers: /customers
basestate: /basestate
permission: /permission
app_secret: 4d8e605fa7ed546c4bcb33dee1381179
serverAuthenticateStaticKey: de5kio2f
# user_synchronized: http://39.155.253.71:10038/v1
kingdee:
url: http://36.110.39.211/k3cloud/
login: Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc
save: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc
submit: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc
audit: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc
user: Administrator
password: 666666
DBid: 5da1768e3a4525
Icon: 2052
mybatis-plus:
mapper-locations: classpath:mapper/**/*Mapper.xml
dictionary:
companyType: companyType
templateLevel:
one: 1
two: 2
three: 3
templateType:
project: project #项目类型
service: service #业务类型
business: business #商机类型
break: break #拆站或者取消需求
templateStage:
project: PROJECT_STAGE
service: SERVICE_STAGE
business: business_stage
mapper: PROJECT_SERVICE_MAPPER
tempType: TEMP_TYPE
tempGrade: TEMP_GRADE
#特殊标识
pmsField:
fieldSrviceType: serviceType
projectId: projectId
projectNumber: projectNumber
template:
processfile:
path: /work/processfile/
gs:
api: http://chengye-dev.gonn.tech/api.php
openkey: 5bdfcedb618e1e03abf18e391278c1f4
cat: opencat
sup: opensupplier
cust: opencustomer
newApi: http://chengye-dev.gonn.tech/api.php
newApi2: http://chengye-dev.gonn.tech/api.php
fk: openfk
create: create
openfkinfo: openfkinfo
list: list
fkinfor: fkinfor
update: update
specialDept:
whb: whb
\ No newline at end of file
server:
port: 8081
tomcat:
max-swallow-size: -1
spring:
activiti:
database-schema-update: false #自动更新数据库结构
check-process-definitions: false #自动检查、部署流程定义文件
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://gs_mysql:3306/gonn_pms?useUnicode=true&characterEncoding=utf8&serverTimezone=CTT
username: root
password: 123456
jackson:
date-format: yyyy/MM/dd HH:mm:ss
time-zone: CTT
default-property-inclusion: non_null
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
file:
upload: /work/upload
jwt:
tokenHeader: Authorization
tokenPrefix: Bearer
secret: 91isoft_jwt
expiration: 60000000 # 1000分钟
address: /work/download #下载地址
global:
keyUser: INJq4HXEGI
path:
# 同步用户
app_id: b617866c20482d133d5de66fceb37da3
user_synchronized: http://jz-test.gonn.tech/v1
dept: /deptrank
user: /staffs
role: /roles
# 其他基础信息
regions: /regions
business: /business
operators: /operators
source: /source
customers: /customers
basestate: /basestate
permission: /permission
app_secret: 4d8e605fa7ed546c4bcb33dee1381179
serverAuthenticateStaticKey: de5kio2f
# user_synchronized: http://39.155.253.71:10038/v1
kingdee:
url: http://36.110.39.211/k3cloud/
login: Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc
save: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc
submit: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc
audit: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc
user: Administrator
password: 666666
DBid: 5da1768e3a4525
Icon: 2052
mybatis-plus:
mapper-locations: classpath:mapper/**/*Mapper.xml
dictionary:
companyType: companyType
templateLevel:
one: 1
two: 2
three: 3
templateType:
project: project #项目类型
service: service #业务类型
business: business #商机类型
break: break #拆站或者取消需求
templateStage:
project: PROJECT_STAGE
service: SERVICE_STAGE
business: business_stage
mapper: PROJECT_SERVICE_MAPPER
tempType: TEMP_TYPE
tempGrade: TEMP_GRADE
#特殊标识
pmsField:
fieldSrviceType: serviceType
projectId: projectId
projectNumber: projectNumber
template:
processfile:
path: /work/processfile/
# 业务信息
gs:
api: http://chengye-dev.gonn.tech/api.php
openkey: 5bdfcedb618e1e03abf18e391278c1f4
cat: opencat
sup: opensupplier
cust: opencustomer
newApi: http://chengye-dev.gonn.tech/api.php
newApi2: http://chengye-dev.gonn.tech/api.php
fk: openfk
create: create
openfkinfo: openfkinfo
list: list
fkinfor: fkinfor
update: update
specialDept:
whb: whb
\ No newline at end of file
spring:
profiles:
active: dev
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
\ No newline at end of file
${AnsiColor.BRIGHT_GREEN}
${AnsiColor.BRIGHT_RED}
Application Version: ${application.version}${application.formatted-version}
Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version}
___ __ _ __ _
/ _ \ /_ | (_) / _| | |
| (_) | | | _ ___ ___ | |_ | |_
\__, | | | | | / __| / _ \ | _| | __|
/ / | | | | \__ \ | (_) | | | | |_
/_/ |_| |_| |___/ \___/ |_| \__|
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%white(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{10}.%M.%L) - %cyan(%msg%n)</pattern>
<!--<pattern>
%-5level %d - %msg%n
</pattern>-->
</layout>
</appender>
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<pattern>
%date %-5level [%thread] %logger{43}\(%L\) : %msg
</pattern>
</encoder>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>/working/test/info_edu.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<!--https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx50601fe1a9207d84&redirect_uri=http://gwf.natapp4.cc/sell/weixin/auth&response_type=code&scope=snsapi_userinfo&state=gwf#wechat_redirect-->
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--
临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝
-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>
%date %-5level [%thread] %logger{43}\(%L\) : %msg
</pattern>
</encoder>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>/working/test/error_edu.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<!--
指定对应包名
-->
<logger name="com.minlia" level="DEBUG"/>
<logger name="org.springframework.data.mybatis" level="DEBUG"/>
<logger name="org.springframework.aop.aspectj" level="ERROR"/>
<springProfile name="dev">
<root level="debug">
<appender-ref ref="consoleLog" />
<appender-ref ref="fileInfoLog" />
<appender-ref ref="fileErrorLog" />
</root>
</springProfile>
<springProfile name="prod">
<root level="debug">
<appender-ref ref="consoleLog" />
<appender-ref ref="fileInfoLog" />
<appender-ref ref="fileErrorLog" />
</root>
</springProfile>
</configuration>
\ No newline at end of file
<?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.isoft91.gonn.gps.business.mapper.BaseStationInfoMapper">
</mapper>
<?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.isoft91.gonn.gps.business.mapper.ComputerRoomInfoMapper">
</mapper>
<?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.isoft91.gonn.gps.business.mapper.OaCBusiConfMapper">
<resultMap id="oaBuifConfPage" type="com.isoft91.gonn.gps.business.entity.OaCBusiConf">
<!--非主键字段的对应 实体类属性名 数据库类名-->
<id property="id" column="id"></id>
</resultMap>
<select id="selectConfList" resultMap="oaBuifConfPage">
select * from oa_c_busi_conf
where
flag='0'
<if test="vo.type!=null and vo.type!=''">
and type =#{vo.type}
</if>
<if test="vo.key!=null and vo.key!=''">
and `key` =#{vo.key}
</if>
<if test="vo.value!=null and vo.value!=''">
and value =#{vo.value}
</if>
<if test="vo.pId!=null and vo.pId!=''">
and pid =#{vo.pId}
</if>
</select>
</mapper>
<?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.isoft91.gonn.gps.business.mapper.SDictionaryMapper">
</mapper>
<?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.isoft91.gonn.gps.business.mapper.SProvinceMapper">
<resultMap id="provinceMap" type="com.isoft91.gonn.gps.business.entity.SProvince">
<!--非主键字段的对应 实体类属性名 数据库类名-->
<id property="businessId" column="BUSINESS_ID"></id>
</resultMap>
<select id="selectProvinceByName" resultMap="provinceMap">
select * from s_province where `NAME`=#{name}
</select>
</mapper>
<?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.isoft91.gonn.gps.business.mapper.SUserMapper">
</mapper>
<?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.isoft91.gonn.gps.business.mapper.SUserRoleMapper">
</mapper>
{
"Creator": "",
"NeedUpDateFields": [],
"NeedReturnFields": [],
"IsDeleteEntry": "true",
"SubSystemId": "",
"IsVerifyBaseDataField": "false",
"IsEntryBatchFill": "true",
"ValidateFlag": "true",
"NumberSearch": "true",
"InterationFlags": "",
"IsAutoSubmitAndAudit": "false",
"Model": {
"FID": 0,
"FBILLTYPEID": {
"FNUMBER": ""
},
"FDATE": "",
"FCONTACTUNITTYPE": "",
"FCONTACTUNIT": {
"FNumber": ""
},
"FRECTUNITTYPE": "",
"FRECTUNIT": {
"FNumber": ""
},
"FCURRENCYID": {
"FNumber": ""
},
"FPAYORGID": {
"FNumber": ""
},
"FSETTLEORGID": {
"FNumber": ""
},
"FPURCHASEORGID": {
"FNumber": ""
},
"FPURCHASEDEPTID": {
"FNumber": ""
},
"FDOCUMENTSTATUS": "",
"FCANCELSTATUS": "",
"FIsCredit": false,
"FAPPLYORGID": {
"FNumber": ""
},
"FSETTLECUR": {
"FNUMBER": ""
},
"FISCARRYRATE": false,
"FPAYAPPLYENTRY": [
{
"FPAYPURPOSEID": {
"FNumber": ""
},
"FENDDATE": "",
"FEXPECTPAYDATE": "",
"FAPPLYAMOUNTFOR": 0
}
]
}
}
\ No newline at end of file
{
"Creator": "",
"NeedUpDateFields": [],
"NeedReturnFields": [],
"IsDeleteEntry": "true",
"SubSystemId": "",
"IsVerifyBaseDataField": "false",
"IsEntryBatchFill": "true",
"ValidateFlag": "true",
"NumberSearch": "true",
"InterationFlags": "",
"IsAutoSubmitAndAudit": "false",
"Model": {
"FID": "",
"FNumber": "",
"FCreateOrgId": {
"FNumber": "1000"
},
"FUseOrgId": {
"FNumber": "1000"
},
"FName": "",
"FStoName": "",
"FStoAddress": ""
}
}
\ No newline at end of file
package com.isoft91.gonn.gps;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class GonnPmsApplicationTests {
@Test
void contextLoads() {
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论