MyCat-SQL语句冲突部分修改

This commit is contained in:
liuzhaotian
2024-06-21 18:24:05 +08:00
parent 1bca13a0f7
commit 484826b90a
17 changed files with 151 additions and 91 deletions
@@ -91,7 +91,7 @@ public class PackController {
@GetMapping("/queryPackageDetails")
@Operation(summary = "包裹对应的板材信息")
@Operation(summary = "包裹的详细信息")
@PreAuthorize("@ss.hasPermission('manage:query:query')")
public CommonResult<PageResult<PackageDetailsRespVO>> queryPackageDetails(@Valid PackDetailsReqVO reqVO){
@@ -11,8 +11,6 @@ import lombok.ToString;
public class DeleteOtherPartsReqVO {
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED)
private Long orderId;
@Schema(description = "包裹Id", requiredMode = Schema.RequiredMode.REQUIRED)
private Long packageId;
@@ -21,6 +19,10 @@ public class DeleteOtherPartsReqVO {
private Long partsId;
@Schema(description = "是否是其他类型的配件", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isOtherParts;
}
@@ -61,4 +61,15 @@ public interface OrderPackageMapper extends BaseMapperX<OrderPackageDO> {
.eq(OrderPackageDO::getOrganId,organId)
.eqIfPresent(OrderPackageDO::getOrderId, orderId));
}
default List<OrderPackageDO> selectPackList(Long packageId,Long organId) {
return selectList(new LambdaQueryWrapperX<OrderPackageDO>()
.eq(OrderPackageDO::getOrganId,organId)
.eqIfPresent(OrderPackageDO::getId, packageId));
}
void updatePackStatus(Long packageId);
}
@@ -18,7 +18,9 @@ import com.cf.imes.module.manage.dal.dataobject.query.OrderPackageDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.stream.Collectors;
@Mapper
public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
@@ -41,14 +43,13 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
void deleteOrderPack(@Param("reqVO") PackReqVO reqVO);
void deleteOrderPack(@Param("packId") Long packId);
void deleteOtherParts(@Param("partsId") Long partsId);
void deleteParts(@Param("reqVO") PackReqVO reqVO);
void insertPackId(@Param("plateIdList") List<Long> plateIdList, @Param("packId") Long packId);
@@ -84,4 +85,10 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
.eq(OrderItemDO::getOrganId, organId)
.eqIfPresent(OrderItemDO::getPackageId, packId));
}
void deleteParts(@Param("packageId") Long packageId, @Param("partsIds") List<Long> partsIds);
void updateParts(@Param("partsId") Long partsId,@Param("packageId") Long packageId);
}
@@ -29,7 +29,7 @@ public interface OrderPartsMapper extends BaseMapperX<OrderPartsNDO> {
List<OrderPartsRespVO> selectOrderParts(@Param("orderNo")Long orderNo,@Param("packageNo") Long packageNo);
void deleteOrderParts(@Param("packageId") Long packageId);
void deleteOrderParts(@Param("partsIds") List<Long> partsIds);
default OrderPartsNDO selectOneParts(String otherPartsName,Long organId) {
@@ -215,11 +215,13 @@ public class PackServiceImpl implements PackService {
// 生产明细表新增的配件ID
orderItemMapper.insertParts(reqVO.getAddPartsList(),reqVO.getPackId(),reqVO.getOrderNo());
if(!reqVO.getAddPartsList().isEmpty()) {
orderItemMapper.insertParts(reqVO.getAddPartsList(), reqVO.getPackId(), reqVO.getOrderNo());
}
// 生产明细表删除的配件ID
orderItemMapper.deletePartsList(reqVO.getDeletePartsList(),reqVO.getPackId(),reqVO.getOrderNo());
if(!reqVO.getDeletePartsList().isEmpty()) {
orderItemMapper.deletePartsList(reqVO.getDeletePartsList(), reqVO.getPackId(), reqVO.getOrderNo());
}
orderPackageDO.setStatus(OrderPackageStatusEnum.PACKAGED.getStatus());
orderPackageMapper.updateById(orderPackageDO);
@@ -329,8 +331,9 @@ public class PackServiceImpl implements PackService {
orderPackageDO.setRemark(packageVO.getRemark());
orderPackageMapper.insert(orderPackageDO);
// 生产单明细表新增包裹 ID
orderItemMapper.insertPackId(packageVO.getAddPlateIdList(), orderPackageDO.getId());
if(packageVO.getAddPlateIdList()!=null) {
orderItemMapper.insertPackId(packageVO.getAddPlateIdList(), orderPackageDO.getId());
}
return typeConversion(orderPackageDO);
}
@@ -363,11 +366,14 @@ public class PackServiceImpl implements PackService {
// 生产明细表新增包裹ID
orderItemMapper.insertPackId(packageVO.getAddPlateIdList(), packageVO.getPackId());
if(!packageVO.getAddPlateIdList().isEmpty()) {
orderItemMapper.insertPackId(packageVO.getAddPlateIdList(), packageVO.getPackId());
}
// 移除生产明细表中板件对应的包裹ID
orderItemMapper.deletePackId(packageVO.getDeletePlateIdList(), packageVO.getPackId());
if(!packageVO.getDeletePlateIdList().isEmpty()) {
orderItemMapper.deletePackId(packageVO.getDeletePlateIdList(), packageVO.getPackId());
}
orderPackageDO.setStatus(OrderPackageStatusEnum.PACKAGED.getStatus());
orderPackageMapper.updateById(orderPackageDO);
@@ -414,13 +420,23 @@ public class PackServiceImpl implements PackService {
// 判断包裹的类型是否为其他类型,如果是,则删除其包裹信息
if (reqVO.getIsOther() == true) {
orderPartsMapper.deleteOrderParts(reqVO.getPackageId());
List<Long> partsIds = orderItemMapper.selectPackList(reqVO.getPackageId(), getUserOrganId())
.stream().map(m -> m.getPartsId())
.distinct()
.collect(Collectors.toList());
orderPartsMapper.deleteOrderParts(partsIds);
orderPackageMapper.updateParts(reqVO.getPackageId(), reqVO.getPackageNo());
orderItemMapper.deleteParts(reqVO);
orderItemMapper.deleteParts(reqVO.getPackageId(),partsIds);
return;
}
orderItemMapper.deleteOrderPack(reqVO);
orderPackageMapper.updateParts(reqVO.getPackageId(),reqVO.getPackageNo());
orderItemMapper.deleteOrderPack(reqVO.getPackageId());
}
@@ -438,6 +454,8 @@ public class PackServiceImpl implements PackService {
// 配件表新增数据
OrderPartsNDO orderParts = BeanUtils.toBean(reqVO, OrderPartsNDO.class);
// 因为是外部配件,所以配件类型的名称固定为 “ 外部配件”
orderParts.setType("外部配件");
orderPartsMapper.insert(orderParts);
@@ -485,6 +503,8 @@ public class PackServiceImpl implements PackService {
// 配件表新增数据
OrderPartsNDO orderParts = BeanUtils.toBean(reqVO, OrderPartsNDO.class);
// 因为是外部配件,所以配件类型的名称固定为 “ 外部配件”
orderParts.setType("外部配件");
orderPartsMapper.insert(orderParts);
// 在生产单明细表中添加数据(生产单号,配件ID,包裹ID,部件数量(目前一直为1))
@@ -512,10 +532,14 @@ public class PackServiceImpl implements PackService {
@Transactional(rollbackFor = Exception.class)
public void deleteOtherParts(DeleteOtherPartsReqVO reqVO) {
// 更新配件表中配件为逻辑删除
orderPartsMapper.updateParts(reqVO.getPartsId());
orderItemMapper.deleteOtherParts(reqVO.getPartsId());
if(reqVO.getIsOtherParts()) {
// 更新配件表中配件为逻辑删除
orderPartsMapper.updateParts(reqVO.getPartsId());
orderItemMapper.deleteOtherParts(reqVO.getPartsId());
}
orderItemMapper.updateParts(reqVO.getPartsId(),reqVO.getPackageId());
}
@@ -14,7 +14,7 @@
resultMap="PackMap">
select
select DISTINCT
count(DISTINCT oi.package_id ) as numberOfPackages,
count(DISTINCT oi.plate_id) as packagedBoard
@@ -55,7 +55,7 @@
parameterType="java.lang.Long"
resultMap="PlateDetailsMap">
select
select DISTINCT
ob.room_name as roomName,
ob.name as bodyName,
op.id as palteId,
@@ -84,7 +84,7 @@
oi.organ_id = #{organId}
and
op.id not in (
select oi2.plate_id
select DISTINCT oi2.plate_id
from order_item oi2
where oi2.order_id = #{orderNo} and oi2.package_id &lt;&gt; '');
@@ -31,7 +31,7 @@
parameterType="com.cf.imes.module.manage.controller.admin.patching.vo.PatchingPlatePageReqVO">
select
select DISTINCT
o.id as orderId,
ob.name as cabinetName,
op.id as plateNo,
@@ -93,7 +93,7 @@
<select id="selectPlate"
resultMap="PlateDetailMap">
select
select DISTINCT
op.*,
oi.room_id as roomId,
oi.body_id as bodyId,
@@ -138,7 +138,8 @@
parameterType="java.lang.Long">
select op.*,
select DISTINCT
op.*,
oi.room_id as roomId,
oi.body_id as bodyId,
ob.room_name as roomName,
@@ -25,7 +25,7 @@
parameterType="com.cf.imes.module.manage.controller.admin.patching.vo.PatchingPlatePageReqVO">
select
DISTINCT
p.goods_id,
o.id as orderId,
o.custom_order_no as customOrderId,
@@ -83,7 +83,7 @@
resultMap="PlateMap"
parameterType="com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.PlatePageVO">
select
select DISTINCT
op.id as palteId,
op.name as plateName,
p.material as plateMaterial,
@@ -171,7 +171,7 @@
parameterType="java.lang.Long"
resultMap="PlateDetailsMap">
select
select DISTINCT
op.plate_no as plateId,
op.height as plateHeight,
op.width as plateWidth,
@@ -192,12 +192,13 @@
<update id="deleteOrderPack">
<update id="deleteOrderPack" parameterType="java.lang.Long">
UPDATE order_item oi
JOIN order_package opn ON oi.package_id = opn.id
SET oi.package_id = 0, opn.deleted = true
WHERE opn.id = #{reqVO.packageId} AND opn.package_no = #{reqVO.packageNo};
UPDATE order_item
SET package_id = 0
WHERE package_id = #{packId} ;
</update>
@@ -208,25 +209,22 @@
parameterType="java.lang.Long">
DELETE FROM order_item
WHERE id IN (
SELECT id FROM (
SELECT oi.id
FROM order_item oi
WHERE oi.parts_id = #{partsId}
) AS subquery
);
WHERE parts_id = #{partsId}
</update>
<delete id="deleteParts">
<delete id="deleteParts" parameterType="java.lang.Long">
delete from order_item
where package_id = #{reqVO.packageId}
and order_id in
(select order_id from order_package where id = #{reqVO.packageId} and package_no = #{reqVO.packageNo} );
where package_id = #{packageId}
and parts_id in
<foreach item="partsIds" collection="partsIds" open="(" separator="," close=")">
#{partsIds}
</foreach>
</delete>
@@ -309,13 +307,20 @@
<update id="updateParts">
update order_item set package_id = 0 where parts_id =#{partsId} and package_id = #{packageId};
</update>
<select id="selectBodyName" resultType="java.lang.String" parameterType="java.lang.Long">
select ob.room_name
from order_item oi
join order_body ob on oi.body_id = ob.id
where oi.plate_id = #{plateId};
-- select ob.room_name
-- from order_item oi
-- join order_body ob on oi.body_id = ob.id
-- where oi.plate_id = #{plateId};
</select>
@@ -331,17 +336,17 @@
<select id="selectOrderPlateDetails"
parameterType="java.lang.Long">
select
count(case
when oi.package_id !=0 and oi.parts_id = 0 then oi.plate_id end )as plateProcessedNum,
count(
case
when oi.plate_id !=0 then oi.plate_id end
)as plateNum
from order_item oi
where oi.order_id = #{orderId};
-- select
--
-- count(case
-- when oi.package_id !=0 and oi.parts_id = 0 then oi.plate_id end )as plateProcessedNum,
--
-- count(
-- case
-- when oi.plate_id !=0 then oi.plate_id end
-- )as plateNum
-- from order_item oi
-- where oi.order_id = #{orderId};
</select>
@@ -60,11 +60,15 @@
parameterType="java.lang.Long"
resultMap="PartsListMap">
select
id as partsId,name,model,spec,count(name) as num,unit,brand,factory,remark
from order_parts where order_id = #{orderId} and organ_id = #{organId}
group by partsId,name,model,spec,unit,brand,factory,remark;
select distinct
op.id as partsId,op.name,op.model,op.spec,count(op.name) as num,op.unit,op.brand,op.factory,op.remark
from order_parts op
join order_item oi on op.id = oi.parts_id and op.organ_id = oi.organ_id
where op.order_id = #{orderId} and oi.package_id = 0
group by partsId,op.name,op.model,op.spec,op.unit,op.brand,op.factory,op.remark;
</select>
@@ -77,7 +81,7 @@
resultMap="PartsListMap">
select
select distinct
op.id as partsId,
op.name as name,
op.model as model ,
@@ -103,8 +107,12 @@
<update id="deleteOrderParts"
parameterType="java.lang.Long">
update order_parts op set op.deleted = true where op.id in (
select oi.parts_id from order_item oi where package_id =#{packageId});
update order_parts op set op.deleted = true where op.id in
<foreach item="id" collection="partsIds" open="(" separator="," close=")">
#{id}
</foreach>
</update>