生产进度统计接口

This commit is contained in:
z 2025-07-14 19:07:14 +08:00
parent ab440ab911
commit c1272fede2
22 changed files with 409 additions and 80 deletions

View File

@ -151,7 +151,7 @@ public class bdgzsomthingController {
BeanUtils.toBean(list, bdgzsomthingRespVO.class));
}
@Scheduled(fixedRate = 10800000)
// @Scheduled(fixedRate = 10800000)
public void scheduledTask() {
bdgzsomthingService.selectds();
}
@ -159,8 +159,8 @@ public class bdgzsomthingController {
//@Scheduled(cron = "0 2 0 * * ?") //每天十天执行一次
@PostConstruct
public void init() {
selectHasPrice();
selectSafeStorageAndDeliverOneYear();
// selectHasPrice();
// selectSafeStorageAndDeliverOneYear();
// bdgzsomthingService.selectds();
}
@Scheduled(cron = "0 0 2 * * ?")

View File

@ -15,11 +15,13 @@ import com.chanko.yunxi.mes.framework.operatelog.core.service.OperateLogFramewor
import com.chanko.yunxi.mes.module.heli.controller.admin.plantask.vo.PlanTaskPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.plantask.vo.PlanTaskRespVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskPlanJDBaoBiaoPageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plantask.PlanTaskDO;
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.taskdispatch.TaskDispatchDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper;
import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum;
import com.chanko.yunxi.mes.module.heli.service.composition.CompositionService;
@ -271,4 +273,16 @@ public class ProcessBomController {
ExcelUtils.write(response, "标准件物料需求计划.xlsx", "数据", ProcessBomExcelVO.class,
BeanUtils.toBean(list, ProcessBomExcelVO.class));
}
@GetMapping("/planBbPage")
@Operation(summary = "获得加工件生产进度分页")
@PreAuthorize("@ss.hasPermission('heli:task-dispatch:query')")
public CommonResult<PageResult<ProcessBomDetailDO>> planBbPage(@Valid TaskPlanJDBaoBiaoPageReqVO pageReqVO) {
return success(processBomService.planBbPage(pageReqVO));
}
@GetMapping("/planBZJPage")
@Operation(summary = "获得生产进度分页")
@PreAuthorize("@ss.hasPermission('heli:task-dispatch:query')")
public CommonResult<PageResult<ProcessBomDetailDO>> planBZJPage(@Valid TaskPlanJDBaoBiaoPageReqVO pageReqVO) {
return success(processBomService.planBZJPage(pageReqVO));
}
}

View File

@ -1,7 +1,9 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.storageinventory;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageNowAllReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO;
import com.chanko.yunxi.mes.module.heli.dal.mysql.storageinventory.StorageInventoryMapper;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -40,6 +42,8 @@ public class StorageInventoryController {
@Resource
private StorageInventoryService storageInventoryService;
@Resource
private StorageInventoryMapper storageInventoryMapper;
@PostMapping("/create")
@Operation(summary = "创建库存")
@ -130,4 +134,16 @@ public class StorageInventoryController {
PageResult<StorageInventoryDO> pageResult = storageInventoryService.realTimeInventory(pageReqVO);
return success(pageResult);
}
@GetMapping("/getById")
@Operation(summary = "获得根据物料跟仓库获取库存分页")
@PreAuthorize("@ss.hasPermission('heli:storage-inventory:query')")
public CommonResult<StorageInventoryDO> getById(@Valid StorageInventoryPageReqVO pageReqVO) {
LambdaQueryWrapper<StorageInventoryDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StorageInventoryDO::getMaterialId,pageReqVO.getMaterialId());
wrapper.eq(StorageInventoryDO::getWhId,pageReqVO.getWhId());
wrapper.orderByDesc(StorageInventoryDO::getYardAmount);
wrapper.last("limit 1");
StorageInventoryDO storageInventoryDO = storageInventoryMapper.selectOne(wrapper);
return success(storageInventoryDO);
}
}

View File

@ -238,4 +238,6 @@ public class TaskDispatchController {
List<TaskDispatchDO> list= taskDispatchService.getListJg(id,projectSubId);
return success( list);
}
}

View File

@ -5,12 +5,14 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
import lombok.*;
import org.apache.poi.hpsf.Date;
import org.apache.poi.hpsf.Decimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
* 工艺bom明细 DO
@ -189,6 +191,17 @@ public class ProcessBomDetailDO extends BaseDO {
private String projectNameSim;
@TableField(exist = false)
private String nickname;
@TableField(exist = false)
private Integer planBoomExists;
@TableField(exist = false)
private Integer purYard;
@TableField(exist = false)
private Integer makeStatus;
@TableField(exist = false)
private Integer receivingStatus;
@TableField(exist = false)
private Integer orderNoExists;
@TableField(exist = false)
private List<TaskDispatchDetailDO> taskDispatchDetailDOList;
}

View File

@ -232,9 +232,13 @@ public class TaskDispatchDetailDO extends BaseDO {
private BigDecimal matWeight;
@TableField(exist = false)
private String nickname;
@TableField(exist = false)
private BigDecimal workingHours;
@TableField(exist = false)
private LocalDateTime reportTime;
private Integer reportStatus;
@TableField(exist = false)
private Integer flag;
//是否泡沫 -Y -N
private String isFoam;
}

View File

@ -91,4 +91,17 @@ public interface BgMasterLineMapper extends BaseMapperX<BgMasterLineDO> {
return selectOne(query);
}
default BgMasterLineDO getByDispatchDetail(Long id){
MPJLambdaWrapper<BgMasterLineDO> query = new MPJLambdaWrapper<>();
query.selectAll(BgMasterLineDO.class)
.leftJoin(PgMasterLineDO.class, "a", PgMasterLineDO::getId, BgMasterLineDO::getZjMxId);
query.eq( PgMasterLineDO::getDispatchDetailId, id)
.orderByDesc(BgMasterLineDO::getId)
.last("limit 1");
;
return selectOne(query);
}
}

View File

@ -11,6 +11,7 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo.Pro
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo.ProcessBoomRespVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.plantaskbom.vo.PlanTaskBomPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskPlanJDBaoBiaoPageReqVO;
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.material.MaterialDO;
@ -236,4 +237,62 @@ public interface ProcessBomDetailMapper extends BaseMapperX<ProcessBomDetailDO>
return selectPage(pageReqVO, query);
}
default PageResult<ProcessBomDetailDO> planBbPage(TaskPlanJDBaoBiaoPageReqVO pageReqVO){
MPJLambdaWrapper<ProcessBomDetailDO> query = new MPJLambdaWrapper<>();
query.selectAll(ProcessBomDetailDO.class)
.select("f.name as compositionName")
.leftJoin(PlanTaskBomDO.class,"ptb",PlanTaskBomDO::getBomDetailId,ProcessBomDetailDO::getId)
.leftJoin(PlanTaskDO.class,"pt",PlanTaskDO::getId,PlanTaskBomDO::getTaskId)
.leftJoin(ProcessBomDO.class,"g",ProcessBomDO::getId,ProcessBomDetailDO::getBomId)
.leftJoin(ProjectOrderDO.class, "b", ProjectOrderDO::getId, ProcessBomDO::getProjectId)
.leftJoin(CustomerDO.class, "c", CustomerDO::getId, ProjectOrderDO::getCustomerId)
.leftJoin(ProjectOrderSubDO.class, "d", ProjectOrderSubDO::getId, ProcessBomDO::getProjectSubId)
.leftJoin(AdminUserDO.class,"u",AdminUserDO::getId,PlanTaskBomDO::getOwner)
.leftJoin(CompositionDO.class,"f",CompositionDO::getId,ProcessBomDetailDO::getCompositionId)
.groupBy(ProcessBomDetailDO::getId)
.disableSubLogicDel();
query.like(!ObjectUtils.isEmpty(pageReqVO.getProjectCode()), ProjectOrderDO::getCode,pageReqVO.getProjectCode())
.like(!ObjectUtils.isEmpty(pageReqVO.getProjectName()),ProjectOrderDO::getProjectName,pageReqVO.getProjectName())
.like(!ObjectUtils.isEmpty(pageReqVO.getTaskNo()),PlanTaskDO::getTaskNo,pageReqVO.getTaskNo())
.like(!ObjectUtils.isEmpty(pageReqVO.getProjectSubName()),ProjectOrderSubDO::getName,pageReqVO.getProjectSubName())
.like(!ObjectUtils.isEmpty(pageReqVO.getMaterialName()),ProcessBomDetailDO::getMaterialName,pageReqVO.getMaterialName())
.like(!ObjectUtils.isEmpty(pageReqVO.getOwner()),AdminUserDO::getNickname,pageReqVO.getOwner())
.eq(ProcessBomDetailDO::getType,2);
return selectPage(pageReqVO, query);
}
default PageResult<ProcessBomDetailDO> planBZJPage(TaskPlanJDBaoBiaoPageReqVO pageReqVO){
MPJLambdaWrapper<ProcessBomDetailDO> query = new MPJLambdaWrapper<>();
query.selectAll(ProcessBomDetailDO.class)
.select("f.name as compositionName")
.select("CASE WHEN w.id IS NOT NULL THEN 1 ELSE 0 END AS planBoomExists")
.select("w.is_pur_yard as purYard")
.select("m.status as makeStatus")
.select("r.receiving_status as receivingStatus")
.select("CASE WHEN r.id IS NOT NULL THEN 1 ELSE 0 END AS orderNoExists")
.leftJoin(PlanTaskBomDO.class,"ptb",PlanTaskBomDO::getBomDetailId,ProcessBomDetailDO::getId)
.leftJoin(PlanTaskDO.class,"pt",PlanTaskDO::getId,PlanTaskBomDO::getTaskId)
.leftJoin(ProcessBomDO.class,"g",ProcessBomDO::getId,ProcessBomDetailDO::getBomId)
.leftJoin(ProjectOrderDO.class, "b", ProjectOrderDO::getId, ProcessBomDO::getProjectId)
.leftJoin(CustomerDO.class, "c", CustomerDO::getId, ProjectOrderDO::getCustomerId)
.leftJoin(ProjectOrderSubDO.class, "d", ProjectOrderSubDO::getId, ProcessBomDO::getProjectSubId)
.leftJoin(AdminUserDO.class,"u",AdminUserDO::getId,PlanTaskBomDO::getOwner)
.leftJoin(CompositionDO.class,"f",CompositionDO::getId,ProcessBomDetailDO::getCompositionId)
.leftJoin("project_material_plan_boom w on t.id=w.boom_detail_id and w.deleted=0 and w.tenant_id=2")
.leftJoin("project_purchase_order_make_detail e on w.project_purchase_order_make_detail_id = e.id and e.deleted=0 and e.tenant_id=2")
.leftJoin("project_purchase_order_make m on e.purchase_order_id=m.id and m.deleted=0 and e.tenant_id=2")
.leftJoin("project_purchase_order_no_detail r on e.purchase_order_no_detail_id = r.id and r.deleted=0 and r.tenant_id=2")
.groupBy(ProcessBomDetailDO::getId)
.disableSubLogicDel();
query.like(!ObjectUtils.isEmpty(pageReqVO.getProjectCode()), ProjectOrderDO::getCode,pageReqVO.getProjectCode())
.like(!ObjectUtils.isEmpty(pageReqVO.getProjectName()),ProjectOrderDO::getProjectName,pageReqVO.getProjectName())
.like(!ObjectUtils.isEmpty(pageReqVO.getTaskNo()),PlanTaskDO::getTaskNo,pageReqVO.getTaskNo())
.like(!ObjectUtils.isEmpty(pageReqVO.getProjectSubName()),ProjectOrderSubDO::getName,pageReqVO.getProjectSubName())
.like(!ObjectUtils.isEmpty(pageReqVO.getMaterialName()),ProcessBomDetailDO::getMaterialName,pageReqVO.getMaterialName())
.like(!ObjectUtils.isEmpty(pageReqVO.getOwner()),AdminUserDO::getNickname,pageReqVO.getOwner())
.eq(ProcessBomDetailDO::getType,1);
return selectPage(pageReqVO, query);
}
}

View File

@ -63,9 +63,9 @@ public interface PurchaseOrderNoDetailMapper extends BaseMapperX<PurchaseOrderNo
default List<PurchaseOrderNoDetailDO> getPurchaseOrderNoDetailById(Long id){
MPJLambdaWrapper<PurchaseOrderNoDetailDO> query = new MPJLambdaWrapper<>();
query.selectAll(PurchaseOrderNoDetailDO.class)
.select("t.composition as compositionName","t.purchase_rem_amount as purchaseRemAmounts","mat.code as matCode","pro.name as procedureName","bom.blueprint_no as blueprintNo","psub.id as projectSubId")
.select("ROUND(t.estimated_price / t.purchase_amount, 1) as unitPrice")
.leftJoin(PurchaseOrderNoDO.class, "pb", PurchaseOrderNoDO::getId, PurchaseOrderBoomDO::getPurchaseOrderId)
.leftJoin(ProcessBomDetailDO.class,"bom", ProcessBomDetailDO::getId, PurchaseOrderNoDetailDO::getBoomDetailId)
.leftJoin(MaterialPlanBoomDO.class,"plan", MaterialPlanBoomDO::getId, PurchaseOrderNoDetailDO::getProjectMaterialPlanBoomId)

View File

@ -11,11 +11,13 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskDis
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskDispatchDetailTotalVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskPlanJDBaoBiaoPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.ygjx.vo.YgjxPageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.bgmasterline.BgMasterLineDO;
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.pgmaster.PgMasterLineDO;
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;
@ -379,8 +381,18 @@ public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetail
query.selectAll(TaskDispatchDetailDO.class)
.select("a.is_report as is_report,a.code as procedure_code")
.select("count(b.amount) as numAmount")
.select("sum(CASE WHEN b.work_type = 1 THEN b.work_time ELSE 0 END) as workingHours")
// .select("sum(bg.work_time) as bgWorkTime")
.select("(SELECT SUM(bg.work_time) \n" +
" FROM quality_pg_master_line p\n" +
" LEFT JOIN quality_bg_master_line bg ON bg.zj_mx_id = p.id and p.deleted = 0 AND p.tenant_id = 2\n" +
" WHERE p.dispatch_detail_id = t.id) AS bgWorkTime")
.leftJoin(ProcedureDO.class,"a",ProcedureDO::getId,TaskDispatchDetailDO::getProcedureId)
.leftJoin(TaskReportDO.class,"b",TaskReportDO::getDispatchDetailId,TaskDispatchDetailDO::getId)
// .leftJoin(PgMasterLineDO.class,"p",PgMasterLineDO::getDispatchDetailId,TaskDispatchDetailDO::getId)
// .leftJoin("quality_pg_master_line p on p.dispatch_detail_id=t.id and p.deleted=0")
// .leftJoin("quality_bg_master_line bg on bg.zj_mx_id = p.id and bg.deleted=0")
// .leftJoin(BgMasterLineDO.class,"bg",BgMasterLineDO::getZjMxId,PgMasterLineDO::getId)
.disableSubLogicDel()
.groupBy(TaskDispatchDetailDO::getId)
.eq(TaskDispatchDetailDO::getDispatchId, dispatchId);
@ -743,4 +755,16 @@ public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetail
.eq( TaskDispatchDetailDO::getIsOutsourcing, "Y");
return selectPage(pageReqVO, query);
}
default List<TaskDispatchDetailDO> getByBoomId(Long id){
MPJLambdaWrapper<TaskDispatchDetailDO> wrapper = new MPJLambdaWrapper<>();
wrapper.selectAll(TaskDispatchDetailDO.class)
.select("b.name as procedureName")
.leftJoin(TaskDispatchDO.class, "a", TaskDispatchDO::getId, TaskDispatchDetailDO::getDispatchId)
.leftJoin(ProcedureDO.class, "b", ProcedureDO::getId, TaskDispatchDetailDO::getProcedureId)
.groupBy(TaskDispatchDetailDO::getId);
wrapper.eq(TaskDispatchDO::getBomDetailId, id);
return selectList(wrapper);
}
}

View File

@ -3,6 +3,7 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskDispatchPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskPlanJDBaoBiaoPageReqVO;
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.plan.PlanDO;

View File

@ -4,6 +4,7 @@ import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomSaveReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskPlanJDBaoBiaoPageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
import org.apache.poi.ss.formula.functions.T;
@ -97,4 +98,8 @@ public interface ProcessBomService {
Boolean submit(List<ProcessBomDetailDO> list);
CommonResult<Boolean> withdraw(String code);
PageResult<ProcessBomDetailDO> planBbPage(TaskPlanJDBaoBiaoPageReqVO pageReqVO);
PageResult<ProcessBomDetailDO> planBZJPage(TaskPlanJDBaoBiaoPageReqVO pageReqVO);
}

View File

@ -20,8 +20,10 @@ import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils;
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomImportExcelVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomSaveReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskPlanJDBaoBiaoPageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.attentiontodo.AttentiontodoDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.bdgzsomthing.bdgzsomthingDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.bgmasterline.BgMasterLineDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
@ -34,8 +36,11 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDeta
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.shenhe.ShenheDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskreport.TaskReportDO;
import com.chanko.yunxi.mes.module.heli.dal.mysql.attentiontodo.AttentiontodoMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.bdgzsomthing.bdgzsomthingMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.bgmasterline.BgMasterLineMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplan.MaterialPlanMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.plan.PlanMapper;
@ -44,7 +49,10 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMap
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.shenhe.ShenheMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogNowMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.taskreport.TaskReportMapper;
import com.chanko.yunxi.mes.module.heli.enums.ProcessBomStatusEnum;
import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum;
import com.chanko.yunxi.mes.module.heli.service.attentiontodo.AttentiontodoService;
import com.chanko.yunxi.mes.module.heli.service.composition.CompositionService;
import com.chanko.yunxi.mes.module.heli.service.material.MaterialService;
@ -127,6 +135,12 @@ public class ProcessBomServiceImpl implements ProcessBomService {
private MaterialPlanBoomMapper materialPlanBoomMapper;
@Resource
private StorageLogNowMapper storageLogNowMapper;
@Resource
private TaskDispatchDetailMapper taskDispatchDetailMapper;
@Resource
private TaskReportMapper taskReportMapper;
@Resource
private BgMasterLineMapper bgMasterLineMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createProcessBom(ProcessBomSaveReqVO createReqVO) {
@ -1205,6 +1219,60 @@ public class ProcessBomServiceImpl implements ProcessBomService {
return CommonResult.success(true);
}
@Override
public PageResult<ProcessBomDetailDO> planBbPage(TaskPlanJDBaoBiaoPageReqVO pageReqVO) {
PageResult<ProcessBomDetailDO> processBomDetailDOPageResult = processBomDetailMapper.planBbPage(pageReqVO);
List<ProcessBomDetailDO> list = processBomDetailDOPageResult.getList();
list.forEach(item->{
List<TaskDispatchDetailDO> detailDOS= taskDispatchDetailMapper.getByBoomId(item.getId());
detailDOS.forEach(detailDO -> {
LambdaQueryWrapper<TaskReportDO> taskReportDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
taskReportDOLambdaQueryWrapper.eq(TaskReportDO::getDispatchDetailId, detailDO.getId());
taskReportDOLambdaQueryWrapper.eq(TaskReportDO::getHasReport, YesOrNoEnum.Y.getCode());
taskReportDOLambdaQueryWrapper.orderByDesc(TaskReportDO::getCreateTime);
taskReportDOLambdaQueryWrapper.last("limit 1");
TaskReportDO taskReportDO = taskReportMapper.selectOne(taskReportDOLambdaQueryWrapper);
if (ObjectUtil.isNotEmpty(taskReportDO)){
detailDO.setReportTime(taskReportDO.getReportTime());
}
Integer Postponement=0;
Integer flag=0;
if (detailDO.getCheckYn()==1){
if (ObjectUtil.isNotEmpty(taskReportDO)){
boolean after = taskReportDO.getReportTime().isAfter(detailDO.getEndTime());
if (after){
Postponement=1;
}
}else {
boolean after = LocalDateTime.now().isAfter(detailDO.getEndTime());
if (after){
Postponement=1;
}
}
BgMasterLineDO bgMasterLineDO = bgMasterLineMapper.getByDispatchDetail(detailDO.getId());
if (ObjectUtil.isNotEmpty(bgMasterLineDO)){
if (bgMasterLineDO.getIsQua()==1&&("1".equals(bgMasterLineDO.getAuditOpinion())||"3".equals(bgMasterLineDO.getAuditOpinion()))){
flag=3;
}else if (Postponement==0){
flag=1;
}else if (Postponement==1){
flag=2;
}
}
detailDO.setFlag(flag);
}
});
item.setTaskDispatchDetailDOList(detailDOS);
});
processBomDetailDOPageResult.setList(list);
return processBomDetailDOPageResult;
}
@Override
public PageResult<ProcessBomDetailDO> planBZJPage(TaskPlanJDBaoBiaoPageReqVO pageReqVO) {
return processBomDetailMapper.planBZJPage(pageReqVO);
}
private void createProcessBomDetailList(String bomCode,Long bomId, List<ProcessBomDetailDO> list,Integer num) {
LocalDateTime now = LocalDateTime.now();
/*list.forEach(o -> {o.setBomId(bomId);o.setUpdateTimes(now);}

View File

@ -91,3 +91,12 @@ export const exportStandard = async (params) => {
return await request.download({ url: `/heli/process-bom/exportStandard`, params })
}
// 查询加工件生产进度统计
export const getPlanBb = async (params) => {
return await request.get({ url: `/heli/process-bom/planBbPage`, params })
}
// 查询标准件生产进度统计
export const planBZJPage = async (params) => {
return await request.get({ url: `/heli/process-bom/planBZJPage`, params })
}

View File

@ -62,3 +62,7 @@ export const getSupplementPage = async (params) => {
export const realTimeInventory = async (params) => {
return await request.get({ url: `/heli/storage-inventory/realTimeInventory`, params })
}
// 查询库存
export const getById = async (params) => {
return await request.get({ url: `/heli/storage-inventory/getById`, params })
}

View File

@ -144,6 +144,7 @@
<script setup lang="ts">
import download from '@/utils/download'
import * as PlanSchedule from '@/api/heli/planSchedule'
import * as processbomApi from '@/api/heli/processbom'
import { getIntDictOptions, getStrDictOptions, DICT_TYPE, getDictLabel } from '@/utils/dict'
import UserSelect from '@/views/heli/hlvuestyle/userSelect.vue'
import * as UserApi from '@/api/system/user'
@ -165,8 +166,6 @@ const queryParams = reactive({
projectSubName: undefined,
materialName: undefined,
owner: undefined,
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
@ -185,24 +184,11 @@ const formatDateT = (timestamp) => {
const getList = async () => {
loading.value = true
try {
const data = await PlanSchedule.getPlanBb(queryParams)
// const data = await processbomApi.getPlanBb(queryParams)
const data = await processbomApi.planBZJPage(queryParams)
console.log(data)
list.value = data.list
for(var i=0;i<list.value.length;i++){
if(list.value[i].bgAmount>0&&list.value[i].bgAmount<list.value[i].amount){
//
list.value[i].planType = 1;
// list.value[i].wgType = 0;
}else if(list.value[i].bgAmount>0&&list.value[i].bgAmount>=list.value[i].amount){
//
list.value[i].planType = 2;
// list.value[i].wgType = 1;
}else{
//
list.value[i].planType = 0;
// list.value[i].wgType = 0;
}
}
//list.value[0].shenheUser = 360
total.value = data.total
} finally {
loading.value = false

View File

@ -1688,14 +1688,15 @@ type="textarea" v-model="formData.activeOpinion" placeholder="请输入打回原
}
router.back()
} else {
saveDisabled.value = false
submitDisabled.value = false
//
query.active = 'update'
query.id = orderId
if (sumbefore.value == 0) {
reload()
await reload()
}
saveDisabled.value = false
submitDisabled.value = false
}
} catch (e) {
saveDisabled.value = false

View File

@ -59,6 +59,7 @@ import * as RgApi from "@/api/heli/rg";
import * as PnApi from "@/api/heli/pn";
import * as WarehouseApi from "@/api/heli/warehouse";
import * as StorageApi from '@/api/heli/storage'
import * as storageInventoryApi from '@/api/heli/storageinventory'
const { t } = useI18n() //
const message = useMessage() //
@ -77,7 +78,10 @@ const formData = ref({
materialId:undefined,
stockType:1,
})
const queryParams = reactive({
materialId: undefined,
whId: undefined,
})
const formRef = ref() // Ref
//
const whList = ref([])
@ -90,18 +94,25 @@ const handleWh = async (wid) => {
//
const dataRgList = await RgApi.getSimpList()
const dataPnList = await PnApi.getSimpList()
formData.value.rgId = '';
formData.value.pnId = '';
rgList.value = dataRgList.filter((rg) => rg.wh_id == wid)
pnList.value = dataPnList.filter((pn) => pn.wh_id == wid)
queryParams.whId=wid
var newVar = await storageInventoryApi.getById(queryParams);
if (newVar){
formData.value.rgId = newVar.rgId;
formData.value.pnId = newVar.pnId;
}else {
formData.value.rgId = '';
formData.value.pnId = '';
}
}
const handleRg = async () => {
//-------------------
const dataPnList = await PnApi.getSimpList()
formData.value.pnId = '';
console.log(formData.value.rgId)
pnList.value= dataPnList.filter((pn) => pn.rg_id == formData.value.rgId)
console.log(pnList.value)
//-------------------
}
/** 打开弹窗 */
@ -112,7 +123,7 @@ const open = async (id: number, purchaseOrderId: number,num:number,materialId:nu
formData.value.purchaseOrderId=purchaseOrderId;
formData.value.storageAmount=num;
formData.value.materialId=materialId;
console.log(formData.value)
queryParams.materialId=materialId
//-
whList.value = await WarehouseApi.getWarehouseSimpList()

View File

@ -470,6 +470,7 @@ import { getAccessToken, getTenantId } from '@/utils/auth'
import { useUserStore } from '@/store/modules/user'
import * as MaterialApi from '@/api/heli/material'
import * as WarehouseApi from '@/api/heli/warehouse'
import * as PurchaseordernodetailApi from '@/api/heli/purchaseordernodetail'
import * as RgApi from '@/api/heli/rg'
import * as PnApi from '@/api/heli/pn'
import { deleteFile, downloadFile, getFilePage } from '@/api/infra/file'
@ -508,7 +509,8 @@ const formData = ref({
cancel: undefined,
cancelTime: undefined,
matItemDOList: [],
attachments: []
attachments: [],
headerId:undefined,
})
const formRules = reactive({
// name: [{ required: true, message: '', trigger: 'blur' }],
@ -681,7 +683,7 @@ function limitTo20Chars(input) {
const handleSelectedProjectPurchaseorder = (arr) => {
if (arr) {
formData.value.headerNo = arr.purchaseNo
formData.value.headerId=arr.id
}
}
const openProjectForm = (scope) => {
@ -700,6 +702,9 @@ const getList = async (arrMat) => {
break;
}
}
if (formData.value.headerId){
noList.value = await PurchaseordernodetailApi.getPurchaseOrderNoDetailById(formData.value.headerId);
}
arrMat.forEach((row) => {
if (
formData.value.matItemDOList.filter(
@ -711,22 +716,32 @@ const getList = async (arrMat) => {
).length == 0
) {
row.matId = row.id
if (rgList.value.length==1){
// if (rgList.value.length==1){
row.rgId =rgList.value[0].id
}else {
row.rgId =''
}
// }else {
// row.rgId =''
// }
row.pnlist = ref([])
row.pnlist = pnList.value.filter((pn) => pn.rg_id == row.rgId)
if (row.pnlist.length == 1) {
// if (row.pnlist.length == 1) {
row.pnId = row.pnlist[0].id
}else if (pnList.value.length == 0) {
// }else
if (pnList.value.length == 0) {
flag=false
}else {
row.pnId=''
}
row.price=''
if (noList.value){
console.log(noList.value)
var filter = noList.value.filter((no)=>no.materialId==row.matId);
console.log(filter)
console.log(filter.unitPrice)
console.log(filter.purchaseAmount)
row.price=filter[0].unitPrice
row.storageOkQty=filter[0].purchaseAmount
console.log(row)
}else {
row.price=''
}
if (flag){
formData.value.matItemDOList.push(row)
}
@ -1055,6 +1070,8 @@ const whList = ref([])
const rgList = ref([])
//
const pnList = ref([])
//
const noList = ref([])
const handleWh = async (wid) => {
//-------------------
//

View File

@ -936,6 +936,13 @@ const open = async (id?: number) => {
}
})
if (taskitem.bgWorkTime){
formDataprocess.value.tablename[9].layingoff = taskitem.bgWorkTime
}
if (taskitem.workingHours){
formDataprocess.value.tablename[5].layingoff = taskitem.workingHours
}
} else if (Procedure.name == '电焊') {
summarylist.value[1].name = Procedure.name
if (!summarylist.value[1].data) {
@ -967,7 +974,12 @@ const open = async (id?: number) => {
} else {
}
}
if (taskitem.bgWorkTime){
formDataprocess.value.tablename[9].woodformer = taskitem.bgWorkTime
}
if (taskitem.workingHours){
formDataprocess.value.tablename[5].woodformer = taskitem.workingHours
}
} else if (Procedure.name == '编程') {
summarylist.value[2].name = Procedure.name
if (!summarylist.value[2].data) {
@ -999,7 +1011,12 @@ const open = async (id?: number) => {
} else {
}
}
if (taskitem.bgWorkTime){
formDataprocess.value.tablename[9].roughmill = taskitem.bgWorkTime
}
if (taskitem.workingHours){
formDataprocess.value.tablename[5].roughmill = taskitem.workingHours
}
} else if (Procedure.name == '铣床') {
summarylist.value[3].name = Procedure.name
if (!summarylist.value[3].data) {
@ -1031,7 +1048,12 @@ const open = async (id?: number) => {
} else {
}
}
if (taskitem.bgWorkTime){
formDataprocess.value.tablename[9].finishmill = taskitem.bgWorkTime
}
if (taskitem.workingHours){
formDataprocess.value.tablename[5].finishmill = taskitem.workingHours
}
} else if (Procedure.name == '车床') {
summarylist.value[4].name = Procedure.name
if (!summarylist.value[4].data) {
@ -1063,7 +1085,12 @@ const open = async (id?: number) => {
} else {
}
}
if (taskitem.bgWorkTime){
formDataprocess.value.tablename[9].lathe = taskitem.bgWorkTime
}
if (taskitem.workingHours){
formDataprocess.value.tablename[5].lathe = taskitem.workingHours
}
} else if (Procedure.name == '开粗') {
summarylist.value[5].name = Procedure.name
if (!summarylist.value[5].data) {
@ -1095,7 +1122,12 @@ const open = async (id?: number) => {
} else {
}
}
if (taskitem.bgWorkTime){
formDataprocess.value.tablename[9].treatment = taskitem.bgWorkTime
}
if (taskitem.workingHours){
formDataprocess.value.tablename[5].treatment = taskitem.workingHours
}
} else if (Procedure.name == '热处理') {
summarylist.value[5].name = Procedure.name
if (!summarylist.value[5].data) {
@ -1127,7 +1159,12 @@ const open = async (id?: number) => {
} else {
}
}
if (taskitem.bgWorkTime){
formDataprocess.value.tablename[9].grindingmachine = taskitem.bgWorkTime
}
if (taskitem.workingHours){
formDataprocess.value.tablename[5].grindingmachine = taskitem.workingHours
}
} else if (Procedure.name == '数控1') {
summarylist.value[6].name = Procedure.name
if (!summarylist.value[6].data) {
@ -1159,7 +1196,12 @@ const open = async (id?: number) => {
} else {
}
}
if (taskitem.bgWorkTime){
formDataprocess.value.tablename[9].wire = taskitem.bgWorkTime
}
if (taskitem.workingHours){
formDataprocess.value.tablename[5].wire = taskitem.workingHours
}
} else if (Procedure.name == '数控2') {
summarylist.value[7].name = Procedure.name
if (!summarylist.value[7].data) {
@ -1192,7 +1234,12 @@ const open = async (id?: number) => {
} else {
}
}
if (taskitem.bgWorkTime){
formDataprocess.value.tablename[9].rough = taskitem.bgWorkTime
}
if (taskitem.workingHours){
formDataprocess.value.tablename[5].rough = taskitem.workingHours
}
} else if (Procedure.name == '火花') {
summarylist.value[8].name = Procedure.name
if (!summarylist.value[8].data) {
@ -1224,7 +1271,12 @@ const open = async (id?: number) => {
} else {
}
}
if (taskitem.bgWorkTime){
formDataprocess.value.tablename[9].fashioning = taskitem.bgWorkTime
}
if (taskitem.workingHours){
formDataprocess.value.tablename[5].fashioning = taskitem.workingHours
}
} else if (Procedure.name == '刻字') {
summarylist.value[9].name = Procedure.name
if (!summarylist.value[9].data) {
@ -1256,7 +1308,12 @@ const open = async (id?: number) => {
} else {
}
}
if (taskitem.bgWorkTime){
formDataprocess.value.tablename[9].spark = taskitem.bgWorkTime
}
if (taskitem.workingHours){
formDataprocess.value.tablename[5].spark = taskitem.workingHours
}
} else if (Procedure.name == '网格') {
summarylist.value[9].name = Procedure.name
if (!summarylist.value[9].data) {
@ -1288,7 +1345,12 @@ const open = async (id?: number) => {
} else {
}
}
if (taskitem.bgWorkTime){
formDataprocess.value.tablename[9].lettering = taskitem.bgWorkTime
}
if (taskitem.workingHours){
formDataprocess.value.tablename[5].lettering = taskitem.workingHours
}
} else if (Procedure.name == '深孔钻') {
summarylist.value[10].name = Procedure.name
if (!summarylist.value[10].data) {
@ -1320,7 +1382,12 @@ const open = async (id?: number) => {
} else {
}
}
if (taskitem.bgWorkTime){
formDataprocess.value.tablename[9].electrowelding = taskitem.bgWorkTime
}
if (taskitem.workingHours){
formDataprocess.value.tablename[5].electrowelding = taskitem.workingHours
}
} else if (Procedure.name == '钻孔') {
summarylist.value[11].name = Procedure.name
if (!summarylist.value[11].data) {
@ -1352,7 +1419,12 @@ const open = async (id?: number) => {
} else {
}
}
if (taskitem.bgWorkTime){
formDataprocess.value.tablename[9].drill = taskitem.bgWorkTime
}
if (taskitem.workingHours){
formDataprocess.value.tablename[5].drill = taskitem.workingHours
}
} else if (Procedure.name == '磨床') {
summarylist.value[12].name = Procedure.name
if (!summarylist.value[12].data) {
@ -1385,7 +1457,12 @@ const open = async (id?: number) => {
} else {
}
}
if (taskitem.bgWorkTime){
formDataprocess.value.tablename[9].polishing = taskitem.bgWorkTime
}
if (taskitem.workingHours){
formDataprocess.value.tablename[5].polishing = taskitem.workingHours
}
}
})
}

View File

@ -46,35 +46,35 @@ const categoryList = ref([
{
path: "pgMaster",
name: "过程检报工",
auth: true,
auth: false,
imgUrl: "/static/images/guochengjian.png",
defaultImgUrl: "/static/images/assembleReport-default.png",
},
{
path: "zjPgMaster",
name: "终检报工",
auth: true,
auth: false,
imgUrl: "/static/images/zhongjian.png",
defaultImgUrl: "/static/images/assembleReport-default.png",
},
{
path: "moJuSheJiReport",
name: "进度上报",
auth: true,
auth: false,
imgUrl: "/static/images/mojusheji.png",
defaultImgUrl: "/static/images/assembleReport-default.png",
},
{
path: "cgdsp",
name: "采购单审批",
auth: true,
auth: false,
imgUrl: "/static/images/pic_cgdsp.png",
defaultImgUrl: "/static/images/assembleReport-default.png",
},
{
path: "messageNotification",
name: "消息通知",
auth: true,
auth: false,
imgUrl: "/static/images/pic_message.png",
defaultImgUrl: "/static/images/assembleReport-default.png",
unReadCount: 0, //
@ -82,10 +82,13 @@ const categoryList = ref([
{
path: "unqualifiedNotificationConfirm",
name: "品质异常确认",
auth: true,
imgUrl: "",
defaultImgUrl: "",
auth: false,
imgUrl: "/static/images/unqualifiedNotification.png",
defaultImgUrl: "/static/images/unqualifiedNotification-default.png",
},
]);
const categoryList1 = ref([
]);
const loginStore = useLoginStore();
const isLogin = computed(() => {
@ -118,8 +121,10 @@ const getHomeCategory = async () => {
const target = menus.find((q) => q.path == e.path);
e.auth = !!target;
});
console.log()
}
categoryList.value = categoryList.value.filter(item => item.auth == true);
categoryList1.value = categoryList.value.filter(item => item.auth == true);
const unReadCount = await getUnreadMessage();
@ -133,16 +138,16 @@ const getHomeCategory = async () => {
const unqualifiedNotificationCount = await countUnqualifiedNotification(query);
const unqualifiedNotificationCountConfirm = await countUnqualifiedNotificationConfirm(query1);
//
const cgdsp = categoryList.value.find(
const cgdsp = categoryList1.value.find(
(e) => e.path === "cgdsp"
);
const msgItem = categoryList.value.find(
const msgItem = categoryList1.value.find(
(e) => e.path === "messageNotification"
);
const unqualifiedNotificationItem = categoryList.value.find(
const unqualifiedNotificationItem = categoryList1.value.find(
(e) => e.path === "unqualifiedNotification"
);
const unqualifiedNotificationConfirm = categoryList.value.find(
const unqualifiedNotificationConfirm = categoryList1.value.find(
(e) => e.path === "unqualifiedNotificationConfirm"
);
if (cgdsp){
@ -178,7 +183,7 @@ const getHomeCategory = async () => {
<template v-else>
<CustomNavbar />
<view class="cont">
<CategoryPanel :list="categoryList" />
<CategoryPanel :list="categoryList1" />
<footRight />
</view>
</template>

View File

@ -6,8 +6,8 @@
* @FilePath: /hl-app/src/services/constants.ts
* @Description: ,`customMade`, koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
// export const serviceDomain = 'https://nxhs.cjyx.cc'
export const serviceDomain = 'https://nxhs.cjyx.cc'
// export const serviceDomain = 'https://star.hz-hl.com'
// export const serviceDomain = 'http://222.71.165.187:9010'
export const serviceDomain = 'http://localhost:8080'
// export const serviceDomain = 'http://localhost:8080'
// export const serviceDomain = 'https://nxhs.cjyx.cc'