Fixiaobai
2023-11-17 2fb28b36f15de26249ae34160e1accf118c011c7
Changes16
已修改8个文件
已添加4个文件
173 ■■■■ 文件已修改
mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PartServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/java/com/chinaztt/mes/plan/controller/MasterProductionScheduleController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/java/com/chinaztt/mes/plan/entity/CustomerOrder.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/java/com/chinaztt/mes/plan/entity/ProcurementPlan.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/java/com/chinaztt/mes/plan/entity/RawMaterial.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/java/com/chinaztt/mes/plan/mapper/ProcurementPlanMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/java/com/chinaztt/mes/plan/mapper/RawMaterialMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/CustomerOrderServiceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/MasterProductionScheduleServiceImpl.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/java/com/chinaztt/mes/plan/vo/CustomerOrderVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/java/com/chinaztt/mes/plan/vo/CustomerOrderVO2.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/resources/mapper/CustomerOrderMapper.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PartServiceImpl.java
@@ -480,6 +480,7 @@
    //触发零件
    @Override
    public String triggerAdd(PartVo partVo) {
        log.info("接收主数据平台数据为===================》"+JSONObject.toJSONString(partVo));
        Part part = new Part();
        BeanUtils.copyProperties(partVo,part);
        //创建者
@@ -489,9 +490,9 @@
        //零件号
        part.setPartNo(partVo.getMaterial_number());
        //名称
        part.setPartName(partVo.getMaterial_name());
        part.setPartName(partVo.getMaterial_description());
        //零件描述
        part.setDescription(partVo.getMaterial_description());
        part.setDescription(partVo.getMaterial_name());
        //单位
        part.setUnit(partVo.getUnit());
        //一级分类
mes-plan/src/main/java/com/chinaztt/mes/plan/controller/MasterProductionScheduleController.java
@@ -15,7 +15,6 @@
import com.chinaztt.mes.technology.service.StructureService;
import com.chinaztt.ztt.common.core.util.R;
import com.chinaztt.ztt.common.log.annotation.SysLog;
import com.chinaztt.ztt.common.security.annotation.Inner;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
@@ -356,8 +355,8 @@
    @ApiOperation(value = "通过主计划查询ifs库存生产采购计划", notes = "通过主计划查询ifs库存生产采购计划")
    @PostMapping("/addPlanPurchasing")
    @Inner(value = false)
    public R addPlanPurchasing(@RequestParam(required = false) List<MasterProductionSchedule>masterProductionSchedules){
    //@Inner(value = false)
    public R addPlanPurchasing(@RequestBody List<MasterProductionSchedule>masterProductionSchedules){
        return R.ok(masterProductionScheduleService.addPlanPurchasing(masterProductionSchedules));
    }
mes-plan/src/main/java/com/chinaztt/mes/plan/entity/CustomerOrder.java
@@ -110,7 +110,7 @@
    private String partNo;
    @ApiModelProperty(value = "零件编号:用于生产的零件号")
    private String partId;
    private Long partId;
    /**
     * æ•°é‡
     */
mes-plan/src/main/java/com/chinaztt/mes/plan/entity/ProcurementPlan.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.chinaztt.mes.plan.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
 * @Author å¼ å®¾
 * @Date 2023/11/17
 */
@Data
@TableName("plan_procurement")
@ApiModel("采购计划")
@EqualsAndHashCode(callSuper = true)
public class ProcurementPlan extends Model<ProcurementPlan> {
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    private Long pLanPartId;
    private String partName;
    private BigDecimal requiresNum;
    private Long planId;
    private Integer state;
}
mes-plan/src/main/java/com/chinaztt/mes/plan/entity/RawMaterial.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.chinaztt.mes.plan.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
 * @Author å¼ å®¾
 * @Date 2023/11/17
 */
@Data
@TableName("plan_raw_material")
@ApiModel("采购计划")
@EqualsAndHashCode(callSuper = true)
public class RawMaterial extends Model<RawMaterial> {
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    private Long planId;
    private Long partId;
    private BigDecimal reservationNum;
}
mes-plan/src/main/java/com/chinaztt/mes/plan/mapper/ProcurementPlanMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.chinaztt.mes.plan.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chinaztt.mes.plan.entity.ProcurementPlan;
/**
 * @Author å¼ å®¾
 * @Date 2023/11/17
 */
public interface ProcurementPlanMapper extends BaseMapper<ProcurementPlan> {
}
mes-plan/src/main/java/com/chinaztt/mes/plan/mapper/RawMaterialMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.chinaztt.mes.plan.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chinaztt.mes.plan.entity.RawMaterial;
/**
 * @Author å¼ å®¾
 * @Date 2023/11/17
 */
public interface RawMaterialMapper extends BaseMapper<RawMaterial> {
}
mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/CustomerOrderServiceImpl.java
@@ -259,11 +259,14 @@
        if (isAudit.equals(AuditStateStringValues.ACCEPTED)) {
            //TODO: è¦åŠ é›¶ä»¶id参数
            Document document = documentMapper.selectById(customerOrder.getTechnologyDocumentId());
            Part part = partMapper.selectOne(Wrappers.<Part>lambdaQuery().eq(Part::getEngChgLevel, "1").eq(Part::getId,customerOrder.getPartId() ));
            if( null == document){
                throw new RuntimeException("缺少工艺文件");
            }
            Part part = partMapper.selectOne(Wrappers.<Part>lambdaQuery().eq(Part::getEngChgLevel, "1").eq(Part::getId,document.getPartId() ));
            if (null == part) {
                throw new RuntimeException("根据零件编号 = ã€" + customerOrder.getPartNo() + "】MES本地查无匹配零件对象");
            }
            if (!part.getMaterialType().equals("3") && null == document) {
            if (!"3".equals(part.getMaterialType())) {
                throw new RuntimeException("缺少工艺文件");
            }
            customerOrder.setCoState(CustomerOrderStateStringValues.PLAN);
@@ -347,6 +350,9 @@
    @Override
    public boolean createMasterProductionSchedule(List<CustomerOrderDTO> customerOrderDTOList) {
        customerOrderDTOList.forEach(c->{
            log.info("主生产计划------------>"+JSONObject.toJSONString(c));
        });
        List<Long> ids = customerOrderDTOList.stream().map(CustomerOrderDTO::getId).collect(Collectors.toList());
        Integer count = getBaseMapper().selectCount(Wrappers.<CustomerOrder>lambdaQuery()
                .ne(CustomerOrder::getIsAudit, AuditStateStringValues.ACCEPTED)
@@ -384,11 +390,12 @@
            masterProductionSchedule.setDocNumber(customerOrderDTO.getDocNumber());
            //需求数量
            masterProductionSchedule.setQtyRequired(qta);
            //需求日期
            masterProductionSchedule.setRequiredDate(customerOrderDTO.getDeliveryDate());
            //承诺日期
            masterProductionSchedule.setPromisedDeliveryDate(customerOrderDTO.getDeliveryDate());
            //备注
            masterProductionSchedule.setRemark(customerOrderDTO.getRemark());
            masterProductionSchedule.setQtyRequired(qta);
            //客户需求日期
            masterProductionSchedule.setRequiredDate(customerOrderDTO.getWantedDeliveryDate());
            masterProductionSchedule.setRemark(customerOrderDTO.getRemark());
            masterProductionSchedule.setSource("销售订单");
mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/MasterProductionScheduleServiceImpl.java
@@ -3,6 +3,7 @@
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -28,12 +29,14 @@
import com.chinaztt.mes.plan.state.masterproductionschedule.MasterProductionScheduleStateMachineConfig;
import com.chinaztt.mes.plan.state.masterproductionschedule.constant.MasterProductionScheduleEvents;
import com.chinaztt.mes.plan.state.masterproductionschedule.constant.MasterProductionScheduleStates;
import com.chinaztt.mes.technology.dto.BomDTO;
import com.chinaztt.mes.technology.dto.StructureTree;
import com.chinaztt.mes.technology.entity.Document;
import com.chinaztt.mes.technology.entity.JoinDocumentBomRouting;
import com.chinaztt.mes.technology.entity.Routing;
import com.chinaztt.mes.technology.entity.Structure;
import com.chinaztt.mes.technology.mapper.DocumentMapper;
import com.chinaztt.mes.technology.mapper.RoutingMapper;
import com.chinaztt.mes.technology.mapper.StructureMapper;
import com.chinaztt.mes.technology.mapper.*;
import com.chinaztt.mes.technology.service.BomService;
import com.chinaztt.mes.technology.service.DocumentService;
import com.chinaztt.mes.technology.state.document.constant.DocumentStates;
import com.chinaztt.ztt.admin.api.vo.TreeUtil;
@@ -88,6 +91,12 @@
    private StateMachineFactory<MasterProductionScheduleStates, MasterProductionScheduleEvents> masterproductionscheduleStateMachineFactory;
    private StateMachinePersister<MasterProductionScheduleStates, MasterProductionScheduleEvents, MasterProductionSchedule> persister;
    private MoStructureComponentMapper moStructureComponentMapper;
    private JoinDocumentBomRoutingMapper joinDocumentBomRoutingMapper;
    private BomComponentMapper bomComponentMapper;
    private BomService bomService;
    private ProcurementPlanMapper procurementPlanMapper;
    private RawMaterialMapper rawMaterialMapper;
    @Override
    public IPage<List<MasterProductionScheduleDTO>> getMasterProductionSchedulePage(Page page, QueryWrapper<MasterProductionScheduleDTO> masterProductionScheduleDTO) {
@@ -468,16 +477,19 @@
    @Override
    public boolean addPlanPurchasing(List<MasterProductionSchedule>masterProductionSchedules) {
        masterProductionSchedules.forEach(p->{
            System.out.println("----------------->"+p);
            Long technologyDocumentId = p.getTechnologyDocumentId();
            Document document = documentMapper.selectById(technologyDocumentId);
            Long firstPart = document.getPartId();
            JoinDocumentBomRouting joinDocumentBomRouting = joinDocumentBomRoutingMapper.selectOne(new QueryWrapper<JoinDocumentBomRouting>().lambda()
                    .eq(JoinDocumentBomRouting::getDocumentId, document.getId()).eq(JoinDocumentBomRouting::getPartId, firstPart));
            BomDTO bomDtoById = bomService.getBomDtoById(joinDocumentBomRouting.getBomId());
            StructureTree tree = bomDtoById.getTree();
            BigDecimal total=p.getQtyRequired().multiply(tree.getOriginalQpa());
            List<MoStructureComponent> moStructureComponents = moStructureComponentMapper.selectList(new QueryWrapper<MoStructureComponent>().lambda().eq(MoStructureComponent::getPlanManufacturingOrderId, p.getId()));
            moStructureComponents.forEach(m->{
                Part part = partMapper.selectById(m.getPartId());
                String url="http://192.168.20.47:8008/PurchService.ashx?contract=ZTKJ&contractKey=4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo=&procedureName=QUERY_INVENTORY_INFO_STD&userId=7632&inAttr={\"LOCATION_NO\": \"1019\",\"PART_NO\":"+part.getPartNo()+"}";
                String body = HttpRequest.get(url).execute().body();
                JSONObject partInfo = JSONObject.parseObject(body);
                log.info("库存零件==================================>"+partInfo);
            });
        });
        return false;
@@ -485,6 +497,24 @@
    public void getPlanPurchase(List<StructureTree> children,List<ProcurementPlan> planList,BigDecimal originalQpa,long planId){
        children.forEach(l->{
            String url="http://192.168.20.47:8008/PurchService.ashx?contract=ZTKJ&contractKey=4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo=&procedureName=QUERY_INVENTORY_INFO_STD&userId=7632&inAttr={\"LOCATION_NO\": \"1019\",\"PART_NO\":"+l.getPartNo()+"}";
            String body = HttpRequest.get(url).execute().body();
            JSONObject result = JSONObject.parseObject(body);
            log.info("库存零件==================================>"+result);
            JSONArray listInfo = result.getJSONArray("LIST_INFO");
            listInfo.forEach(i->{
                JSONObject data = JSONObject.parseObject(i.toString());
                //Ifs当前零件库存数量
                BigDecimal qtyOnhand = data.getBigDecimal("QTY_ONHAND");
                //需要生产多少数量
                BigDecimal multiply = l.getOriginalQpa().multiply(originalQpa);
                BigDecimal subtract = qtyOnhand.subtract(multiply);
            });
        });
    }
}
mes-plan/src/main/java/com/chinaztt/mes/plan/vo/CustomerOrderVO.java
@@ -10,6 +10,11 @@
public class CustomerOrderVO {
    /**
     * é›¶ä»¶Id
     */
    private Long partId;
    /**
     * é›¶ä»¶å·ï¼šç”¨äºŽç”Ÿäº§çš„零件号
     */
    @ApiModelProperty(value = "零件号:用于生产的零件号")
mes-plan/src/main/java/com/chinaztt/mes/plan/vo/CustomerOrderVO2.java
@@ -28,6 +28,9 @@
    //下单日期
    private LocalDateTime placeOrderDate;
    //客户需求时间
    private LocalDateTime wantedDeliveryDate;
    //交货时间
    private LocalDateTime deliveryDate;
mes-plan/src/main/resources/mapper/CustomerOrderMapper.xml
@@ -267,6 +267,7 @@
        <result property="deliveryDate" column="delivery_date"/>
        <result property="manufactureAttr" column="manufacture_attr"/>
        <result property="remark" column="remark"/>
        <result property="wantedDeliveryDate" column="wanted_delivery_date"/>
    </resultMap>
    <!-- éœ€è¦å¤„理 -->
@@ -295,7 +296,8 @@
        sales_man ,
        delivery_date,
        manufacture_attr,
        pco.remark
        pco.remark,
        wanted_delivery_date
        FROM
        plan_customer_order pco
        LEFT JOIN plan_customer pc ON pc."id" = pco.customer_id