|
@@ -0,0 +1,131 @@
|
|
|
+package com.jeeplus.test.mould.service;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.jeeplus.sys.domain.Office;
|
|
|
+import com.jeeplus.sys.mapper.OfficeMapper;
|
|
|
+import com.jeeplus.sys.service.dto.UserDTO;
|
|
|
+import com.jeeplus.sys.utils.StringUtils;
|
|
|
+import com.jeeplus.sys.utils.UserUtils;
|
|
|
+import com.jeeplus.test.mould.domain.SysSerialnumTpl;
|
|
|
+import com.jeeplus.test.mould.mapper.SerialnumTplMapper;
|
|
|
+import org.apache.http.client.utils.DateUtils;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Propagation;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.UUID;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class SerialnumTplService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private SerialnumTplMapper serialnumTplMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private OfficeMapper officeMapper;
|
|
|
+
|
|
|
+ public IPage<SysSerialnumTpl> list(Page<SysSerialnumTpl> page, QueryWrapper<SysSerialnumTpl> sysSerialnumTplQueryWrapper) {
|
|
|
+ sysSerialnumTplQueryWrapper.eq("del_flag", 0);
|
|
|
+ IPage<SysSerialnumTpl> list = serialnumTplMapper.pageList(page, sysSerialnumTplQueryWrapper);
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String remove(String id) {
|
|
|
+ serialnumTplMapper.deleteById(id);
|
|
|
+ return "操作成功";
|
|
|
+ }
|
|
|
+
|
|
|
+ public SysSerialnumTpl findById(String id) {
|
|
|
+ SysSerialnumTpl sysSerialnumTpl = serialnumTplMapper.selectById(id);
|
|
|
+ return sysSerialnumTpl;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String save(SysSerialnumTpl sysSerialnumTpl) {
|
|
|
+ //获取当前登录人信息
|
|
|
+ UserDTO dto = UserUtils.getCurrentUserDTO();
|
|
|
+ //新增
|
|
|
+ if (StringUtils.isEmpty(sysSerialnumTpl.getId())) {
|
|
|
+ String id = UUID.randomUUID().toString().replace("-", "");
|
|
|
+ sysSerialnumTpl.setId(id);
|
|
|
+ sysSerialnumTpl.setCreateBy(dto.getId());
|
|
|
+ sysSerialnumTpl.setCreateDate(new Date());
|
|
|
+ sysSerialnumTpl.setUpdateBy(dto.getId());
|
|
|
+ sysSerialnumTpl.setUpdateDate(new Date());
|
|
|
+ sysSerialnumTpl.setDelFlag(0);
|
|
|
+ serialnumTplMapper.insert(sysSerialnumTpl);
|
|
|
+ }
|
|
|
+ //修改
|
|
|
+ if (StringUtils.isNotEmpty(sysSerialnumTpl.getId())) {
|
|
|
+ sysSerialnumTpl.setUpdateBy(dto.getId());
|
|
|
+ sysSerialnumTpl.setUpdateDate(new Date());
|
|
|
+ serialnumTplMapper.updateById(sysSerialnumTpl);
|
|
|
+ }
|
|
|
+ return "操作完成";
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(readOnly = false,propagation = Propagation.REQUIRES_NEW)
|
|
|
+ public String genSerialNumNotNum(String companyId, String bizCode) throws Exception {
|
|
|
+// String branchOffice = UserUtils.getSelectOffice().getBranchOffice();
|
|
|
+// if(StringUtils.isNotBlank(branchOffice)){
|
|
|
+// company = officeService.get(branchOffice);
|
|
|
+// }
|
|
|
+// if (company==null||StringUtils.isBlank(company.getId())){
|
|
|
+// throw new Exception("生成编号失败,公司信息不能为空");
|
|
|
+// }
|
|
|
+ //获取当前登录人信息
|
|
|
+ UserDTO dto = UserUtils.getCurrentUserDTO();
|
|
|
+ Office office = officeMapper.selectById(companyId);
|
|
|
+ if (StringUtils.isBlank(bizCode)){
|
|
|
+ throw new Exception("生成编号失败,业务类型不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ SysSerialnumTpl numTpl = this.querySerialTpl(office, bizCode);
|
|
|
+ if (numTpl==null){
|
|
|
+ //查询编号模板 {brspnm}DZ-{year}-{serialNum}
|
|
|
+ SysSerialnumTpl serialNumTpl = serialnumTplMapper.queryByComAndBizCode("0", bizCode);
|
|
|
+ serialNumTpl.setCompanyId(companyId);
|
|
|
+ serialNumTpl.setSerialNum(0);
|
|
|
+ serialNumTpl.setCreateBy(dto.getId());
|
|
|
+ serialNumTpl.setId(UUID.randomUUID().toString().replace("-", ""));
|
|
|
+ serialnumTplMapper.insert(serialNumTpl);
|
|
|
+ numTpl = serialNumTpl;
|
|
|
+ }
|
|
|
+ if (numTpl==null){
|
|
|
+ throw new Exception("生成编号失败,请先设置相关业务编号模板");
|
|
|
+ }
|
|
|
+ if ("0".equals(office.getParentId()))
|
|
|
+ office.setParentId(null);
|
|
|
+ String year = DateUtils.formatDate(new Date(), "yyyy");
|
|
|
+ if(!year.equals(numTpl.getYearBuilt())){
|
|
|
+ serialnumTplMapper.resetSerialNum(numTpl.getId(),numTpl.getYearBuilt(),year);
|
|
|
+ }
|
|
|
+ Map<String, String> map = new HashMap<>();
|
|
|
+ String serialTpl = numTpl.getSerialTpl();
|
|
|
+ int i =serialnumTplMapper.updateSerialNum(numTpl);
|
|
|
+ if (i!=1){
|
|
|
+ throw new Exception("生成编号失败,请稍后重试");
|
|
|
+ }
|
|
|
+ String companyShortname = UserUtils.getSysParam("company_shortname", dto.getCompanyDTO().getId());
|
|
|
+ map.put("spnm",StringUtils.isBlank(companyShortname)?"":companyShortname);
|
|
|
+ String branchShortname = UserUtils.getSysParam("branch_shortname", dto.getCompanyDTO().getId());
|
|
|
+ map.put("brspnm", StringUtils.isBlank(branchShortname)?"":branchShortname);
|
|
|
+ map.put("year",year);
|
|
|
+ String serNum = StringUtils.renderString(serialTpl, map);
|
|
|
+ return serNum;
|
|
|
+ }
|
|
|
+
|
|
|
+ private SysSerialnumTpl querySerialTpl(Office company, String bizCode) {
|
|
|
+ SysSerialnumTpl numTpl = serialnumTplMapper.queryByComAndBizCode(company.getId(), bizCode);
|
|
|
+ if (numTpl==null && company.getParentId()!=null && !"0".equals(company.getParentId())){
|
|
|
+ Office office = officeMapper.selectById(company.getParentId());
|
|
|
+ numTpl = this.querySerialTpl(office,bizCode);
|
|
|
+ }
|
|
|
+ return numTpl;
|
|
|
+ }
|
|
|
+}
|