package org.jeecg.modules.eam.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang.StringUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.eam.entity.Identity; import org.jeecg.modules.eam.entity.SerialNumberMap; import org.jeecg.modules.eam.mapper.IdentityMapper; import org.jeecg.modules.eam.service.IdentityService; import org.jeecg.modules.eam.service.SerialNumberMapService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.SimpleDateFormat; import java.util.List; @Service public class IdentityServiceImpl extends ServiceImpl implements IdentityService { @Autowired @Lazy private SerialNumberMapService serialNumberMapService; /** * 通过type获取mes_sys_identity表实例,实现方法 * * @param type 业务类型 * @return MesSysIdentity mes_sys_identity表实例对象 */ @Override public Identity findIdentityByType(String type) { String yearValue = DateUtils.date2Str(new SimpleDateFormat("yyyy")); String monthValue = DateUtils.date2Str(new SimpleDateFormat("MM")); Identity identityByType = super.getBaseMapper().findIdentityByType(type, yearValue, monthValue); return identityByType; } @Override @Transactional(rollbackFor = {Exception.class}) public String getNumByTypeAndLength(String type, Integer length) { SerialNumberMap serialNumberMap = serialNumberMapService.getByType(type); Result result = serialNumberMapService.getSerial(type); String prefix = result.getMessage().toString(); String identityId = serialNumberMap.getIdentityId(); String currentDate = DateUtils.getCurrentDateStr(); String yearValue = currentDate.split("-")[0]; String monthValue = currentDate.split("-")[1]; List systemIdentityList = lambdaQuery() .eq(Identity::getId, identityId) .eq(Identity::getType, type) .eq(Identity::getYearValue, yearValue) .eq(Identity::getMonthValue, monthValue) .list(); Identity mesSysIdentity = systemIdentityList.size() > 0 ? systemIdentityList.get(0) : new Identity(); Integer num = 1; if (StringUtils.isBlank(mesSysIdentity.getId())) { mesSysIdentity.setId(identityId); mesSysIdentity.setType(type); mesSysIdentity.setMonthValue(monthValue); mesSysIdentity.setYearValue(yearValue); mesSysIdentity.setNum(num); super.saveOrUpdate(mesSysIdentity); serialNumberMap.setIdentityId(mesSysIdentity.getId()); serialNumberMapService.updateById(serialNumberMap); } else { num = mesSysIdentity.getNum() + 1; mesSysIdentity.setNum(num); super.saveOrUpdate(mesSysIdentity); } String serialNum = prefix + StringUtils.leftPad(String.valueOf(num), length, "0"); return serialNum; } }