| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509 |
- package com.goafanti.organization.service.impl;
- import com.goafanti.admin.bo.AdminListBo;
- import com.goafanti.common.constant.AFTConstants;
- import com.goafanti.common.dao.*;
- import com.goafanti.common.enums.OrderLogProcess;
- import com.goafanti.common.model.*;
- 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.order.bo.TOrderNewBo;
- import com.goafanti.order.enums.ApprovalNewState;
- import com.goafanti.order.enums.ProcessStatus;
- 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 TOrderExamineMapper torderExamineMapper;
- @Autowired
- private TOrderLogMapper tOrderLogMapper;
- @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());
- dep.setTechAdminId(in.getTechAdminId());
- dep.setOperationGuaranteeId(in.getOperationGuaranteeId());
- //财务与复审切换的时候要切换所有未审核的财务
- boolean updateFinance=false;
- boolean updateRetrialFinance=false;
- //获取需要重新刷新的财务
- List<String> aids =new ArrayList<>();
- if(!in.getFinanceId().equals(useDep.getFinanceId())){
- if(StringUtils.isBlank(in.getFinanceId())){
- //先将旧的查出来
- List<String> list = torderNewMapper.selectByFinanceNotExamine(useDep.getFinanceId());
- //再删除旧单需要审核的
- torderExamineMapper.deleteExamineFinance(useDep.getFinanceId());
- if (!list.isEmpty()){
- torderNewMapper.updateOrderDepFinanceExamineName(list);
- }
- }else {
- dep.setFinanceId(in.getFinanceId());
- //审核人切换
- departmentMapper.updateOrderDepFinanceNotExamine(in.getFinanceId(),useDep.getFinanceId());
- //查询切换后的订单刷新审核人
- List<String> list = torderNewMapper.selectByFinanceNotExamine(in.getFinanceId());
- if (!list.isEmpty()){
- torderNewMapper.updateOrderDepFinanceExamineName(list);
- }
- }
- updateFinance=true;
- }
- if (StringUtils.isBlank(in.getTechAdminId())||StringUtils.isBlank(in.getOperationGuaranteeId())
- ||StringUtils.isBlank(in.getRetrialFinanceId())){
- if(StringUtils.isBlank(in.getTechAdminId()))in.setTechAdminId(null);
- if(StringUtils.isBlank(in.getOperationGuaranteeId()))in.setOperationGuaranteeId(null);
- if(StringUtils.isBlank(in.getRetrialFinanceId()))in.setRetrialFinanceId(null);
- departmentMapper.updateNull(in);
- }
- //处理去掉咨询师管理员
- if (in.getTechAdminId()==null||!in.getTechAdminId().equals(useDep.getTechAdminId())){
- if(StringUtils.isBlank(in.getTechAdminId())){
- //先将旧的查出来
- List<String> list = torderNewMapper.selectByFinanceNotExamine(useDep.getTechAdminId());
- //再删除旧单需要审核的
- torderExamineMapper.deleteExamineFinance(useDep.getTechAdminId());
- if (!list.isEmpty()){
- //先把药推送到下个流程的查出来
- for (String s : list) {
- List<TOrderExamine> tOrderExamines = torderExamineMapper.selectByOrderNo(s, 0);
- int i = 0;
- for (TOrderExamine e : tOrderExamines) {
- if (e.getStatus() == 1) i++;
- }
- if (i == tOrderExamines.size()) {
- //推送订单流程
- addOrderLog(s,OrderLogProcess.XMZJSH.getCode(),"部门修改技术总监,判定审核通过");
- StringBuilder str = new StringBuilder();
- TOrderNew tOrderNew = torderNewMapper.selectByPrimaryKey(s);
- TOrderNewBo order = torderNewMapper.getSaleIdByOno(s);
- TOrderNew newOrder = new TOrderNew();
- newOrder.setOrderNo(s);
- //如果订单是特批
- if (tOrderNew.getApproval() == ApprovalNewState.TPDSH.getCode() || tOrderNew.getApproval() == ApprovalNewState.TPBH.getCode()) {
- if (StringUtils.isNotEmpty(in.getOperationGuaranteeId())) {
- newOrder.setProcessStatus(ProcessStatus.YYBZSH.getCode());
- str.append(order.getOperationGuaranteeName()).append(",");
- aids.add(order.getOperationGuaranteeId());
- } else if (order.getApprovalStatus() == 0) {
- addOrderLog(s,OrderLogProcess.YYBZSHTG.getCode(),"运营保障审核人未设置,系统自动通过");
- addOrderLog(s,OrderLogProcess.TP.getCode(),"部门特批审核未设置,系统自动通过");
- newOrder.setProcessStatus(ProcessStatus.YPZXSGLY.getCode());
- newOrder.setApproval(ApprovalNewState.TPTG.getCode());
- } else {
- addOrderLog(s,OrderLogProcess.YYBZSHTG.getCode(),"运营保障审核人未设置,系统自动通过");
- newOrder.setProcessStatus(ProcessStatus.YPTPSH.getCode());
- aids.add(order.getApprovalAid());
- str.append(order.getApprovalName()).append(",");
- }
- }
- newOrder.setExamineName(str.substring(0,str.length()-1));
- torderNewMapper.updateByPrimaryKeySelective(newOrder);
- }
- torderNewMapper.updateOrderDepFinanceExamineName(list);
- }
- }
- }else{
- }
- }
- if (!in.getRetrialFinanceId().equals(useDep.getRetrialFinanceId())){
- if(StringUtils.isBlank(in.getRetrialFinanceId())) {
- //先将旧的查出来
- List<String> list = torderNewMapper.selectByFinanceNotExamine(useDep.getRetrialFinanceId());
- //再删除旧单需要审核的
- torderExamineMapper.deleteExamineFinance(useDep.getRetrialFinanceId());
- if (!list.isEmpty()) {
- //先把药推送到下个流程的查出来
- for (String s : list) {
- List<TOrderExamine> tOrderExamines = torderExamineMapper.selectByOrderNo(s, 0);
- int i = 0;
- for (TOrderExamine e : tOrderExamines) {
- if (e.getStatus() == 1) i++;
- }
- if (i == tOrderExamines.size()) {
- //推送订单流程
- addOrderLog(s,OrderLogProcess.CWFS.getCode(),"部门修改财务复审,判定审核通过");
- StringBuilder str = new StringBuilder();
- TOrderNew tOrderNew = torderNewMapper.selectByPrimaryKey(s);
- TOrderNewBo order = torderNewMapper.getSaleIdByOno(s);
- TOrderNew newOrder = new TOrderNew();
- newOrder.setOrderNo(s);
- //如果订单是特批
- if (tOrderNew.getApproval() == ApprovalNewState.TPDSH.getCode() || tOrderNew.getApproval() == ApprovalNewState.TPBH.getCode()) {
- if (StringUtils.isNotEmpty(in.getOperationGuaranteeId())) {
- newOrder.setProcessStatus(ProcessStatus.YYBZSH.getCode());
- str.append(order.getOperationGuaranteeName()).append(",");
- aids.add(order.getOperationGuaranteeId());
- } else if (order.getApprovalStatus() == 0) {
- addOrderLog(s,OrderLogProcess.YYBZSHTG.getCode(),"运营保障审核人未设置,系统自动通过");
- addOrderLog(s,OrderLogProcess.TP.getCode(),"部门特批审核未设置,系统自动通过");
- newOrder.setProcessStatus(ProcessStatus.YPZXSGLY.getCode());
- newOrder.setApproval(ApprovalNewState.TPTG.getCode());
- } else {
- addOrderLog(s,OrderLogProcess.YYBZSHTG.getCode(),"运营保障审核人未设置,系统自动通过");
- newOrder.setProcessStatus(ProcessStatus.YPTPSH.getCode());
- aids.add(order.getApprovalAid());
- str.append(order.getApprovalName()).append(",");
- }
- }
- newOrder.setExamineName(str.substring(0,str.length()-1));
- torderNewMapper.updateByPrimaryKeySelective(newOrder);
- }
- torderNewMapper.updateOrderDepFinanceExamineName(list);
- }
- }
- }else {
- dep.setRetrialFinanceId(in.getRetrialFinanceId());
- departmentMapper.updateOrderDepFinanceNotExamine(in.getRetrialFinanceId(),useDep.getRetrialFinanceId());
- List<String> list = torderNewMapper.selectByFinanceNotExamine(in.getRetrialFinanceId());
- if (!list.isEmpty()){
- torderNewMapper.updateOrderDepFinanceExamineName(list);
- }
- }
- updateRetrialFinance=true;
- }
- if (in.getExpenseFinanceId()!=null&&!in.getExpenseFinanceId().equals(useDep.getExpenseFinanceId())){
- dep.setExpenseFinanceId(in.getExpenseFinanceId());
- departmentMapper.updateExpenseFinanceNotExamine(in.getExpenseFinanceId(),useDep.getExpenseFinanceId());
- }
- if (updateFinance){
- 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());
- }
- return departmentMapper.updateByPrimaryKeySelective(dep);
- }
- private void addOrderLog(String orderNo, Integer process, String remarks) {
- TOrderLog tl=new TOrderLog();
- tl.setAid(AFTConstants.SUPERADMIN_ID);
- tl.setProcess(process);
- tl.setOrderNo(orderNo);
- tl.setRemarks(remarks);
- tOrderLogMapper.insertSelective(tl);
- }
- /**
- * 如果更换了负责人刷新中间表
- */
- private void checkFinaceUpdate(List<String> aids) {
- if (!aids.isEmpty()){
- 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++;
- }
- }
- }
|