Merge remote-tracking branch 'origin/main'

This commit is contained in:
gaoqr
2024-07-08 18:45:45 +08:00
41 changed files with 579 additions and 91 deletions
@@ -8,7 +8,7 @@ import lombok.Getter;
@Getter
public enum ProcessProcessingTypeEnum {
CUTTINGMATERIALS(1,"开料"),
COMPONENTPROCESSING(7,"组件加工"),
PLATE(8,"板材加工");
@@ -1,6 +1,4 @@
package com.cf.imes.module.manage.util.search;
package com.cf.imes.framework.common.util.string;
/**
@@ -0,0 +1,25 @@
package com.cf.imes.module.executor.api.plan;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.module.executor.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(name = ApiConstants.NAME) // TODO 晨丰:fallbackFactory =
@Tag(name = "RPC 服务 - 多组织")
public interface OrderPlanApi {
String PREFIX = ApiConstants.PREFIX + "/plan";
@GetMapping(PREFIX +"/apiGetOrderPlan")
@Operation(summary = "查询当前机台对应的排单是否有使用")
@Parameter(name = "machineId", description = "机台ID", required = true, example = "1024")
CommonResult<Boolean> getOrderPlan(@RequestParam("machineId") Long id);
}
@@ -0,0 +1,39 @@
package com.cf.imes.module.executor.api.plan;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
@RestController // 提供 RESTful API 接口,给 Feign 调用
@Validated
public class OrderPlanApiImpl implements OrderPlanApi{
@Resource
private PlanMapper planMapper;
@Override
public CommonResult<Boolean> getOrderPlan(Long machineId) {
List<PlanDO> planDOS = planMapper.selectByMachineId(machineId, getUserOrganId());
if(!planDOS.isEmpty()){
return CommonResult.success(true);
}
return CommonResult.success(false);
}
}
@@ -0,0 +1,20 @@
package com.cf.imes.module.executor.controller.admin.plan.bo;
import lombok.Builder;
import lombok.Data;
import java.math.BigDecimal;
@Data
@Builder
public class ProcessStepAreaIds {
// 生产单工序步骤ID
private Long processStepId;
// 生产单工序步骤对应的板件面积
private BigDecimal area;
}
@@ -0,0 +1,20 @@
package com.cf.imes.module.executor.controller.admin.plan.bo;
import lombok.Builder;
import lombok.Data;
import java.math.BigDecimal;
@Data
@Builder
public class ProcessStepSalaryIds {
// 生产单工序步骤ID
private Long processStepId;
// 生产单工序步骤工资金额
private BigDecimal salary;
}
@@ -77,6 +77,14 @@ public interface PlanMapper extends BaseMapperX<PlanDO> {
PlanDO selectPlanByOrderIds(@Param("ids") List<Long> ids);
default List<PlanDO> selectByMachineId(Long machineId,Long organId) {
return selectList( new LambdaQueryWrapperX<PlanDO>()
.eq(PlanDO::getDeleted,false)
.eq(PlanDO::getOrganId,organId)
.eq(PlanDO::getMachineId,machineId));
}
//
// default PlanDO selectByOrderId(Long orderId) {
// return selectOne(new MPJLambdaWrapperX<PlanDO>()
@@ -1,15 +1,18 @@
package com.cf.imes.module.executor.dal.mysql.processStep;
import java.math.BigDecimal;
import java.util.*;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.module.executor.dal.dataobject.process.OrderProcessDO;
import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessStepAreaIds;
import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessStepSalaryIds;
import com.cf.imes.module.executor.dal.dataobject.processStep.ProcessStepDO;
import org.apache.ibatis.annotations.Mapper;
import com.cf.imes.module.executor.controller.admin.processStep.vo.*;
import org.apache.ibatis.annotations.Param;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
@@ -53,4 +56,19 @@ public interface ProcessStepMapper extends BaseMapperX<ProcessStepDO> {
wrapper.eq(ProcessStepDO::getDeleted, 1);
return update(wrapper);
}
default List<ProcessStepDO> selectOrderList(List<Long> orderIds,Long organId) {
return selectList(new LambdaQueryWrapperX<ProcessStepDO>()
.eq(ProcessStepDO::getOrganId, organId)
.inIfPresent(ProcessStepDO::getOrderId, orderIds));
}
List<ProcessStepSalaryIds> calculateSalary(@Param("processStepAreaIds") List<ProcessStepAreaIds> processStepAreaIds, @Param("organId") Long organId);
void updateStatus(@Param("processStepSalaryIds") List<ProcessStepSalaryIds> processStepSalaryIds,@Param("nickname") String nickname);
}
@@ -2,9 +2,7 @@ package com.cf.imes.module.executor.dal.mysql.processStepItem;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.executor.controller.admin.plate.vo.BodyPlateDetailVO;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessStepAreaIds;
import com.cf.imes.module.executor.dal.dataobject.processStepItem.OrderProcessStepItemDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -15,4 +13,9 @@ import java.util.List;
public interface ProcessStepItemMapper extends BaseMapperX<OrderProcessStepItemDO> {
List<ProcessStepAreaIds> selectAreaByProcessStepId(@Param("processStepId") List<Long> processStepId, @Param("organId") Long organId);
void updateStatus(@Param("processStepIds") List<Long> processStepIds);
}
@@ -4,6 +4,7 @@ import com.cf.imes.module.infra.api.file.FileApi;
import com.cf.imes.module.system.api.application.ApplicationApi;
import com.cf.imes.module.system.api.dataSource.DataSourceApi;
import com.cf.imes.module.system.api.machine.MachineApi;
import com.cf.imes.module.system.api.process.ProcessApi;
import com.cf.imes.module.system.api.process.ProcessGroupApi;
import com.cf.imes.module.system.api.user.AdminUserApi;
import com.cf.imes.module.system.api.dict.DictDataApi;
@@ -15,6 +16,6 @@ import org.springframework.context.annotation.Configuration;
*/
@Configuration(proxyBeanMethods = false)
@EnableFeignClients(clients = {AdminUserApi.class, MachineApi.class, DictDataApi.class,
FileApi.class, ProcessGroupApi.class, FileApi.class, DataSourceApi.class, ApplicationApi.class})
FileApi.class, ProcessGroupApi.class, FileApi.class, DataSourceApi.class, ApplicationApi.class, ProcessApi.class})
public class RpcConfiguration {
}
@@ -9,8 +9,7 @@ import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.FieldValue;
import co.elastic.clients.elasticsearch.core.*;
import co.elastic.clients.elasticsearch.core.search.Hit;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.alibaba.fastjson.JSON;
import com.cf.imes.framework.common.enums.PlanStatusEnum;
import com.cf.imes.framework.common.enums.RemainTypeEnum;
import com.cf.imes.framework.common.exception.ServiceException;
@@ -19,10 +18,10 @@ import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.es.core.service.ESDocumentService;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.cf.imes.framework.mybatis.core.query.QueryWrapperX;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
import com.cf.imes.framework.security.core.LoginUser;
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderSource;
import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessStepAreaIds;
import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessStepSalaryIds;
import com.cf.imes.module.executor.controller.admin.plan.dto.Material;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.OptimizeRemainPlate;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPackReqVO;
@@ -38,6 +37,7 @@ import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import com.cf.imes.module.executor.dal.dataobject.planitem.PlanItemDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
import com.cf.imes.module.executor.dal.dataobject.processStep.ProcessStepDO;
import com.cf.imes.module.executor.dal.dataobject.remainplaten.OutlineDTO;
import com.cf.imes.module.executor.dal.dataobject.remainplaten.PointDTO;
import com.cf.imes.module.executor.dal.dataobject.remainplaten.RemainPlateDO;
@@ -47,6 +47,8 @@ import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper;
import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper;
import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.executor.dal.mysql.processStep.ProcessStepMapper;
import com.cf.imes.module.executor.dal.mysql.processStepItem.ProcessStepItemMapper;
import com.cf.imes.module.executor.dal.mysql.remainplaten.RemainPlateMapper;
import com.cf.imes.module.executor.enums.ErrorCodeConstants;
import com.cf.imes.module.executor.util.RandomUtils;
@@ -55,6 +57,8 @@ import com.cf.imes.module.infra.api.file.FileApi;
import com.cf.imes.module.infra.api.file.dto.FileCreateReqDTO;
import com.cf.imes.module.system.api.dataSource.DataSourceApi;
import com.cf.imes.module.system.api.machine.MachineApi;
import com.cf.imes.module.system.api.process.ProcessApi;
import com.cf.imes.module.system.api.process.dto.ProcessDTO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -62,13 +66,14 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.UNKNOWN;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.framework.organ.core.context.OrganContextHolder.getOrganId;
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.executor.enums.ErrorCodeConstants.ORDER_NOT_EXISTS;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLAN_NOT_EXISTS;
@@ -110,6 +115,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
@Resource
private MachineApi machineApi;
@Resource
private ProcessApi processApi;
@Resource
private ESDocumentService esDocumentService;
@@ -119,6 +127,13 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
@Resource
private OrderPartsMapper orderPartsMapper;
@Resource
private ProcessStepMapper processStepMapper;
@Resource
private ProcessStepItemMapper processStepItemMapper;
@Override
public List<PlateOptimize> getPlateListByPlanId(Long planId) {
return planMapper.selectPlateListByPlanId(planId,getUserOrganId());
@@ -197,6 +212,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean endCutting(Long planId) {
PlanDO planDO = planMapper.selectById(planId);
if (Objects.isNull(planDO)) {
@@ -205,11 +221,62 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
planMapper.updateById(PlanDO.builder()
.id(planId)
.status(PlanStatusEnum.OPENEDMATERIAL.getStatus())
.produceTime(LocalDateTime.now())
.build());
LoginUser loginUser = getLoginUser();
List<ProcessDTO> userProcess = processApi.getUserProcess(loginUser.getId());
if(!userProcess.isEmpty()) {
List<Long> processStepIds = new ArrayList<>();
List<Long> orderIds = JSON.parseArray(planDO.getOrderNos()).toJavaList(Long.class);
List<ProcessStepDO> processStepDOS = processStepMapper.selectOrderList(orderIds, getUserOrganId());
for (ProcessDTO process : userProcess) {
processStepIds.addAll(processStepDOS.stream().filter(f -> Objects.equals(f.getProcessinfoId(), process.getId()))
.map(ProcessStepDO::getId).toList());
}
if(!processStepIds.isEmpty()) {
List<ProcessStepSalaryIds> processStepSalaryIds = calculateSalary(processStepIds);
// 修改生产明细表和步骤表的工序状态
processStepMapper.updateStatus(processStepSalaryIds, loginUser.getNickname());
processStepItemMapper.updateStatus(processStepIds);
}
}
return Boolean.TRUE;
}
// 计算工资金额
public List<ProcessStepSalaryIds> calculateSalary(List<Long> processStepId){
// 查询当前工序对应的板材的面积
List<ProcessStepAreaIds> processStepAreaIds = processStepItemMapper.selectAreaByProcessStepId(processStepId,getUserOrganId());
// 计算当前工序的工资金额
List<ProcessStepSalaryIds> salary = processStepMapper.calculateSalary(processStepAreaIds,getUserOrganId());
return salary;
}
@Override
public OptimizeParamResVO getOptimizeParam(Long planId) {
//小板列表
@@ -58,6 +58,7 @@ import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*;
import static com.cf.imes.framework.common.util.string.SearchUtil.insertSeparator;
/**
* 生产单开料排单 Service 实现类
@@ -347,18 +348,18 @@ public class PlanServiceImpl implements PlanService {
.betweenIfPresent("op.width", new BigDecimal[]{pageReqVO.getWidthMinRang(), pageReqVO.getWidthMaxRang()})
.groupBy("a.id", " a.order_date", "a.delivery_date", "a.customer", "a.address", "a.custom_order_no","a.create_time","a.update_time")
.orderByDesc("a.update_time");
List<Integer> filterTypes = new ArrayList<>();
String filterTypes = "";
if (Objects.nonNull(pageReqVO.getHoleThrough()) && pageReqVO.getHoleThrough()) {
filterTypes.add(PlanFilterTypeEnum.DIGGINGTHROUGHTHESHAPE.getType());
filterTypes += PlanFilterTypeEnum.DIGGINGTHROUGHTHESHAPE.getType().toString();
}
if (Objects.nonNull(pageReqVO.getBurrow()) && pageReqVO.getBurrow()) {
filterTypes.add(PlanFilterTypeEnum.THEREAREPERFORATEDHOLES.getType());
filterTypes += PlanFilterTypeEnum.THEREAREPERFORATEDHOLES.getType().toString();
}
if (Objects.nonNull(pageReqVO.getTwoDimensionalToolPath()) && pageReqVO.getTwoDimensionalToolPath()) {
filterTypes.add(PlanFilterTypeEnum.TWODIMENSIONALCUTTINGPATH.getType());
filterTypes += PlanFilterTypeEnum.TWODIMENSIONALCUTTINGPATH.getType().toString();
}
queryWrapperX.inIfPresent("op.filter_type", filterTypes);
queryWrapperX.likeIfPresent("op.filter_type", insertSeparator(filterTypes));
IPage<OrderRespVOCopy> orderRespVOCopies = orderMapper.selectOrderPage(page, queryWrapperX);
@@ -425,18 +426,18 @@ public class PlanServiceImpl implements PlanService {
.eqIfPresent("op.is_door", pageReqVO.getIsDoor())
.betweenIfPresent("op.height", new BigDecimal[]{pageReqVO.getLongMinRang(), pageReqVO.getLongMaxRang()})
.betweenIfPresent("op.width", new BigDecimal[]{pageReqVO.getWidthMinRang(), pageReqVO.getWidthMaxRang()});
List<Integer> filterTypes = new ArrayList<>();
String filterTypes = "";
if (Objects.nonNull(pageReqVO.getHoleThrough()) && pageReqVO.getHoleThrough()) {
filterTypes.add(PlanFilterTypeEnum.DIGGINGTHROUGHTHESHAPE.getType());
filterTypes += PlanFilterTypeEnum.DIGGINGTHROUGHTHESHAPE.getType().toString();
}
if (Objects.nonNull(pageReqVO.getBurrow()) && pageReqVO.getBurrow()) {
filterTypes.add(PlanFilterTypeEnum.THEREAREPERFORATEDHOLES.getType());
filterTypes += PlanFilterTypeEnum.THEREAREPERFORATEDHOLES.getType().toString();
}
if (Objects.nonNull(pageReqVO.getTwoDimensionalToolPath()) && pageReqVO.getTwoDimensionalToolPath()) {
filterTypes.add(PlanFilterTypeEnum.TWODIMENSIONALCUTTINGPATH.getType());
filterTypes += PlanFilterTypeEnum.TWODIMENSIONALCUTTINGPATH.getType().toString();
}
queryWrapperX.inIfPresent("op.filter_type", filterTypes);
queryWrapperX.likeIfPresent("op.filter_type", insertSeparator(filterTypes));
List<Long> orderIds = orderMapper.selectOrderIds(queryWrapperX);
@@ -539,15 +540,16 @@ public class PlanServiceImpl implements PlanService {
validatePlanExists(planId);
}
QueryWrapperX<PlateDO> queryWrapperX = new QueryWrapperX<>();
List<Integer> filterTypes = new ArrayList<>();
String filterTypes = "";
if (Objects.nonNull(vo.getHoleThrough()) && vo.getHoleThrough()) {
filterTypes.add(PlanFilterTypeEnum.DIGGINGTHROUGHTHESHAPE.getType());
filterTypes += PlanFilterTypeEnum.DIGGINGTHROUGHTHESHAPE.getType().toString();
}
if (Objects.nonNull(vo.getBurrow()) && vo.getBurrow()) {
filterTypes.add(PlanFilterTypeEnum.THEREAREPERFORATEDHOLES.getType());
filterTypes += PlanFilterTypeEnum.THEREAREPERFORATEDHOLES.getType().toString();
}
if (Objects.nonNull(vo.getTwoDimensionalToolPath()) && vo.getTwoDimensionalToolPath()) {
filterTypes.add(PlanFilterTypeEnum.TWODIMENSIONALCUTTINGPATH.getType());
filterTypes += PlanFilterTypeEnum.TWODIMENSIONALCUTTINGPATH.getType().toString();
}
queryWrapperX.in("p.plan_id", vo.getPlanIds())
@@ -558,7 +560,7 @@ public class PlanServiceImpl implements PlanService {
.eqIfPresent("a.is_sculpt", vo.getSculpt())
.betweenIfPresent("a.width", new BigDecimal[]{vo.getWidthMinRang(), vo.getWidthMaxRang()})
.betweenIfPresent("a.height", new BigDecimal[]{vo.getLongMinRang(), vo.getLongMaxRang()})
.inIfPresent("a.filter_type", filterTypes)
.likeIfPresent("a.filter_type", insertSeparator(filterTypes))
.betweenIfPresent("f.delivery_date", new Date[]{vo.getBeginDate(), vo.getEndDate()})
.orderByDesc("a.order_id")
.orderByDesc("a.name");
@@ -610,13 +610,16 @@ public class ApiTypeRealize {
.setDrillsRemark(plate.getString("DrillsRemark"))
.setInfoRemark(plate.getString("InfoRemark"))
.setRemarkJsonDei(plate.getString("RemarkJson"));
if (plateDetail.get(plate.getLong("BlockNo")).getThroughModelCount() > 0){
if (plateDetail.get(plate.getLong("BlockNo")).getThroughModelCount() != null
&& plateDetail.get(plate.getLong("BlockNo")).getThroughModelCount() > 0){
plateInfo.setFilterType(plateInfo.getFilterType() + ",1");
}
if (plateDetail.get(plate.getLong("BlockNo")).getThroughHoleCount() > 0){
if (plateDetail.get(plate.getLong("BlockNo")).getThroughHoleCount() != null
&& plateDetail.get(plate.getLong("BlockNo")).getThroughHoleCount() > 0){
plateInfo.setFilterType(plateInfo.getFilterType() + ",2");
}
if (plateDetail.get(plate.getLong("BlockNo")).getHas2DModel()){
if (plateDetail.get(plate.getLong("BlockNo")).getHas2DModel() != null
&& plateDetail.get(plate.getLong("BlockNo")).getHas2DModel()){
plateInfo.setFilterType(plateInfo.getFilterType() + ",4");
}
@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.cf.imes.module.executor.dal.mysql.processStep.ProcessStepMapper">
<select id="calculateSalary"
parameterType="map"
resultType="com.cf.imes.module.executor.controller.admin.plan.bo.ProcessStepSalaryIds">
select distinct ROUND(ops.piece_rate *
<foreach collection="processStepAreaIds" item="processStepAreaIds" open="(" close=")" separator=",">
(#{processStepAreaIds.area})
</foreach>,3) as salary,
ops.id as processStepId
from order_process_step ops
where ops.organ_id = #{organId}
and ops.id in
<foreach collection="processStepAreaIds" item="processStepAreaIds" open="(" close=")" separator=",">
(#{processStepAreaIds.processStepId})
</foreach>
group by ops.piece_rate,ops.id;
</select>
<update id="updateStatus" parameterType="map">
update order_process_step
set status = true,
finish_time = now(),
manager = #{nickname},
salary_amount =
<foreach collection="processStepSalaryIds" item="processStepSalaryIds" open="(" close=")" separator=",">
(#{processStepSalaryIds.salary})
</foreach>
where id in
<foreach collection="processStepSalaryIds" item="processStepSalaryIds" open="(" close=")" separator=",">
(#{processStepSalaryIds.processStepId})
</foreach>
</update>
</mapper>
@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.cf.imes.module.executor.dal.mysql.processStepItem.ProcessStepItemMapper">
<select id="selectAreaByProcessStepId"
resultType="com.cf.imes.module.executor.controller.admin.plan.bo.ProcessStepAreaIds">
select distinct
sum(op.area) as area,
opsi.process_step_id as processStepId
from order_process_step_item opsi
join order_body ob on opsi.body_id = ob.id and opsi.organ_id = ob.organ_id
join order_item oi on ob.id = oi.body_id and ob.organ_id = oi.organ_id
join order_plate op on oi.plate_id = op.id and oi.organ_id = op.organ_id
where opsi.organ_id = #{organId}
and opsi.process_step_id in
<foreach item="processStepId" collection="processStepId" open="(" separator="," close=")">
#{processStepId}
</foreach>
group by opsi.process_step_id
</select>
<update id="updateStatus">
update order_process_step_item
SET status = TRUE
WHERE process_step_id in
<foreach item="processStepIds" collection="processStepIds" open="(" separator="," close=")">
#{processStepIds}
</foreach>
</update>
</mapper>
@@ -85,8 +85,8 @@ public class PackController {
@Operation(summary = "查看生产订单对应的包裹信息")
@PreAuthorize("@ss.hasPermission('manage:pack:query')")
public CommonResult<PageResult<OrderPackageVO>> getOrderPack(@Valid PackageDetailsReqVO reqVO) {
PageResult<OrderPackageDO> orderPack = packService.getOrderPack(reqVO);
return success(BeanUtils.toBean(orderPack,OrderPackageVO.class));
return success(packService.getOrderPack(reqVO));
}
@@ -122,9 +122,9 @@ public class PackController {
@GetMapping("/getParts")
@Operation(summary = "查看配件列表分页")
@Operation(summary = "查看配件列表")
@PreAuthorize("@ss.hasPermission('manage:pack-parts:query')")
public CommonResult<PageResult<OrderPartsRespVO>> getParts(@Valid OrderPartsReqVO reqVO) {
public CommonResult<List<OrderPartsRespVO>> getParts(@Valid OrderPartsReqVO reqVO) {
return success(packService.getPartsList(reqVO));
@@ -216,9 +216,9 @@ public class PackController {
@PostMapping("/insertParts")
@Operation(summary = "新增配件包裹")
@PreAuthorize("@ss.hasPermission('manage:pack:insert')")
// @PostMapping("/insertParts")
// @Operation(summary = "新增配件包裹")
// @PreAuthorize("@ss.hasPermission('manage:pack:insert')")
public CommonResult<OrderPackRespVO> addNewPartsPack (@Valid @RequestBody OrderPackReqVO reqVO) {
return success(packService.addNewPartsPack(reqVO));
@@ -250,7 +250,7 @@ public class PackController {
@DeleteMapping("/deleteOtherParts")
@Operation(summary = "删除配件包裹中的配件(删除某一个)")
@Operation(summary = "删除包裹中的外部配件")
@PreAuthorize("@ss.hasPermission('manage:pack:delete')")
public CommonResult<Boolean> deleteOtherParts (@Valid @RequestBody DeleteOtherPartsReqVO reqVO) {
@@ -23,7 +23,7 @@ public class OrderPartsReqVO extends PageParam {
@Schema(description = "更新配件时传-包裹ID")
private Long packId;
@Schema(description = "更新配件时传-新增的配件ID")
@Schema(description = "新增的配件ID")
private List<Long> addPartsIdList;
@Schema(description = "更新配件时传-删除的配件ID")
@@ -26,6 +26,9 @@ public class PlateDetailsRespVO {
@Schema(description = "柜体ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String bodyId;
@Schema(description = "生产单ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String orderId;
@Schema(description = "板材ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String plateId;
@@ -83,4 +83,9 @@ public class RemainPlatePageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "排序", example = "ascend")
private String order;
@Schema(description = "排序字段", example = "id")
private String field;
}
@@ -18,6 +18,9 @@ public class ProcessStepStatus {
// 工序明细表的状态
private Boolean processStepItemStatus;
// 工序ID
private Long processId;
// 工序步骤表的类型
private Integer type;
@@ -18,6 +18,18 @@ public class OrderPackageVO {
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED)
private Long orderId;
@Schema(description = "自定义单号")
private String customOrderNo;
@Schema(description = "客户")
private String customer;
@Schema(description = "客户地址")
private String address;
@Schema(description = "经销商")
private String dealer;
@Schema(description = "包裹编号", requiredMode = Schema.RequiredMode.REQUIRED)
private String packageNo;
@@ -33,8 +45,11 @@ public class OrderPackageVO {
@Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED)
private String creator;
@Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED)
private String remark;
@Schema(description = "包裹备注", requiredMode = Schema.RequiredMode.REQUIRED)
private String packRemark;
@Schema(description = "生产单备注", requiredMode = Schema.RequiredMode.REQUIRED)
private String orderRemark;
@Schema(description = "出库人", requiredMode = Schema.RequiredMode.REQUIRED)
private String updater;
@@ -8,6 +8,10 @@ import lombok.Data;
@Data
public class PackageDetailsRespVO {
@Schema(description = "生产单ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String orderId;
@Schema(description = "房间名称-板材类型显示", requiredMode = Schema.RequiredMode.REQUIRED)
private String roomName;
@@ -7,6 +7,7 @@ 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.PlateDetailsRespVO;
import com.cf.imes.module.manage.controller.admin.query.vo.pack.OrderPackageVO;
import com.cf.imes.module.manage.dal.dataobject.query.OrderPackageDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -25,7 +26,7 @@ public interface OrderPackageMapper extends BaseMapperX<OrderPackageDO> {
// }
IPage<OrderPackageDO> selectByOrderNo(@Param("page") IPage page,@Param("reqVO") PackageDetailsReqVO reqVO,@Param("organId") Long organId);
IPage<OrderPackageVO> selectByOrderNo(@Param("page") IPage page, @Param("reqVO") PackageDetailsReqVO reqVO, @Param("organId") Long organId);
default OrderPackageDO selectByPackNo(String packNo,Long organId) {
@@ -22,7 +22,7 @@ public interface OrderPartsMapper extends BaseMapperX<OrderPartsNDO> {
IPage<PackageDetailsRespVO> selectParts(@Param("page") IPage page, @Param("packageId") Long packageId, @Param("organId") Long organId);
IPage<OrderPartsRespVO> selectPartsList(@Param("page") IPage page, @Param("orderId") Long orderId , @Param("organId") Long organId);
List<OrderPartsRespVO> selectPartsList( @Param("orderId") Long orderId , @Param("organId") Long organId);
@@ -22,10 +22,10 @@ import java.util.Set;
public interface RemainPlateMapper extends BaseMapperX<RemainPlateDO> {
default PageResult<RemainPlateDO> selectPage(RemainPlatePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<RemainPlateDO>()
LambdaQueryWrapperX<RemainPlateDO> wrapper = new LambdaQueryWrapperX<RemainPlateDO>()
.likeIfPresent(RemainPlateDO::getId,reqVO.getId() != null ? reqVO.getId().toString() : null)
.eqIfPresent(RemainPlateDO::getPlanId, reqVO.getPlanId() != null ? reqVO.getPlanId().toString() : null)
.eqIfPresent(RemainPlateDO::getInitPlanId, reqVO.getInitPlanId())
.eqIfPresent(RemainPlateDO::getInitPlanId, reqVO.getInitPlanId() != null ? reqVO.getInitPlanId().toString() : null)
.eqIfPresent(RemainPlateDO::getStatus, reqVO.getStatus())
.eqIfPresent(RemainPlateDO::getGoodsId, reqVO.getGoodsId())
.eqIfPresent(RemainPlateDO::getIsCutting, reqVO.getIsCutting())
@@ -44,8 +44,45 @@ public interface RemainPlateMapper extends BaseMapperX<RemainPlateDO> {
.eqIfPresent(RemainPlateDO::getOutLineJson, reqVO.getOutLineJson())
.betweenIfPresent(RemainPlateDO::getWidth, reqVO.getWidth())
.betweenIfPresent(RemainPlateDO::getLength, reqVO.getLength())
.betweenIfPresent(RemainPlateDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(RemainPlateDO::getId));
.betweenIfPresent(RemainPlateDO::getCreateTime, reqVO.getCreateTime());
if (reqVO.getOrder() == null) {
wrapper.orderByDesc(RemainPlateDO::getId);
}else {
if (reqVO.getOrder().equals("ascend")) {
switch (reqVO.getField()) {
case "id" -> wrapper.orderByAsc(RemainPlateDO::getId);
case "length" -> wrapper.orderByAsc(RemainPlateDO::getLength);
case "width" -> wrapper.orderByAsc(RemainPlateDO::getWidth);
case "thickness" -> wrapper.orderByAsc(RemainPlateDO::getThickness);
case "material" -> wrapper.orderByAsc(RemainPlateDO::getMaterial);
case "color" -> wrapper.orderByAsc(RemainPlateDO::getColor);
case "texture" -> wrapper.orderByAsc(RemainPlateDO::getTexture);
case "brand" -> wrapper.orderByAsc(RemainPlateDO::getBrand);
case "store" -> wrapper.orderByAsc(RemainPlateDO::getStore);
case "initPlanId" -> wrapper.orderByAsc(RemainPlateDO::getInitPlanId);
case "planId" -> wrapper.orderByAsc(RemainPlateDO::getPlanId);
case "status" -> wrapper.orderByAsc(RemainPlateDO::getStatus);
}
}else if (reqVO.getOrder().equals("descend")) {
switch (reqVO.getField()) {
case "id" -> wrapper.orderByDesc(RemainPlateDO::getId);
case "length" -> wrapper.orderByDesc(RemainPlateDO::getLength);
case "width" -> wrapper.orderByDesc(RemainPlateDO::getWidth);
case "thickness" -> wrapper.orderByDesc(RemainPlateDO::getThickness);
case "material" -> wrapper.orderByDesc(RemainPlateDO::getMaterial);
case "color" -> wrapper.orderByDesc(RemainPlateDO::getColor);
case "texture" -> wrapper.orderByDesc(RemainPlateDO::getTexture);
case "brand" -> wrapper.orderByDesc(RemainPlateDO::getBrand);
case "store" -> wrapper.orderByDesc(RemainPlateDO::getStore);
case "initPlanId" -> wrapper.orderByDesc(RemainPlateDO::getInitPlanId);
case "planId" -> wrapper.orderByDesc(RemainPlateDO::getPlanId);
case "status" -> wrapper.orderByDesc(RemainPlateDO::getStatus);
}
}
}
return selectPage(reqVO, wrapper);
}
default PageResult<RemainPlateDO> selectPageToAdd(RemainPlatePageReqVO reqVO) {
@@ -3,6 +3,7 @@ package com.cf.imes.module.manage.service.pack;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.module.manage.controller.admin.pack.vo.*;
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.query.OrderPackageDO;
@@ -16,7 +17,7 @@ public interface PackService {
// 查看生产订单对应的包裹信息
PageResult<OrderPackageDO> getOrderPack(PackageDetailsReqVO reqVO);
PageResult<OrderPackageVO> getOrderPack(PackageDetailsReqVO reqVO);
@@ -34,7 +35,7 @@ public interface PackService {
// 查看配件列表分页
PageResult<OrderPartsRespVO> getPartsList(OrderPartsReqVO reqVO);
List<OrderPartsRespVO> getPartsList(OrderPartsReqVO reqVO);
OrderPackRespVO updateParts(OrderPartsReqVO reqVO);
@@ -71,7 +72,7 @@ public interface PackService {
// 删除配件包裹中的配件(删除某一个)
// 删除包裹中的外部配件
void deleteOtherParts(DeleteOtherPartsReqVO reqVO);
@@ -11,6 +11,7 @@ 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.ProcessRespVO;
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;
@@ -38,8 +39,8 @@ import java.util.Objects;
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.getUserOrganId;
import static com.cf.imes.module.manage.util.search.SearchUtil.insertSeparator;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.*;
@Service
@@ -139,11 +140,11 @@ public class PackServiceImpl implements PackService {
// 查看生产订单对应的包裹信息
@Override
public PageResult<OrderPackageDO> getOrderPack(PackageDetailsReqVO reqVO) {
public PageResult<OrderPackageVO> getOrderPack(PackageDetailsReqVO reqVO) {
PageDTO<OrderPackageDO> page = new PageDTO<>(reqVO.getPageNo(), reqVO.getPageSize());
PageDTO<OrderPackageVO> page = new PageDTO<>(reqVO.getPageNo(), reqVO.getPageSize());
IPage<OrderPackageDO> orderPackageDOIPage = orderPackageMapper.selectByOrderNo(page,reqVO, getUserOrganId());
IPage<OrderPackageVO> orderPackageDOIPage = orderPackageMapper.selectByOrderNo(page,reqVO, getUserOrganId());
if (CollectionUtil.isEmpty(orderPackageDOIPage.getRecords())) {
@@ -165,18 +166,14 @@ public class PackServiceImpl implements PackService {
// 查看配件列表分页
@Override
public PageResult<OrderPartsRespVO> getPartsList(OrderPartsReqVO reqVO) {
public List<OrderPartsRespVO> getPartsList(OrderPartsReqVO reqVO) {
PageDTO<OrderPartsRespVO> page = new PageDTO<>(reqVO.getPageNo(), reqVO.getPageSize());
// PageDTO<OrderPartsRespVO> page = new PageDTO<>(reqVO.getPageNo(), reqVO.getPageSize());
IPage<OrderPartsRespVO> orderPartsRespVOS = orderPartsMapper.selectPartsList(page,reqVO.getOrderId(),getUserOrganId());
if (CollectionUtil.isEmpty(orderPartsRespVOS.getRecords())) {
return new PageResult<>();
}
List<OrderPartsRespVO> orderPartsRespVOS = orderPartsMapper.selectPartsList(reqVO.getOrderId(),getUserOrganId());
return new PageResult<>(orderPartsRespVOS.getRecords(), orderPartsRespVOS.getTotal());
return orderPartsRespVOS;
}
@@ -188,6 +185,24 @@ public class PackServiceImpl implements PackService {
@Transactional(rollbackFor = Exception.class)
public OrderPackRespVO updateParts(OrderPartsReqVO reqVO) {
// 判断包裹ID是否为空,为空,走新增,不为空,走更新
if(reqVO.getPackId()==null){
OrderPackageDO orderPackageDO = new OrderPackageDO();
orderPackageDO.setOrderId(reqVO.getOrderId());
orderPackageDO.setType(OrderPackageTypeEnum.PARTS.getType());
orderPackageDO.setPackageNo(PackageNoUtil.randomPageNo());
orderPackageDO.setStatus((OrderPackageStatusEnum.PACKAGED.getStatus()));
orderPackageMapper.insert(orderPackageDO);
// 生产单明细表新增包裹 ID
if(reqVO.getAddPartsIdList()!=null) {
orderItemMapper.insertPartsId( orderPackageDO.getId(),reqVO.getAddPartsIdList());
}
return typeConversion(orderPackageDO);
}
OrderPackageDO orderPackageDO = orderPackageMapper.selectByPackId(reqVO.getPackId(), getUserOrganId());
List<OrderItemDO> orderItemDOS = orderItemMapper.selectPackList(reqVO.getPackId(), getUserOrganId());
@@ -433,6 +448,13 @@ public class PackServiceImpl implements PackService {
throw exception(THE_CURRENT_PACKAGE_TYPE_IS_INCORRECT);
}
// 判断配件名称是否重复
OrderPartsNDO orderPartsNDO = orderPartsMapper.selectOneParts(reqVO.getName(),getUserOrganId());
if (orderPartsNDO != null) {
throw exception(THE_ACCESSORY_NAME_CANNOT_BE_DUPLICATED);
}
// 配件表新增数据
OrderPartsNDO orderParts = BeanUtils.toBean(reqVO, OrderPartsNDO.class);
// 因为是外部配件,所以配件类型的名称固定为 “ 外部配件”
@@ -459,7 +481,7 @@ public class PackServiceImpl implements PackService {
// 删除配件包裹中的配件(删除某一个)
// 删除包裹中的外部配件
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteOtherParts(DeleteOtherPartsReqVO reqVO) {
@@ -34,9 +34,9 @@ import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
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.manage.util.search.SearchUtil.insertSeparator;
/**
@@ -147,7 +147,7 @@ public class ProductionProcessServiceImpl implements ProductionProcessService {
if(orderProcessStepItemNDOS.isEmpty()){
// 修改生产单工序步骤表的状态
BigDecimal salary = calculateSalary(reqVo.getProcessStepId());
BigDecimal salary = calculateSalary(reqVo.getProcessStepId(),processStepStatuses.getProcessId());
processStepMapper.updateStatusById(reqVo.getProcessStepId(),salary);
@@ -181,7 +181,7 @@ public class ProductionProcessServiceImpl implements ProductionProcessService {
}
try {
BigDecimal salary = calculateSalary(reqVo.getProcessStepId());
BigDecimal salary = calculateSalary(reqVo.getProcessStepId(),null);
// 修改生产明细表和步骤表的工序状态
processStepMapper.updateStatus(reqVo.getProcessStepId(),nickname,salary);
@@ -201,15 +201,16 @@ public class ProductionProcessServiceImpl implements ProductionProcessService {
// 计算工资金额
public BigDecimal calculateSalary(Long processStepId){
public BigDecimal calculateSalary(Long processStepId,Long processId){
BigDecimal pieceRate = BigDecimal.ZERO;
// 查询当前工序对应的板材的面积
BigDecimal area = processStepItemMapper.selectAreaByProcessStepId(processStepId,getUserOrganId());
// 查询组件加工的工资
BigDecimal pieceRate = processApi.getProcess();
if(processId != null){
// 查询组件加工的工资
pieceRate = processApi.getProcess(processId);
}
// 计算当前工序的工资金额
BigDecimal salary = processStepMapper.calculateSalary(processStepId, area,pieceRate,getUserOrganId());
@@ -111,11 +111,11 @@ public class RemainPlateServiceImpl implements RemainPlateService {
throw exception(REMAIN_PLATE_STATUS_USED);
}
// 判断是否为开料添加
RemainPlateDO updateObj = new RemainPlateDO();
if (validateRemainPlateIsCutting(updateReqVO.getId())) {
RemainPlateDO updateObj = validateRemainPlateIsCutting(updateReqVO.getId());
if (updateObj.getIsCutting()) {
updateObj.setRemark(updateReqVO.getRemark());
updateObj.setStore(updateReqVO.getStore());
} else {
// 更新
updateObj = BeanUtils.toBean(updateReqVO, RemainPlateDO.class);
}
remainPlateMapper.updateById(updateObj);
@@ -151,8 +151,8 @@ public class RemainPlateServiceImpl implements RemainPlateService {
}
}
private boolean validateRemainPlateIsCutting(Long id) {
return remainPlateMapper.selectById(id).getIsCutting();
private RemainPlateDO validateRemainPlateIsCutting(Long id) {
return remainPlateMapper.selectById(id);
}
private Integer validateRemainPlateStatus(Long id) {
@@ -134,12 +134,28 @@
<select id="selectByOrderNo"
resultType="com.cf.imes.module.manage.dal.dataobject.query.OrderPackageDO"
resultType="com.cf.imes.module.manage.controller.admin.query.vo.pack.OrderPackageVO"
parameterType="map">
select distinct
opn.*
opn.id,
opn.order_id,
opn.package_no,
opn.type,
opn.status,
opn.organ_id,
opn.creator,
opn.remark as packRemark,
opn.updater,
opn.update_time,
opn.create_time,
o.custom_order_no,
o.dealer,
o.customer,
o.address,
o.remark as orderRemark
from order_package opn
join orders o on opn.order_id = o.id and opn.organ_id = o.organ_id
join order_item oi on opn.id = oi.package_id and opn.organ_id = oi.organ_id
left join order_plate op on oi.plate_id = op.id and oi.organ_id = op.organ_id
@@ -60,6 +60,7 @@
select distinct
ops.order_id as orderId,
opsi.status as processStepItemStatus,
ops.processinfo_id as processId,
ops.status as processStepStatus,
ops.type as type
from order_process_step_item opsi
@@ -4,6 +4,7 @@
<resultMap id="orderItemMap" type="com.cf.imes.module.manage.controller.admin.query.vo.pack.PackageDetailsRespVO">
<result property="orderId" column="orderId"/>
<result property="roomName" column="roomName"/>
<result property="cabinetName" column="bodyName"/>
<result property="plateId" column="plateId"/>
@@ -30,6 +31,7 @@
resultMap="orderItemMap">
select distinct
op.order_id as orderId,
og.name as name,
ob.room_name as roomName,
ob.name as bodyName,
@@ -117,6 +119,7 @@
<result property="cabinetName" column="bodyName"/>
<result property="plateId" column="plateId"/>
<result property="plateNo" column="plateNo"/>
<result property="orderId" column="orderId"/>
<result property="plateName" column="plateName"/>
<result property="material" column="plateMaterial"/>
<result property="color" column="plateColor"/>
@@ -143,6 +146,7 @@
op.name as plateName,
ogs.material as plateMaterial,
ogs.color as plateColor,
op.order_id as orderId,
op.height as plateHeight,
op.width as plateWidth,
op.thickness as plateThickness,
@@ -207,13 +211,13 @@
<update id="deleteOtherParts"
<delete id="deleteOtherParts"
parameterType="java.lang.Long">
DELETE FROM order_item
WHERE parts_id = #{partsId}
</update>
</delete>
@@ -425,6 +429,7 @@
op.name as plateName,
ogs.material as plateMaterial,
ogs.color as plateColor,
op.order_id as orderId,
op.height as plateHeight,
op.width as plateWidth,
op.thickness as plateThickness,
@@ -4,6 +4,7 @@
<resultMap id="partsMap" type="com.cf.imes.module.manage.controller.admin.query.vo.pack.PackageDetailsRespVO">
<result property="orderId" column="orderId"/>
<result property="partsId" column="partsId"/>
<result property="name" column="name"/>
<result property="type" column="type"/>
@@ -24,6 +25,7 @@
select distinct
op.order_id as orderId,
op.id as partsId,
op.name as name,
op.model as model,
@@ -1,6 +1,7 @@
package com.cf.imes.module.system.api.process;
import com.cf.imes.module.system.api.process.dto.ProcessDTO;
import com.cf.imes.module.system.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -10,6 +11,7 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.math.BigDecimal;
import java.util.List;
@FeignClient(name = ApiConstants.NAME) // TODO 晨丰:fallbackFactory =
@Tag(name = "RPC 服务 - 工序")
@@ -21,9 +23,13 @@ public interface ProcessApi {
@GetMapping(PREFIX + "/getProcess")
@Operation(summary = "查看当前工序的信息")
// @Parameter(name = "processId", description = "工序ID", required = true, example = "1024")
BigDecimal getProcess(/*@RequestParam("processId") Long processId*/);
@Parameter(name = "processId", description = "工序ID", required = true, example = "1024")
BigDecimal getProcess(@RequestParam("processId") Long processId);
@GetMapping(PREFIX + "/getUserProcess")
@Operation(summary = "查看当前工序的信息")
@Parameter(name = "userId", description = "用户ID", required = true, example = "1")
List<ProcessDTO> getUserProcess(@RequestParam("userId") Long userId);
}
@@ -0,0 +1,28 @@
package com.cf.imes.module.system.api.process.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ProcessDTO {
@Schema(description = "工序ID")
private Long id;
@Schema(description = "工序名称")
private String name;
@Schema(description = "工序类型")
private Integer type;
}
@@ -208,6 +208,7 @@ public interface ErrorCodeConstants {
ErrorCode DEFAULT_TEMPLATE_NOT_DELETED = new ErrorCode(1_002_029_004, "不能删除默认模板");
ErrorCode NOT_TEMPLATE_AUTH = new ErrorCode(1_002_029_005, "该组织无此机台模板权限");
ErrorCode NOT_MACHINE_AUTH = new ErrorCode(1_002_029_005, "该组织无此机台权限");
ErrorCode THE_CURRENT_MACHINE_IS_ALREADY_IN_USE = new ErrorCode(1_002_029_005, "当前机台已使用,禁止删除");
// ========== 标签模板 1-002-300-000 ==========
ErrorCode LABEL_TEMPLATE_NOT_EXISTS = new ErrorCode(1_002_300_000, "标签模板不存在");
@@ -2,6 +2,9 @@ package com.cf.imes.module.system.api.process;
import com.cf.imes.framework.common.enums.ProcessProcessingTypeEnum;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.module.system.api.process.dto.ProcessDTO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessDO;
import com.cf.imes.module.system.dal.mysql.process.ProcessMapper;
import org.springframework.validation.annotation.Validated;
@@ -10,6 +13,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
@@ -27,9 +31,9 @@ public class ProcessApiImpl implements ProcessApi {
@Override
public BigDecimal getProcess() {
public BigDecimal getProcess(Long processId) {
ProcessDO processDO = processMapper.selectByType(ProcessProcessingTypeEnum.COMPONENTPROCESSING.getNumber(),getUserOrganId());
ProcessDO processDO = processMapper.selectByType(processId,getUserOrganId());
return processDO == null ? BigDecimal.ZERO : processDO.getPieceRate();
@@ -37,5 +41,16 @@ public class ProcessApiImpl implements ProcessApi {
@Override
public List<ProcessDTO> getUserProcess(Long userId) {
List<ProcessDO> processDOS = processMapper.selectProcessList(getUserOrganId(), userId)
.stream()
.filter(f-> Objects.equals(f.getType(),ProcessProcessingTypeEnum.CUTTINGMATERIALS.getNumber()))
.toList();
return BeanUtils.toBean(processDOS,ProcessDTO.class);
}
}
@@ -69,10 +69,10 @@ public interface ProcessMapper extends BaseMapperX<ProcessDO> {
default ProcessDO selectByType(Integer number,Long organId) {
default ProcessDO selectByType(Long processId,Long organId) {
return selectOne(new MPJLambdaWrapperX<ProcessDO>()
.eq(ProcessDO::getOrganId, organId)
.eqIfPresent(ProcessDO::getType,number));
.eqIfPresent(ProcessDO::getId,processId));
}
@@ -1,12 +1,13 @@
package com.cf.imes.module.system.framework.rpc.config;
import com.cf.imes.module.executor.api.orderProcess.OrderProcessApi;
import com.cf.imes.module.executor.api.plan.OrderPlanApi;
import com.cf.imes.module.infra.api.file.FileApi;
import com.cf.imes.module.infra.api.websocket.WebSocketSenderApi;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Configuration;
@Configuration(proxyBeanMethods = false)
@EnableFeignClients(clients = {FileApi.class, WebSocketSenderApi.class, OrderProcessApi.class})
@EnableFeignClients(clients = {FileApi.class, WebSocketSenderApi.class, OrderProcessApi.class, OrderPlanApi.class})
public class RpcConfiguration {
}
@@ -17,6 +17,7 @@ import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.organ.core.aop.OrganIgnore;
import com.cf.imes.framework.security.core.LoginUser;
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
import com.cf.imes.module.executor.api.plan.OrderPlanApi;
import com.cf.imes.module.system.controller.admin.machine.vo.*;
import com.cf.imes.module.system.convert.machine.MachineConvert;
import com.cf.imes.module.system.dal.dataobject.machine.DrillSettingDO;
@@ -77,6 +78,9 @@ public class MachineServiceImpl implements MachineService {
@Resource
private MachineTemplateLimitMapper machineTemplateLimitMapper;
@Resource
private OrderPlanApi orderPlanApi;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createCutting(CuttingSaveReqVO createReqVO) {
@@ -119,6 +123,10 @@ public class MachineServiceImpl implements MachineService {
if (machineDO == null) {
throw exception(MACHINE_NOT_EXISTS);
}
// 校验当前机台是否使用
if(orderPlanApi.getOrderPlan(id).getData()){
throw exception(THE_CURRENT_MACHINE_IS_ALREADY_IN_USE);
}
machineMapper.deleteById(id);
}
@@ -3,6 +3,7 @@ package com.cf.imes.module.system.service.process;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;;
import com.cf.imes.framework.common.enums.ProcessProcessingTypeEnum;
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.module.system.controller.admin.process.vo.process.*;
@@ -233,7 +234,11 @@ public class ProcessServiceImpl implements ProcessService {
// 获取组织id
Long organId = OrganContextHolder.getOrganId();
return processMapper.selectProcessList(organId,userId);
return processMapper.selectProcessList(organId,userId)
.stream()
.filter(f-> (!Objects.equals(f.getType(), ProcessProcessingTypeEnum.CUTTINGMATERIALS.getNumber())))
.toList();
}