mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
打包状态,生产单状态,工序加逻辑修改
This commit is contained in:
+23
@@ -0,0 +1,23 @@
|
||||
package com.cf.imes.module.manage.controller.admin.pack.vo;
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.ToString;
|
||||
|
||||
|
||||
@Schema(description = "板材和配件ID")
|
||||
@Data
|
||||
@ToString(callSuper = true)
|
||||
public class PlateAndPartIdList {
|
||||
|
||||
|
||||
@Schema(description = "板材ID")
|
||||
private Long plateId;
|
||||
|
||||
|
||||
@Schema(description = "配件ID")
|
||||
private Long partsId;
|
||||
|
||||
|
||||
}
|
||||
+5
@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
|
||||
import lombok.*;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@TableName(value = "`orders`") // 由于 SQL Server 的 system_user 是关键字,所以使用 system_users
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@@ -55,6 +57,9 @@ public class OrderDO extends BaseDO {
|
||||
// 备注
|
||||
private String remark;
|
||||
|
||||
// 生产单的完成时间
|
||||
private LocalDateTime finishTime;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+7
-2
@@ -2,10 +2,12 @@ package com.cf.imes.module.manage.dal.mysql.pack;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.cf.imes.framework.common.enums.OrderPackageStatusEnum;
|
||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.module.manage.controller.admin.pack.vo.PackRespVO;
|
||||
import com.cf.imes.module.manage.controller.admin.pack.vo.PackageDetailsReqVO;
|
||||
import com.cf.imes.module.manage.controller.admin.pack.vo.PlateAndPartIdList;
|
||||
import com.cf.imes.module.manage.controller.admin.pack.vo.PlateDetailsRespVO;
|
||||
import com.cf.imes.module.manage.controller.admin.query.vo.pack.OrderPackageVO;
|
||||
import com.cf.imes.module.manage.dal.dataobject.query.OrderPackageDO;
|
||||
@@ -64,12 +66,15 @@ public interface OrderPackageMapper extends BaseMapperX<OrderPackageDO> {
|
||||
}
|
||||
|
||||
|
||||
default List<OrderPackageDO> selectPackList(Long packageId,Long organId) {
|
||||
default List<OrderPackageDO> selectPackList(Long orderId,Long organId) {
|
||||
return selectList(new LambdaQueryWrapperX<OrderPackageDO>()
|
||||
.eq(OrderPackageDO::getOrganId,organId)
|
||||
.eqIfPresent(OrderPackageDO::getId, packageId));
|
||||
.eqIfPresent(OrderPackageDO::getOrderId, orderId)
|
||||
.eqIfPresent(OrderPackageDO::getStatus, OrderPackageStatusEnum.UNPACKED.getStatus()));
|
||||
}
|
||||
|
||||
|
||||
List<PackRespVO> selectPackPieceCount(@Param("orderIds") List<Long> orderIds, @Param("organId") Long organId);
|
||||
|
||||
List<PlateAndPartIdList> selectOrderPack(@Param("orderId") Long orderId,@Param("organId") Long organId);
|
||||
}
|
||||
|
||||
+17
-6
@@ -32,12 +32,6 @@ public interface ProcessStepMapper extends BaseMapperX<OrderProcessStepNDO> {
|
||||
|
||||
void updateStatusById(@Param("id") Long id, @Param("salary")BigDecimal salary);
|
||||
|
||||
// default List<OrderProcessStepNDO> selectProducitonList(Long orderNo) {
|
||||
// return selectList(new LambdaQueryWrapperX<OrderProcessStepNDO>()
|
||||
// .eqIfPresent(OrderProcessStepNDO::getOrderId, orderNo));
|
||||
//
|
||||
// }
|
||||
|
||||
|
||||
List<ProductionGroupVO> selectProducitonList(@Param("orderNo") Long orderNo,@Param("organId") Long organId);
|
||||
|
||||
@@ -54,4 +48,21 @@ public interface ProcessStepMapper extends BaseMapperX<OrderProcessStepNDO> {
|
||||
|
||||
List<OrderProcessStepNDO> selectProcessList(@Param("organId") Long organId);
|
||||
|
||||
|
||||
default List<OrderProcessStepNDO> selectOrderStatus(Long orderId, Long organId) {
|
||||
return selectList(new LambdaQueryWrapperX<OrderProcessStepNDO>()
|
||||
.eqIfPresent(OrderProcessStepNDO::getOrganId, organId)
|
||||
.eqIfPresent(OrderProcessStepNDO::getOrderId, orderId)
|
||||
.eqIfPresent(OrderProcessStepNDO::getStatus,false));
|
||||
|
||||
}
|
||||
|
||||
|
||||
default OrderProcessStepNDO selectOrderProcess(Long orderId, Long organId, Integer type) {
|
||||
return selectOne(new LambdaQueryWrapperX<OrderProcessStepNDO>()
|
||||
.eqIfPresent(OrderProcessStepNDO::getOrganId, organId)
|
||||
.eqIfPresent(OrderProcessStepNDO::getOrderId, orderId)
|
||||
.eqIfPresent(OrderProcessStepNDO::getType,type));
|
||||
|
||||
}
|
||||
}
|
||||
+104
@@ -6,24 +6,32 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||
import com.cf.imes.framework.common.enums.OrderPackageStatusEnum;
|
||||
import com.cf.imes.framework.common.enums.OrderPackageTypeEnum;
|
||||
import com.cf.imes.framework.common.enums.OrderStatusEnum;
|
||||
import com.cf.imes.framework.common.enums.ProcessProcessingTypeEnum;
|
||||
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
||||
import com.cf.imes.module.manage.controller.admin.pack.vo.*;
|
||||
import com.cf.imes.module.manage.controller.admin.process.vo.OrderProcessStepItemVO;
|
||||
import com.cf.imes.module.manage.controller.admin.process.vo.ProcessRespVO;
|
||||
import com.cf.imes.module.manage.controller.admin.process.vo.ProcessStepStatus;
|
||||
import com.cf.imes.module.manage.controller.admin.query.vo.pack.OrderPackageVO;
|
||||
import com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.OrderModuleReqVO;
|
||||
import com.cf.imes.module.manage.dal.dataobject.pack.OrderBodyDO;
|
||||
import com.cf.imes.module.manage.dal.dataobject.process.OrderDO;
|
||||
import com.cf.imes.module.manage.dal.dataobject.process.OrderProcessStepNDO;
|
||||
import com.cf.imes.module.manage.dal.dataobject.query.OrderItemDO;
|
||||
import com.cf.imes.module.manage.dal.dataobject.query.OrderPackageDO;
|
||||
import com.cf.imes.module.manage.dal.dataobject.query.OrderPartsNDO;
|
||||
import com.cf.imes.module.manage.dal.mysql.pack.OrderBodyMapper;
|
||||
import com.cf.imes.module.manage.dal.mysql.pack.OrderPackageMapper;
|
||||
import com.cf.imes.module.manage.dal.mysql.process.ProcessStepItemMapper;
|
||||
import com.cf.imes.module.manage.dal.mysql.process.ProcessStepMapper;
|
||||
import com.cf.imes.module.manage.dal.mysql.process.ProductionProcessMapper;
|
||||
import com.cf.imes.module.manage.dal.mysql.query.OrderItemMapper;
|
||||
import com.cf.imes.module.manage.dal.mysql.query.OrderPartsMapper;
|
||||
import com.cf.imes.module.manage.dal.mysql.query.ProductionStatusMapper;
|
||||
import com.cf.imes.module.manage.service.process.ProductionProcessServiceImpl;
|
||||
import com.cf.imes.module.manage.util.packageNo.PackageNoUtil;
|
||||
import com.cf.imes.module.manage.util.page.PageHelperUtil;
|
||||
import com.cf.imes.module.system.enums.ErrorCodeConstants;
|
||||
@@ -34,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@@ -41,6 +50,7 @@ import java.util.stream.Collectors;
|
||||
|
||||
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static com.cf.imes.framework.common.util.string.SearchUtil.insertSeparator;
|
||||
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
|
||||
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
|
||||
import static com.cf.imes.module.system.enums.ErrorCodeConstants.*;
|
||||
|
||||
@@ -67,6 +77,16 @@ public class PackServiceImpl implements PackService {
|
||||
@Resource
|
||||
private ProcessStepMapper processStepMapper;
|
||||
|
||||
@Resource
|
||||
private ProductionProcessServiceImpl productionProcessService;
|
||||
|
||||
@Resource
|
||||
private ProcessStepItemMapper processStepItemMapper;
|
||||
|
||||
@Resource
|
||||
private ProductionProcessMapper productionProcessMapper;
|
||||
|
||||
|
||||
|
||||
// 打包分页查询
|
||||
@Override
|
||||
@@ -234,7 +254,17 @@ public class PackServiceImpl implements PackService {
|
||||
if(reqVO.getAddPartsIdList()!=null) {
|
||||
orderItemMapper.insertPartsId( orderPackageDO.getId(),reqVO.getAddPartsIdList());
|
||||
}
|
||||
|
||||
// 判断当前生产单的板材和配件是否已全部打包且当前生产单的包裹已全部封包
|
||||
if(validateOrderPack(reqVO.getOrderId())){
|
||||
|
||||
updateOrderStatus(reqVO.getOrderId());
|
||||
|
||||
}
|
||||
|
||||
|
||||
return typeConversion(orderPackageDO);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -277,6 +307,15 @@ public class PackServiceImpl implements PackService {
|
||||
|
||||
orderPackageMapper.updateById(orderPackageDO);
|
||||
|
||||
|
||||
// 判断当前生产单的板材和配件是否已全部打包且当前生产单的包裹已全部封包
|
||||
if(validateOrderPack(reqVO.getOrderId())){
|
||||
|
||||
updateOrderStatus(reqVO.getOrderId());
|
||||
|
||||
}
|
||||
|
||||
|
||||
return typeConversion(orderPackageDO);
|
||||
}
|
||||
|
||||
@@ -317,6 +356,11 @@ public class PackServiceImpl implements PackService {
|
||||
if(packageVO.getAddPlateIdList()!=null) {
|
||||
orderItemMapper.insertPackId(packageVO.getAddPlateIdList(), orderPackageDO.getId());
|
||||
}
|
||||
|
||||
if(validateOrderPack(packageVO.getOrderId())){
|
||||
updateOrderStatus(packageVO.getOrderId());
|
||||
}
|
||||
|
||||
return typeConversion(orderPackageDO);
|
||||
}
|
||||
|
||||
@@ -361,11 +405,71 @@ public class PackServiceImpl implements PackService {
|
||||
|
||||
orderPackageMapper.updateById(orderPackageDO);
|
||||
|
||||
|
||||
// 判断当前生产单的板材和配件是否已全部打包且当前生产单的包裹已全部封包
|
||||
if(validateOrderPack(packageVO.getOrderId())){
|
||||
|
||||
updateOrderStatus(packageVO.getOrderId());
|
||||
|
||||
}
|
||||
|
||||
return typeConversion(orderPackageDO);
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 判断当前生产单的板材和配件是否已全部打包且当前生产单的包裹已全部封包
|
||||
public Boolean validateOrderPack(Long orderId){
|
||||
|
||||
List<OrderPackageDO> orderPackageDOS = orderPackageMapper.selectPackList(orderId, getUserOrganId());
|
||||
|
||||
if(!orderPackageDOS.isEmpty()){
|
||||
return false;
|
||||
}
|
||||
|
||||
List<PlateAndPartIdList> plateAndPartIdLists = orderPackageMapper.selectOrderPack(orderId, getUserOrganId());
|
||||
|
||||
// List<Long> plateList = plateAndPartIdLists.stream().map(PlateAndPartIdList::getPlateId).toList();
|
||||
//
|
||||
// List<Long> partsList = plateAndPartIdLists.stream().map(PlateAndPartIdList::getPartsId).toList();
|
||||
|
||||
return plateAndPartIdLists.isEmpty() ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 修改当前生产单的工序状态和生产单的状态
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateOrderStatus(Long orderId) {
|
||||
|
||||
OrderDO orderDO = productionProcessMapper.selectById(orderId);
|
||||
if(orderDO.getFinishTime() != null){
|
||||
return;
|
||||
}
|
||||
|
||||
// 判断正确,修改当前生产单对应的打包的工序状态
|
||||
OrderProcessStepNDO orderProcessStepNDO = processStepMapper.selectOrderProcess(orderId, getUserOrganId(), ProcessProcessingTypeEnum.PACK.getNumber());
|
||||
|
||||
|
||||
// 工序加工添加负责人
|
||||
String nickname = getLoginUser().getNickname();
|
||||
|
||||
|
||||
BigDecimal salary = productionProcessService.calculateSalary(orderProcessStepNDO.getId(), null);
|
||||
|
||||
// 修改生产明细表和步骤表的工序状态
|
||||
processStepMapper.updateStatus(orderProcessStepNDO.getId(), nickname, salary);
|
||||
|
||||
processStepItemMapper.updateStatus(orderProcessStepNDO.getId());
|
||||
|
||||
// 修改生产的状态为生产完成
|
||||
orderDO.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus());
|
||||
orderDO.setFinishTime(LocalDateTime.now());
|
||||
|
||||
productionProcessMapper.updateById(orderDO);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 查询包裹
|
||||
|
||||
+47
@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.log.Log;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||
import com.cf.imes.framework.common.enums.OrderStatusEnum;
|
||||
import com.cf.imes.framework.common.enums.ProcessProcessingTypeEnum;
|
||||
import com.cf.imes.framework.common.enums.ProcessingStatusEnum;
|
||||
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
|
||||
@@ -16,7 +17,9 @@ import com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.Orde
|
||||
import com.cf.imes.module.manage.dal.dataobject.pack.OrderBodyDO;
|
||||
import com.cf.imes.module.manage.dal.dataobject.plate.OrderPlateDO;
|
||||
import com.cf.imes.module.manage.dal.dataobject.plate.PlateDO;
|
||||
import com.cf.imes.module.manage.dal.dataobject.process.OrderDO;
|
||||
import com.cf.imes.module.manage.dal.dataobject.process.OrderProcessStepItemNDO;
|
||||
import com.cf.imes.module.manage.dal.dataobject.process.OrderProcessStepNDO;
|
||||
import com.cf.imes.module.manage.dal.mysql.pack.OrderBodyMapper;
|
||||
import com.cf.imes.module.manage.dal.mysql.plate.OrderPlateMapper;
|
||||
import com.cf.imes.module.manage.dal.mysql.plate.PlateMapper;
|
||||
@@ -31,6 +34,7 @@ import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -68,6 +72,9 @@ public class ProductionProcessServiceImpl implements ProductionProcessService {
|
||||
@Resource
|
||||
private OrderPlateMapper orderPlateMapper;
|
||||
|
||||
@Resource
|
||||
private ProductionProcessMapper productionProcessMapper;
|
||||
|
||||
|
||||
@Resource
|
||||
private ProcessApi processApi;
|
||||
@@ -152,6 +159,13 @@ public class ProductionProcessServiceImpl implements ProductionProcessService {
|
||||
processStepMapper.updateStatusById(reqVo.getProcessStepId(),salary);
|
||||
|
||||
}
|
||||
// 当前工序已全部加工,修改生产单的状态为生产完成
|
||||
if(validateOrderStatus(processStepStatuses.getOrderId())){
|
||||
OrderDO orderDO = productionProcessMapper.selectById(processStepStatuses.getOrderId());
|
||||
orderDO.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus());
|
||||
orderDO.setFinishTime(LocalDateTime.now());
|
||||
productionProcessMapper.updateById(orderDO);
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
@@ -176,6 +190,13 @@ public class ProductionProcessServiceImpl implements ProductionProcessService {
|
||||
processStepMapper.updateStatusById(reqVo.getProcessStepId(),salary);
|
||||
|
||||
}
|
||||
// 当前工序已全部加工,修改生产单的状态为生产完成
|
||||
if(validateOrderStatus(processStepStatuses.getOrderId())){
|
||||
OrderDO orderDO = productionProcessMapper.selectById(processStepStatuses.getOrderId());
|
||||
orderDO.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus());
|
||||
orderDO.setFinishTime(LocalDateTime.now());
|
||||
productionProcessMapper.updateById(orderDO);
|
||||
}
|
||||
return;
|
||||
|
||||
}
|
||||
@@ -188,6 +209,23 @@ public class ProductionProcessServiceImpl implements ProductionProcessService {
|
||||
|
||||
processStepItemMapper.updateStatus(reqVo.getProcessStepId());
|
||||
|
||||
// 判断当前工序的状态是否为打包类型,如果是,修改生产的状态为生产完成
|
||||
if(processStepStatuses.getType().equals(ProcessProcessingTypeEnum.PACK.getNumber())){
|
||||
OrderDO orderDO = productionProcessMapper.selectById(processStepStatuses.getOrderId());
|
||||
orderDO.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus());
|
||||
orderDO.setFinishTime(LocalDateTime.now());
|
||||
productionProcessMapper.updateById(orderDO);
|
||||
return;
|
||||
}
|
||||
|
||||
// 当前工序已全部加工,修改生产单的状态为生产完成
|
||||
if(validateOrderStatus(processStepStatuses.getOrderId())){
|
||||
OrderDO orderDO = productionProcessMapper.selectById(processStepStatuses.getOrderId());
|
||||
orderDO.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus());
|
||||
orderDO.setFinishTime(LocalDateTime.now());
|
||||
productionProcessMapper.updateById(orderDO);
|
||||
}
|
||||
|
||||
}catch (Exception e){
|
||||
log.error(String.valueOf(e));
|
||||
|
||||
@@ -220,6 +258,15 @@ public class ProductionProcessServiceImpl implements ProductionProcessService {
|
||||
}
|
||||
|
||||
|
||||
public Boolean validateOrderStatus(Long orderId){
|
||||
|
||||
// 查询当前生产单的工序是否已全部加工
|
||||
List<OrderProcessStepNDO> orderProcessStepNDOS = processStepMapper.selectOrderStatus(orderId, getUserOrganId());
|
||||
|
||||
return orderProcessStepNDOS.isEmpty();
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 查看板材信息的组合名称
|
||||
@Override
|
||||
|
||||
+15
@@ -182,5 +182,20 @@
|
||||
|
||||
</select>
|
||||
|
||||
<select id="selectOrderPack"
|
||||
resultType="com.cf.imes.module.manage.controller.admin.pack.vo.PlateAndPartIdList">
|
||||
|
||||
|
||||
select distinct oi.plate_id,
|
||||
oi.parts_id
|
||||
from order_package op
|
||||
join order_item oi on op.order_id = oi.order_id and op.organ_id = oi.organ_id
|
||||
|
||||
where op.order_id = #{orderId} and op.organ_id = #{organId} and oi.package_id = 0
|
||||
|
||||
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user