diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java index 4764234..7708990 100644 --- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java +++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java @@ -88,9 +88,9 @@ public interface CommonConstant { Integer SC_JEECG_NO_AUTHZ=510; /** 登录用户Shiro权限缓存KEY前缀 */ - public static String PREFIX_USER_SHIRO_CACHE = "shiro:cache:org.jeecg.config.shiro.ShiroRealm.authorizationCache:"; + public static String PREFIX_USER_SHIRO_CACHE = "shiro_kjj:cache:org.jeecg.config.shiro.ShiroRealm.authorizationCache:"; /** 登录用户Token令牌缓存KEY前缀 */ - String PREFIX_USER_TOKEN = "prefix_user_token:"; + String PREFIX_USER_TOKEN = "prefix_user_kjj_token:"; // /** Token缓存时间:3600秒即一小时 */ // int TOKEN_EXPIRE_TIME = 3600; diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/controller/DepadminlxController.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/controller/DepadminlxController.java index 2c08804..4ef2655 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/controller/DepadminlxController.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/controller/DepadminlxController.java @@ -10,9 +10,12 @@ import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.demo.depadminlx.entity.Depadminlx; import org.jeecg.modules.demo.depadminlx.service.IDepadminlxService; @@ -37,7 +40,6 @@ import com.alibaba.fastjson.JSON; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.jeecg.common.aspect.annotation.AutoLog; -import org.apache.shiro.authz.annotation.RequiresPermissions; /** * @Description: 单位基本情况联系人 @@ -52,7 +54,7 @@ import org.apache.shiro.authz.annotation.RequiresPermissions; public class DepadminlxController extends JeecgController { @Autowired private IDepadminlxService depadminlxService; - + /** * 分页列表查询 * @@ -69,12 +71,14 @@ public class DepadminlxController extends JeecgController queryWrapper = QueryGenerator.initQueryWrapper(depadminlx, req.getParameterMap()); + queryWrapper.eq("userid",user.getId()); Page page = new Page(pageNo, pageSize); IPage pageList = depadminlxService.page(page, queryWrapper); return Result.OK(pageList); } - + /** * 添加 * @@ -83,13 +87,21 @@ public class DepadminlxController extends JeecgController add(@RequestBody Depadminlx depadminlx) { - depadminlxService.save(depadminlx); - return Result.OK("添加成功!"); + LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String depiid = depadminlxService.getdepid(user.getId()); + List depadminlxes = depadminlxService.query().eq("depid",depiid).list(); + if (depadminlxes.size()>0){ + return Result.error("已经添加过了!"); + }else { + depadminlx.setUserid(user.getId()); + depadminlx.setDepid(depiid); + depadminlxService.save(depadminlx); + return Result.OK("添加成功!"); + } } - + /** * 编辑 * @@ -98,13 +110,12 @@ public class DepadminlxController extends JeecgController edit(@RequestBody Depadminlx depadminlx) { depadminlxService.updateById(depadminlx); return Result.OK("编辑成功!"); } - + /** * 通过id删除 * @@ -113,13 +124,12 @@ public class DepadminlxController extends JeecgController delete(@RequestParam(name="id",required=true) String id) { depadminlxService.removeById(id); return Result.OK("删除成功!"); } - + /** * 批量删除 * @@ -128,13 +138,12 @@ public class DepadminlxController extends JeecgController deleteBatch(@RequestParam(name="ids",required=true) String ids) { this.depadminlxService.removeByIds(Arrays.asList(ids.split(","))); return Result.OK("批量删除成功!"); } - + /** * 通过id查询 * @@ -158,7 +167,6 @@ public class DepadminlxController extends JeecgController importExcel(HttpServletRequest request, HttpServletResponse response) { return super.importExcel(request, response, Depadminlx.class); diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/entity/Depadminlx.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/entity/Depadminlx.java index 9b89a73..a119386 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/entity/Depadminlx.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/entity/Depadminlx.java @@ -98,4 +98,9 @@ public class Depadminlx implements Serializable { @Dict(dictTable = "sys_depart", dicText = "depart_name", dicCode = "id") @ApiModelProperty(value = "部门") private String depid; + + /**用户id*/ + @Excel(name = "用户id", width = 15) + @ApiModelProperty(value = "用户id") + private java.lang.String userid; } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/mapper/DepadminlxMapper.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/mapper/DepadminlxMapper.java index 66e94a3..ae3e55e 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/mapper/DepadminlxMapper.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/mapper/DepadminlxMapper.java @@ -3,6 +3,7 @@ package org.jeecg.modules.demo.depadminlx.mapper; import java.util.List; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import org.jeecg.modules.demo.depadminlx.entity.Depadminlx; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -14,4 +15,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface DepadminlxMapper extends BaseMapper { + @Select("select dep_id from sys_user_depart where user_id=#{id}") + String getdepid(String id); } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/service/IDepadminlxService.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/service/IDepadminlxService.java index 6830a3c..d044b48 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/service/IDepadminlxService.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/service/IDepadminlxService.java @@ -11,4 +11,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IDepadminlxService extends IService { + String getdepid(String id); } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/service/impl/DepadminlxServiceImpl.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/service/impl/DepadminlxServiceImpl.java index 8c60899..c6b3bc7 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/service/impl/DepadminlxServiceImpl.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depadminlx/service/impl/DepadminlxServiceImpl.java @@ -3,6 +3,7 @@ package org.jeecg.modules.demo.depadminlx.service.impl; import org.jeecg.modules.demo.depadminlx.entity.Depadminlx; import org.jeecg.modules.demo.depadminlx.mapper.DepadminlxMapper; import org.jeecg.modules.demo.depadminlx.service.IDepadminlxService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -16,4 +17,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @Service public class DepadminlxServiceImpl extends ServiceImpl implements IDepadminlxService { + @Autowired + private DepadminlxMapper depadminlxMapper; + @Override + public String getdepid(String id) { + return depadminlxMapper.getdepid(id); + } } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depfile/controller/DepfileController.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depfile/controller/DepfileController.java index 92f9469..cc196ab 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depfile/controller/DepfileController.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depfile/controller/DepfileController.java @@ -1,5 +1,7 @@ package org.jeecg.modules.demo.depfile.controller; +import java.io.File; +import java.net.URL; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -10,10 +12,15 @@ import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.demo.depadminlx.service.IDepadminlxService; import org.jeecg.modules.demo.depfile.entity.Depfile; import org.jeecg.modules.demo.depfile.service.IDepfileService; @@ -22,6 +29,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; +import org.jeecg.modules.system.entity.SysDepart; +import org.jeecg.modules.system.service.ISysDepartService; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; @@ -37,7 +46,6 @@ import com.alibaba.fastjson.JSON; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.jeecg.common.aspect.annotation.AutoLog; -import org.apache.shiro.authz.annotation.RequiresPermissions; /** * @Description: 单位技术研究资质情况 @@ -52,7 +60,13 @@ import org.apache.shiro.authz.annotation.RequiresPermissions; public class DepfileController extends JeecgController { @Autowired private IDepfileService depfileService; - + + @Autowired + private IDepadminlxService depadminlxService; + + @Autowired + private ISysDepartService iSysDepartService; + /** * 分页列表查询 * @@ -69,12 +83,35 @@ public class DepfileController extends JeecgController @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { + LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal(); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(depfile, req.getParameterMap()); + queryWrapper.eq("userid",user.getId()); + Page page = new Page(pageNo, pageSize); + IPage pageList = depfileService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * @description: 申报书-单位管理员上传附件查询 + * @param: [depfile, pageNo, pageSize, req] + * @return: org.jeecg.common.api.vo.Result> + * @author: z.h.c + * @date: 24/11/1 16:38 + */ + @ApiOperation(value="申报书-单位管理员上传附件查询", notes="申报书-单位管理员上传附件查询") + @GetMapping(value = "/getDepFileList") + public Result> getDepFileList(Depfile depfile, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + SysDepart sysDepart = iSysDepartService.getOne(new LambdaQueryWrapper().eq(SysDepart::getOrgCode, depfile.getDepid())); + depfile.setDepid(sysDepart.getId()); QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(depfile, req.getParameterMap()); Page page = new Page(pageNo, pageSize); IPage pageList = depfileService.page(page, queryWrapper); return Result.OK(pageList); } - + /** * 添加 * @@ -83,13 +120,20 @@ public class DepfileController extends JeecgController */ @AutoLog(value = "单位技术研究资质情况-添加") @ApiOperation(value="单位技术研究资质情况-添加", notes="单位技术研究资质情况-添加") - @RequiresPermissions("depfile:depfile:add") @PostMapping(value = "/add") public Result add(@RequestBody Depfile depfile) { + LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal(); + depfile.setUserid(user.getId()); + String depiid = depadminlxService.getdepid(user.getId()); + depfile.setDepid(depiid); + String extension = getFileExtensionFromUrl(depfile.getUpfile()); + System.out.println(depfile.getUpfile()); + System.out.println(depfile.getUpfile()); + depfile.setFilehz(extension); depfileService.save(depfile); return Result.OK("添加成功!"); } - + /** * 编辑 * @@ -98,13 +142,16 @@ public class DepfileController extends JeecgController */ @AutoLog(value = "单位技术研究资质情况-编辑") @ApiOperation(value="单位技术研究资质情况-编辑", notes="单位技术研究资质情况-编辑") - @RequiresPermissions("depfile:depfile:edit") @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) public Result edit(@RequestBody Depfile depfile) { + String extension = getFileExtensionFromUrl(depfile.getUpfile()); + depfile.setFilehz(extension); + System.out.println(depfile.getUpfile()); + System.out.println(depfile.getUpfile()); depfileService.updateById(depfile); return Result.OK("编辑成功!"); } - + /** * 通过id删除 * @@ -113,13 +160,12 @@ public class DepfileController extends JeecgController */ @AutoLog(value = "单位技术研究资质情况-通过id删除") @ApiOperation(value="单位技术研究资质情况-通过id删除", notes="单位技术研究资质情况-通过id删除") - @RequiresPermissions("depfile:depfile:delete") @DeleteMapping(value = "/delete") public Result delete(@RequestParam(name="id",required=true) String id) { depfileService.removeById(id); return Result.OK("删除成功!"); } - + /** * 批量删除 * @@ -128,13 +174,12 @@ public class DepfileController extends JeecgController */ @AutoLog(value = "单位技术研究资质情况-批量删除") @ApiOperation(value="单位技术研究资质情况-批量删除", notes="单位技术研究资质情况-批量删除") - @RequiresPermissions("depfile:depfile:deleteBatch") @DeleteMapping(value = "/deleteBatch") public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { this.depfileService.removeByIds(Arrays.asList(ids.split(","))); return Result.OK("批量删除成功!"); } - + /** * 通过id查询 * @@ -158,7 +203,6 @@ public class DepfileController extends JeecgController * @param request * @param depfile */ - @RequiresPermissions("depfile:depfile:exportXls") @RequestMapping(value = "/exportXls") public ModelAndView exportXls(HttpServletRequest request, Depfile depfile) { return super.exportXls(request, depfile, Depfile.class, "单位技术研究资质情况"); @@ -171,10 +215,17 @@ public class DepfileController extends JeecgController * @param response * @return */ - @RequiresPermissions("depfile:depfile:importExcel") @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result importExcel(HttpServletRequest request, HttpServletResponse response) { return super.importExcel(request, response, Depfile.class); - } -} + + } + public static String getFileExtensionFromUrl(String fileUrl) { + + File file = new File(fileUrl); + String fileName = file.getName(); + String extension = fileName.substring(fileName.lastIndexOf(".") + 1); + return extension; + } + } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depfile/entity/Depfile.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depfile/entity/Depfile.java index 0403607..a2334ad 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depfile/entity/Depfile.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depfile/entity/Depfile.java @@ -80,4 +80,19 @@ public class Depfile implements Serializable { @Excel(name = "文件", width = 15) @ApiModelProperty(value = "文件") private String upfile; + + /**用户id*/ + @Excel(name = "用户id", width = 15) + @ApiModelProperty(value = "用户id") + private java.lang.String userid; + + /**文件后缀*/ + @Excel(name = "文件后缀", width = 15) + @ApiModelProperty(value = "文件后缀") + private java.lang.String filehz; + /**文件类型*/ + @Excel(name = "文件类型", width = 15, dicCode = "filetext") + @Dict(dicCode = "filetext") + @ApiModelProperty(value = "文件类型") + private java.lang.String filelx; } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depsbncz/controller/DepsbnczController.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depsbncz/controller/DepsbnczController.java index fa8b637..942098d 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depsbncz/controller/DepsbnczController.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depsbncz/controller/DepsbnczController.java @@ -1,5 +1,6 @@ package org.jeecg.modules.demo.depsbncz.controller; +import java.time.LocalDate; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -10,10 +11,17 @@ import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.demo.annual.entity.Annual; +import org.jeecg.modules.demo.annual.service.IAnnualService; +import org.jeecg.modules.demo.depadminlx.service.IDepadminlxService; import org.jeecg.modules.demo.depsbncz.entity.Depsbncz; import org.jeecg.modules.demo.depsbncz.service.IDepsbnczService; @@ -22,6 +30,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; +import org.jeecg.modules.system.entity.SysDepart; +import org.jeecg.modules.system.service.ISysDepartService; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; @@ -37,7 +47,7 @@ import com.alibaba.fastjson.JSON; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.jeecg.common.aspect.annotation.AutoLog; -import org.apache.shiro.authz.annotation.RequiresPermissions; + /** * @Description: 上年度(末)主要财务数据 @@ -52,7 +62,13 @@ import org.apache.shiro.authz.annotation.RequiresPermissions; public class DepsbnczController extends JeecgController { @Autowired private IDepsbnczService depsbnczService; - + @Autowired + private IDepadminlxService depadminlxService; + @Autowired + private IAnnualService annualService; + @Autowired + private ISysDepartService iSysDepartService; + /** * 分页列表查询 * @@ -69,12 +85,28 @@ public class DepsbnczController extends JeecgController queryWrapper = QueryGenerator.initQueryWrapper(depsbncz, req.getParameterMap()); + queryWrapper.eq("userid",user.getId()); Page page = new Page(pageNo, pageSize); IPage pageList = depsbnczService.page(page, queryWrapper); return Result.OK(pageList); } - + + @ApiOperation(value="预算书-部门基本情况-上年度(末)主要财务数据", notes="预算书-部门基本情况-上年度(末)主要财务数据") + @GetMapping(value = "/getBydepid") + public Result> getBydepid(Depsbncz depsbncz, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + SysDepart sysDepart = iSysDepartService.getOne(new LambdaQueryWrapper().eq(SysDepart::getOrgCode, depsbncz.getDepid())); + depsbncz.setDepid(sysDepart.getId()); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(depsbncz, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = depsbnczService.page(page, queryWrapper); + return Result.OK(pageList); + } + /** * 添加 * @@ -83,13 +115,27 @@ public class DepsbnczController extends JeecgController add(@RequestBody Depsbncz depsbncz) { - depsbnczService.save(depsbncz); - return Result.OK("添加成功!"); + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + depsbncz.setUserid(user.getId()); + String depiid = depadminlxService.getdepid(user.getId()); + // 获取当前日期 + LocalDate currentDate = LocalDate.now(); + // 获取当前年份并直接转换为字符串 + String currentYearString = String.valueOf(currentDate.getYear()); + Annual annual = annualService.query().eq("annual_name",currentYearString).one(); + List depsbnczs=depsbnczService.query().eq("annualid",annual.getId()).eq("depid",depiid).list(); + if (depsbnczs.size()>0){ + return Result.error("本年度已经添加过了"); + }else { + depsbncz.setAnnualid(annual.getId()); + depsbncz.setDepid(depiid); + depsbnczService.save(depsbncz); + return Result.OK("添加成功!"); + } } - + /** * 编辑 * @@ -98,13 +144,12 @@ public class DepsbnczController extends JeecgController edit(@RequestBody Depsbncz depsbncz) { depsbnczService.updateById(depsbncz); return Result.OK("编辑成功!"); } - + /** * 通过id删除 * @@ -113,13 +158,12 @@ public class DepsbnczController extends JeecgController delete(@RequestParam(name="id",required=true) String id) { depsbnczService.removeById(id); return Result.OK("删除成功!"); } - + /** * 批量删除 * @@ -128,13 +172,12 @@ public class DepsbnczController extends JeecgController deleteBatch(@RequestParam(name="ids",required=true) String ids) { this.depsbnczService.removeByIds(Arrays.asList(ids.split(","))); return Result.OK("批量删除成功!"); } - + /** * 通过id查询 * @@ -152,13 +195,19 @@ public class DepsbnczController extends JeecgController> queryBydepid(@PathVariable("depid") String depid) { + List list = depsbnczService.list(new LambdaQueryWrapper().eq(Depsbncz::getDepid, depid)); + return Result.OK(list); + } + /** * 导出excel * * @param request * @param depsbncz */ - @RequiresPermissions("depsbncz:depsbncz:exportXls") @RequestMapping(value = "/exportXls") public ModelAndView exportXls(HttpServletRequest request, Depsbncz depsbncz) { return super.exportXls(request, depsbncz, Depsbncz.class, "上年度(末)主要财务数据"); @@ -171,7 +220,6 @@ public class DepsbnczController extends JeecgController importExcel(HttpServletRequest request, HttpServletResponse response) { return super.importExcel(request, response, Depsbncz.class); diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depsbncz/entity/Depsbncz.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depsbncz/entity/Depsbncz.java index 997b18d..b89b3b7 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depsbncz/entity/Depsbncz.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/depsbncz/entity/Depsbncz.java @@ -102,4 +102,15 @@ public class Depsbncz implements Serializable { @Excel(name = "纳税总额", width = 15) @ApiModelProperty(value = "纳税总额") private String nsze; + + /**用户id*/ + @Excel(name = "用户id", width = 15) + @ApiModelProperty(value = "用户id") + private java.lang.String userid; + + /**年度*/ + @Excel(name = "年度", width = 15, dictTable = "annual", dicText = "annual_name", dicCode = "id") + @Dict(dictTable = "annual", dicText = "annual_name", dicCode = "id") + @ApiModelProperty(value = "年度") + private java.lang.String annualid; } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectController.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectController.java index b6fb8c4..ff37a24 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectController.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectController.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.SecurityUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; @@ -17,13 +18,19 @@ import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.query.QueryRuleEnum; import org.jeecg.common.system.vo.DictModel; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.demo.depadminlx.entity.Depadminlx; +import org.jeecg.modules.demo.depadminlx.service.IDepadminlxService; import org.jeecg.modules.demo.departext.entity.DepartExt; import org.jeecg.modules.demo.departext.service.IDepartExtService; import org.jeecg.modules.demo.project.dto.BasicInfoDto; import org.jeecg.modules.demo.project.dto.DepartExtDto; +import org.jeecg.modules.demo.project.dto.DepartExtDto2; import org.jeecg.modules.demo.project.dto.ProjectShenBaoDto; import org.jeecg.modules.demo.project.entity.Project; import org.jeecg.modules.demo.project.service.IProjectService; +import org.jeecg.modules.demo.projectLog.entity.ProjectLog; +import org.jeecg.modules.demo.projectLog.service.IProjectLogService; import org.jeecg.modules.demo.projectType.entity.ProjectType; import org.jeecg.modules.demo.projectType.service.IProjectTypeService; import org.jeecg.modules.demo.userext.entity.UserExt; @@ -41,10 +48,7 @@ import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @Description: 项目表 @@ -78,6 +82,12 @@ public class ProjectController extends JeecgController @Autowired private SysBaseApiImpl sysBaseApi; + @Autowired + private IDepadminlxService iDepadminlxService; + + @Autowired + private IProjectLogService iProjectLogService; + /** * 分页列表查询 * @@ -90,6 +100,7 @@ public class ProjectController extends JeecgController //@AutoLog(value = "项目表-分页列表查询") @ApiOperation(value = "项目表-分页列表查询", notes = "项目表-分页列表查询") @GetMapping(value = "/list") +// @PermissionData(pageComponent = "projectApplication/project/ProjectList") public Result> queryPageList(Project project, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, @@ -100,12 +111,81 @@ public class ProjectController extends JeecgController customeRuleMap.put("projectDomain", QueryRuleEnum.LIKE_WITH_OR); customeRuleMap.put("projectStatus", QueryRuleEnum.LIKE_WITH_OR); customeRuleMap.put("budgetStatus", QueryRuleEnum.LIKE_WITH_OR); + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if ("shenbaoren_role".equals(loginUser.getRoleCode())) { + project.setCreateBy(loginUser.getUsername()); + } QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(project, req.getParameterMap(), customeRuleMap); Page page = new Page(pageNo, pageSize); IPage pageList = projectService.page(page, queryWrapper); return Result.OK(pageList); } + /** + * @description: + * //('科技主管部门待提交', '1'); + * //('科技主管部门已提交', '2'); + * //('不受理', '3'); + * //('已受理', '4'); + * //('申请人待提交', '5'); + * //('申请单位待提交', '6'); + * //('市科技局待提交', '7'); + * //('市科技局已提交', '8'); + * //('财政主管理部门待审核', '9'); + * //('财政主管理部门审核通过', '10'); + * @param: [project, pageNo, pageSize, req] + * @return: org.jeecg.common.api.vo.Result> + * @author: z.h.c + * @date: 24/11/5 16:25 + */ + @ApiOperation(value = "项目表-分页列表查询", notes = "项目表-分页列表查询") + @GetMapping(value = "/list4Audit") +// @PermissionData(pageComponent = "projectApplication/productAudit/project4AuditList") + public Result> queryPageList2(Project project, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + // 自定义查询规则 + Map customeRuleMap = new HashMap<>(); + // 自定义多选的查询规则为:LIKE_WITH_OR + customeRuleMap.put("projectDomain", QueryRuleEnum.LIKE_WITH_OR); + customeRuleMap.put("projectStatus", QueryRuleEnum.LIKE_WITH_OR); + customeRuleMap.put("budgetStatus", QueryRuleEnum.LIKE_WITH_OR); + + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(project, req.getParameterMap(), customeRuleMap); + Page page = new Page(pageNo, pageSize); + + //('科技主管部门待提交', '1'); + //('不受理', '3'); + //('已受理', '4'); + //('申请人待提交', '5'); + //('申请单位待提交', '6'); + //('市科技局待提交', '7'); + //('市科技局已提交', '8'); + //('财政主管理部门待审核', '9'); + //('财政主管理部门审核通过', '10'); + + //申请单位数据 + if ("faren_admin".equals(loginUser.getRoleCode())) { + queryWrapper.eq("sys_org_code", loginUser.getOrgCode()); + queryWrapper.eq("project_status", 6); + } + // 区/县管理员数据 + if ("quxian_admin".equals(loginUser.getRoleCode())) { + queryWrapper.likeRight("sys_org_code", loginUser.getOrgCode()); + queryWrapper.eq("project_status", 1); + } + if ("kejiju_admin".equals(loginUser.getRoleCode())) { + queryWrapper.in("project_status", 7, 8); + } + if ("caizheng_admin".equals(loginUser.getRoleCode())) { + queryWrapper.in("budget_status", 9, 10); + } + IPage pageList = projectService.page(page, queryWrapper); + return Result.OK(pageList); + } + @ApiOperation(value = "项目表-根据id查询", notes = "项目表-根据id查询") @GetMapping(value = "/getById") public Result getById(Project param, HttpServletRequest req) { @@ -160,7 +240,7 @@ public class ProjectController extends JeecgController BeanUtils.copyProperties(userExt, basicInfoDto); BeanUtils.copyProperties(project, basicInfoDto); basicInfoDto.setRealName(sysUser.getRealname()); - basicInfoDto.setProjectTime(DateUtils.formatDate(project.getStartTime()) +"——"+DateUtils.formatDate(project.getEndTime())); + basicInfoDto.setProjectTime(DateUtils.formatDate(project.getStartTime()) + "——" + DateUtils.formatDate(project.getEndTime())); return Result.OK(basicInfoDto); } @@ -196,17 +276,53 @@ public class ProjectController extends JeecgController ProjectType projectType = iProjectTypeService.getById(project.getProjectTypeid()); dto.setAnnualName(projectType.getAnnualName()); List dictModels = sysBaseApi.queryDictItemsByCode("depart_type"); - if(ObjectUtil.isNotEmpty(dictModels)){ - dictModels.forEach(e->{ - if(e.getValue().equals(dto.getType())){ + if (ObjectUtil.isNotEmpty(dictModels)) { + dictModels.forEach(e -> { + if (e.getValue().equals(dto.getType())) { + dto.setType(e.getText()); + } + }); + } + List dictModels2 = sysBaseApi.queryDictItemsByCode("depart_category"); + if (ObjectUtil.isNotEmpty(dictModels2)) { + dictModels2.forEach(d -> { + if (d.getValue().equals(dto.getOrgCategory())) { + dto.setOrgCategory(d.getText()); + } + }); + } + return Result.OK(dto); + } + + @ApiOperation(value = "预算书-部门基本情况-部门信息", notes = "预算书-部门基本情况-部门信息") + @GetMapping(value = "/getDepartDtoInfo") + public Result getDepartDtoInfo(Project para, HttpServletRequest req) { + Project project = projectService.getById(para.getId()); + SysUser sysUser = iSysUserService.getById(project.getProjectCharger()); + SysDepart sysDepart = iSysDepartService.getOne(new LambdaQueryWrapper().eq(SysDepart::getOrgCode, sysUser.getOrgCode())); + DepartExt departExt = iDepartExtService.getOne(new LambdaQueryWrapper() + .eq(DepartExt::getDepartId, sysDepart.getId()) + .eq(DepartExt::getProjectId, para.getId()) + ); + Depadminlx depadminlx = iDepadminlxService.getOne(new LambdaQueryWrapper().eq(Depadminlx::getDepid, project.getSysOrgCode())); + DepartExtDto2 dto = new DepartExtDto2(); + BeanUtils.copyProperties(sysDepart, dto); + BeanUtils.copyProperties(departExt, dto); + BeanUtils.copyProperties(depadminlx, dto); + ProjectType projectType = iProjectTypeService.getById(project.getProjectTypeid()); + dto.setAnnualName(projectType.getAnnualName()); + List dictModels = sysBaseApi.queryDictItemsByCode("depart_type"); + if (ObjectUtil.isNotEmpty(dictModels)) { + dictModels.forEach(e -> { + if (e.getValue().equals(dto.getType())) { dto.setType(e.getText()); } }); } List dictModels2 = sysBaseApi.queryDictItemsByCode("depart_category"); - if(ObjectUtil.isNotEmpty(dictModels2)){ - dictModels2.forEach(d->{ - if(d.getValue().equals(dto.getOrgCategory())){ + if (ObjectUtil.isNotEmpty(dictModels2)) { + dictModels2.forEach(d -> { + if (d.getValue().equals(dto.getOrgCategory())) { dto.setOrgCategory(d.getText()); } }); @@ -229,11 +345,142 @@ public class ProjectController extends JeecgController return Result.OK("添加成功!"); } + /** + * @description: 向上级提交项目 + * @param: [project] + * @return: org.jeecg.common.api.vo.Result + * @author: z.h.c + * @date: 24/11/4 16:12 + */ + @AutoLog(value = "项目表-上级管理员审核通过") + @ApiOperation(value = "项目表-审核通过", notes = "项目表-审核通过") + @PostMapping(value = "/submitApply") + public Result submitApply(@RequestBody Project project) { + //('科技主管部门待提交', '1'); + //('科技主管部门已提交', '2'); + //('不受理', '3'); + //('已受理', '4'); + //('申请人待提交', '5'); + //('申请单位待提交', '6'); + //('市科技局待提交', '7'); + //('市科技局已提交', '8'); + //('财政主管理部门待审核', '9'); + //('财政主管理部门审核通过', '10'); + Project project1 = projectService.getById(project.getId()); + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + ProjectLog log = new ProjectLog(); + log.setOperatorName(loginUser.getRealname()); + log.setOperatorId(loginUser.getId()); + log.setProjectId(project.getId()); + log.setProjectName(project1.getProjectName()); + log.setOperationTime(new Date()); + + //申报人提交,并向上级提交->申请单位待提交 + if ("shenbaoren_role".equals(loginUser.getRoleCode())) { + project.setProjectStatus("6"); + //预算书和项目书用同一种状态 + project.setBudgetStatus("6"); + + log.setProjectStatus("6"); + log.setBudgetStatus("6"); + log.setOperationMark("申请人提交项目书,申请人提交预算书"); + } + //申请单位审核通过,并向上级提交->科技主管部门待提交(区/县管理员) + if ("faren_admin".equals(loginUser.getRoleCode())) { + project.setProjectStatus("1"); + //预算书和项目书用同一种状态 + project.setBudgetStatus("1"); + + log.setProjectStatus("1"); + log.setBudgetStatus("1"); + log.setOperationMark("申请单位提交项目书,申请单位提交预算书"); + } + //区/县管理员审核通过,并向上级提交->市科技局处理 + if ("quxian_admin".equals(loginUser.getRoleCode())) { + project.setProjectStatus("7"); + //预算书和项目书用同一种状态 + project.setBudgetStatus("7"); + + log.setProjectStatus("7"); + log.setBudgetStatus("7"); + log.setOperationMark("科技主管部门提交项目书,科技主管部门提交预算书"); + } + //市科技局通过-》财政管理员处理 + if ("kejiju_admin".equals(loginUser.getRoleCode())) { + project.setProjectStatus("8"); + //预算书和项目书用同一种状态 + project.setBudgetStatus("9"); + + log.setProjectStatus("8"); + log.setBudgetStatus("9"); + log.setOperationMark("市科技局已提交,待财政主管部门审核"); + } + //市科技局通过-》财政管理员处理 + if ("caizheng_admin".equals(loginUser.getRoleCode())) { +// project.setProjectStatus("10"); + project.setBudgetStatus("10"); + + log.setBudgetStatus("10"); + log.setOperationMark("财政主管部门审核通过"); + } + project.setUpdateTime(new Date()); + projectService.updateById(project); + + iProjectLogService.save(log); + return Result.OK("操作成功!"); + } + + /** + * @description: 在(申请单位待提交)状态,申报人可以取回项目 + * @param: [project] + * @return: org.jeecg.common.api.vo.Result + * @author: z.h.c + * @date: 24/11/5 11:00 + */ + @AutoLog(value = "项目表-申报人取回项目/审核取回") + @ApiOperation(value = "项目表-申报人取回项目/审核取回", notes = "项目表-申报人取回项目/审核取回") + @PostMapping(value = "/rollbackProject") + public Result rollbackProject(@RequestBody Project project) { + //('科技主管部门待提交', '1'); + //('科技主管部门已提交', '2'); + //('不受理', '3'); + //('已受理', '4'); + //('申请人待提交', '5'); + //('申请单位待提交', '6'); + //('市科技局待提交', '7'); + //('市科技局已提交', '8'); + //('财政主管理部门待审核', '9'); + //('财政主管理部门审核通过', '10'); + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + project.setProjectStatus("5"); + //预算书和项目书用同一种状态 + project.setBudgetStatus("5"); + project.setUpdateTime(new Date()); + project.setUpdateBy(loginUser.getRealname()); + projectService.updateById(project); + + Project project1 = projectService.getById(project.getId()); + ProjectLog log = new ProjectLog(); + log.setOperatorName(loginUser.getRealname()); + log.setOperatorId(loginUser.getId()); + log.setProjectId(project.getId()); + log.setProjectName(project1.getProjectName()); + log.setOperationTime(new Date()); + log.setProjectStatus("5"); + log.setBudgetStatus("5"); + log.setOperationMark("审核取回"); + iProjectLogService.save(log); + return Result.OK("操作成功!"); + } + @AutoLog(value = "新增项目审报") @ApiOperation(value = "新增项目审报", notes = "新增项目审报") @PostMapping(value = "/save4shenbao") public Result save4shenbao(@RequestBody ProjectShenBaoDto dto) { - long count = projectService.count(new LambdaQueryWrapper().eq(Project::getProjectTypeid, dto.getProjectTypeid())); + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + long count = projectService.count(new LambdaQueryWrapper() + .eq(Project::getProjectTypeid, dto.getProjectTypeid()) + .eq(Project::getSysOrgCode, loginUser.getOrgId())); if (count > 0) { throw new JeecgBootException("该项目类型,当年已填报,不能重复填报!"); } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/dto/DepartExtDto2.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/dto/DepartExtDto2.java new file mode 100644 index 0000000..26d2a8e --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/dto/DepartExtDto2.java @@ -0,0 +1,70 @@ +package org.jeecg.modules.demo.project.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +/** + * @Description: TODO + * @Author: Z.H.C + * @CreateTime: 2024-10-24 11:09 + * @Version: 1.0 + */ +@Data +public class DepartExtDto2 extends DepartExtDto { + + + @Excel(name = "编制数", width = 15) + @ApiModelProperty(value = "编制数") + private String bzs; + /** + * 在职职工人数: + */ + @Excel(name = "在职职工人数:", width = 15) + @ApiModelProperty(value = "在职职工人数:") + private String zzzgrs; + /** + * 中级职称以上研究人员数 + */ + @Excel(name = "中级职称以上研究人员数", width = 15) + @ApiModelProperty(value = "中级职称以上研究人员数") + private String zjzcysyjrys; + /** + * 单位联系人姓名 + */ + @Excel(name = "单位联系人姓名", width = 15) + @ApiModelProperty(value = "单位联系人姓名") + private String dwlxrxm; + /** + * 单位联系人职称 + */ + @Excel(name = "单位联系人职称", width = 15) + @ApiModelProperty(value = "单位联系人职称") + private String dwlxrzc; + /** + * 单位联系人职务 + */ + @Excel(name = "单位联系人职务", width = 15) + @ApiModelProperty(value = "单位联系人职务") + private String dwlxrzw; + /** + * 单位联系人电话 + */ + @Excel(name = "单位联系人电话", width = 15) + @ApiModelProperty(value = "单位联系人电话") + private String dwlxrdh; + /** + * 单位联系人手机 + */ + @Excel(name = "单位联系人手机", width = 15) + @ApiModelProperty(value = "单位联系人手机") + private String dwlxrsj; + /** + * 单位联系人邮箱 + */ + @Excel(name = "单位联系人邮箱", width = 15) + @ApiModelProperty(value = "单位联系人邮箱") + private String dwlxryx; + + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/entity/Project.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/entity/Project.java index 283d210..7a4f53e 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/entity/Project.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/entity/Project.java @@ -65,7 +65,7 @@ public class Project implements Serializable { /** * 所属部门 */ - @Dict(dictTable = "sys_depart", dicText = "depart_name", dicCode = "id") + @Dict(dictTable = "sys_depart", dicText = "depart_name", dicCode = "org_code") @ApiModelProperty(value = "所属部门") private String sysOrgCode; /** diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/impl/ProjectServiceImpl.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/impl/ProjectServiceImpl.java index e6be6b2..a41dab5 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/impl/ProjectServiceImpl.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/impl/ProjectServiceImpl.java @@ -64,13 +64,13 @@ public class ProjectServiceImpl extends ServiceImpl impl // BeanUtils.copyProperties(dto, sysUser); BeanUtils.copyProperties(dto, userExt); BeanUtils.copyProperties(dto, project); - project.setSysOrgCode(loginUser.getOrgId()); + project.setSysOrgCode(loginUser.getOrgCode()); //负责人 project.setProjectCharger(loginUser.getId()); //申请人待提交 project.setProjectStatus("5"); - // 预算书不存在 - project.setBudgetStatus("10"); + // 申请人待提交 + project.setBudgetStatus("1"); this.save(project); userExt.setUserId(loginUser.getId()); diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/controller/ProjectLogController.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/controller/ProjectLogController.java new file mode 100644 index 0000000..4b86efa --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/controller/ProjectLogController.java @@ -0,0 +1,162 @@ +package org.jeecg.modules.demo.projectLog.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.demo.projectLog.entity.ProjectLog; +import org.jeecg.modules.demo.projectLog.service.IProjectLogService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; + +/** + * @Description: 项目操作日志 + * @Author: jeecg-boot + * @Date: 2024-11-04 + * @Version: V1.0 + */ +@Api(tags = "项目操作日志") +@RestController +@RequestMapping("/projectLog/projectLog") +@Slf4j +public class ProjectLogController extends JeecgController { + @Autowired + private IProjectLogService projectLogService; + + /** + * 分页列表查询 + * + * @param projectLog + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "项目操作日志-分页列表查询") + @ApiOperation(value = "项目操作日志-分页列表查询", notes = "项目操作日志-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(ProjectLog projectLog, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(projectLog, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = projectLogService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param projectLog + * @return + */ + @AutoLog(value = "项目操作日志-添加") + @ApiOperation(value = "项目操作日志-添加", notes = "项目操作日志-添加") + @RequiresPermissions("projectLog:project_log:add") + @PostMapping(value = "/add") + public Result add(@RequestBody ProjectLog projectLog) { + projectLogService.save(projectLog); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param projectLog + * @return + */ + @AutoLog(value = "项目操作日志-编辑") + @ApiOperation(value = "项目操作日志-编辑", notes = "项目操作日志-编辑") + @RequiresPermissions("projectLog:project_log:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result edit(@RequestBody ProjectLog projectLog) { + projectLogService.updateById(projectLog); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "项目操作日志-通过id删除") + @ApiOperation(value = "项目操作日志-通过id删除", notes = "项目操作日志-通过id删除") + @RequiresPermissions("projectLog:project_log:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name = "id", required = true) String id) { + projectLogService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "项目操作日志-批量删除") + @ApiOperation(value = "项目操作日志-批量删除", notes = "项目操作日志-批量删除") + @RequiresPermissions("projectLog:project_log:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.projectLogService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "项目操作日志-通过id查询") + @ApiOperation(value = "项目操作日志-通过id查询", notes = "项目操作日志-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id", required = true) String id) { + ProjectLog projectLog = projectLogService.getById(id); + if (projectLog == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(projectLog); + } + + /** + * 导出excel + * + * @param request + * @param projectLog + */ + @RequiresPermissions("projectLog:project_log:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, ProjectLog projectLog) { + return super.exportXls(request, projectLog, ProjectLog.class, "项目操作日志"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("projectLog:project_log:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, ProjectLog.class); + } + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/entity/ProjectLog.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/entity/ProjectLog.java new file mode 100644 index 0000000..637b785 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/entity/ProjectLog.java @@ -0,0 +1,120 @@ +package org.jeecg.modules.demo.projectLog.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: 项目操作日志 + * @Author: jeecg-boot + * @Date: 2024-11-04 + * @Version: V1.0 + */ +@Data +@TableName("project_log") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "project_log对象", description = "项目操作日志") +public class ProjectLog implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private String id; + /** + * 创建人 + */ + @ApiModelProperty(value = "创建人") + private String createBy; + /** + * 创建日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private Date createTime; + /** + * 更新人 + */ + @ApiModelProperty(value = "更新人") + private String updateBy; + /** + * 更新日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private Date updateTime; + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门") + private String sysOrgCode; + /** + * 项目id + */ + @Excel(name = "项目id", width = 15) + @ApiModelProperty(value = "项目id") + private String projectId; + /** + * 项目名称 + */ + @Excel(name = "项目名称", width = 15) + @ApiModelProperty(value = "项目名称") + private String projectName; + /** + * 操作说明 + */ + @Excel(name = "操作说明", width = 15) + @ApiModelProperty(value = "操作说明") + private String operationMark; + /** + * 操作时间 + */ + @Excel(name = "操作时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "操作时间") + private Date operationTime; + /** + * 操作员id + */ + @Excel(name = "操作员id", width = 15) + @ApiModelProperty(value = "操作员id") + private String operatorId; + /** + * 操作人名称 + */ + @Excel(name = "操作人名称", width = 15) + @ApiModelProperty(value = "操作人名称") + private String operatorName; + /** + * 项目书状态 + */ + @Excel(name = "项目书状态", width = 15, dicCode = "project_status") + @Dict(dicCode = "project_status") + @ApiModelProperty(value = "项目书状态") + private String projectStatus; + /** + * 预算书状态 + */ + @Excel(name = "预算书状态", width = 15, dicCode = "budget_status") + @Dict(dicCode = "budget_status") + @ApiModelProperty(value = "预算书状态") + private String budgetStatus; +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/mapper/ProjectLogMapper.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/mapper/ProjectLogMapper.java new file mode 100644 index 0000000..a0fc533 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/mapper/ProjectLogMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.demo.projectLog.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.demo.projectLog.entity.ProjectLog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 项目操作日志 + * @Author: jeecg-boot + * @Date: 2024-11-04 + * @Version: V1.0 + */ +public interface ProjectLogMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/mapper/xml/ProjectLogMapper.xml b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/mapper/xml/ProjectLogMapper.xml new file mode 100644 index 0000000..e2010e6 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/mapper/xml/ProjectLogMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/service/IProjectLogService.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/service/IProjectLogService.java new file mode 100644 index 0000000..d796053 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/service/IProjectLogService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.demo.projectLog.service; + +import org.jeecg.modules.demo.projectLog.entity.ProjectLog; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 项目操作日志 + * @Author: jeecg-boot + * @Date: 2024-11-04 + * @Version: V1.0 + */ +public interface IProjectLogService extends IService { + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/service/impl/ProjectLogServiceImpl.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/service/impl/ProjectLogServiceImpl.java new file mode 100644 index 0000000..429e2bf --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/projectLog/service/impl/ProjectLogServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.demo.projectLog.service.impl; + +import org.jeecg.modules.demo.projectLog.entity.ProjectLog; +import org.jeecg.modules.demo.projectLog.mapper.ProjectLogMapper; +import org.jeecg.modules.demo.projectLog.service.IProjectLogService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 项目操作日志 + * @Author: jeecg-boot + * @Date: 2024-11-04 + * @Version: V1.0 + */ +@Service +public class ProjectLogServiceImpl extends ServiceImpl implements IProjectLogService { + +} diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml index c01272c..46280ee 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml @@ -161,9 +161,9 @@ spring: slow-sql-millis: 5000 datasource: master: - url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + url: jdbc:mysql://182.92.169.222:3306/zmd_kejiju?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root - password: root + password: ycwl2022. driver-class-name: com.mysql.cj.jdbc.Driver # 多数据源配置 #multi-datasource1: @@ -174,9 +174,9 @@ spring: #redis 配置 redis: database: 0 - host: 127.0.0.1 + host: 182.92.169.222 port: 6379 - password: '' + password: 'redis@ycwl2022.' #mybatis plus 设置 mybatis-plus: mapper-locations: classpath*:org/jeecg/**/xml/*Mapper.xml diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-test.yml b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-test.yml index dc8bba8..2bc92dc 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-test.yml +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-test.yml @@ -161,7 +161,7 @@ spring: slow-sql-millis: 5000 datasource: master: - url: jdbc:mysql://182.92.169.222:3306/zmd_kejiju?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + url: jdbc:mysql://182.92.169.222:3306/zmd_kejiju1104?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root password: ycwl2022. driver-class-name: com.mysql.cj.jdbc.Driver @@ -173,7 +173,7 @@ spring: #driver-class-name: com.mysql.cj.jdbc.Driver #redis 配置 redis: - database: 7 + database: 8 host: 182.92.169.222 port: 6379 password: 'redis@ycwl2022.' diff --git a/jeecg-boot/pom.xml b/jeecg-boot/pom.xml index 157179b..fe4d116 100644 --- a/jeecg-boot/pom.xml +++ b/jeecg-boot/pom.xml @@ -8,9 +8,9 @@ - 北京国炬信息技术有限公司 - jeecgos@163.com - http://www.guojusoft.com + 驻马店源码自然科技有限公司 + ytd@163.com + http://www.hhytd.com diff --git a/jeecgboot-vue3/.env b/jeecgboot-vue3/.env index 26d954e..91dbdb3 100644 --- a/jeecgboot-vue3/.env +++ b/jeecgboot-vue3/.env @@ -2,10 +2,10 @@ VITE_PORT = 3500 # 网站标题 -VITE_GLOB_APP_TITLE = JeecgBoot 企业级低代码平台 +VITE_GLOB_APP_TITLE = 科技管理信息系统 # 简称,此变量只能是字符/下划线 -VITE_GLOB_APP_SHORT_NAME = JeecgBoot_Pro +VITE_GLOB_APP_SHORT_NAME = kjj_Pro # 单点登录服务端地址 VITE_GLOB_APP_CAS_BASE_URL=http://cas.test.com:8443/cas diff --git a/jeecgboot-vue3/.env.production b/jeecgboot-vue3/.env.production index 76417e2..c998cb9 100644 --- a/jeecgboot-vue3/.env.production +++ b/jeecgboot-vue3/.env.production @@ -2,7 +2,7 @@ VITE_USE_MOCK = false # 发布路径 -VITE_PUBLIC_PATH = / +VITE_PUBLIC_PATH = '/kjj' # 是否启用gzip或brotli压缩 # 选项值: gzip | brotli | none @@ -13,10 +13,10 @@ VITE_BUILD_COMPRESS = 'gzip' VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false #后台接口父地址(必填) -VITE_GLOB_API_URL=/jeecgboot +VITE_GLOB_API_URL=/kjj #后台接口全路径地址(必填) -VITE_GLOB_DOMAIN_URL=http://jeecg-boot-system:8080/jeecg-boot +VITE_GLOB_DOMAIN_URL=http://182.92.169.222:8080/jeecg-boot # 接口父路径前缀 VITE_GLOB_API_URL_PREFIX= diff --git a/jeecgboot-vue3/package.json b/jeecgboot-vue3/package.json index 5165623..b67c66d 100644 --- a/jeecgboot-vue3/package.json +++ b/jeecgboot-vue3/package.json @@ -2,9 +2,9 @@ "name": "jeecgboot-vue3", "version": "3.7.1", "author": { - "name": "北京国炬信息技术有限公司", - "email": "jeecgos@163.com", - "url": "https://www.jeecg.com" + "name": "驻马店源码自然科技有限公司", + "email": "yichuangwangluo@163.com", + "url": "https://www.hhytd.com" }, "scripts": { "pinstall": "pnpm install", diff --git a/jeecgboot-vue3/src/components/jeecg/AiChat/components/presetQuestion.vue b/jeecgboot-vue3/src/components/jeecg/AiChat/components/presetQuestion.vue index 5ce39dd..c870bb7 100644 --- a/jeecgboot-vue3/src/components/jeecg/AiChat/components/presetQuestion.vue +++ b/jeecgboot-vue3/src/components/jeecg/AiChat/components/presetQuestion.vue @@ -45,7 +45,7 @@ diff --git a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/xiangmushu/JeecgPdfView.vue b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/xiangmushu/JeecgPdfView.vue index 0a009e9..9b734a0 100644 --- a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/xiangmushu/JeecgPdfView.vue +++ b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/xiangmushu/JeecgPdfView.vue @@ -15,7 +15,7 @@ diff --git a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/xiangmushu/index.vue b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/xiangmushu/index.vue index 9070b12..98a7846 100644 --- a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/xiangmushu/index.vue +++ b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/xiangmushu/index.vue @@ -11,7 +11,7 @@ - + diff --git a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/DepartBaseInfoDemo.vue b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/DepartBaseInfoDemo.vue index a7f8abc..16f03a7 100644 --- a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/DepartBaseInfoDemo.vue +++ b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/DepartBaseInfoDemo.vue @@ -2,19 +2,28 @@
+
+ + + + +
-
-
返回
@@ -28,11 +37,16 @@ import {BasicTable, useTable} from '/@/components/Table'; import {useRoute, useRouter} from "vue-router"; import {useModal} from "@/components/Modal"; -import {list} from '@/views/projectApplication/project/Project.api'; -import {getDepartByProjectId} from './FengMian.api'; -import {columns2} from "@/views/cooperationDepart/CooperationDepart.data"; -import {list2} from "@/views/cooperationDepart/CooperationDepart.api"; +import { useUserStore } from '/@/store/modules/user'; +const { userInfo } = useUserStore(); +import {getDepartDtoByProjectId} from '/@/views/projectApplication/project/Project.api'; +// import {columns2} from "@/views/cooperationDepart/CooperationDepart.data"; +import {list2} from "@/views/cooperationDepart/CooperationDepart.api"; +import {depsbnczColumns2} from "@/views/depsbncz/Depsbncz.data"; +import {listDepsbncz} from "@/views/depsbncz/Depsbncz.api"; +import {listDepFile} from "@/views/depfile/Depfile.api"; +import {columns3} from "@/views/depfile/Depfile.data"; const route = useRoute(); const router = useRouter(); const falg = ref(false) @@ -43,12 +57,12 @@ const DepartBaseInfoData: any = { phone: '', realName: '', email: '', - title: '', + label: '', }; -const [registerTimeTable] = useTable({ - title: '单位技术研究资质情况:', - columns: columns2, +/*const [registerTimeTable] = useTable({ + label: '单位技术研究资质情况:', + columns: columns3, pagination: false, // dataSource: null, api: listCooperationByProjectId, @@ -62,6 +76,25 @@ async function listCooperationByProjectId() { }; console.log(JSON.stringify(params)); return await list2(params); +};*/ + + +const [depsbnczTable] = useTable({ + label: '上年度(末)主要财务数据', + columns: depsbnczColumns2, + pagination: false, + // dataSource: null, + api: listDepsbnczByProjectId, + showIndexColumn: false, + scroll: {y: 300}, +}); + +async function listDepsbnczByProjectId() { + let params = { + depid: userInfo.orgCode, + }; + console.log(JSON.stringify(params)); + return await listDepsbncz(params); }; @@ -80,6 +113,27 @@ const schema2: any = [ }, ]; +const [depfileTable] = useTable({ + label: '单位技术研究资质情况', + columns: columns3, + pagination: false, + // dataSource: null, + api: listdepfileByDepId, + showIndexColumn: false, + scroll: {y: 300}, +}); + +async function listdepfileByDepId() { + let params = { + depid: userInfo.orgCode, + filelx: '2', + }; + console.log(JSON.stringify(params)); + return await listDepFile(params); +}; + + + const schema: any = [ { field: 'annualName', @@ -113,10 +167,6 @@ const schema: any = [ label: '账号', field: 'bankNo', }, - { - label: '职工总数', - field: 'employeeNum', - }, { label: '上年度研发(R&D)经费(万元)', field: 'lastYearFee', @@ -126,6 +176,57 @@ const schema: any = [ field: 'registerDate', }, { + label: '预算管理形式', + field: 'ysczbk', + }, + { + label: '编制数', + // align: "center", + field: 'bzs' + }, + { + label: '在职职工人数:', + // align: "center", + field: 'zzzgrs' + }, + { + label: '中级职称以上研究人员数', + // align: "center", + field: 'zjzcysyjrys' + }, + { + label: '单位联系人姓名', + align: "center", + field: 'dwlxrxm' + }, + { + label: '单位联系人职称', + align: "center", + field: 'dwlxrzc' + }, + { + label: '单位联系人职务', + align: "center", + field: 'dwlxrzw' + }, + { + label: '单位联系人电话', + align: "center", + field: 'dwlxrdh' + }, + { + label: '单位联系人手机', + align: "center", + field: 'dwlxrsj' + }, + { + label: '单位联系人邮箱', + align: "center", + field: 'dwlxryx' + }, + + + /*{ label: '联系人', field: 'linkmanName', }, @@ -136,21 +237,21 @@ const schema: any = [ { label: '电子邮箱', field: 'linkmanEmail' - }, + },*/ ]; async function getData() { let params = { id: route.query.id, }; - let obj = await getDepartByProjectId(params); + let obj = await getDepartDtoByProjectId(params); console.log('data', JSON.stringify(obj)) DepartBaseInfoData.annualName = obj.annualName; DepartBaseInfoData.departName = obj.departName; DepartBaseInfoData.departNameAbbr = obj.departNameAbbr; - DepartBaseInfoData.linkmanName = obj.linkmanName; - DepartBaseInfoData.linkmanEmail = obj.linkmanEmail; - DepartBaseInfoData.linkmanPhone = obj.linkmanPhone; + // DepartBaseInfoData.linkmanName = obj.linkmanName; + // DepartBaseInfoData.linkmanEmail = obj.linkmanEmail; + // DepartBaseInfoData.linkmanPhone = obj.linkmanPhone; DepartBaseInfoData.orgCategory = obj.orgCategory; DepartBaseInfoData.address = obj.address; DepartBaseInfoData.bankNo = obj.bankNo; @@ -161,6 +262,18 @@ async function getData() { DepartBaseInfoData.mobile = obj.mobile; DepartBaseInfoData.type = obj.type; DepartBaseInfoData.registerDate = obj.registerDate; + + + DepartBaseInfoData.bzs = obj.bzs; + DepartBaseInfoData.zzzgrs = obj.zzzgrs; + DepartBaseInfoData.zjzcysyjrys = obj.zjzcysyjrys; + DepartBaseInfoData.dwlxrxm = obj.dwlxrxm; + DepartBaseInfoData.dwlxrzc = obj.dwlxrzc; + DepartBaseInfoData.dwlxrzw = obj.dwlxrzw; + DepartBaseInfoData.dwlxrdh = obj.dwlxrdh; + DepartBaseInfoData.dwlxrsj = obj.dwlxrsj; + DepartBaseInfoData.dwlxryx = obj.dwlxryx; + DepartBaseInfoData.ysczbk = '预算管理形式'; console.log('DepartBaseInfoData', JSON.stringify(DepartBaseInfoData)) falg.value = true } diff --git a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/NianDuYuSuanDemo.vue b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/NianDuYuSuanDemo.vue index c118d31..1fab3a8 100644 --- a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/NianDuYuSuanDemo.vue +++ b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/NianDuYuSuanDemo.vue @@ -4,23 +4,15 @@ -
- - 单位名称 +
+ + 单位名称
分年预算 - 合计 + 合计 - @@ -32,67 +24,68 @@ - {{Amount}} + {{ Amount }} -
-
- 保存 - 返回 +
+ 保存 + 返回 +
\ No newline at end of file diff --git a/jeecgboot-vue3/src/views/projectApplication/productAudit/projectAudit4CaiZhengList.vue b/jeecgboot-vue3/src/views/projectApplication/productAudit/projectAudit4CaiZhengList.vue new file mode 100644 index 0000000..f7b8e3d --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/productAudit/projectAudit4CaiZhengList.vue @@ -0,0 +1,246 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/productAudit/projectAudit4FaRenList.vue b/jeecgboot-vue3/src/views/projectApplication/productAudit/projectAudit4FaRenList.vue new file mode 100644 index 0000000..df49f88 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/productAudit/projectAudit4FaRenList.vue @@ -0,0 +1,246 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/productAudit/projectAudit4KejijuList.vue b/jeecgboot-vue3/src/views/projectApplication/productAudit/projectAudit4KejijuList.vue new file mode 100644 index 0000000..cfaa11a --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/productAudit/projectAudit4KejijuList.vue @@ -0,0 +1,246 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/productAudit/projectAudit4QuXianList.vue b/jeecgboot-vue3/src/views/projectApplication/productAudit/projectAudit4QuXianList.vue new file mode 100644 index 0000000..38b9960 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/productAudit/projectAudit4QuXianList.vue @@ -0,0 +1,245 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/project/Project.api.ts b/jeecgboot-vue3/src/views/projectApplication/project/Project.api.ts index bae57da..25c93ad 100644 --- a/jeecgboot-vue3/src/views/projectApplication/project/Project.api.ts +++ b/jeecgboot-vue3/src/views/projectApplication/project/Project.api.ts @@ -6,15 +6,21 @@ const {createConfirm} = useMessage(); enum Api { list = '/project/project/list', projectType = '/projectType/getProjectTypeList', - departBaseInfo = '/projectType/getDepartBaseInfo', + departDtoInfo = '/project/project/getDepartDtoInfo', save = '/project/project/add', edit = '/project/project/edit', deleteOne = '/project/project/delete', + submitOne = '/project/project/submitApply', + rollbackOne = '/project/project/rollbackProject', deleteBatch = '/project/project/deleteBatch', importExcel = '/project/project/importExcel', exportXls = '/project/project/exportXls', } +export const getDepartDtoByProjectId = (params) => + defHttp.get({url: Api.departDtoInfo, params}); + + /** * 导出api * @param params @@ -47,6 +53,20 @@ export const deleteOne = (params, handleSuccess) => { handleSuccess(); }); } + +export const submitOne = (params, handleSuccess) => { + return defHttp.post({url: Api.submitOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + +export const rollbackOne = (params, handleSuccess) => { + return defHttp.post({url: Api.rollbackOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + + /** * 批量删除 * @param params diff --git a/jeecgboot-vue3/src/views/projectApplication/project/Project.data.ts b/jeecgboot-vue3/src/views/projectApplication/project/Project.data.ts index 3e7f21b..c8055c2 100644 --- a/jeecgboot-vue3/src/views/projectApplication/project/Project.data.ts +++ b/jeecgboot-vue3/src/views/projectApplication/project/Project.data.ts @@ -12,25 +12,25 @@ import {forEach} from "@/utils/helper/treeHelper"; //列表数据 export const columns: BasicColumn[] = [ { - title: '所属部门', + title: '项目名称', align: "center", - dataIndex: 'sysOrgCode_dictText' + dataIndex: 'projectName' }, { - title: '负责人', + title: '项目类别', align: "center", - dataIndex: 'projectCharger_dictText' + // dataIndex: 'projectTypeid_dictText' + dataIndex: 'projectTypeid_dictText' }, { - title: '项目名称', + title: '申请单位', align: "center", - dataIndex: 'projectName' + dataIndex: 'sysOrgCode_dictText' }, { - title: '项目类别', + title: '负责人', align: "center", - // dataIndex: 'projectTypeid_dictText' - dataIndex: 'projectTypeid_dictText' + dataIndex: 'projectCharger_dictText' }, { title: '项目书状态', @@ -92,7 +92,7 @@ export const searchFormSchema: FormSchema[] = [ }, //colProps: {span: 6}, }, - { + /*{ label: "预算书状态", field: 'budgetStatus', component: 'JDictSelectTag', @@ -100,7 +100,7 @@ export const searchFormSchema: FormSchema[] = [ dictCode: "budget_status" }, //colProps: {span: 6}, - }, + },*/ ]; //表单数据 export const formSchema: FormSchema[] = [ diff --git a/jeecgboot-vue3/src/views/projectApplication/project/ProjectList.vue b/jeecgboot-vue3/src/views/projectApplication/project/ProjectList.vue index 6bed0c2..9c224f1 100644 --- a/jeecgboot-vue3/src/views/projectApplication/project/ProjectList.vue +++ b/jeecgboot-vue3/src/views/projectApplication/project/ProjectList.vue @@ -54,6 +54,8 @@ import {columns, searchFormSchema, superQuerySchema} from './Project.data'; import { list, deleteOne, + rollbackOne, + submitOne, batchDelete, getImportUrl, getExportUrl, @@ -90,7 +92,7 @@ const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({ ], }, actionColumn: { - width: 280, + width: 320, fixed:'right' }, beforeFetch: (params) => { @@ -128,14 +130,6 @@ const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext // 高级查询配置 const superQueryConfig = reactive(superQuerySchema); - -// onMounted(() => { -// let typeList = getProjectTypeList(); -// console.log('typeList',typeList) -// RANGE_OPTIONS = typeList; -// }); - - /** * 高级查询事件 */ @@ -200,6 +194,16 @@ function handleDetail(record: Recordable) { async function handleDelete(record) { await deleteOne({id: record.id}, handleSuccess); } + +//取回项目 +async function handleSubmitOne(record) { + await submitOne({id: record.id}, handleSuccess); +} + +//取回项目 +async function handleRollbackOne(record) { + await rollbackOne({id: record.id}, handleSuccess); +} /** * 批量删除事件 */ @@ -230,23 +234,40 @@ function getTableAction(record){ { label: '详情', onClick: handleDetail.bind(null, record), - }, - { - label: '删除', - popConfirm: { - title: '是否确认删除', - confirm: handleDelete.bind(null, record), - placement: 'topLeft', - }, - // auth: 'projecttype:project_type:delete' }]; - //申请人待提交时,可以修改 - /*if (record.projectStatus == 5) { + //申请人待提交时可以删除(只有自己能删除) + if (record.projectStatus == 5) { + actions.unshift({ + label: '删除', + popConfirm: { + title: '是否确认删除', + confirm: handleDelete.bind(null, record), + placement: 'topLeft', + }, + }); + } + if (record.projectStatus == 5) { + actions.unshift({ + label: '提交项目', + onClick: handleSubmitOne.bind(null, record), + }); + } + //projectStatus 项目书状态 + //('科技主管部门待提交', '1'); + //('科技主管部门已提交', '2'); + //('不受理', '3'); + //('已受理', '4'); + //('申请人待提交', '5'); + //('申请单位待提交', '6'); + //('市科技局待提交', '7'); + //('市科技局已提交', '8'); + if (record.projectStatus ==6) { + // console.log("jjjjjjjjj",JSON.stringify(userStore.getUserInfo.roles)) actions.unshift({ - label: '编辑', - onClick: handleEdit.bind(null, record), + label: '取回项目', + onClick: handleRollbackOne.bind(null, record), }); - }*/ + } return actions; } /** diff --git a/jeecgboot-vue3/src/views/projectLog/ProjectLog.api.ts b/jeecgboot-vue3/src/views/projectLog/ProjectLog.api.ts new file mode 100644 index 0000000..1e13f40 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectLog/ProjectLog.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/projectLog/projectLog/list', + save='/projectLog/projectLog/add', + edit='/projectLog/projectLog/edit', + deleteOne = '/projectLog/projectLog/delete', + deleteBatch = '/projectLog/projectLog/deleteBatch', + importExcel = '/projectLog/projectLog/importExcel', + exportXls = '/projectLog/projectLog/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/projectLog/ProjectLog.data.ts b/jeecgboot-vue3/src/views/projectLog/ProjectLog.data.ts new file mode 100644 index 0000000..cdf5d54 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectLog/ProjectLog.data.ts @@ -0,0 +1,112 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '项目名称', + align:"center", + dataIndex: 'projectName' + }, + { + title: '操作说明', + align:"center", + dataIndex: 'operationMark' + }, + { + title: '操作时间', + align:"center", + dataIndex: 'operationTime' + }, + { + title: '操作人名称', + align:"center", + dataIndex: 'operatorName' + }, + { + title: '项目书状态', + align:"center", + dataIndex: 'projectStatus_dictText' + }, + { + title: '预算书状态', + align:"center", + dataIndex: 'budgetStatus_dictText' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '项目名称', + field: 'projectName', + component: 'Input', + }, + { + label: '操作说明', + field: 'operationMark', + component: 'Input', + }, + { + label: '操作时间', + field: 'operationTime', + component: 'DatePicker', + componentProps: { + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss' + }, + }, + { + label: '操作人名称', + field: 'operatorName', + component: 'Input', + }, + { + label: '项目书状态', + field: 'projectStatus', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"project_status", + type: "radio" + }, + }, + { + label: '预算书状态', + field: 'budgetStatus', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"budget_status", + type: "radio" + }, + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + projectName: {title: '项目名称',order: 0,view: 'text', type: 'string',}, + operationMark: {title: '操作说明',order: 1,view: 'text', type: 'string',}, + operationTime: {title: '操作时间',order: 2,view: 'datetime', type: 'string',}, + operatorName: {title: '操作人名称',order: 3,view: 'text', type: 'string',}, + projectStatus: {title: '项目书状态',order: 4,view: 'radio', type: 'string',dictCode: 'project_status',}, + budgetStatus: {title: '预算书状态',order: 5,view: 'radio', type: 'string',dictCode: 'budget_status',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/projectLog/ProjectLogList.vue b/jeecgboot-vue3/src/views/projectLog/ProjectLogList.vue new file mode 100644 index 0000000..4f716d7 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectLog/ProjectLogList.vue @@ -0,0 +1,190 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/projectLog/V20241104_1__menu_insert_ProjectLog.sql b/jeecgboot-vue3/src/views/projectLog/V20241104_1__menu_insert_ProjectLog.sql new file mode 100644 index 0000000..346cb11 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectLog/V20241104_1__menu_insert_ProjectLog.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/projectLog文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2024110405388940100', NULL, '项目操作日志', '/projectLog/projectLogList', 'projectLog/ProjectLogList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2024-11-04 17:38:10', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024110405388940101', '2024110405388940100', '添加项目操作日志', NULL, NULL, 0, NULL, NULL, 2, 'projectLog:project_log:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-11-04 17:38:10', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024110405388940102', '2024110405388940100', '编辑项目操作日志', NULL, NULL, 0, NULL, NULL, 2, 'projectLog:project_log:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-11-04 17:38:10', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024110405388940103', '2024110405388940100', '删除项目操作日志', NULL, NULL, 0, NULL, NULL, 2, 'projectLog:project_log:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-11-04 17:38:10', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024110405388940104', '2024110405388940100', '批量删除项目操作日志', NULL, NULL, 0, NULL, NULL, 2, 'projectLog:project_log:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-11-04 17:38:10', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024110405388940105', '2024110405388940100', '导出excel_项目操作日志', NULL, NULL, 0, NULL, NULL, 2, 'projectLog:project_log:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-11-04 17:38:10', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024110405388940106', '2024110405388940100', '导入excel_项目操作日志', NULL, NULL, 0, NULL, NULL, 2, 'projectLog:project_log:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-11-04 17:38:10', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/projectLog/components/ProjectLogForm.vue b/jeecgboot-vue3/src/views/projectLog/components/ProjectLogForm.vue new file mode 100644 index 0000000..7ecb62f --- /dev/null +++ b/jeecgboot-vue3/src/views/projectLog/components/ProjectLogForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/projectLog/components/ProjectLogModal.vue b/jeecgboot-vue3/src/views/projectLog/components/ProjectLogModal.vue new file mode 100644 index 0000000..632fd86 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectLog/components/ProjectLogModal.vue @@ -0,0 +1,76 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/sys/login/TokenLoginPage.vue b/jeecgboot-vue3/src/views/sys/login/TokenLoginPage.vue index c11e204..5faaf34 100644 --- a/jeecgboot-vue3/src/views/sys/login/TokenLoginPage.vue +++ b/jeecgboot-vue3/src/views/sys/login/TokenLoginPage.vue @@ -5,7 +5,7 @@
-
JeecgBoot 企业级低代码平台
+
科技管理信息系统
@@ -215,4 +215,4 @@ } } - \ No newline at end of file +