From 8fd1e84e9d2611d0a018d37a507ab0b301c8be8a Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 18 八月 2023 21:06:24 +0800
Subject: [PATCH] 修复bug
---
server/src/main/java/doumeemes/service/business/impl/SalaryParamServiceImpl.java | 271 +++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 206 insertions(+), 65 deletions(-)
diff --git a/server/src/main/java/doumeemes/service/business/impl/SalaryParamServiceImpl.java b/server/src/main/java/doumeemes/service/business/impl/SalaryParamServiceImpl.java
index c36de3a..b165cd9 100644
--- a/server/src/main/java/doumeemes/service/business/impl/SalaryParamServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/business/impl/SalaryParamServiceImpl.java
@@ -1,20 +1,33 @@
package doumeemes.service.business.impl;
+import doumeemes.core.constants.ResponseStatus;
+import doumeemes.core.exception.BusinessException;
+import doumeemes.core.model.LoginUserInfo;
import doumeemes.core.model.PageData;
import doumeemes.core.model.PageWrap;
+import doumeemes.core.utils.Constants;
import doumeemes.core.utils.Utils;
-import doumeemes.dao.business.SalaryParamMapper;
-import doumeemes.dao.business.model.SalaryParam;
+import doumeemes.core.utils.excel.EasyExcelUtil;
+import doumeemes.dao.business.*;
+import doumeemes.dao.business.model.*;
+import doumeemes.dao.business.vo.SalaryParamVO;
+import doumeemes.dao.ext.dto.SalaryParamDTO;
+import doumeemes.dao.ext.dto.SalaryParamImportDTO;
+import doumeemes.service.business.DepartmentService;
import doumeemes.service.business.SalaryParamService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
-import java.util.List;
+import java.math.BigDecimal;
+import java.util.*;
/**
* 璁剧疆绫�-缁╂晥宸ヨ祫閰嶇疆琛⊿ervice瀹炵幇
@@ -27,9 +40,43 @@
@Autowired
private SalaryParamMapper salaryParamMapper;
+ @Autowired
+ private DepartmentMapper departmentMapper;
+
+ @Autowired
+ private MaterialMapper materialMapper;
+ @Autowired
+ private MaterialDistributeMapper materialDistributeMapper;
+
+ @Autowired
+ private ProceduresMapper proceduresMapper;
+
@Override
public Integer create(SalaryParam salaryParam) {
- salaryParamMapper.insert(salaryParam);
+
+
+ LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+
+ SalaryParam insert = new SalaryParam();
+ insert.setRootDepartId(principal.getRootDepartment().getId());
+ insert.setDepartId(salaryParam.getDepartId());
+ insert.setProcedureId(salaryParam.getProcedureId());
+ insert.setMaterialId(salaryParam.getMaterialId());
+ insert.setDeleted((byte) Constants.ZERO);
+ if(findOne(insert) != null){
+ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"鍚屼竴涓墿鏂欏湪鐩稿悓宸ュ簭涓嶈兘閲嶅閰嶇疆鍝︼紒");
+ }
+ insert.setCreateUser(principal.getId());
+ insert.setCreateTime(new Date());
+ insert.setUpdateUser(principal.getId());
+ insert.setUpdateTime(new Date());
+ insert.setRemark(salaryParam.getRemark());
+ insert.setSalary(salaryParam.getSalary().multiply(new BigDecimal("100")));
+ insert.setNum(salaryParam.getNum());
+ insert.setTimes(salaryParam.getTimes());
+ insert.setUnqualified(salaryParam.getUnqualified());
+ insert.setType(salaryParam.getType());
+ salaryParamMapper.insert(insert);
return salaryParam.getId();
}
@@ -58,6 +105,25 @@
}
@Override
+ public void update(SalaryParam salaryParam) {
+ LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ UpdateWrapper<SalaryParam> wrapper = new UpdateWrapper<>();
+ wrapper.lambda()
+ .eq(SalaryParam::getId,salaryParam.getId())
+ .set(SalaryParam::getUpdateTime,new Date())
+ .set(SalaryParam::getUpdateUser,principal.getId())
+ .set(SalaryParam::getType,salaryParam.getType())
+// .set(SalaryParam::getDepartId,salaryParam.getDepartId())
+// .set(SalaryParam::getMaterialId,salaryParam.getMaterialId())
+// .set(SalaryParam::getProcedureId,salaryParam.getProcedureId())
+ .set(SalaryParam::getSalary,salaryParam.getSalary().multiply(new BigDecimal(100)))
+ .set(SalaryParam::getNum,salaryParam.getNum())
+ .set(SalaryParam::getTimes,salaryParam.getTimes())
+ .set(SalaryParam::getUnqualified,salaryParam.getUnqualified());
+ salaryParamMapper.update(null,wrapper);
+ }
+
+ @Override
public void updateByIdInBatch(List<SalaryParam> salaryParams) {
if (CollectionUtils.isEmpty(salaryParams)) {
return;
@@ -75,6 +141,7 @@
@Override
public SalaryParam findOne(SalaryParam salaryParam) {
QueryWrapper<SalaryParam> wrapper = new QueryWrapper<>(salaryParam);
+ wrapper.last("limit 1");
return salaryParamMapper.selectOne(wrapper);
}
@@ -83,70 +150,19 @@
QueryWrapper<SalaryParam> wrapper = new QueryWrapper<>(salaryParam);
return salaryParamMapper.selectList(wrapper);
}
-
+
@Override
- public PageData<SalaryParam> findPage(PageWrap<SalaryParam> pageWrap) {
+ public PageData<SalaryParamVO> findPage(PageWrap<SalaryParamDTO> pageWrap) {
IPage<SalaryParam> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
- QueryWrapper<SalaryParam> queryWrapper = new QueryWrapper<>();
- Utils.MP.blankToNull(pageWrap.getModel());
- if (pageWrap.getModel().getId() != null) {
- queryWrapper.lambda().eq(SalaryParam::getId, pageWrap.getModel().getId());
+ LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ SalaryParamDTO model = pageWrap.getModel();
+ model.setRootDepartId(principal.getRootDepartment().getId());
+// model.setDepartId(principal.getComDepartment().getId());
+ IPage<SalaryParamVO> salaryParamVOIPage = salaryParamMapper.selectPage(page, model);
+ if (!CollectionUtils.isEmpty(salaryParamVOIPage.getRecords())){
+ salaryParamVOIPage.getRecords().forEach(s->s.setSalary(s.getSalary().divide(new BigDecimal(100))));
}
- if (pageWrap.getModel().getDeleted() != null) {
- queryWrapper.lambda().eq(SalaryParam::getDeleted, pageWrap.getModel().getDeleted());
- }
- if (pageWrap.getModel().getCreateUser() != null) {
- queryWrapper.lambda().eq(SalaryParam::getCreateUser, pageWrap.getModel().getCreateUser());
- }
- if (pageWrap.getModel().getCreateTime() != null) {
- queryWrapper.lambda().ge(SalaryParam::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime()));
- queryWrapper.lambda().le(SalaryParam::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime()));
- }
- if (pageWrap.getModel().getUpdateUser() != null) {
- queryWrapper.lambda().eq(SalaryParam::getUpdateUser, pageWrap.getModel().getUpdateUser());
- }
- if (pageWrap.getModel().getUpdateTime() != null) {
- queryWrapper.lambda().ge(SalaryParam::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime()));
- queryWrapper.lambda().le(SalaryParam::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime()));
- }
- if (pageWrap.getModel().getRemark() != null) {
- queryWrapper.lambda().eq(SalaryParam::getRemark, pageWrap.getModel().getRemark());
- }
- if (pageWrap.getModel().getRootDepartId() != null) {
- queryWrapper.lambda().eq(SalaryParam::getRootDepartId, pageWrap.getModel().getRootDepartId());
- }
- if (pageWrap.getModel().getDepartId() != null) {
- queryWrapper.lambda().eq(SalaryParam::getDepartId, pageWrap.getModel().getDepartId());
- }
- if (pageWrap.getModel().getProcedureId() != null) {
- queryWrapper.lambda().eq(SalaryParam::getProcedureId, pageWrap.getModel().getProcedureId());
- }
- if (pageWrap.getModel().getBomId() != null) {
- queryWrapper.lambda().eq(SalaryParam::getBomId, pageWrap.getModel().getBomId());
- }
- if (pageWrap.getModel().getSalary() != null) {
- queryWrapper.lambda().eq(SalaryParam::getSalary, pageWrap.getModel().getSalary());
- }
- if (pageWrap.getModel().getNum() != null) {
- queryWrapper.lambda().eq(SalaryParam::getNum, pageWrap.getModel().getNum());
- }
- if (pageWrap.getModel().getTimes() != null) {
- queryWrapper.lambda().eq(SalaryParam::getTimes, pageWrap.getModel().getTimes());
- }
- if (pageWrap.getModel().getUnqualified() != null) {
- queryWrapper.lambda().eq(SalaryParam::getUnqualified, pageWrap.getModel().getUnqualified());
- }
- if (pageWrap.getModel().getType() != null) {
- queryWrapper.lambda().eq(SalaryParam::getType, pageWrap.getModel().getType());
- }
- for(PageWrap.SortData sortData: pageWrap.getSorts()) {
- if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
- queryWrapper.orderByDesc(sortData.getProperty());
- } else {
- queryWrapper.orderByAsc(sortData.getProperty());
- }
- }
- return PageData.from(salaryParamMapper.selectPage(page, queryWrapper));
+ return PageData.from(salaryParamVOIPage);
}
@Override
@@ -154,4 +170,129 @@
QueryWrapper<SalaryParam> wrapper = new QueryWrapper<>(salaryParam);
return salaryParamMapper.selectCount(wrapper);
}
+
+ @Transactional(rollbackFor = {Exception.class,BusinessException.class})
+ @Override
+ public void importPlans(MultipartFile file) {
+
+ LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝鎮ㄦ棤鏉冮檺杩涜璇ユ搷浣滐紒");
+ }
+ //瑙f瀽excel
+ List<SalaryParamImportDTO> plansList = EasyExcelUtil.importExcel(file, 1, 1, SalaryParamImportDTO.class);
+ if(plansList == null || plansList.size()==0){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵煎叆鏁版嵁鍐呭鏈夎锛�");
+ }
+
+ plansList.forEach(s->{
+ if (Objects.isNull(s.getType())
+ || Objects.isNull(s.getDepartName())
+ || Objects.isNull(s.getMaterialCode())
+ || Objects.isNull(s.getProcedureName())
+ || Objects.isNull(s.getNum())){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵煎叆鏁版嵁鍐呭鏈夎锛�");
+ }
+ });
+
+
+ for (int i = 0; i < plansList.size(); i++) {
+ SalaryParamImportDTO salaryParamImportDTO = plansList.get(i);
+
+ QueryWrapper<Department> wrapper = new QueryWrapper<>();
+ wrapper.lambda()
+ .eq(Department::getName,salaryParamImportDTO.getDepartName())
+ .eq(Department::getType,Constants.DEPART_TYPE.factory)
+ .eq(Department::getDeleted,Constants.ZERO)
+ .last("limit 1");
+ Department department = departmentMapper.selectOne(wrapper);
+ if (Objects.isNull(department)){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵煎叆鏁版嵁鍐呭銆愬叕鍙稿悕绉般�戞湁璇紒");
+ }
+
+ QueryWrapper<Material> materialWrapper = new QueryWrapper<>();
+ materialWrapper.lambda()
+ .eq(Material::getCode,salaryParamImportDTO.getMaterialCode())
+ .eq(Material::getRootDepartId,department.getRootId())
+ .eq(Material::getDeleted,Constants.ZERO)
+ .last("limit 1");
+ Material material = materialMapper.selectOne(materialWrapper);
+
+ if (Objects.isNull(material)){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵煎叆鏁版嵁鍐呭銆愪骇鍝佺紪鐮併�戞湁璇紒");
+ }
+ if (Objects.nonNull(material) && !Objects.equals(material.getName(),salaryParamImportDTO.getMaterialName())){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵煎叆鏁版嵁鍐呭銆愪骇鍝佸悕绉般�戞湁璇紒");
+ }
+ QueryWrapper<MaterialDistribute> materialDistributeQueryWrapper = new QueryWrapper<>();
+ materialDistributeQueryWrapper.lambda()
+ .eq(MaterialDistribute::getMaterialId,material.getId())
+ .eq(MaterialDistribute::getRootDepartId,department.getRootId())
+ .eq(MaterialDistribute::getDeleted,Constants.ZERO)
+ .last("limit 1");
+ MaterialDistribute materialDistribute = materialDistributeMapper.selectOne(materialDistributeQueryWrapper);
+ if (Objects.isNull(materialDistribute)){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵煎叆鏁版嵁鍐呭銆愪骇鍝佺紪鐮併�戞湁璇紒");
+ }
+ QueryWrapper<Procedures> proceduresWrapper = new QueryWrapper<>();
+ proceduresWrapper.lambda()
+ .eq(Procedures::getName,salaryParamImportDTO.getProcedureName())
+ .eq(Procedures::getRootDepartId,department.getRootId())
+// .eq(Procedures::getOrgId,department.getId())
+ .last("limit 1");
+ Procedures procedures = proceduresMapper.selectOne(proceduresWrapper);
+ if (Objects.isNull(procedures)){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵煎叆鏁版嵁鍐呭銆愬伐搴忓悕绉般�戞湁璇紒");
+ }
+ SalaryParam salaryParam = new SalaryParam();
+ salaryParam.setRootDepartId(department.getRootId());
+ salaryParam.setDepartId(department.getId());
+ salaryParam.setProcedureId(procedures.getId());
+ salaryParam.setMaterialId(materialDistribute.getId());
+ salaryParam.setSalary(salaryParamImportDTO.getSalary());
+ salaryParam.setNum(new BigDecimal(salaryParamImportDTO.getNum()));
+ salaryParam.setTimes(getIntegerTimes(salaryParamImportDTO.getTimesName()));
+ Integer unqualified = Optional.ofNullable(salaryParamImportDTO.getUnqualified()).map(s -> {
+ if ("鍚�".equals(s)) {
+ return 0;
+ } else {
+ return 1;
+ }
+ }).orElse(0);
+ salaryParam.setUnqualified(unqualified);
+
+ Integer type = Optional.ofNullable(salaryParamImportDTO.getUnqualified()).map(s -> {
+ if ("璁′欢".equals(s)) {
+ return 0;
+ } else {
+ return 1;
+ }
+ }).orElse(0);
+ salaryParam.setType(type);
+ create(salaryParam);
+ }
+
+ }
+
+ private Integer getIntegerTimes(String a) {
+ int h =0,m=0,s=0;
+ try{
+ int hIndex =a.lastIndexOf("灏忔椂");
+ int mIndex=a.lastIndexOf("鍒嗛挓");
+ int sIndex =a.lastIndexOf("绉�");
+ if( hIndex>0){
+ h = Integer.parseInt(a.substring(0,hIndex));
+ }
+ if(mIndex > hIndex){
+ m = Integer.parseInt(a.substring(hIndex >=0?hIndex+2:0,mIndex));
+ }
+ if(sIndex > mIndex){
+ s = Integer.parseInt(a.substring(mIndex >= 0 ? mIndex+2 : 0, sIndex));
+ }
+ return h*3600+m*60+s;
+ }catch (Exception e){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鏃堕暱銆�"+a+"銆戞牸寮忎笉姝g‘锛�" );
+ }
+
+ }
}
--
Gitblit v1.9.3