package com.product.badge.service; import com.product.admin.service.PublicService; import com.product.badge.config.CmnConst; import com.product.common.lang.StringUtils; import com.product.core.dao.BaseDao; import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldSetEntity; import com.product.core.service.support.AbstractBaseService; import com.product.core.service.support.QueryFilterService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * Copyright © 6c * * @Date: 2021-06-29 16:30 * @Author: 6c * @Description: */ @Service public class BadgeService extends AbstractBaseService { @Autowired public BaseDao baseDao; @Autowired public QueryFilterService queryFilterService; @Autowired public PublicService publicService; /** * 列表台账 * @param fse * @return */ public DataTableEntity listTable(FieldSetEntity fse) { StringBuilder sql = new StringBuilder(512); sql.append("select * from ("); sql.append("\nselect d.uuid,org_level_uuid,badge_name,badge_level,holder,badge_type,ifnull(badge_status,'未借出') badge_status,borrow_by,borrow_time,return_date,flow_flag"); sql.append("\nfrom ").append(fse.getTableName()).append(" d"); sql.append("\nleft join ( "); sql.append("\n select b.* from ( "); sql.append("\n select s.uuid,m.created_by borrow_by,m.created_utc_datetime borrow_time,s.return_by,s.return_date,badge_uuid, "); sql.append("\n case when s.return_by is null or s.return_by='' then '借出' else '归还' END badge_status "); sql.append("\n from product_oa_badge_borrow_record m "); sql.append("\n left join product_oa_badge_borrow_detail s "); sql.append("\n on m.uuid=s.record_uuid "); sql.append("\n ) b "); sql.append("\n inner join ( "); sql.append("\n select uuid,max(created_utc_datetime) last_borrow_time "); sql.append("\n from ( "); sql.append("\n select s.uuid,m.created_utc_datetime "); sql.append("\n from product_oa_badge_borrow_record m "); sql.append("\n left join product_oa_badge_borrow_detail s "); sql.append("\n on m.uuid=s.record_uuid "); sql.append("\n ) b "); sql.append("\n group by uuid "); sql.append("\n ) t "); sql.append("\n on b.uuid=t.uuid and b.borrow_time=t.last_borrow_time "); sql.append("\n) b "); sql.append("\non d.uuid=b.badge_uuid "); sql.append("\n) a "); String filter = publicService.getListFilter(fse, 0); if (!StringUtils.isEmpty(filter)) { sql.append(" where ").append(filter); } int pageSize = fse.getInteger(CmnConst.PAGE_SIZE) == null ? Integer.MAX_VALUE : fse.getInteger(CmnConst.PAGE_SIZE); int curPage = fse.getInteger(CmnConst.CUR_PAGE) == null ? 1 : fse.getInteger(CmnConst.CUR_PAGE); DataTableEntity dte = baseDao.listTable(sql.toString(), new Object[]{}, pageSize, curPage); dte.getMeta().addAliasTable(fse.getTableName(),"d"); baseDao.loadPromptData(dte); return dte; } }