diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/controller/PdmBiWorkmaterialController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/controller/PdmBiWorkmaterialController.java index 980d069f..65bf7a79 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/controller/PdmBiWorkmaterialController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/controller/PdmBiWorkmaterialController.java @@ -1,8 +1,21 @@ package org.nl.wms.analysis_manage.workmaterial.controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.dev33.satoken.annotation.SaIgnore; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import org.nl.common.TableDataInfo; +import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.analysis_manage.workmaterial.service.IPdmBiWorkmaterialService; +import org.nl.wms.analysis_manage.workmaterial.service.impl.WorkmaterialQty; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; /** *

@@ -13,8 +26,28 @@ import org.springframework.web.bind.annotation.RestController; * @since 2023-10-24 */ @RestController -@RequestMapping("/pdmBiWorkmaterial") +@RequestMapping("api/pdmBiWorkmaterial") public class PdmBiWorkmaterialController { + @Autowired + private IPdmBiWorkmaterialService workmaterialService; + + @GetMapping() + @Log("查询在制品日库存") + public ResponseEntity byMaterial(WorkmaterialQty query, PageQuery page) { + Page result = PageHelper.startPage(page.getPage() + 1, page.getSize()); + List list = workmaterialService.query(query); + TableDataInfo build = TableDataInfo.build(list); + build.setTotalElements(result.getTotal()); + return new ResponseEntity<>(build, HttpStatus.OK); + } + + @GetMapping("/sync") + @Log("同步日库区") + @SaIgnore + public ResponseEntity sync(String time){ + workmaterialService.syncQty(time); + return new ResponseEntity<>(HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/IPdmBiWorkmaterialService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/IPdmBiWorkmaterialService.java index 1dcc18d1..e5dc8be0 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/IPdmBiWorkmaterialService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/IPdmBiWorkmaterialService.java @@ -1,7 +1,12 @@ package org.nl.wms.analysis_manage.workmaterial.service; +import org.nl.wms.analysis_manage.scrapRate.service.dto.ScrapRateQuery; import org.nl.wms.analysis_manage.workmaterial.service.dao.PdmBiWorkmaterial; import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.analysis_manage.workmaterial.service.impl.WorkmaterialQty; + +import java.util.List; +import java.util.Map; /** *

@@ -13,4 +18,11 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IPdmBiWorkmaterialService extends IService { + /** + * 统计每天的工单物料 + */ + void syncQty(String time); + + List query(WorkmaterialQty query); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/dao/PdmBiWorkmaterial.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/dao/PdmBiWorkmaterial.java index a34cbdb6..10201042 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/dao/PdmBiWorkmaterial.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/dao/PdmBiWorkmaterial.java @@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import java.io.Serializable; -import lombok.Data; -import lombok.EqualsAndHashCode; + +import lombok.*; /** *

@@ -17,8 +17,10 @@ import lombok.EqualsAndHashCode; * @since 2023-10-24 */ @Data -@EqualsAndHashCode(callSuper = false) @TableName("pdm_bi_workmaterial") +@Builder +@NoArgsConstructor +@AllArgsConstructor public class PdmBiWorkmaterial implements Serializable { private static final long serialVersionUID = 1L; @@ -45,9 +47,29 @@ public class PdmBiWorkmaterial implements Serializable { private String workprocedure_id; /** - * 数量 + * 计划数量 */ - private BigDecimal qty; + private BigDecimal plan_qty; + /** + * 实际数量 + */ + private BigDecimal real_qty; + /** + * 电气数量 + */ + private BigDecimal dq_real_qty; + /** + * 今日计划数量 + */ + private BigDecimal today_plan_qty; + /** + * 今日实际数量 + */ + private BigDecimal today_real_qty; + /** + * 今日电气数量 + */ + private BigDecimal today_dq_real_qty; /** * 单位 @@ -58,6 +80,14 @@ public class PdmBiWorkmaterial implements Serializable { * 创建时间 */ private String create_time; + /** + * 需改时间 + */ + private String update_time; + /** + * 工单集合 + */ + private String workorder_code; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/dao/mapper/PdmBiWorkmaterialMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/dao/mapper/PdmBiWorkmaterialMapper.java index 85696cea..eb1700b1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/dao/mapper/PdmBiWorkmaterialMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/dao/mapper/PdmBiWorkmaterialMapper.java @@ -1,7 +1,13 @@ package org.nl.wms.analysis_manage.workmaterial.service.dao.mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import org.nl.wms.analysis_manage.workmaterial.service.dao.PdmBiWorkmaterial; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.analysis_manage.workmaterial.service.impl.WorkmaterialQty; + +import java.util.List; +import java.util.Map; /** *

@@ -13,4 +19,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface PdmBiWorkmaterialMapper extends BaseMapper { + + List selectDailyIvt(@Param("confirm_time") String confirm_time); + + @Select("select * from pdm_bi_workmaterial where create_time = (select create_time from pdm_bi_workmaterial where create_time < #{end_time} order by create_time desc limit 1)") + List selectLastData(@Param("end_time") String end_time); + + List query(@Param("qty")WorkmaterialQty qty); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/dao/mapper/xml/PdmBiWorkmaterialMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/dao/mapper/xml/PdmBiWorkmaterialMapper.xml index 7f41d6b9..0bd251c6 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/dao/mapper/xml/PdmBiWorkmaterialMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/dao/mapper/xml/PdmBiWorkmaterialMapper.xml @@ -2,4 +2,65 @@ + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/impl/PdmBiWorkmaterialServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/impl/PdmBiWorkmaterialServiceImpl.java index 855e9a7e..16e8ff43 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/impl/PdmBiWorkmaterialServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/impl/PdmBiWorkmaterialServiceImpl.java @@ -1,10 +1,31 @@ package org.nl.wms.analysis_manage.workmaterial.service.impl; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.lang3.StringUtils; import org.nl.wms.analysis_manage.workmaterial.service.dao.PdmBiWorkmaterial; import org.nl.wms.analysis_manage.workmaterial.service.dao.mapper.PdmBiWorkmaterialMapper; import org.nl.wms.analysis_manage.workmaterial.service.IPdmBiWorkmaterialService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.wms.masterdata_manage.storage.service.dailyStructivt.dao.StIvtStructivtDaily; +import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService; +import org.nl.wms.product_manage.service.workprocedure.dao.PdmBiWorkprocedure; +import org.nl.wms.scheduler_manage.service.scheduler.ISchProcessRouteService; +import org.nl.wms.scheduler_manage.service.scheduler.SchedulerService; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl.FlowElement; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** *

@@ -17,4 +38,54 @@ import org.springframework.stereotype.Service; @Service public class PdmBiWorkmaterialServiceImpl extends ServiceImpl implements IPdmBiWorkmaterialService { + @Autowired + private IPdmBiWorkprocedureService workprocedureService; + @Autowired + private SchedulerService schedulerService; + @Autowired + private ISchProcessRouteService schProcessRouteService; + + @Override + public void syncQty(String day) { + if (StringUtils.isEmpty(day)){ + day = DateUtil.today(); + } + List work_order = this.baseMapper.selectDailyIvt(day); + if (!CollectionUtils.isEmpty(work_order)){ + this.remove(new QueryWrapper().eq("create_time", day)); + List old = this.baseMapper.selectLastData(day); + List today = JSONArray.parseArray(JSON.toJSONString(work_order), PdmBiWorkmaterial.class); + Map groupMap = old.stream().collect(HashMap::new, (k, v) -> k.put(v.getWorkprocedure_id() + v.getMaterial_id(), v), HashMap::putAll); + List dbs = new ArrayList<>(); + for (PdmBiWorkmaterial item : today) { + PdmBiWorkmaterial target = new PdmBiWorkmaterial(); + BeanUtils.copyProperties(item,target); + String group_field = item.getWorkprocedure_id() + item.getMaterial_id(); + PdmBiWorkmaterial has = groupMap.remove(group_field); + if (has!=null){ + target.setToday_dq_real_qty(target.getDq_real_qty().add(has.getDq_real_qty())); + target.setToday_plan_qty(target.getReal_qty().add(has.getReal_qty())); + target.setToday_real_qty(target.getPlan_qty().add(has.getPlan_qty())); + }else { + target.setToday_dq_real_qty(target.getDq_real_qty()); + target.setToday_plan_qty(target.getReal_qty()); + target.setToday_real_qty(target.getPlan_qty()); + } + + dbs.add(target); + } + if (!CollectionUtils.isEmpty(groupMap)){ + dbs.addAll(groupMap.values()); + } + String finalDay = day; + dbs.forEach(a->a.setCreate_time(finalDay)); + this.saveBatch(dbs); + } + } + + + @Override + public List query(WorkmaterialQty query) { + return this.baseMapper.query(query); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/impl/WorkmaterialQty.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/impl/WorkmaterialQty.java new file mode 100644 index 00000000..2e66d582 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/analysis_manage/workmaterial/service/impl/WorkmaterialQty.java @@ -0,0 +1,45 @@ +package org.nl.wms.analysis_manage.workmaterial.service.impl; + +import lombok.Data; +import org.nl.common.domain.query.BaseQuery; +import org.nl.modules.common.utils.StringUtils; + +/* + * @author ZZQ + * @Date 2023/10/26 13:34 + */ +@Data +public class WorkmaterialQty extends BaseQuery { + + /** + * 车间 + */ + private String product_area; + + /** + * 物料id + */ + private String material_id; + + /** + * 工序id + */ + private String workprocedure_id; + + + private String[] create_time; + private String start_time; + private String end_time; + + public String[] getCreate_time() { + return create_time; + } + + public void setCreate_time(String[] create_time) { + this.create_time = create_time; + if (create_time!=null && create_time.length == 2){ + this.start_time = create_time[0]; + this.end_time =create_time[1]; + } + } +}