server/src/main/java/doumeemes/dao/business/dto/AutoWorkReportDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/java/doumeemes/dao/business/dto/CreateWorkorderRecordDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/java/doumeemes/dao/business/model/SalaryParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/java/doumeemes/dao/business/model/WorkorderRecord.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/java/doumeemes/service/ext/PlansExtService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/java/doumeemes/service/ext/WorkorderRecordStandardService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
server/src/main/java/doumeemes/dao/business/dto/AutoWorkReportDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package doumeemes.dao.business.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2023/8/14 18:35 */ @Data public class AutoWorkReportDTO { @ApiModelProperty(value = "å·¥åºè®¡å主é®") private Integer plansId; @ApiModelProperty(value = "ææè®°å½") private List<MaterialListDTO> recordList ; @ApiModelProperty(value = "产åºè®°å½") private CreateWorkorderRecordDTO createWorkorderRecordDTO; } server/src/main/java/doumeemes/dao/business/dto/CreateWorkorderRecordDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ package doumeemes.dao.business.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; /** * @author æ±è¹è¹ * @date 2022/05/12 10:18 */ @Data public class CreateWorkorderRecordDTO { @ApiModelProperty(value = "å·¥å主é®") private Integer workorderId; @ApiModelProperty(value = "åæ ¼æ°é") private BigDecimal qualifiedNum; @ApiModelProperty(value = "ä¸åæ ¼æ°é") private BigDecimal unQualifiedNum; @ApiModelProperty(value = "æ¥å·¥æ¶é¿ï¼ç§ï¼" ) private Integer duration; } server/src/main/java/doumeemes/dao/business/model/SalaryParam.java
@@ -11,6 +11,8 @@ import javax.validation.constraints.NotEmpty; import java.math.BigDecimal; import java.math.BigDecimal; import java.util.Date; /** @@ -77,7 +79,7 @@ @ApiModelProperty(value = "æ åæ°é") @ExcelColumn(name="æ åæ°é") private Integer num; private BigDecimal num; @ApiModelProperty(value = "æ åæ¶é¿ï¼ç§ï¼") @ExcelColumn(name="æ åæ¶é¿ï¼ç§ï¼") server/src/main/java/doumeemes/dao/business/model/WorkorderRecord.java
@@ -129,11 +129,11 @@ @ApiModelProperty(value = "æ£éªåæ ¼æ°é", example = "1") @ExcelColumn(name="æ£éªåæ ¼æ°é") private Integer qualifiedNum; private BigDecimal qualifiedNum; @ApiModelProperty(value = "æ£éªä¸åæ ¼æ°é", example = "1") @ExcelColumn(name="æ£éªä¸åæ ¼æ°é") private Integer unqualifiedNum; private BigDecimal unqualifiedNum; @ApiModelProperty(value = "æ£éªæ¥æ") @ExcelColumn(name="æ£éªæ¥æ") @@ -163,6 +163,24 @@ @ApiModelProperty(value = "å ³è票æ®ç±»å 0å·¥å 1ç¯®çæ´æ¢åè®°å½" ) private Integer relobjType; //MATERIAL_DONETYPE,MATERIAL_PROCEDURE_ID,RELOBJ_IDãRELOBJ_TYPE @ApiModelProperty(value = "æ¥å·¥æ¶é¿ï¼ç§ï¼" ) private Integer duration; @ApiModelProperty(value = "å·¥èµåä»·ï¼å)" ) private BigDecimal salaryPrice; @ApiModelProperty(value = "æ åæ°é" ) private BigDecimal salaryNum; @ApiModelProperty(value = "æ åæ¶é¿ï¼ç§ï¼" ) private Integer salaryTimes; @ApiModelProperty(value = "ä¸è¯åæ¯å¦è®¡å ¥ 0å¦ 1æ¯" ) private Integer salaryUnqualified; @ApiModelProperty(value = "计价æ¹å¼ 0计件 1计æ¶" ) private Integer salaryType; @ApiModelProperty(value = "å·¥èµç»æï¼åï¼" ) private BigDecimal salary; } server/src/main/java/doumeemes/service/ext/PlansExtService.java
@@ -5,6 +5,7 @@ import doumeemes.core.model.LoginUserInfo; import doumeemes.core.model.PageData; import doumeemes.core.model.PageWrap; import doumeemes.dao.business.dto.AutoWorkReportDTO; import doumeemes.dao.business.model.Plans; import doumeemes.dao.business.model.Workorder; import doumeemes.dao.ext.vo.PlansExtListCountVO; @@ -76,4 +77,11 @@ void pauseByIdForStandard(Plans model,LoginUserInfo userInfo); void regainByIdForStandard(Plans model, LoginUserInfo userInfo); List<PlansExtListVO> getListByWorkPlan(Integer workPlanId); /** * ä¸é®æ¥å·¥ * @param user * @param autoWorkReportDTO */ void autoWorkReport(LoginUserInfo user, AutoWorkReportDTO autoWorkReportDTO); } server/src/main/java/doumeemes/service/ext/WorkorderRecordStandardService.java
@@ -4,6 +4,7 @@ import doumeemes.core.model.PageData; import doumeemes.core.model.PageWrap; import doumeemes.dao.business.dto.CreateMaterialDTO; import doumeemes.dao.business.dto.CreateWorkorderRecordDTO; import doumeemes.dao.business.dto.DealWorkorderRecordDTO; import doumeemes.dao.business.model.Workorder; import doumeemes.dao.business.model.WorkorderRecord; @@ -30,6 +31,8 @@ WorkorderRecord dealWorkorderRecord(DealWorkorderRecordDTO dealWorkorderRecordDTO, LoginUserInfo loginUserInfo); WorkorderRecord createWorkorderRecord(CreateWorkorderRecordDTO createWorkorderRecordDTO, LoginUserInfo loginUserInfo); List<WorkorderRecord> getWorkorderRecordList(Integer workorderId); PageData<WStockExtListVO> choiceStockPageForWorkorder(PageWrap<QueryWStockDto> pageWrap, LoginUserInfo userInfo); server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java
@@ -16,11 +16,13 @@ import doumeemes.core.utils.excel.EasyExcelUtil; import doumeemes.core.utils.redis.RedisUtil; import doumeemes.dao.business.PlansMapper; import doumeemes.dao.business.dto.*; import doumeemes.dao.business.model.*; import doumeemes.dao.ext.*; import doumeemes.dao.ext.dto.*; import doumeemes.dao.ext.vo.*; import doumeemes.service.ext.*; import io.swagger.annotations.ApiModelProperty; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.BeanUtils; @@ -35,6 +37,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; /** * ç产计åServiceå®ç° @@ -84,6 +87,8 @@ private MaterialDistributeExtMapper materialDistributeExtMapper; @Autowired private WStockExtService wStockExtService; @Autowired private WorkorderRecordStandardService workorderRecordStandardService; @Override public PlansExtListVO findById(Integer id){ @@ -565,7 +570,7 @@ distributeDone(user, param,param.getPlanNum()); } private void distributeDone(LoginUserInfo user, Workorder param,int thisPlanNum) { private Workorder distributeDone(LoginUserInfo user, Workorder param,int thisPlanNum) { if(param.getPlanId()== null ||param.getPlanDate() == null || param.getProGroupId()==null @@ -648,7 +653,7 @@ //ç产人åè®°å½ workorderUserExtMapper.insert(wu); } return order; } private void checkUserAndGroup(Workorder param, PlansExtListVO model,LoginUserInfo user) throws BusinessException{ @@ -1545,4 +1550,62 @@ } /** * ä¸é®æ¥å·¥ * @param user */ @Transactional(rollbackFor = {BusinessException.class,Exception.class}) @Override public void autoWorkReport(LoginUserInfo user, AutoWorkReportDTO autoWorkReportDTO){ //æ¥è¯¢å·¥å·¥åºè®¡åç¶æ Plans plans = plansExtMapper.selectById(autoWorkReportDTO.getPlansId()); if(Objects.isNull(plans)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"æªæ¥è¯¢å°å·¥åºè®¡åæ°æ®"); } if(plans.getStatus().equals(Constants.PLAN_STATUS.create)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"å·¥åºè®¡åå·²æµè½¬ï¼æ æ³æä½"); } if(Objects.isNull(autoWorkReportDTO.getCreateWorkorderRecordDTO())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"åæ°é误ï¼äº§åºæ°æ®"); } //æ¥è¯¢å·¥åºè®¡åå·²åé æ°é List<Workorder> workorderList = workorderExtMapper.selectList(new QueryWrapper<Workorder>().eq("PLAN_ID",plans.getId())); //æ¬æ¬¡äº§åºæ°é BigDecimal num = autoWorkReportDTO.getCreateWorkorderRecordDTO().getQualifiedNum().add(autoWorkReportDTO.getCreateWorkorderRecordDTO().getUnQualifiedNum()); if(num.compareTo(BigDecimal.ZERO)<=Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"åæ°é误ï¼äº§åºæ°æ®"); } //å·¥åå·²åé æ°é Integer produceNum = workorderList.stream().map(s -> s.getPlanNum()).reduce(Constants.ZERO, Integer::sum); Integer surplusNum = plans.getNum() - produceNum; if(num.compareTo(BigDecimal.valueOf(surplusNum))>0){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"åæ°é误ï¼è¶ åºå·¥åå©ä½å¯åé æ°é"); } Workorder param = new Workorder(); param.setPlanId(autoWorkReportDTO.getPlansId()); param.setPlanDate(new Date()); List<Integer> proUserList = new ArrayList<Integer>(); //TODO proUserList.add(user.getId()); param.setProUserList(proUserList); param.setPlanNum(plans.getNum()); //çæå·¥åä¿¡æ¯ Workorder workorder = this.distributeDone(user,param,plans.getNum()); //å·¥åææè®°å½ CreateMaterialDTO createMaterialDTO = new CreateMaterialDTO(); if(!Objects.isNull(autoWorkReportDTO.getRecordList())&&autoWorkReportDTO.getRecordList().size()>Constants.ZERO){ createMaterialDTO.setId(workorder.getId()); createMaterialDTO.setRecordList(autoWorkReportDTO.getRecordList()); workorderRecordStandardService.createMaterialStandard(createMaterialDTO); } //å·¥å产åºè®°å½ workorderRecordStandardService.createWorkorderRecord(autoWorkReportDTO.getCreateWorkorderRecordDTO(),user); //工忥工 workorderRecordStandardService.comfirmDone(workorder); } } server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java
@@ -16,7 +16,9 @@ import doumeemes.core.utils.redis.RedisUtil; import doumeemes.dao.business.BackOrderDetailMapper; import doumeemes.dao.business.BackorderMapper; import doumeemes.dao.business.SalaryParamMapper; import doumeemes.dao.business.dto.CreateMaterialDTO; import doumeemes.dao.business.dto.CreateWorkorderRecordDTO; import doumeemes.dao.business.dto.DealWorkorderRecordDTO; import doumeemes.dao.business.dto.MaterialListDTO; import doumeemes.dao.business.model.*; @@ -79,6 +81,8 @@ private WOutboundRecordExtMapper wOutboundRecordExtMapper; @Autowired private MaterialExtMapper materialExtMapper; @Autowired private SalaryParamMapper salaryParamMapper; @Transactional(rollbackFor = {BusinessException.class,Exception.class}) @Override @@ -1108,4 +1112,76 @@ } @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public WorkorderRecord createWorkorderRecord(CreateWorkorderRecordDTO createWorkorderRecordDTO, LoginUserInfo loginUserInfo){ Workorder workorder = workorderExtMapper.selectById(createWorkorderRecordDTO.getWorkorderId()); if(Objects.isNull(workorder)){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对ä¸èµ·ï¼æªæ¥è¯¢å°è¯¥å·¥åä¿¡æ¯ï¼"); } if(Objects.isNull(createWorkorderRecordDTO.getUnQualifiedNum()) ||Objects.isNull(createWorkorderRecordDTO.getUnQualifiedNum()) ||Objects.isNull(createWorkorderRecordDTO.getWorkorderId()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } BigDecimal num = createWorkorderRecordDTO.getQualifiedNum().add(createWorkorderRecordDTO.getUnQualifiedNum()); WorkorderRecord workorderRecord = new WorkorderRecord(); //æ¥è¯¢å·¥å䏿¯å¦åå¨å¯¹åºè®°å½ workorderRecord = workorderRecordExtMapper.selectOne(new QueryWrapper<WorkorderRecord>() .eq("WORKORDER_ID",createWorkorderRecordDTO.getWorkorderId()) .eq("TYPE",Constants.ONE) .eq("DELETED",Constants.ZERO) .last(" limit 1 ") ); if(!Objects.isNull(workorderRecord)){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对ä¸èµ·ï¼è¯¥å·¥åç该类产åºè®°å½å·²åå¨ï¼"); } if(num.compareTo(BigDecimal.valueOf(workorder.getPlanNum()))>Constants.ZERO){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对ä¸èµ·ï¼è¯¥å·¥åçäº§åºæ°éä¸è½å¤§äºå·¥åè®¡åæ°éï¼"); } //æ°æ®åå¨ workorderRecord = new WorkorderRecord(); workorderRecord.setDeleted(Constants.ZERO); workorderRecord.setCreateUser(loginUserInfo.getId()); workorderRecord.setCreateTime(new Date()); workorderRecord.setNum(num); workorderRecord.setRootDepartId(loginUserInfo.getRootDepartment().getId()); workorderRecord.setDepartId(loginUserInfo.getCurComDepartment().getId()); workorderRecord.setPlanId(workorder.getPlanId()); workorderRecord.setWorkorderId(createWorkorderRecordDTO.getWorkorderId()); workorderRecord.setBatch(workorder.getBatch()); workorderRecord.setFactoryId(workorder.getFactoryId()); workorderRecord.setProcedureId(workorder.getProcedureId()); workorderRecord.setProDate(new Date()); workorderRecord.setType(Constants.ONE); workorderRecord.setMaterialId(workorder.getMaterialId()); workorderRecord.setUnitId(workorder.getUnitId()); workorderRecord.setMaterialBatch(workorder.getBatch()); workorderRecord.setUnqualifiedNum(createWorkorderRecordDTO.getUnQualifiedNum()); workorderRecord.setQualifiedNum(createWorkorderRecordDTO.getQualifiedNum()); //计ç®å·¥èµä¿¡æ¯ SalaryParam salaryParam = salaryParamMapper.selectOne(new QueryWrapper<SalaryParam>().eq("DELETED",Constants.ZERO).eq("MATERIAL_ID",workorderRecord.getMaterialId()) .eq("DEPART_ID",workorderRecord.getFactoryId()).eq("PROCEDURE_ID",workorderRecord.getProcedureId()).last(" limit 1 ")); if(Objects.isNull(salaryParam)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"æªé 置工èµç»©æé ç½®ï¼"); } workorderRecord.setSalaryPrice(salaryParam.getSalary()); workorderRecord.setSalaryType(salaryParam.getType()); workorderRecord.setSalaryUnqualified(salaryParam.getUnqualified()); //è®¡ä»¶å·¥èµ if(salaryParam.getType().equals(Constants.ZERO)){ workorderRecord.setSalaryNum(salaryParam.getNum()); workorderRecord.setSalary(salaryParam.getSalary().multiply(salaryParam.getUnqualified()==Constants.ZERO?num:createWorkorderRecordDTO.getUnQualifiedNum())); }else{ workorderRecord.setDuration(createWorkorderRecordDTO.getDuration()); workorderRecord.setSalary(BigDecimal.valueOf(createWorkorderRecordDTO.getDuration()).multiply(salaryParam.getSalary()).divide(new BigDecimal(3600))); } workorderRecordExtMapper.insert(workorderRecord); return workorderRecord; } }