package com.dk.mdm.service.mst; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.dk.common.infrastructure.annotaiton.Pagination; import com.dk.common.infrastructure.constant.Constant; import com.dk.common.model.pojo.PageList; import com.dk.common.response.ResponseResultUtil; import com.dk.common.response.ResponseResultVO; import com.dk.mdm.infrastructure.convert.mst.OrgConvert; import com.dk.mdm.mapper.mst.OrgMacMapper; import com.dk.mdm.mapper.mst.OrgWhMapper; import com.dk.mdm.model.pojo.mst.Org; import com.dk.mdm.mapper.mst.OrgMapper; import com.dk.common.service.BaseService; import com.dk.common.mapper.BaseMapper; import com.dk.mdm.model.pojo.mst.OrgMac; import com.dk.mdm.model.pojo.mst.OrgWh; import com.dk.mdm.model.query.mst.OrgQuery; import com.dk.common.model.response.mst.OrgResponse; import com.dk.common.model.vo.mst.OrgVO; import com.dk.mdm.service.common.CommonService; import org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import java.util.*; @Service @Transactional public class OrgService extends BaseService { /** * @desc : 重写主键 * @author : 王英杰 * @date : 2023/1/9 10:39 */ @Override public String getPrimaryKey() { return "org_id"; } @Override public BaseMapper getRepository() { return orgMapper; } @Autowired private OrgMapper orgMapper; @Autowired private OrgConvert orgConvert; @Autowired private CommonService commonService; @Autowired OrgWhMapper orgWhMapper; @Autowired OrgMacMapper orgMacMapper; /** * @desc : 条件查询 * @author : 王英杰 * @date : 2023/1/10 17:19 */ @Pagination public ResponseResultVO> selectByCond(OrgQuery orgQuery) { return super.mergeListWithCount(orgQuery, orgMapper.selectByCond(orgQuery), orgMapper.countByCond(orgQuery)); } /** * @desc : 新建组织机构 * @author : 王英杰 * @date : 2024/2/27 9:17 */ @Transactional( rollbackFor = {Exception.class} ) public ResponseResultVO insert(OrgVO orgVO) { // 转化实体 Org organization = orgConvert.convertToPo(orgVO); // 获取显示顺序 Integer displayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORG); Map codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.ORG.getName(), true); // 获取编码和主键UuId organization.setDisplayNo(displayNo); organization.setOrgId(codeMap.get("outId").toString()); organization.setOrgCode(codeMap.get("outNote").toString()); //查询 本次要加的 部门的 父级下 最大的DisplayNo 然后加1 就是现在要加的DisplayNo Map param = new HashMap<>(); param.put("otherCond", "parent_id = #{parentID} ::uuid"); organization.setDisplayNo(commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORG ,param)); if (organization.getParentId() != null) { //插入TOPid organization.setTopId(organization.getParentId()); } // 插入组织部门数据 super.insert(organization); //执行函数 orgMapper.resetLevelOrg(new Org().setTopId(organization.getParentId()).setCpId(organization.getCpId())); // 添加组织仓库 if (orgVO.getWarehouseList() != null && orgVO.getWarehouseList().size() > 0) { for (Map map : orgVO.getWarehouseList()) { // 获取显示顺序 Map paramOrgWh=new HashMap<>(); paramOrgWh.put("noFlgValid",true); Integer orgWhDisplayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORGWH,paramOrgWh); OrgWh orgWh = new OrgWh(); orgWh.setOrgId(organization.getOrgId()).setWhId(map.get("whId").toString()).setDisplayNo(orgWhDisplayNo) .setFlgDefault(Boolean.parseBoolean(map.get("ownerFlag").toString())); orgWhMapper.insert(orgWh); } } // 添加组织资金账户 if (orgVO.getMacList() != null && orgVO.getMacList().size() > 0) { for (Map map : orgVO.getMacList()) { // 获取显示顺序 Map paramOrgMac=new HashMap<>(); paramOrgMac.put("noFlgValid",true); Integer orgMacDisplayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORGMAC,paramOrgMac); OrgMac orgMac=new OrgMac(); orgMac.setOrgId(organization.getOrgId()).setMacId(map.get("macId").toString()).setDisplayNo(orgMacDisplayNo) .setFlgDefault(Boolean.parseBoolean(map.get("ownerFlag").toString())); orgMacMapper.insert(orgMac); } } return ResponseResultUtil.success(); // return result == 1 ? ResponseResultUtil.success(organization) : // ResponseResultUtil.error(ResponseCodeEnum.INSERT_FAIL); } /** * @desc : 新建组织机构 * @author : 王英杰 * @date : 2024/2/27 9:17 */ @Transactional( rollbackFor = {Exception.class} ) public ResponseResultVO insertFeignOrg(OrgVO orgVO) { // 转化实体 Org organization = orgConvert.convertToPo(orgVO); // 获取显示顺序 Map codeMap = commonService.getUniqueNoteCode( Constant.docNameConstant.ORG.getName(),orgVO.getCpId(), true); // 获取编码和主键UuId organization.setDisplayNo(0); organization.setOrgId(codeMap.get("outId").toString()); organization.setOrgCode(codeMap.get("outNote").toString()); // 插入组织部门数据 super.insert(organization); //执行函数 // orgMapper.resetLevelOrg(new Org().setTopId(organization.getParentId()).setCpId(organization.getCpId())); return ResponseResultUtil.success(organization); } /** * @desc : 编辑方法 * @author : 宋扬 * @date : 2024/3/22 17:15 */ @Transactional( rollbackFor = {Exception.class} ) public ResponseResultVO update(OrgVO orgVO) { // 转化实体 Org org = orgConvert.convertToPo(orgVO); // 修改组织机构 super.update(org, new UpdateWrapper().lambda().eq(Org::getOrgId, UUID.fromString(org.getOrgId()))); //执行函数 orgMapper.resetLevelOrg(new Org().setTopId(org.getParentId()).setCpId(org.getCpId())); //删除组织仓库和组织资金账户 orgWhMapper.deleteByOrgId(org.getOrgId()); orgMacMapper.deleteByOrgId(org.getOrgId()); // 添加组织仓库 if (orgVO.getWarehouseList() != null && orgVO.getWarehouseList().size() > 0) { for (Map map : orgVO.getWarehouseList()) { // 获取显示顺序 Map paramOrgWh=new HashMap<>(); paramOrgWh.put("noFlgValid",true); Integer orgWhDisplayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORGWH,paramOrgWh); OrgWh orgWh = new OrgWh(); orgWh.setOrgId(org.getOrgId()).setWhId(map.get("whId").toString()).setDisplayNo(orgWhDisplayNo) .setFlgDefault(Boolean.parseBoolean(map.get("ownerFlag").toString())); orgWhMapper.insert(orgWh); } } // 添加组织资金账户 if (orgVO.getMacList() != null && orgVO.getMacList().size() > 0) { for (Map map : orgVO.getMacList()) { // 获取显示顺序 Map paramOrgMac=new HashMap<>(); paramOrgMac.put("noFlgValid",true); Integer orgMacDisplayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORGMAC,paramOrgMac); OrgMac orgMac=new OrgMac(); orgMac.setOrgId(org.getOrgId()).setMacId(map.get("macId").toString()).setDisplayNo(orgMacDisplayNo) .setFlgDefault(Boolean.parseBoolean(map.get("ownerFlag").toString())); orgMacMapper.insert(orgMac); } } return ResponseResultUtil.success(); } }