待办关注修改

This commit is contained in:
z 2025-07-09 16:18:09 +08:00
parent 5658bfde75
commit 12fb38dd3f
32 changed files with 368 additions and 158 deletions

View File

@ -143,4 +143,12 @@ public class ProcessDesignController {
public void send(@Valid @RequestBody ProcessDesignSaveReqVO createReqVO) {
processDesignService.send(createReqVO);
}
@PostMapping("/reWork")
@Operation(summary = "返工")
@PreAuthorize("@ss.hasPermission('heli:process-design:create')")
public CommonResult<Boolean> reWork(@Valid @RequestBody ProcessDesignSaveReqVO createReqVO) {
processDesignService.reWork(createReqVO);
return success(true);
}
}

View File

@ -138,5 +138,9 @@ public class ProcessDesignRespVO {
@Schema(description = "图纸链接")
private String blueprintLink;
@Schema(description = "返工原因")
private String reReason;
@Schema(description = "返工日期")
private LocalDateTime reTime;
}

View File

@ -2,6 +2,8 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
@ -44,4 +46,9 @@ public class ProcessDesignSaveReqVO {
@Schema(description = "工艺设计进度列表")
private List<ProcessDesignProgressDO> processDesignProgressList;
@Schema(description = "返工原因", example = "28809")
private String reReason;
@Schema(description = "返工日期")
private LocalDateTime reTime;
}

View File

@ -142,5 +142,7 @@ public class bdgzsomthingDO extends BaseDO {
* 备注3
*/
private Long tenantId;
@TableField(exist = false)
private String userName;
}

View File

@ -228,4 +228,6 @@ public class MaterialPlanBoomDO extends BaseDO {
private String rgName;
@TableField(exist = false)
private String pnName;
@TableField(exist = false)
private BigDecimal foamPrice;
}

View File

@ -154,4 +154,7 @@ public class ProcessDesignDO extends BaseDO {
@TableField(exist = false)
private String brief;
private String reReason;
private LocalDateTime reTime;
}

View File

@ -169,4 +169,9 @@ public class PurchaseOrderMakeDetailDO extends BaseDO {
private String projectName;
@TableField(exist = false)
private String matName;
/**
* 零件理论重量
*/
private BigDecimal foamPrice;
}

View File

@ -152,6 +152,11 @@ public class TaskDispatchDetailDO extends BaseDO {
* 预计工时
*/
@TableField(exist = false)
private BigDecimal estimatedPrice;
/**
* 预计工时
*/
@TableField(exist = false)
private BigDecimal bgWorkTime;
/**
* 派工数量

View File

@ -221,7 +221,7 @@ public interface MaterialPlanBoomMapper extends BaseMapperX<MaterialPlanBoomDO>
.select("m.the_weight as theWeight")
.select("COALESCE(m.purchase_amount, t.boom_amount) AS purchaseAmounts,m.supplier_id as supplierIds,m.estimated_price as estimatedPrices")
.select("m.arrive_time as arriveTimes,m.description as descriptions")
.select("m.is_foam as isFoams")
.select("m.is_foam as isFoams","m.foam_price as foamPrice")
.leftJoin(PurchaseOrderMakeDetailDO.class,"m",PurchaseOrderMakeDetailDO::getId,MaterialPlanBoomDO::getProjectPurchaseOrderMakeDetailId)
.select(MaterialPlanDO::getBrief, MaterialPlanDO::getCustomerId, MaterialPlanDO::getProjectId, MaterialPlanDO::getProjectNameSim)
.leftJoin(MaterialPlanDO.class, "p", MaterialPlanDO::getId,MaterialPlanBoomDO::getProjectMaterialPlanId)

View File

@ -107,8 +107,7 @@ public interface PurchaseOrderMakeMapper extends BaseMapperX<PurchaseOrderMakeDO
)
.select("u.nickname as submitUserName")// 查询主表所有字段
.leftJoin(AdminUserDO.class,"u", AdminUserDO::getId, PurchaseOrderMakeDO::getSubmitUserId);
wrapper.eq(PurchaseOrderMakeDO::getStatus, pageReqVO.getStatus())
.eq(PurchaseOrderMakeDO::getSubmitUserId,pageReqVO.getSubmitUserId() );
wrapper.eq(PurchaseOrderMakeDO::getStatus, pageReqVO.getStatus());
return selectPage(pageReqVO, wrapper);
}
}

View File

@ -14,11 +14,13 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.equipmanufacture.EquipManufactureDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.procedure.ProcedureDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatchdetailowner.TaskDispatchDetailOwnerDO;
@ -227,7 +229,7 @@ public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetail
.select("a.code as dispatchCode")
.select("b.code as projectCode", "b.project_name as projectName", "c.name as projectSubName")
.select("d.material_name as materialName")
.select("e.name as procedureName")
.select("e.name as procedureName","make.estimated_price as estimatedPrice")
.selectSum(TaskReportDO::getAmount, "totalReportAmount")
.selectSum(TaskReportDO::getWorkTime, "totalWorkTime")
.leftJoin(TaskDispatchDO.class, "a", TaskDispatchDO::getId, TaskDispatchDetailDO::getDispatchId)
@ -236,6 +238,8 @@ public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetail
.leftJoin(ProcessBomDetailDO.class, "d", ProcessBomDetailDO::getId, TaskDispatchDO::getBomDetailId)
.leftJoin(ProcedureDO.class, "e", ProcedureDO::getId, TaskDispatchDetailDO::getProcedureId)
.leftJoin(TaskReportDO.class, "f", TaskReportDO::getDispatchDetailId, TaskDispatchDetailDO::getId)
.leftJoin(MaterialPlanBoomDO.class,"bom",MaterialPlanBoomDO::getId, TaskDispatchDetailDO::getProjectMaterialPlanDetailId)
.leftJoin(PurchaseOrderMakeDetailDO.class,"make",PurchaseOrderMakeDetailDO::getId, MaterialPlanBoomDO::getProjectPurchaseOrderMakeDetailId)
.groupBy(TaskDispatchDetailDO::getId)
.orderByDesc(TaskDispatchDetailDO::getId)
.disableSubLogicDel();

View File

@ -804,51 +804,51 @@ public class bdgzsomthingServiceImpl implements bdgzsomthingService {
for (AttentiontodoDO attentiontodoRespVO : attentiontodookddfh9) {
List<MaterialPlanDetailDO> selectafterten = materialPlanDetailMapper.selectafterten(attentiontodoRespVO.getTxrid(),attentiontodoRespVO.getEvday());
// List<MaterialPlanDetailDO> selectafterten = materialPlanDetailMapper.selectafterten(attentiontodoRespVO.getTxrid(),attentiontodoRespVO.getEvday());
List<MaterialPlanBoomDO> selectafterten1 = materialPlanBoomMapper.selectafterten(attentiontodoRespVO.getTxrid(), attentiontodoRespVO.getEvday());
{
for (MaterialPlanDetailDO materialPlanDetailDO : selectafterten) {
bdgzsomthingDO BdgzsomthingDO = new bdgzsomthingDO();
BdgzsomthingDO.setThingname(attentiontodoRespVO.getEvent());//事件名称
BdgzsomthingDO.setAttr4("0");//是否点击
BdgzsomthingDO.setThings("计划单号:"+materialPlanDetailDO.getProjectMaterialPlanNo()+" 物料:"+materialPlanDetailDO.getName()+",临近到货日期");//事件名称
BdgzsomthingDO.setAttr2(null);//因为不用跳转所以为null
BdgzsomthingDO.setClicktime(attentiontodoRespVO.getRemindtime());//提醒周期
BdgzsomthingDO.setTenantId(attentiontodoRespVO.getTxrid());
// BdgzsomthingDO.setShowname(LocalDateTime.now());//比较创建时间,不用单独填写
if(attentiontodoRespVO.getAttr5().equals("1")){//提醒状态
BdgzsomthingDO.setDborgz("待办");
}
else if(attentiontodoRespVO.getAttr5().equals("2")){
BdgzsomthingDO.setDborgz("关注");
}
if (ObjectUtil.isEmpty(attentiontodoRespVO.getAttr4())){
MaterialPlanDO planDO = materialPlanMapper.selectOne(new LambdaQueryWrapper<MaterialPlanDO>().eq(MaterialPlanDO::getProjectMaterialPlanNo, materialPlanDetailDO.getProjectMaterialPlanNo()));
if (ObjectUtil.isNotEmpty(planDO)){
AdminUserDO user = adminUserService.getUser(Long.valueOf(planDO.getCreator()));
if (ObjectUtil.isNotEmpty(user)){
BdgzsomthingDO.setClick(user.getNickname());
}
}
}else {
BdgzsomthingDO.setClick(attentiontodoRespVO.getAttr4());
}
if(attentiontodoRespVO.getLevel().equals("1")){
BdgzsomthingDO.setLevel("紧急");
}
else if(attentiontodoRespVO.getLevel().equals("2")){
BdgzsomthingDO.setLevel("一般");
}
else if(attentiontodoRespVO.getLevel().equals("3")){
BdgzsomthingDO.setLevel("非紧急");
}
BdgzsomthingDO.setYesorno("0");//是否点击
BdgzsomthingDO.setAttr3(materialPlanDetailDO.getProjectMaterialPlanNo());//获取数据当前表的id
BdgzsomthingDO.setShowname(null);//获取数据当前表的创建事件
//去重查询,重复则不加
// for (MaterialPlanDetailDO materialPlanDetailDO : selectafterten) {
// bdgzsomthingDO BdgzsomthingDO = new bdgzsomthingDO();
// BdgzsomthingDO.setThingname(attentiontodoRespVO.getEvent());//事件名称
// BdgzsomthingDO.setAttr4("0");//是否点击
// BdgzsomthingDO.setThings("计划单号:"+materialPlanDetailDO.getProjectMaterialPlanNo()+" 物料:"+materialPlanDetailDO.getName()+",临近到货日期");//事件名称
// BdgzsomthingDO.setAttr2(null);//因为不用跳转所以为null
// BdgzsomthingDO.setClicktime(attentiontodoRespVO.getRemindtime());//提醒周期
// BdgzsomthingDO.setTenantId(attentiontodoRespVO.getTxrid());
//// BdgzsomthingDO.setShowname(LocalDateTime.now());//比较创建时间,不用单独填写
// if(attentiontodoRespVO.getAttr5().equals("1")){//提醒状态
// BdgzsomthingDO.setDborgz("待办");
// }
// else if(attentiontodoRespVO.getAttr5().equals("2")){
// BdgzsomthingDO.setDborgz("关注");
// }
// if (ObjectUtil.isEmpty(attentiontodoRespVO.getAttr4())){
// MaterialPlanDO planDO = materialPlanMapper.selectOne(new LambdaQueryWrapper<MaterialPlanDO>().eq(MaterialPlanDO::getProjectMaterialPlanNo, materialPlanDetailDO.getProjectMaterialPlanNo()));
// if (ObjectUtil.isNotEmpty(planDO)){
// AdminUserDO user = adminUserService.getUser(Long.valueOf(planDO.getCreator()));
// if (ObjectUtil.isNotEmpty(user)){
// BdgzsomthingDO.setClick(user.getNickname());
// }
// }
//
// }else {
// BdgzsomthingDO.setClick(attentiontodoRespVO.getAttr4());
// }
// if(attentiontodoRespVO.getLevel().equals("1")){
// BdgzsomthingDO.setLevel("紧急");
// }
// else if(attentiontodoRespVO.getLevel().equals("2")){
// BdgzsomthingDO.setLevel("一般");
// }
// else if(attentiontodoRespVO.getLevel().equals("3")){
// BdgzsomthingDO.setLevel("非紧急");
// }
// BdgzsomthingDO.setYesorno("0");//是否点击
//
// BdgzsomthingDO.setAttr3(materialPlanDetailDO.getProjectMaterialPlanNo());//获取数据当前表的id
// BdgzsomthingDO.setShowname(null);//获取数据当前表的创建事件
// //去重查询,重复则不加
// List<bdgzsomthingDO> selecteqint = bdgzsomthingMapper.selecteqintone(BdgzsomthingDO);
//
//
@ -856,9 +856,9 @@ public class bdgzsomthingServiceImpl implements bdgzsomthingService {
// }else{
//插入方法
bdgzsomthingMapper.insert(BdgzsomthingDO);
// bdgzsomthingMapper.insert(BdgzsomthingDO);
// }
}
// }
for (MaterialPlanBoomDO materialPlanBoomDO : selectafterten1) {
bdgzsomthingDO BdgzsomthingDO = new bdgzsomthingDO();
@ -936,7 +936,16 @@ public class bdgzsomthingServiceImpl implements bdgzsomthingService {
Long userId = WebFrameworkUtils.getLoginUserId();
AdminUserDO user = adminUserService.getUser(userId);
pageReqVO.setClick(user.getNickname());
return bdgzsomthingMapper.getMessage(pageReqVO);
PageResult<bdgzsomthingDO> message = bdgzsomthingMapper.getMessage(pageReqVO);
List<bdgzsomthingDO> list = message.getList();
for (bdgzsomthingDO bdgzsomthingDO : list) {
AdminUserDO user1 = adminUserService.getUser(Long.valueOf(bdgzsomthingDO.getCreator()));
if (ObjectUtil.isNotEmpty(user1)){
bdgzsomthingDO.setUserName(user1.getNickname());
}
bdgzsomthingDO.setClicktime(null);
}
return message;
}
@Override
@ -1028,7 +1037,7 @@ public class bdgzsomthingServiceImpl implements bdgzsomthingService {
BdgzsomthingDO.setYesorno("0");//是否点击
BdgzsomthingDO.setAttr4("0");//是否点击
BdgzsomthingDO.setAttr3(storageLogNowDO.getId().toString());//获取数据当前表的id
BdgzsomthingDO.setShowname(storageLogNowDO.getCreateTime());//获取数据当前表的创建事件
BdgzsomthingDO.setShowname(LocalDateTime.now());//获取数据当前表的创建事件
//查之前没有达到安全库存的数据
List<bdgzsomthingDO> selecteqint = bdgzsomthingMapper.selecteqintDeletedButNoOver(BdgzsomthingDO);
if(CollUtil.isEmpty(selecteqint)){
@ -1038,7 +1047,6 @@ public class bdgzsomthingServiceImpl implements bdgzsomthingService {
//插入方法
bdgzsomthingMapper.insert(BdgzsomthingDO);
}
}else{
if (hasRemindTimeSafeStorage){
LocalDate today = LocalDate.now();

View File

@ -350,7 +350,6 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
@Override
public Long countReview() {
LambdaQueryWrapper<PurchaseOrderMakeDO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PurchaseOrderMakeDO::getSubmitUserId,getLoginUser().getId());
queryWrapper.eq(PurchaseOrderMakeDO::getStatus,1);
queryWrapper.eq(PurchaseOrderMakeDO::getDeleted,0);
return purchaseOrderMakeMapper.selectCount(queryWrapper);
@ -375,6 +374,7 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
purchaseOrderMakeDetailDO.setProjectPlanSubId(updateReqVO.getProjectPlanSubId());
purchaseOrderMakeDetailDO.setName(updateReqVO.getProjectSubName());
purchaseOrderMakeDetailDO.setNameSim(updateReqVO.getProjectSubNameSim());
purchaseOrderMakeDetailDO.setFoamPrice(updateReqVO.getFoamPrice());
purchaseOrderMakeDetailDO.setOrderStatus(1);
PlanSubDO planSubDO = planSubMapper.selectOne("project_sub_id", updateReqVO.getProjectPlanSubId());
purchaseOrderMakeDetailDO.setProjectSubCode(Objects.nonNull(planSubDO)?planSubDO.getProjectSubCode(): null);

View File

@ -83,4 +83,6 @@ public interface ProcessDesignService {
WarningMessageVO getWarnings();
void send(ProcessDesignSaveReqVO createReqVO);
void reWork(ProcessDesignSaveReqVO createReqVO);
}

View File

@ -433,6 +433,39 @@ public class ProcessDesignServiceImpl implements ProcessDesignService {
}
}
@Override
public void reWork(ProcessDesignSaveReqVO createReqVO) {
ProcessDesignDO processDesignDO = processDesignMapper.selectById(createReqVO.getId());
processDesignDO.setReReason(createReqVO.getReReason());
processDesignDO.setIsOverProcess(0);
processDesignDO.setReTime(LocalDateTime.now());
processDesignMapper.updateById(processDesignDO);
List<AttentiontodoDO> attentiontodookddfh = attentiontodoMapper.selectByIdlist(16);//查找该类型的待办和关注人
String thingname = "";
if ("BLUEPRINT_FOUNDRY_TECHNOLOGY".equals(processDesignDO.getProcessDesignType())){
thingname="铸造设计任务提醒";
}else if ("BLUEPRINT_3D".equals(processDesignDO.getProcessDesignType())){
thingname="3D设计任务提醒";
}else if ("BLUEPRINT_2D".equals(processDesignDO.getProcessDesignType())){
thingname="2D设计任务提醒";
}else if ("BLUEPRINT_WORKBLANK".equals(processDesignDO.getProcessDesignType())){
thingname="毛坯设计任务提醒";
}
for (AttentiontodoDO attentiontodoDO : attentiontodookddfh) {
bdgzsomthingDO BdgzsomthingDO = new bdgzsomthingDO();
BdgzsomthingDO.setClick(attentiontodoDO.getAttr4());
BdgzsomthingDO.setThingname(thingname);
// BdgzsomthingDO.setThings(things);
BdgzsomthingDO.setAttr4("1");
BdgzsomthingDO.setAttr6(processDesignDO.getBrief());
BdgzsomthingDO.setAttr7(processDesignDO.getProjectName());
BdgzsomthingDO.setAttr8(processDesignDO.getProjectSubName());
BdgzsomthingDO.setAttr9(createReqVO.getReReason());
BdgzsomthingDO.setAttr13("1");
bdgzsomthingMapper.insert(BdgzsomthingDO);
}
}
private void createProcessDesignProgressList(Long processDesignId, List<ProcessDesignProgressDO> list) {
list.forEach(o -> o.setProcessDesignId(processDesignId));
// 按创建时间排序

View File

@ -75,7 +75,6 @@ public class PurchaseOrderMakeServiceImpl implements PurchaseOrderMakeService {
@Override
public PageResult<PurchaseOrderMakeDO> review(PurchaseOrderMakePageReqVO pageReqVO) {
pageReqVO.setSubmitUserId(getLoginUser().getId());
return purchaseOrderMakeMapper.review(pageReqVO);
}

View File

@ -153,7 +153,7 @@ public class PurchaseOrderNoServiceImpl implements PurchaseOrderNoService {
}
}
if(updateReqVO.getStatus()== 3){
// pOrderReceivedCompleted(updateReqVO.getPurchaseNo(),updateReqVO.getId());
pOrderReceivedCompleted(updateReqVO.getPurchaseNo(),updateReqVO.getId());
}
purchaseOrderNoMapper.updateById(updateObj);
}
@ -176,14 +176,12 @@ public class PurchaseOrderNoServiceImpl implements PurchaseOrderNoService {
List<AttentiontodoDO> attentiontodook1 = attentiontodoService.getAttentiontodolistdaiban(10);
if (attentiontodook1.size()<1){
{
AttentiontodoDO attentiontodoDO = new AttentiontodoDO();
attentiontodoDO.setEvent("《采购订单》到货时通知检验");
attentiontodoDO.setAttr5("1");
attentiontodoDO.setAttr4(nickname);
attentiontodoDO.setLevel("1");
attentiontodook.add(attentiontodoDO);
}
}

View File

@ -159,6 +159,7 @@ private StorageLogService storageLogService;
storageDO.setDescription("由委外验收单"+outsourceStockDO.getOutsourceNo()+"提交后自动生成");//备注
storageDO.setKeeperTime(LocalDateTime.now());//单据日期
storageDO.setKeeper(userId);//提交人
storageDO.setDeleted(true);
storageMapper.insert(storageDO);
//根据委外单号查出提交明细
@ -171,6 +172,7 @@ private StorageLogService storageLogService;
storageMatDO.setMatId(o.getMaterialId());
storageMatDO.setProjectNo(String.valueOf(o.getProjectSubId()));
storageMatDO.setStorageOkQty(o.getQualifiedCount());
storageMatDO.setDeleted(true);
storageMatMapper.insert(storageMatDO);
@ -222,6 +224,7 @@ private StorageLogService storageLogService;
storageDO.setDescription("由委外验收单"+outsourceStockDO.getOutsourceNo()+"提交后自动生成");//备注
storageDO.setKeeperTime(LocalDateTime.now());//单据日期
storageDO.setKeeper(userId);//提交人
storageDO.setDeleted(true);
storageMapper.insert(storageDO);
//根据委外单号查出提交明细
@ -253,6 +256,7 @@ private StorageLogService storageLogService;
storageMatDO.setProjectNo(String.valueOf(o.getProjectSubId()));
storageMatDO.setStorageOkQty(o.getQualifiedCount());
storageDO.setDeleted(true);
storageMatMapper.insert(storageMatDO);
@ -296,6 +300,7 @@ private StorageLogService storageLogService;
storageDO.setDescription("由委外验收单"+outsourceStockDO.getOutsourceNo()+"提交后自动生成");//备注
storageDO.setOutboundTime(LocalDateTime.now());//单据日期
storageDO.setOutbound(userId);//提交人
storageDO.setDeleted(true);
storageMapper.insert(storageDO);
@ -317,6 +322,7 @@ private StorageLogService storageLogService;
System.out.println(materialDO.getId());
storageMatDO.setProjectNo(String.valueOf(o.getProjectSubId()));
storageMatDO.setStorageOkQty(o.getQualifiedCount());
storageMatDO.setDeleted(true);
storageMatMapper.insert(storageMatDO);

View File

@ -11,23 +11,50 @@
<select id="selectafterten"
parameterType="map"
resultType="com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO">
select w.*from project_purchase_order q,
(SELECT
b.project_material_plan_no,a.project_material_plan_id,c.material_name as name,a.boom_detail_id
FROM
project_material_plan_boom a
JOIN
project_material_plan b ON a.project_material_plan_id = b.id
JOIN pro_process_bom_detail c ON c.id=a.boom_detail_id
WHERE
b.status = '3'
AND CURDATE() >= DATE_SUB(a.boom_arrive_date, INTERVAL #{evday} DAY)
and b.tenant_id =#{id}
) w
where q.project_material_plan_id =w.project_material_plan_id
and q.receiving_status !='3'
group by project_material_plan_no
-- select w.*from project_purchase_order_no q,
-- (SELECT
-- b.project_material_plan_no,a.project_material_plan_id,c.material_name as name,a.boom_detail_id
-- FROM
-- project_material_plan_boom a
-- JOIN
-- project_material_plan b ON a.project_material_plan_id = b.id
-- JOIN pro_process_bom_detail c ON c.id=a.boom_detail_id
-- WHERE
-- CURDATE() >= DATE_SUB(a.boom_arrive_date, INTERVAL #{evday} DAY)
-- and b.tenant_id =#{id}
-- ) w
-- where q.project_material_plan_id =w.project_material_plan_id
-- and q.receiving_status !='3'
-- group by project_material_plan_no
SELECT
w.*
FROM (
SELECT
t.*,
CASE
WHEN COUNT(d.id) = 0 THEN 1
WHEN SUM(CASE d.receiving_status WHEN 3 THEN 0 ELSE 1 END) = 0 THEN 3
WHEN SUM(CASE d.receiving_status WHEN 1 THEN 1 ELSE 0 END) = COUNT(d.id) THEN 1
ELSE 2
END AS receivingStatus1
FROM project_purchase_order_no t
LEFT JOIN project_purchase_order_no_detail d ON d.purchase_order_id = t.id
GROUP BY t.id -- 按主表ID分组
) q -- 添加子查询别名
RIGHT JOIN (
SELECT
b.project_material_plan_no,
a.project_material_plan_id,
a.mat_name as name,
a.creator
FROM project_material_plan_boom a
JOIN project_material_plan b ON a.project_material_plan_id = b.id
JOIN base_material bm ON a.material_id = bm.id
WHERE CURDATE() >= DATE_SUB(a.boom_arrive_date, INTERVAL #{evday} DAY)
AND b.tenant_id = #{id}
) w ON q.project_material_plan_id = w.project_material_plan_id
WHERE q.receivingStatus1 != '3' -- 移动过滤条件到WHERE
GROUP BY w.project_material_plan_no;
</select>
<select id="hasPurchase"

View File

@ -34,24 +34,51 @@
<select id="selectafterten1"
parameterType="Long"
resultType="com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.MaterialPlanDetailDO">
select w.*from project_purchase_order q,
(SELECT
b.project_material_plan_no,a.project_material_plan_id,a.creator
FROM
project_material_plan_detail a
JOIN
project_material_plan b ON a.project_material_plan_id = b.id
JOIN
base_material bm ON a.material_id = bm.id
WHERE
b.status = '3'
AND CURDATE() >= DATE_SUB(a.require_arrive_time, INTERVAL 10 DAY)
) w
where q.project_material_plan_id =w.project_material_plan_id
and q.receiving_status !='3'
group by project_material_plan_no
-- select w.*from project_purchase_order q,
-- (SELECT
-- b.project_material_plan_no,a.project_material_plan_id,a.creator
-- FROM
-- project_material_plan_detail a
-- JOIN
-- project_material_plan b ON a.project_material_plan_id = b.id
-- JOIN
-- base_material bm ON a.material_id = bm.id
-- WHERE
-- b.status = '3'
-- AND CURDATE() >= DATE_SUB(a.require_arrive_time, INTERVAL 10 DAY)
--
-- ) w
-- where q.project_material_plan_id =w.project_material_plan_id
-- and q.receiving_status !='3'
-- group by project_material_plan_no
SELECT
w.*
FROM (
SELECT
t.*,
CASE
WHEN COUNT(d.id) = 0 THEN 1
WHEN SUM(CASE d.receiving_status WHEN 3 THEN 0 ELSE 1 END) = 0 THEN 3
WHEN SUM(CASE d.receiving_status WHEN 1 THEN 1 ELSE 0 END) = COUNT(d.id) THEN 1
ELSE 2
END AS receivingStatus1
FROM project_purchase_order_no t
LEFT JOIN project_purchase_order_no_detail d ON d.purchase_order_id = t.id
GROUP BY t.id -- 按主表ID分组
) q -- 添加子查询别名
RIGHT JOIN (
SELECT
b.project_material_plan_no,
a.project_material_plan_id,
bm.NAME ,
a.creator
FROM project_material_plan_boom a
JOIN project_material_plan b ON a.project_material_plan_id = b.id
JOIN base_material bm ON a.material_id = bm.id
WHERE CURDATE() >= DATE_SUB(a.boom_arrive_date, INTERVAL 10 DAY)
) w ON q.project_material_plan_id = w.project_material_plan_id
WHERE q.receivingStatus1 != '3' -- 移动过滤条件到WHERE
GROUP BY w.project_material_plan_no;
</select>
</mapper>

View File

@ -47,6 +47,7 @@
WHERE
d.process_design_type = 'BLUEPRINT_WORKBLANK'
AND d.status = '1'
and d.is_over_process != '1'
GROUP BY
d.project_id,
d.project_sub_id,
@ -93,6 +94,7 @@
WHERE
d.process_design_type = 'BLUEPRINT_3D'
AND d.status = '1'
and d.is_over_process != '1'
GROUP BY
d.project_id,
d.project_sub_id,
@ -139,6 +141,7 @@
WHERE
d.process_design_type = 'BLUEPRINT_2D'
AND d.status = '1'
and d.is_over_process != '1'
GROUP BY
d.project_id,
d.project_sub_id,
@ -191,6 +194,7 @@
WHERE
d.process_design_type = 'BLUEPRINT_WORKBLANK'
AND d.status = '1'
and d.is_over_process != '1'
GROUP BY
d.project_id,
d.creator,
@ -239,6 +243,7 @@
WHERE
d.process_design_type = 'BLUEPRINT_3D'
AND d.status = '1'
and d.is_over_process != '1'
GROUP BY
d.project_id,
d.creator,
@ -287,6 +292,7 @@
WHERE
d.process_design_type = 'BLUEPRINT_2D'
AND d.status = '1'
and d.is_over_process != '1'
GROUP by
d.creator,
d.project_id,

View File

@ -109,33 +109,23 @@
parameterType="Long"
resultType="com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO">
SELECT
b.mat_code id,
b.create_time,
b.mat_name,
b.total_storage_ok_qty,
b.creator
t.code as id,
t.name as matName,
t.creator as creator
FROM
(SELECT
mat_code,
create_time,
mat_name,creator,
id,
SUM(storage_ok_qty) AS total_storage_ok_qty
FROM
v_storage_material_now
GROUP BY
mat_code,
create_time,
mat_name,
id,creator) b
JOIN
base_material a ON b.mat_code = a.code
base_material t
LEFT JOIN wms_storage_inventory s ON (s.material_id = t.id)
AND s.tenant_id = 2
WHERE
b.total_storage_ok_qty &lt; a.inv_safe
and a.tenant_id =#{param1}
t.deleted = 0
and t.tenant_id =#{param1}
GROUP BY
t.id
HAVING
COALESCE(SUM(s.yard_amount), 0) &lt; COALESCE(MAX(t.inv_safe), 0)
</select>
@ -178,32 +168,19 @@
parameterType="Long"
resultType="com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO">
SELECT
b.mat_code id,
b.create_time,
b.mat_name,
b.total_storage_ok_qty,
b.creator
t.code as id,
t.name as matName,
t.creator as creator
FROM
(SELECT
mat_code,
create_time,
mat_name,creator,
id,
SUM(storage_ok_qty) AS total_storage_ok_qty
FROM
v_storage_material_now
GROUP BY
mat_code,
create_time,
mat_name,
id,creator) b
JOIN
base_material a ON b.mat_code = a.code
base_material t
LEFT JOIN wms_storage_inventory s ON (s.material_id = t.id)
AND s.tenant_id = 2
WHERE
b.total_storage_ok_qty &lt; a.inv_safe
t.deleted = 0 GROUP BY
t.id
HAVING
COALESCE(SUM(s.yard_amount), 0) &lt; COALESCE(MAX(t.inv_safe), 0)
</select>
<select id="selectPagesmallbyid"

View File

@ -58,3 +58,8 @@ export const getProcessDesignDeferredWarning = async () => {
export const send = async (data: ProcessDesignVO) => {
return await request.post({ url: `/heli/process-design/send`, data })
}
// 返工
export const reWork = async (data: ProcessDesignVO) => {
return await request.post({ url: `/heli/process-design/reWork`, data })
}

View File

@ -98,7 +98,12 @@
<template #header><span class="hl-table_header">*</span>责任人</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.duEmpId`" class="mb-0px!" >
<UserSelect v-model="row.duEmpId" class="!w-265px" clearable @update:newValue="handleSelectedUser($index, $event)"/>
<!-- <UserSelect v-model="row.duEmpId" class="!w-265px" clearable @update:newValue="handleSelectedUser($index, $event)"/>-->
<el-select class="!w-265px" v-model="row.duEmpId" clearable @update:new-value="handleSelectedUser($index,$event)" filterable>
<el-option
v-for="dict in userInit" :key="dict.id"
:label="dict.username+' '+dict.nickname" :value="dict.id" />
</el-select>
</el-form-item>
</template>
</el-table-column>
@ -129,6 +134,7 @@ import UserSelect from "@/views/heli/materialplan/userSelectNew.vue";
import {inject, ref} from "vue";
import * as MaterialPlanApi from "@/api/heli/materialplan";
import {ElTable} from "element-plus";
import * as UserApi from "@/api/system/user";
const formLoading = ref(false) // 12
defineOptions({ name: 'standard' })
@ -287,9 +293,11 @@ const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
const userInit = ref()
/** 初始化 **/
onMounted(() => {
onMounted(async () => {
userInit.value=await UserApi.getDeptName("采购部")
getList()
})
</script>

View File

@ -103,7 +103,12 @@
<!-- />-->
<!-- </el-select>-->
<el-form-item :prop="`${$index}.duEmpId`" class="mb-0px!" >
<UserSelect v-model="row.duEmpId" class="!w-265px" clearable @update:newValue="handleSelectedUser($index, $event)"/>
<!-- <UserSelect v-model="row.duEmpId" class="!w-265px" clearable @update:newValue="handleSelectedUser($index, $event)"/>-->
<el-select class="!w-265px" v-model="row.duEmpId" clearable @update:new-value="handleSelectedUser($index,$event)" filterable>
<el-option
v-for="dict in userInit" :key="dict.id"
:label="dict.username+' '+dict.nickname" :value="dict.id" />
</el-select>
</el-form-item>
</template>
</el-table-column>
@ -129,6 +134,7 @@ import * as ProcessBomApi from '@/api/heli/processbom'
import { useCommonStateWithOut } from '@/store/modules/common'
import UserSelect from "@/views/heli/materialplan/userSelectNew.vue";
import {inject, ref} from "vue";
import * as UserApi from "@/api/system/user";
const formLoading = ref(false) // 12
defineOptions({ name: 'standard' })
@ -270,9 +276,11 @@ const handleExport = async () => {
}
}
const userInit = ref()
/** 初始化 **/
onMounted(() => {
onMounted(async () => {
userInit.value=await UserApi.getDeptName("采购部")
getList()
})
</script>

View File

@ -77,7 +77,14 @@
<el-checkbox v-model="row.isFoams" @change="handleOutsourcingChange(row)" :checked="row.isFoams == 'Y'"/>
</template>
</el-table-column>
<el-table-column min-width="200px" align="center" >
<template #header><span class="hl-table_header">*</span>泡沫费用</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.foamPrice`" class="mb-0px!" v-if="row.isFoams == 'Y'||row.isFoams==true">
<el-input-number v-model="row.foamPrice" type="number" :precision="0" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="零件名称" align="center" prop="matName" min-width="180" />
<el-table-column label="材质" align="center" prop="compositionName" min-width="120" />
<el-table-column label="图号" align="center" prop="blueprintNo" min-width="120" />
@ -286,6 +293,14 @@ const submitForm = async () => {
message.error("采购数量为0或空");
break;
}
console.log(list[i].isFoam)
if (list[i].isFoam==true||list[i].isFoam=='Y'){
if (list[i].foamPrice === null || list[i].foamPrice === 0) {
message.error("泡沫费用为0或空");
break;
}
}
if (list[i].supplierIds === null) {
message.error("供应商为空");
break;

View File

@ -124,7 +124,7 @@ v-for="dict in getStrDictOptions(DICT_TYPE.HELI_BUSINESS_LINE)" :key="dict.value
<!-- <UserSelect v-model="formData.craftOwner" @update:new-value="handleSelectedUser2" class="!w-265px"/>-->
<el-select class="!w-265px" v-model="formData.craftOwner" clearable filterable>
<el-option
v-for="dict in userInit4" :key="dict.id"
v-for="dict in userInit" :key="dict.id"
:label="dict.username+' '+dict.nickname" :value="dict.id" />
</el-select>
</el-form-item>
@ -1653,7 +1653,7 @@ const userInit = ref()
const userInit1 = ref()
const userInit2= ref()
const userInit3= ref()
const userInit4 = ref()
// const userInit4 = ref()
const mergedArray= ref()
const mergedArray1= ref()
const mergedArray2= ref()
@ -1671,7 +1671,7 @@ onMounted(async () => {
userInit1.value = await UserApi.getDeptName("生产部")
userInit2.value = await UserApi.getDeptName("检验部")
userInit3.value=await UserApi.getDeptName("采购部")
userInit4.value=await UserApi.getDeptName("技术部")
// userInit4.value=await UserApi.getDeptName("")
//
mouldTypeList.value = await MouldTypeApi.getSimpList()
//

View File

@ -150,7 +150,7 @@
<el-checkbox v-model="row.chkboxEnable"/>
</template>
</el-table-column> -->
<!-- <el-table-column type="selection" width="55" />-->
<el-table-column type="selection" width="55" />
<el-table-column label="序号" type="index" min-width="50px" />
<el-table-column label="变更次数" prop="bomEditStatus" max-width="60px" align="center">
<template #default="{ row}">

View File

@ -212,6 +212,17 @@ v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_PLAN_STATUS)" :key="dict
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="返工原因" prop="delayReason">
<el-input
v-model="formData.reReason"
:rows="2"
disabled
type="textarea"
/>
</el-form-item>
</el-col>
</el-row>
</el-card>
<!--延期弹框-->
@ -247,6 +258,7 @@ v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_PLAN_STATUS)" :key="dict
<el-button v-if="formData.isOverProcess == null || formData.isOverProcess == 0" class="hl-addbutton" type="primary" size="large" @click="onAddItem">开始</el-button>
<el-button v-if="formData.isOverProcess == null || formData.isOverProcess == 0" style="margin-left: 30px;" type="warning" size="large" @click="sendItem()">推送</el-button>
<el-button v-if="formData.isOverProcess == null || formData.isOverProcess == 0" style="margin-left: 30px;" type="danger" size="large" @click="overProcess">{{ overbuttonName }}</el-button>
<el-button v-if="formData.isOverProcess ==1" class="hl-addbutton" type="primary" size="large" @click="reWork">返工</el-button>
<!-- <el-button class="hl-addbutton" type="primary" size="large" @click="onAddItem">新增</el-button> -->
</el-col>
@ -347,6 +359,8 @@ import { delay, fromPairs, now } from 'lodash-es';
import { FolderOpened } from '@element-plus/icons-vue/dist/types';
import * as bdgzsomthingApi from "@/api/heli/bdgzsomthing";
import {getMessage} from "@/api/heli/bdgzsomthing";
import * as PartPurchaseOrderApi from "@/api/heli/partpurchaseorder";
import {ElMessageBox} from "element-plus";
defineOptions({ name: 'ProcessDesignDetail' })
@ -427,7 +441,34 @@ const resetForm = () => {
formRef.value?.resetFields()
}
const reWork = async () => {
try {
const { value, action } = await ElMessageBox.prompt('请输入返工原因', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
inputPattern: /.+/, //
inputErrorMessage: '内容不能为空'
})
if (action === 'confirm') {
reject(value) // reject
}
} catch (err) {
//
console.log('操作取消或输入无效')
}
}
// reject
const reject = async(reason) => {
console.log('返工原因:', reason)
formData.value.reReason = reason
//
const data = formData.value as unknown as ProcessDesignApi.ProcessDesignVO
await ProcessDesignApi.reWork(data)
message.success("已返工");
queryData(currentId.value)
}
const disabledDate = (time: Date,row : any) => {
const today = new Date();
@ -436,7 +477,7 @@ const disabledDate = (time: Date,row : any) => {
tomorrow.setHours(23, 59, 59, 999);
if(row.beginTime != null){
const beginDate = new Date(row.beginTime);
beginDate.setHours(0,0,0,0);
beginDate.setHours(0,0,0,0);
return time.getTime() < beginDate.getTime() || time.getTime() > tomorrow.getTime();
}else{
return time.getTime() > tomorrow.getTime();

View File

@ -796,9 +796,10 @@ const dispatchTypeHasChange = (row) =>{
} else{
row.owner = ''
if(row.isOutsourcing == true){
row.postId = '2'
row.postId = '3'
}else{
row.postId = ownerList2.value[0].id;
row.postId = ownerList2.value[0].id;
}
}
@ -1255,6 +1256,9 @@ const queryData = async (id?: number) => {
}else{
item.checkYns = true
}
if (item.dispatchType==null ||item.dispatchType=='' ){
item.dispatchType=2
}
if ("Y" == item.isOutsourcing) {
item.isOutsourcing = true
} else {
@ -1275,9 +1279,9 @@ const queryData = async (id?: number) => {
ownerList1.value = await getOwnerListThis ();
//20250601 2 ownerList2.value = await getOwnerPostListThis ();
ownerList2.value = await getOwnerPostListThis ();
const exists = ownerList2.value.some(item => item.id === '2');
const exists = ownerList2.value.some(item => item.id === '3');
if (!exists) {
ownerList2.value.push({ index: 1, id: '2', label: '2' });
ownerList2.value.push({ index: 1, id: '3', label: '3' });
}
}
@ -1466,7 +1470,7 @@ const onAddItem = () => {
const row = {
id: undefined,
procedureId: 0 ,
dispatchType: ref(1),
dispatchType: ref(2),
sort: 0,
owner: undefined,
workTime: undefined,
@ -1481,6 +1485,7 @@ const onAddItem = () => {
isReport:0 ,
checkYn : 0,
checkYns: true,
postId: ownerList2.value[0].id
}
//
// Object.keys(procedureList.value).forEach((key) => {
@ -1690,12 +1695,12 @@ const onDeleteItem = async (row,index) => {
const handleOutsourcingChange= async (row: any) => {
console.log('ss')
if(row.isOutsourcing == false){
row.dispatchType = 1
row.postId = ''
row.dispatchType = 2
row.postId = ownerList2.value[0].id
}else{
row.dispatchType = 2
row.owner = ''
row.postId = '2'
row.postId = '3'
}
}

View File

@ -156,6 +156,9 @@ const onRefresherrefresh = async () => {
<view class="product-item"
>子项目名称<span class="item-value">{{ item.attr8 }}</span></view
>
<view class="product-item"
>设计人员<span class="item-value">{{ item.userName }}</span></view
>
<view class="product-item" style="color: red;"
>备注内容<span class="item-value">{{ item.attr9 }}</span></view
>

View File

@ -121,6 +121,9 @@
//
isOverBeforeProcedure.value = true;
}
if ("Y"==data.isOutsourcing){
workTime.value=data.estimatedPrice
}
data.startTime = formatDate(data.startTime, 'YYYY-MM-DD')
data.endTime = formatDate(data.endTime, 'YYYY-MM-DD')
//
@ -652,4 +655,4 @@
}
}
}
</style>
</style>