Browse Source

2025-1-17

master
qiezi 1 year ago
parent
commit
6a0dba06d7
  1. 6
      src/main/java/com/spring/modules/quote/entity/QuoteDetailBom.java
  2. 33
      src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomTreeServiceImpl.java
  3. 18
      src/main/java/com/spring/modules/sys/entity/SysUserEntity.java
  4. 8
      src/main/java/com/spring/modules/sys/oauth2/OAuth2Realm.java
  5. 62
      src/main/resources/mapper/quote/QuoteDetailBomTreeMapper.xml

6
src/main/java/com/spring/modules/quote/entity/QuoteDetailBom.java

@ -94,4 +94,10 @@ public class QuoteDetailBom {
@TableField(exist = false) @TableField(exist = false)
private Boolean allTree; private Boolean allTree;
/**
* 状态 物料是否转正
*/
@TableField(exist = false)
private String status;
} }

33
src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomTreeServiceImpl.java

@ -1,10 +1,16 @@
package com.spring.modules.quote.service.impl; package com.spring.modules.quote.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.spring.ifs.bean.BaseSearchBean;
import com.spring.modules.part.entity.PartInformationEntity;
import com.spring.modules.part.vo.InventoryPartUnitCostSumVo;
import com.spring.modules.quote.entity.*; import com.spring.modules.quote.entity.*;
import com.spring.modules.quote.mapper.QuoteDetailBomTreeMapper; import com.spring.modules.quote.mapper.QuoteDetailBomTreeMapper;
import com.spring.modules.quote.service.*; import com.spring.modules.quote.service.*;
import com.spring.modules.sys.entity.SysUserEntity;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -25,6 +31,8 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl<QuoteDetailBomTre
private QuoteDetailRoutingService quoteDetailRoutingService; private QuoteDetailRoutingService quoteDetailRoutingService;
@Autowired @Autowired
private QuoteDetailToolService quoteDetailToolService; private QuoteDetailToolService quoteDetailToolService;
@Autowired
private BaseSearchBean baseSearchBean;
@Override @Override
@Transactional @Transactional
public void initQuoteDetailBomTree(QuoteDetail detail, Long parentId, Integer level) { public void initQuoteDetailBomTree(QuoteDetail detail, Long parentId, Integer level) {
@ -46,12 +54,12 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl<QuoteDetailBomTre
quoteDetailRoutingService.saveQuoteDetailRouting(routing); quoteDetailRoutingService.saveQuoteDetailRouting(routing);
} }
if (parentId.equals(0L)){ if (parentId.equals(0L)){
if (Objects.nonNull(routing)){
// 处理工具
// 1清空工具信息 // 1清空工具信息
quoteDetailToolService.lambdaUpdate() quoteDetailToolService.lambdaUpdate()
.eq(QuoteDetailTool::getQuoteDetailId, detail.getId()) .eq(QuoteDetailTool::getQuoteDetailId, detail.getId())
.remove(); .remove();
if (Objects.nonNull(routing)){
// 处理工具
// 2根据routing 生成工具信息 // 2根据routing 生成工具信息
quoteDetailToolService.saveToolByRouting(routing); quoteDetailToolService.saveToolByRouting(routing);
// 3插入一条其他工具信息 // 3插入一条其他工具信息
@ -68,6 +76,27 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl<QuoteDetailBomTre
component.setCreateBy(detail.getCreateBy()); component.setCreateBy(detail.getCreateBy());
component.setCreateDate(detail.getCreateDate()); component.setCreateDate(detail.getCreateDate());
QuoteDetail quoteDetail = createQuoteDetail(detail, component); QuoteDetail quoteDetail = createQuoteDetail(detail, component);
// Part是正式料号需要从IFS获得成本信息
if ("Y".equals(component.getStatus())){
SysUserEntity user = (SysUserEntity)SecurityUtils.getSubject().getPrincipal();
PartInformationEntity part = new PartInformationEntity();
part.setSite(component.getSite());
part.setPartNo(component.getPartNo());
Map<String, String> map = baseSearchBean.getInventoryValueByPartNo(user.getServer(), part);
if (Objects.equals(map.get("resultCode"),"200")){
// 返回成功 将成本
InventoryPartUnitCostSumVo unitCostSumVo = JSONObject.parseObject(map.get("obj"), InventoryPartUnitCostSumVo.class);
try {
BigDecimal unitCost = new BigDecimal(unitCostSumVo.getInventoryValue());
component.setUnitPrice(unitCost);
component.setActualPrice(unitCost);
component.setQuotePrice(unitCost);
}catch (Exception e){
log.error("PartNo:{},Site:{},成本信息异常:{}",component.getPartNo(),component.getSite(),e.getMessage());
}
}
}
// 物料是半成品
if (isComponentBom(quoteDetail)){ if (isComponentBom(quoteDetail)){
initQuoteDetailBomTree(quoteDetail ,bom.getId(),level+1); initQuoteDetailBomTree(quoteDetail ,bom.getId(),level+1);
} }

18
src/main/java/com/spring/modules/sys/entity/SysUserEntity.java

@ -6,9 +6,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.spring.common.utils.QueryPage; import com.spring.common.utils.QueryPage;
import com.spring.common.validator.group.AddGroup; import com.spring.common.validator.group.AddGroup;
import com.spring.common.validator.group.UpdateGroup; import com.spring.common.validator.group.UpdateGroup;
import ifs.fnd.ap.Server;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.io.Serializable; import java.io.Serializable;
@ -99,6 +102,21 @@ public class SysUserEntity extends QueryPage implements Serializable {
private String ifsPassword; private String ifsPassword;
/**
* IFS服务器 不转换成JSON
*/
@JsonIgnore
@TableField(exist=false)
private Server server;
public Server getServer() {
return server;
}
public void setServer(Server server) {
this.server = server;
}
public String getIfsUsername() { public String getIfsUsername() {
return ifsUsername; return ifsUsername;
} }

8
src/main/java/com/spring/modules/sys/oauth2/OAuth2Realm.java

@ -2,9 +2,11 @@
package com.spring.modules.sys.oauth2; package com.spring.modules.sys.oauth2;
import com.spring.ifs.api.IfsServer;
import com.spring.modules.sys.entity.SysUserEntity; import com.spring.modules.sys.entity.SysUserEntity;
import com.spring.modules.sys.entity.SysUserTokenEntity; import com.spring.modules.sys.entity.SysUserTokenEntity;
import com.spring.modules.sys.service.ShiroService; import com.spring.modules.sys.service.ShiroService;
import ifs.fnd.ap.Server;
import org.apache.shiro.authc.*; import org.apache.shiro.authc.*;
import org.apache.shiro.authz.AuthorizationInfo; import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo; import org.apache.shiro.authz.SimpleAuthorizationInfo;
@ -24,6 +26,8 @@ import java.util.Set;
public class OAuth2Realm extends AuthorizingRealm { public class OAuth2Realm extends AuthorizingRealm {
@Autowired @Autowired
private ShiroService shiroService; private ShiroService shiroService;
@Autowired
private IfsServer ifsServer;
@Override @Override
public boolean supports(AuthenticationToken token) { public boolean supports(AuthenticationToken token) {
@ -66,7 +70,9 @@ public class OAuth2Realm extends AuthorizingRealm {
if(user.getStatus() == 0){ if(user.getStatus() == 0){
throw new LockedAccountException("账号已被锁定,请联系管理员"); throw new LockedAccountException("账号已被锁定,请联系管理员");
} }
// 获取IFS服务器连接
Server server = ifsServer.getIfsServer(user.getIfsUsername(), user.getIfsPassword());
user.setServer(server);
SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user, accessToken, getName()); SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user, accessToken, getName());
return info; return info;
} }

62
src/main/resources/mapper/quote/QuoteDetailBomTreeMapper.xml

@ -62,41 +62,43 @@
</select> </select>
<select id="queryBomComponentPart" resultType="com.spring.modules.quote.entity.QuoteDetailBom"> <select id="queryBomComponentPart" resultType="com.spring.modules.quote.entity.QuoteDetailBom">
select site,
select pbc.site,
#{buNo} as bu_no, #{buNo} as bu_no,
part_no,
eng_chg_level,
bom_type,
alternative_no,
component_part,
print_unit,
qty_per_assembly,
component_scrap,
issue_type,
shrinkage_factor,
line_item_no,
operation_no as operation_id,
issue_to_loc,
note_text,
create_date,
create_by,
line_sequence,
consumption_item,
dbo.get_part_unitCost(site, component_part) as unit_price,
dbo.get_part_unitCost(site, component_part) as actual_price,
dbo.get_part_unitCost(site, component_part) as quote_price,
pbc.part_no,
pbc.eng_chg_level,
pbc.bom_type,
pbc.alternative_no,
pbc.component_part,
pbc.print_unit,
pbc.qty_per_assembly,
pbc.component_scrap,
pbc.issue_type,
pbc.shrinkage_factor,
pbc.line_item_no,
pbc.operation_no as operation_id,
pbc.issue_to_loc,
pbc.note_text,
pbc.create_date,
pbc.create_by,
pbc.line_sequence,
pbc.consumption_item,
dbo.get_part_unitCost(pbc.site, pbc.component_part) as unit_price,
dbo.get_part_unitCost(pbc.site, pbc.component_part) as actual_price,
dbo.get_part_unitCost(pbc.site, pbc.component_part) as quote_price,
#{quoteId} as quote_id, #{quoteId} as quote_id,
#{quoteNo} as quote_no, #{quoteNo} as quote_no,
#{quoteDetailId} as quote_detail_id, #{quoteDetailId} as quote_detail_id,
#{quoteDetailItemNo} as quote_detail_item_no, #{quoteDetailItemNo} as quote_detail_item_no,
#{versionNo} as version_no
from plm_bom_component
where site = #{site}
and part_no = #{partNo}
and bom_type = #{bomType}
and eng_chg_level = #{engChgLevel}
and alternative_no = #{alternativeNo}
and qty_per_assembly >= 0
#{versionNo} as version_no,
p.status
from plm_bom_component pbc
left join part p on p.site = pbc.site and p.part_no = pbc.component_part
where pbc.site = #{site}
and pbc.part_no = #{partNo}
and pbc.bom_type = #{bomType}
and pbc.eng_chg_level = #{engChgLevel}
and pbc.alternative_no = #{alternativeNo}
and pbc.qty_per_assembly >= 0
</select> </select>
<select id="queryDetailBomVersion" resultType="com.spring.modules.quote.entity.QuoteDetailBomTree"> <select id="queryDetailBomVersion" resultType="com.spring.modules.quote.entity.QuoteDetailBomTree">
select bom.site, select bom.site,

Loading…
Cancel
Save