| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368 |
- package com.goafanti.organization.service.impl;
- import com.goafanti.admin.bo.AdminListBo;
- import com.goafanti.common.dao.DepartmentMapper;
- import com.goafanti.common.dao.ExpenseConfigDetailsMapper;
- import com.goafanti.common.dao.TOrderMidMapper;
- import com.goafanti.common.dao.TOrderNewMapper;
- import com.goafanti.common.model.Department;
- import com.goafanti.common.model.ExpenseConfigDetails;
- import com.goafanti.common.utils.AsyncUtils;
- import com.goafanti.common.utils.StringUtils;
- import com.goafanti.core.mybatis.BaseMybatisDao;
- import com.goafanti.core.mybatis.page.Pagination;
- import com.goafanti.core.shiro.token.TokenManager;
- import com.goafanti.organization.bo.DepOut;
- import com.goafanti.organization.bo.InputDep;
- import com.goafanti.organization.bo.OrganizationListOut;
- import com.goafanti.organization.service.OrganizationService;
- import net.sourceforge.pinyin4j.PinyinHelper;
- import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
- import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.*;
- import java.util.stream.Collectors;
- @Service
- public class OrganizationServiceImpl extends BaseMybatisDao<DepartmentMapper> implements OrganizationService {
- @Autowired
- private DepartmentMapper departmentMapper;
- @Autowired
- private ExpenseConfigDetailsMapper expenseConfigDetailsMapper;
- @Autowired
- private TOrderNewMapper torderNewMapper;
- @Autowired
- private TOrderMidMapper torderMidMapper;
- @Autowired
- private AsyncUtils asyncUtils;
- @Override
- public Pagination<OrganizationListOut> listOrganizationManagement(OrganizationListOut olo, Integer pageNo,
- Integer pageSize) {
- /*olo.setCreateId(TokenManager.getAdminId());*/
- Map<String,Object> params =disposeParams(olo);
- @SuppressWarnings("unchecked")
- Pagination<OrganizationListOut> p=(Pagination<OrganizationListOut>)findPage("selectOrganizationList","selectOrganizationCount",params,pageNo,pageSize);
- return p;
- }
- private Map<String,Object> disposeParams(OrganizationListOut olo){
- Map<String,Object> params = new HashMap<String, Object>();
- if(StringUtils.isNotBlank(olo.getId())) params.put("id", olo.getId());
- if(StringUtils.isNotBlank(olo.getCreateId())) params.put("createId", olo.getCreateId());
- if(StringUtils.isNotBlank(olo.getCreateTime())) params.put("createTime", olo.getCreateTime());
- if(StringUtils.isNotBlank(olo.getUpdateTime())) params.put("updateTime", olo.getUpdateTime());
- if(StringUtils.isNotBlank(olo.getDeletedSign())) params.put("deletedSign", olo.getDeletedSign());
- if(StringUtils.isNotBlank(olo.getName())) params.put("name", olo.getName());
- if(StringUtils.isNotBlank(olo.getType())) params.put("type", olo.getType());
- if(StringUtils.isNotBlank(olo.getManagerId())) params.put("managerId", olo.getManagerId());
- if(StringUtils.isNotBlank(olo.getDepNo())) params.put("depNo", olo.getDepNo());
- if(StringUtils.isNotBlank(olo.getSuperId())) params.put("superId", olo.getSuperId());
- if(StringUtils.isNotBlank(olo.getRemarks())) params.put("remarks", olo.getRemarks());
- if(StringUtils.isNotBlank(olo.getStatus())) params.put("status", olo.getStatus());
- return params;
- }
- @Override
- public List<DepOut> selectSuperId(Integer hideSign) {
- if(hideSign==null){
- hideSign=1;
- }
- //此处理用于前端不批量改接口
- if (hideSign>1){
- hideSign=null;
- }
- List<DepOut> depList=departmentMapper.selectSuperId(hideSign,null,null);
- return listSort(depList);
- }
- private List<DepOut> listSort(List<DepOut> depList) {
- HanyuPinyinOutputFormat format=new HanyuPinyinOutputFormat();
- Collections.sort(depList, (o1, o2) -> {
- String str1=null;
- String str2=null;
- try {
- str1= PinyinHelper.toHanYuPinyinString(o1.getName(),format," ",true);
- str2= PinyinHelper.toHanYuPinyinString(o2.getName(),format," ",true);
- } catch (BadHanyuPinyinOutputFormatCombination e) {
- throw new RuntimeException(e);
- }
- return str1.compareTo(str2);
- });
- return depList;
- }
- @Override
- public List<DepOut> getAllDep(Integer hideSign) {
- if(hideSign==null){
- hideSign=1;
- }
- //此处理用于前端不批量改接口
- if (hideSign>1){
- hideSign=null;
- }
- List<DepOut> allDep=departmentMapper.selectSuperId(hideSign,null,null);
- List<DepOut> dep1=new ArrayList<>();
- Integer x=3;//设置顶级
- for (DepOut e : allDep) {
- if (e.getLvl()==x){
- e.setList(selectDepLvl(allDep,e.getId(),x+1));
- dep1.add(e);
- }
- }
- return dep1;
- }
- private List<DepOut> selectDepLvl(List<DepOut> allDep,String id, Integer i) {
- List<DepOut> newDep=new ArrayList<>();
- for (DepOut depOut : allDep) {
- if (depOut.getLvl()==i&&depOut.getSuperId().equals(id)){
- if (i<7)depOut.setList(selectDepLvl(allDep,depOut.getId(),i+1));
- newDep.add(depOut);
- }
- }
- return newDep;
- }
- /**
- * XXIn form 提交 ,bo包中
- * xxOut 输出 bo包中
- * domain 类 model中
- *
- */
- @Override
- public int addOrganization( String name, String managerId, String type, String superId, String remarks,
- Integer workingHoursType,Integer hideSign,String depNo) {
- Department superDep=departmentMapper.selectByPrimaryKey(superId);
- String id = UUID.randomUUID().toString();
- Date now = new Date();
- Department dep=new Department();
- dep.setId(id);
- String createId =departmentMapper.selectAdminNameById(TokenManager.getAdminId());
- dep.setCreateId(createId);
- dep.setCreateTime(now);
- dep.setUpdateTime(now);
- dep.setDeletedSign(0);
- dep.setName(name);
- dep.setLvl(superDep.getLvl()+1);
- dep.setType(type);
- dep.setManagerId(managerId);
- dep.setDepNo(depNo);
- // superId=departmentMapper.selectIdByName(superId);
- dep.setSuperId(superId);
- dep.setRemarks(remarks);
- dep.setStatus("0");
- dep.setHideSign(hideSign);
- dep.setWorkingHoursType(workingHoursType);
- departmentMapper.insertSelective(dep);
- return 1;
- }
- private String getMaxDep(Department superDep) {
- String sdepNo=superDep.getDepNo();
- Department maxDep=departmentMapper.selectByDepNo(superDep.getId());
- String depNo=new String();
- if (maxDep==null){
- depNo= sdepNo +"01";
- }else {
- String maxDepNo=maxDep.getDepNo();
- Integer countNo=Integer.valueOf(maxDepNo.substring(maxDepNo.length()-2));
- countNo++;
- if (countNo<10){
- depNo= sdepNo +"0"+countNo;
- }else {
- depNo= sdepNo +countNo;
- }
- }
- return depNo;
- }
- @Override
- public List<AdminListBo> selectName(String name) {
- List<AdminListBo> list=departmentMapper.selectName(name);
- return list;
- }
- @Override
- public OrganizationListOut selectAllById(String id) {
- OrganizationListOut olo=departmentMapper.selectAllById(id);
- List<ExpenseConfigDetails> list = expenseConfigDetailsMapper.selectByDepId(id);
- olo.setExpenseRetrialFinanceExamineList(list.stream().filter(e ->e.getType()==1).collect(Collectors.toList()));
- olo.setCeoExamineList(list.stream().filter(e ->e.getType()==2).collect(Collectors.toList()));
- olo.setCfoExamineList(list.stream().filter(e ->e.getType()==3).collect(Collectors.toList()));
- olo.setViceCeoExamineList(list.stream().filter(e ->e.getType()==4).collect(Collectors.toList()));
- olo.setCashierExamineList(list.stream().filter(e ->e.getType()==5).collect(Collectors.toList()));
- olo.setSuperId(departmentMapper.selectNameById(olo.getSuperId()));
- return olo;
- }
- @Override
- public int deleteById(String id) {
- departmentMapper.deleteById(id);
- return 1;
- }
- @Override
- public int updateOrganization(InputDep in) {
- //获取上级编号
- Department superDep=departmentMapper.selectByPrimaryKey(in.getSuperId());
- Department useDep = departmentMapper.selectByPrimaryKey(in.getId());
- Date now=new Date();
- Department dep=new Department();
- dep.setLvl(superDep.getLvl()+1);
- dep.setName(in.getName());
- dep.setType(in.getType());
- dep.setUpdateTime(now);
- dep.setManagerId(in.getManagerId());
- dep.setStatus(in.getStatus());
- dep.setRemarks(in.getRemarks());
- dep.setId(in.getId());
- dep.setSuperId(in.getSuperId());
- dep.setDepNo(in.getDepNo());
- dep.setAbbreviation(in.getAbbreviation());
- dep.setProvince(in.getProvince());
- dep.setHideSign(in.getHideSign());
- dep.setWorkingHoursType(in.getWorkingHoursType());
- dep.setApproval(in.getApproval());
- dep.setApprovalAid(in.getApprovalAid());
- //财务与复审切换的时候要切换所有未审核的财务
- boolean updateFinance=false;
- boolean updateRetrialFinance=false;
- if(StringUtils.isNotBlank(in.getFinanceId())&&!in.getFinanceId().equals(useDep.getFinanceId())){
- dep.setFinanceId(in.getFinanceId());
- //处理订单
- departmentMapper.updateOrderDepFinanceNotExamine(in.getFinanceId(),useDep.getFinanceId());
- List<String> list = torderNewMapper.selectByFinanceNotExamine(in.getFinanceId());
- torderNewMapper.updateOrderDepFinanceExamineName(list);
- updateFinance=true;
- }
- if (StringUtils.isNotBlank(in.getRetrialFinanceId())&&
- !in.getRetrialFinanceId().equals(useDep.getRetrialFinanceId())){
- dep.setRetrialFinanceId(in.getRetrialFinanceId());
- departmentMapper.updateOrderDepFinanceNotExamine(in.getRetrialFinanceId(),useDep.getRetrialFinanceId());
- List<String> list = torderNewMapper.selectByFinanceNotExamine(in.getRetrialFinanceId());
- torderNewMapper.updateOrderDepFinanceExamineName(list);
- updateRetrialFinance=true;
- }
- dep.setExpenseFinanceId(in.getExpenseFinanceId());
- //获取需要重新刷新的财务
- List<String> aids =new ArrayList<>();
- if (updateFinance){
- if (aids.contains(in.getFinanceId())){
- aids.add(in.getFinanceId());
- }
- if(!aids.contains(useDep.getFinanceId())){
- aids.add(useDep.getFinanceId());
- }
- torderMidMapper.updateFinanceId(in.getId(),in.getFinanceId());
- asyncUtils.updateFinanceExamine(in.getFinanceId());
- }
- if(updateRetrialFinance){
- if (aids.contains(in.getRetrialFinanceId())){
- aids.add(in.getRetrialFinanceId());
- }
- if(!aids.contains(useDep.getRetrialFinanceId())){
- aids.add(useDep.getRetrialFinanceId());
- }
- }
- //
- checkFinaceUpdate(aids);
- if (in.getExpenseRetrialFinanceExamine()==1){
- dep.setExpenseRetrialFinanceExamine(in.getExpenseRetrialFinanceExamine());
- }
- if (in.getCeoExamine()==1){
- dep.setCeoExamine(in.getCeoExamine());
- }
- if (in.getCfoExamine()==1){
- dep.setCfoExamine(in.getCfoExamine());
- }
- if (in.getViceCeoExamine()==1){
- dep.setViceCeoExamine(in.getViceCeoExamine());
- }
- if (in.getCashierExamine()==1){
- dep.setCashierExamine(in.getCashierExamine());
- }
- int x=departmentMapper.updateByPrimaryKeySelective(dep);
- return x;
- }
- /**
- * 如果更换了负责人刷新中间表
- */
- private void checkFinaceUpdate(List<String> aids) {
- asyncUtils.financeCoutSwitch(aids);
- }
- @Override
- public boolean checkDepNo(String depNo,Integer type) {
- String useDepNo=departmentMapper.selectIdByDepNo(depNo);
- if (StringUtils.isNotBlank(useDepNo)){
- if (type==1){
- if (!depNo.equals(useDepNo)){
- return false;
- }else {
- return true;
- }
- }else {
- return true;
- }
- }
- return false;
- }
- private String countDepNo(String sdepNo, Integer count) {
- String dep=null;
- if(count<10){
- dep=sdepNo+"0"+count;
- String sid=departmentMapper.selectIdByDepNo(dep);
- while(sid!=null){
- count=(count+1)%100;
- if(count>=10){
- dep=sdepNo+count;
- }else{
- dep=sdepNo+"0"+count;
- }
- sid=departmentMapper.selectIdByDepNo(dep);
- }
- }else if(count>=10){
- dep=sdepNo+count;
- String sid=departmentMapper.selectIdByDepNo(dep);
- while(sid!=null){
- count=(count+1)%100;
- dep=sdepNo+count;
- sid=departmentMapper.selectIdByDepNo(dep);
- }
- }
- return dep;
- }
- private void updateLowerLevelNo(String id,String depNo,Integer lvl) {
- List<OrganizationListOut> Nos =departmentMapper.selectIDNBySuperId(id);
- int i=1;
- for (OrganizationListOut o : Nos) {
- o.setLvl(lvl+1);
- if(i<10){
- String dep=depNo+"0"+i;
- if(i>=10){
- dep=depNo+i;
- }else{
- dep=depNo+"0"+i;
- }
- o.setDepNo(dep);
- } else if(i>=10){
- String dep=depNo+i;
- dep=depNo+i;
- o.setDepNo(dep);
- }
- departmentMapper.updateByNumber(o);
- updateLowerLevelNo(o.getId(),o.getDepNo(),o.getLvl());
- i++;
- }
- }
- }
|