Explorar o código

Merge remote-tracking branch 'origin/master'

user5 %!s(int64=2) %!d(string=hai) anos
pai
achega
b7012bc1cd

+ 64 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/mould/controller/SerialnumTplController.java

@@ -0,0 +1,64 @@
+package com.jeeplus.test.mould.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import com.jeeplus.sys.domain.User;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.UserUtils;
+import com.jeeplus.test.mould.domain.SysSerialnumTpl;
+import com.jeeplus.test.mould.service.SerialnumTplService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags ="template")
+@RestController
+@RequestMapping(value = "/sys/template")
+public class SerialnumTplController {
+
+    @Resource
+    private SerialnumTplService serialnumTplService;
+
+    /**
+     * 编号模板列表
+     */
+    @ApiOperation(value = "编号模板列表")
+    @GetMapping(value = "/list")
+    public ResponseEntity<IPage<SysSerialnumTpl>> list(Page<SysSerialnumTpl> page, SysSerialnumTpl sysSerialnumTpl) throws Exception{
+        QueryWrapper<SysSerialnumTpl> sysSerialnumTplQueryWrapper = QueryWrapperGenerator.buildQueryCondition(sysSerialnumTpl, SysSerialnumTpl.class);
+        IPage<SysSerialnumTpl> list = serialnumTplService.list(page, sysSerialnumTplQueryWrapper);
+        return ResponseEntity.ok (list);
+    }
+
+    /**
+     * 编号模板删除
+     */
+    @ApiOperation(value = "编号模板列表")
+    @GetMapping(value = "/remove")
+    public String remove(@RequestParam String id){
+        return serialnumTplService.remove(id);
+    }
+
+    /**
+     * 编号模板查询
+     */
+    @ApiOperation(value = "编号模板列表")
+    @GetMapping(value = "/findById")
+    public SysSerialnumTpl findById(@RequestParam String id){
+        return serialnumTplService.findById(id);
+    }
+
+    /**
+     * 编号模板保存、修改
+     */
+    @ApiOperation(value = "编号模板保存、修改")
+    @PostMapping(value = "/save")
+    public String save(@RequestBody SysSerialnumTpl sysSerialnumTpl){
+        return serialnumTplService.save(sysSerialnumTpl);
+    }
+}

+ 64 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/mould/domain/SysSerialnumTpl.java

@@ -0,0 +1,64 @@
+package com.jeeplus.test.mould.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.query.Query;
+import lombok.Data;
+
+@Data
+@TableName(value = "sys_serialnum_tpl")
+public class SysSerialnumTpl extends BaseEntity {
+
+    /**
+     * 公司id
+     */
+    @TableField(value = "company_id")
+    private String companyId;
+
+    /**
+     * 业务标识
+     */
+    @TableField(value = "biz_code")
+    private String bizCode;
+
+    /**
+     * 年度
+     */
+    @TableField(value = "year_built")
+    private String yearBuilt;
+
+    /**
+     * 序列号
+     */
+    @TableField(value = "serial_num")
+    private Integer serialNum;
+
+    /**
+     * 编号模板
+     */
+    @TableField(value = "serial_tpl")
+    private String serialTpl;
+
+    /**
+     * 序列号长度
+     */
+    @TableField(value = "serial_num_len")
+    private Integer serialNumLen;
+
+    /**
+     * 模板名称
+     */
+    @Query
+    @TableField(value = "tpl_name")
+    private String tplName;
+
+    /**
+     * 模板示例
+     */
+    @TableField(value = "serial_tpl_ex")
+    private String serialTplEx;
+
+    @TableField(exist = false)
+    private String companyName;
+}

+ 20 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/mould/mapper/SerialnumTplMapper.java

@@ -0,0 +1,20 @@
+package com.jeeplus.test.mould.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.mould.domain.SysSerialnumTpl;
+import org.apache.ibatis.annotations.Param;
+
+public interface SerialnumTplMapper extends BaseMapper<SysSerialnumTpl> {
+
+    IPage<SysSerialnumTpl> pageList(Page<SysSerialnumTpl> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
+
+    SysSerialnumTpl queryByComAndBizCode(@Param("id")String id, @Param("bizCode")String bizCode);
+
+    void resetSerialNum(@Param("id")String id,@Param("yearBuilt")String yearBuilt,@Param("newYear")String newYear);
+
+    int updateSerialNum(SysSerialnumTpl numTpl);
+}

+ 36 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/mould/mapper/xml/TemplateMapper.xml

@@ -0,0 +1,36 @@
+<?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.jeeplus.test.mould.mapper.SerialnumTplMapper">
+
+	<select id="pageList" resultType="com.jeeplus.test.mould.domain.SysSerialnumTpl">
+		SELECT
+			a.id,
+			a.tpl_name,
+			(SELECT b.`name` FROM sys_office b WHERE b.del_flag = 0 AND b.id = a.company_id ) AS company_name,
+			a.biz_code,
+			a.serial_num_len,
+			a.serial_tpl_ex
+		FROM
+			sys_serialnum_tpl a
+		${ew.customSqlSegment}
+		ORDER BY create_date DESC
+	</select>
+
+	<select id="queryByComAndBizCode" resultType="com.jeeplus.test.mould.domain.SysSerialnumTpl">
+		select	a.*
+		 from sys_serialnum_tpl a
+			where a.company_id = #{companyId} and a.biz_code = #{bizCode}
+	</select>
+
+	<update id="resetSerialNum">
+		UPDATE sys_serialnum_tpl
+		SET serial_num = 0 , year_built = #{newYear}
+		WHERE id = #{id} AND  year_built = #{yearBuilt}
+	</update>
+
+	<update id="updateSerialNum">
+		UPDATE sys_serialnum_tpl
+		SET serial_num = serial_num +1
+		WHERE id = #{id}
+	</update>
+</mapper>

+ 131 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/mould/service/SerialnumTplService.java

@@ -0,0 +1,131 @@
+package com.jeeplus.test.mould.service;
+
+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.jeeplus.sys.domain.Office;
+import com.jeeplus.sys.mapper.OfficeMapper;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.sys.utils.UserUtils;
+import com.jeeplus.test.mould.domain.SysSerialnumTpl;
+import com.jeeplus.test.mould.mapper.SerialnumTplMapper;
+import org.apache.http.client.utils.DateUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+@Service
+public class SerialnumTplService {
+
+    @Resource
+    private SerialnumTplMapper serialnumTplMapper;
+
+    @Resource
+    private OfficeMapper officeMapper;
+
+    public IPage<SysSerialnumTpl> list(Page<SysSerialnumTpl> page, QueryWrapper<SysSerialnumTpl> sysSerialnumTplQueryWrapper) {
+        sysSerialnumTplQueryWrapper.eq("del_flag", 0);
+        IPage<SysSerialnumTpl> list = serialnumTplMapper.pageList(page, sysSerialnumTplQueryWrapper);
+        return list;
+    }
+
+    public String remove(String id) {
+        serialnumTplMapper.deleteById(id);
+        return "操作成功";
+    }
+
+    public SysSerialnumTpl findById(String id) {
+        SysSerialnumTpl sysSerialnumTpl = serialnumTplMapper.selectById(id);
+        return sysSerialnumTpl;
+    }
+
+    public String save(SysSerialnumTpl sysSerialnumTpl) {
+        //获取当前登录人信息
+        UserDTO dto = UserUtils.getCurrentUserDTO();
+        //新增
+        if (StringUtils.isEmpty(sysSerialnumTpl.getId())) {
+            String id = UUID.randomUUID().toString().replace("-", "");
+            sysSerialnumTpl.setId(id);
+            sysSerialnumTpl.setCreateBy(dto.getId());
+            sysSerialnumTpl.setCreateDate(new Date());
+            sysSerialnumTpl.setUpdateBy(dto.getId());
+            sysSerialnumTpl.setUpdateDate(new Date());
+            sysSerialnumTpl.setDelFlag(0);
+            serialnumTplMapper.insert(sysSerialnumTpl);
+        }
+        //修改
+        if (StringUtils.isNotEmpty(sysSerialnumTpl.getId())) {
+            sysSerialnumTpl.setUpdateBy(dto.getId());
+            sysSerialnumTpl.setUpdateDate(new Date());
+            serialnumTplMapper.updateById(sysSerialnumTpl);
+        }
+        return "操作完成";
+    }
+
+    @Transactional(readOnly = false,propagation = Propagation.REQUIRES_NEW)
+    public String genSerialNumNotNum(String companyId, String bizCode) throws Exception {
+//        String branchOffice = UserUtils.getSelectOffice().getBranchOffice();
+//        if(StringUtils.isNotBlank(branchOffice)){
+//            company = officeService.get(branchOffice);
+//        }
+//        if (company==null||StringUtils.isBlank(company.getId())){
+//            throw new Exception("生成编号失败,公司信息不能为空");
+//        }
+        //获取当前登录人信息
+        UserDTO dto = UserUtils.getCurrentUserDTO();
+        Office office = officeMapper.selectById(companyId);
+        if (StringUtils.isBlank(bizCode)){
+            throw new Exception("生成编号失败,业务类型不能为空");
+        }
+
+        SysSerialnumTpl numTpl = this.querySerialTpl(office, bizCode);
+        if (numTpl==null){
+            //查询编号模板   {brspnm}DZ-{year}-{serialNum}
+            SysSerialnumTpl serialNumTpl = serialnumTplMapper.queryByComAndBizCode("0", bizCode);
+            serialNumTpl.setCompanyId(companyId);
+            serialNumTpl.setSerialNum(0);
+            serialNumTpl.setCreateBy(dto.getId());
+            serialNumTpl.setId(UUID.randomUUID().toString().replace("-", ""));
+            serialnumTplMapper.insert(serialNumTpl);
+            numTpl = serialNumTpl;
+        }
+        if (numTpl==null){
+            throw new Exception("生成编号失败,请先设置相关业务编号模板");
+        }
+        if ("0".equals(office.getParentId()))
+            office.setParentId(null);
+        String year = DateUtils.formatDate(new Date(), "yyyy");
+        if(!year.equals(numTpl.getYearBuilt())){
+            serialnumTplMapper.resetSerialNum(numTpl.getId(),numTpl.getYearBuilt(),year);
+        }
+        Map<String, String> map = new HashMap<>();
+        String serialTpl = numTpl.getSerialTpl();
+        int i =serialnumTplMapper.updateSerialNum(numTpl);
+        if (i!=1){
+            throw new Exception("生成编号失败,请稍后重试");
+        }
+        String companyShortname = UserUtils.getSysParam("company_shortname", dto.getCompanyDTO().getId());
+        map.put("spnm",StringUtils.isBlank(companyShortname)?"":companyShortname);
+        String branchShortname = UserUtils.getSysParam("branch_shortname", dto.getCompanyDTO().getId());
+        map.put("brspnm", StringUtils.isBlank(branchShortname)?"":branchShortname);
+        map.put("year",year);
+        String serNum = StringUtils.renderString(serialTpl, map);
+        return serNum;
+    }
+
+    private SysSerialnumTpl querySerialTpl(Office company, String bizCode) {
+        SysSerialnumTpl numTpl = serialnumTplMapper.queryByComAndBizCode(company.getId(), bizCode);
+        if (numTpl==null && company.getParentId()!=null && !"0".equals(company.getParentId())){
+            Office office = officeMapper.selectById(company.getParentId());
+            numTpl = this.querySerialTpl(office,bizCode);
+        }
+        return numTpl;
+    }
+}

+ 15 - 1
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/controller/OfficeController.java

@@ -97,7 +97,21 @@ public class OfficeController {
         return ResponseEntity.ok (rootTree);
     }
 
-
+    /**
+     * 获取机构JSON数据。
+     *
+     * @param extId 排除的ID
+     * @param type  类型(1:公司;2:部门)
+     * @param showAll 是否显示不可用数据 1 显示 0 隐藏
+     * @return
+     */
+    @ApiLog("获取部门数据")
+    @GetMapping("treeData2")
+    public ResponseEntity treeData2(@RequestParam(required = false) String extId, @RequestParam(required = false) String type, @RequestParam(required = false, defaultValue = CommonConstants.NO) String showAll) {
+        List<OfficeDTO> list = officeWrapper.toDTO (officeService.list ());
+        List rootTree = officeService.getRootTree2 (list, extId, type, showAll);
+        return ResponseEntity.ok (rootTree);
+    }
 
 
 }

+ 29 - 0
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/domain/SysParameter.java

@@ -0,0 +1,29 @@
+package com.jeeplus.sys.domain;
+
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+public class SysParameter extends BaseEntity {
+
+    private String remarks;
+
+    private String officeId;
+
+    private String companyId;
+
+    private String branchOffice;
+
+    private String type;
+
+    private String name;
+
+    private String parameter;
+
+    private String parameterValue;
+
+    private String valueType;
+
+    private String isForce;
+
+}

+ 23 - 0
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/domain/SysParameterValue.java

@@ -0,0 +1,23 @@
+package com.jeeplus.sys.domain;
+
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+public class SysParameterValue extends BaseEntity {
+
+    private String remarks;
+
+    private String officeId;
+
+    private String companyId;
+
+    private String branchOffice;
+
+    private String parameterId;
+
+    private String falt;
+
+    private String value;
+
+}

+ 7 - 0
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/mapper/OfficeMapper.java

@@ -5,6 +5,8 @@ package com.jeeplus.sys.mapper;
 
 import com.jeeplus.core.domain.TreeMapper;
 import com.jeeplus.sys.domain.Office;
+import com.jeeplus.sys.domain.SysParameter;
+import com.jeeplus.sys.domain.SysParameterValue;
 import com.jeeplus.sys.service.dto.OfficeDTO;
 import org.apache.ibatis.annotations.Param;
 
@@ -26,4 +28,9 @@ public interface OfficeMapper extends TreeMapper<Office> {
      */
     List<OfficeDTO> getOfficeAllByOfficeName(@Param("officeName") String officeName);
 
+    SysParameter findIsforce(@Param("parameter")String parameter);
+
+    SysParameterValue findValueByParameter(@Param("parameter")String parameter, @Param("branchOffice")String branchOffice);
+
+    SysParameterValue findSysValue(String parameter);
 }

+ 25 - 0
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/mapper/xml/OfficeMapper.xml

@@ -54,4 +54,29 @@
             </if>
         </where>
     </select>
+
+    <select id="findIsforce" resultType="com.jeeplus.sys.domain.SysParameter">
+        SELECT
+            a.*
+        FROM sys_parameter a
+        WHERE a.parameter=#{parameter} and a.del_flag = '0'
+    </select>
+
+    <select id="findValueByParameter" resultType="com.jeeplus.sys.domain.SysParameterValue" >
+		SELECT
+		a.*
+		FROM sys_parameter_value a
+		WHERE a.parameter_id=(select s.id from sys_parameter s where s.parameter=#{parameter})
+		 and a.branch_office = #{branchOffice}
+		 and falt='0'
+		 and del_flag = '0'
+	</select>
+
+    <select id="findSysValue" resultType="com.jeeplus.sys.domain.SysParameterValue" >
+		SELECT
+	    a.*
+		FROM sys_parameter_value a
+		WHERE a.parameter_id=(select s.id from sys_parameter s where s.parameter=#{parameter})
+	    and a.falt = '1' and del_flag = '0'
+	</select>
 </mapper>

+ 57 - 0
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/service/OfficeService.java

@@ -168,4 +168,61 @@ public class OfficeService extends TreeService<OfficeMapper, Office> {
         return offices;
     }
 
+    public List <OfficeDTO> getRootTree2(List<OfficeDTO> list, String extId, String type, String showAll) {
+        List<OfficeDTO> offices = Lists.newArrayList ();
+        List<OfficeDTO> rootTrees = officeWrapper.toDTO (super.getChildren (new Office (OfficeDTO.getRootId ())));
+        for (OfficeDTO root : rootTrees) {
+            if (this.isUseAble ( extId, type,root, showAll )){
+                // 不是被排除节点的子节点
+                List<OfficeDTO> officeList = formatListToTree2 (root, list, extId, type, showAll);
+                offices.addAll (officeList);
+            }
+        }
+        return offices;
+    }
+
+    public List<OfficeDTO> formatListToTree2(OfficeDTO root, List<OfficeDTO> allList, String extId, String type, String showAll) {
+        String rootId = root.getId ();
+
+        // type为1时,是选择公司,因此禁用type为2的部门节点
+        if(OfficeTypeEnum.COMPANY.getValue ().equals(type) && root.getType().equals(OfficeTypeEnum.OFFICE.getValue ())){
+            root.setDisabled(true);
+        }else {
+            root.setDisabled(false);
+        }
+        // 最终的树形态
+        List<OfficeDTO> trees = Lists.newArrayList ();
+
+        // 把需要构造树的所有列表, 根据以父id作为key, 整理为列表
+        Map <String, List<OfficeDTO>> treeMap = Maps.newHashMap ();
+        for (OfficeDTO entity : allList) {
+            List<OfficeDTO> offices = treeMap.get (entity.getParent ().getId ());
+            if (offices == null) {
+                offices = Lists.newLinkedList ();
+            }
+
+            if (this.isUseAble ( extId, type,root, showAll )){
+                // type为2时,是选择部门,因此禁用type为1的公司节点
+                if(OfficeTypeEnum.COMPANY.getValue ().equals(type) && entity.getType().equals(OfficeTypeEnum.OFFICE.getValue ())){
+                    entity.setDisabled(true);
+                }else {
+                    entity.setDisabled(false);
+                }
+                offices.add (entity);
+                treeMap.put (entity.getParent ().getId (), offices);
+            }
+        }
+
+        // 开始递归格式化
+        List<OfficeDTO> children = treeMap.get (rootId);
+        if (children != null) {
+            for (OfficeDTO parent : children) {
+                formatFillChildren (parent, treeMap);
+                trees.add (parent);
+            }
+        }
+
+        root.setChildren (trees);
+        return Lists.newArrayList (root);
+    }
 }

+ 40 - 2
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/utils/UserUtils.java

@@ -10,6 +10,10 @@ import com.google.common.collect.Lists;
 import com.jeeplus.common.redis.RedisUtils;
 import com.jeeplus.security.util.SecurityUtils;
 import com.jeeplus.sys.constant.CacheNames;
+import com.jeeplus.sys.domain.Office;
+import com.jeeplus.sys.domain.SysParameter;
+import com.jeeplus.sys.domain.SysParameterValue;
+import com.jeeplus.sys.mapper.OfficeMapper;
 import com.jeeplus.sys.service.DataRuleService;
 import com.jeeplus.sys.service.MenuService;
 import com.jeeplus.sys.service.UserService;
@@ -27,7 +31,7 @@ import java.util.Set;
  */
 public class UserUtils {
 
-
+	private static OfficeMapper officeMapper;
 
 	/**
 	 * 根据ID获取用户
@@ -160,7 +164,41 @@ public class UserUtils {
 		return getPermissionsByLoginName ( loginName );
 	}
 
-
+	/**
+	 * 获取系统参数
+	 * parameter 参数类型
+	 * branchOffice 分公司Id 分公司id为空传公司id
+	 * @return
+	 */
+	public static String getSysParam(String parameter,String companyId) {
+		Office office = officeMapper.selectById(companyId);
+		SysParameter SysParameter = officeMapper.findIsforce(parameter);
+		if(office!=null&&SysParameter!=null&&"1".equals(SysParameter.getIsForce())){//公司必须自己定义参数
+			if (!"0".equals(office.getParentId()) && "1".equals(office.getType())) {//分公司的人
+				SysParameterValue sysParameterValue = officeMapper.findValueByParameter(parameter, office.getId());
+				if (sysParameterValue != null) {
+					return sysParameterValue.getValue();
+				}else{
+					return "";
+				}
+			}else{
+				SysParameterValue sysComValue = officeMapper.findValueByParameter(parameter, companyId);
+				if (sysComValue != null) {
+					return sysComValue.getValue();
+				} else {
+					return "";
+				}
+			}
+		}else{
+			SysParameterValue sysComValue = officeMapper.findValueByParameter(parameter, companyId);
+			if (sysComValue == null) {
+				SysParameterValue sysValue = officeMapper.findSysValue(parameter);
+				return sysValue.getValue();
+			} else {
+				return sysComValue.getValue();
+			}
+		}
+	}