国家库实时更新,库存出库问题

busUser
anthonywj 2 years ago
parent 9aaa0ea97e
commit 6bd4a46d60

@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.SecureUtil;
import com.glxp.api.admin.annotation.Log; import com.glxp.api.admin.annotation.Log;
import com.glxp.api.admin.constant.BusinessType; import com.glxp.api.admin.constant.BusinessType;
import com.glxp.api.admin.constant.Constant;
import com.glxp.api.admin.entity.auth.AuthCheckEntity; import com.glxp.api.admin.entity.auth.AuthCheckEntity;
import com.glxp.api.admin.entity.info.DeviceKeyEntity; import com.glxp.api.admin.entity.info.DeviceKeyEntity;
import com.glxp.api.admin.entity.inventory.InvSubWarehouseEntity; import com.glxp.api.admin.entity.inventory.InvSubWarehouseEntity;
@ -17,6 +18,7 @@ import com.glxp.api.admin.service.auth.AuthCheckService;
import com.glxp.api.admin.service.auth.DeviceKeyService; import com.glxp.api.admin.service.auth.DeviceKeyService;
import com.glxp.api.admin.service.inventory.InvSubWarehouseService; import com.glxp.api.admin.service.inventory.InvSubWarehouseService;
import com.glxp.api.admin.service.inventory.InvWarehouseService; import com.glxp.api.admin.service.inventory.InvWarehouseService;
import com.glxp.api.admin.service.monitor.LogininforService;
import com.glxp.api.admin.util.*; import com.glxp.api.admin.util.*;
import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.res.BaseResponse;
@ -58,13 +60,14 @@ public class LoginController {
private AuthCheckService authCheckService; private AuthCheckService authCheckService;
@Resource @Resource
DeviceKeyService deviceKeyService; DeviceKeyService deviceKeyService;
@Resource
private LogininforService logininforService;
/** /**
* *
* *
* @return * @return
*/ */
@Log(title = "用户登录")
@PostMapping(value = "/login") @PostMapping(value = "/login")
public BaseResponse index(@RequestBody @Valid LoginRequest loginRequest, public BaseResponse index(@RequestBody @Valid LoginRequest loginRequest,
BindingResult bindingResult, BindingResult bindingResult,
@ -78,7 +81,7 @@ public class LoginController {
throw new JsonException(ResultEnum.DATA_NOT, "用户名或密码错误"); throw new JsonException(ResultEnum.DATA_NOT, "用户名或密码错误");
} }
if (StrUtil.isEmpty(loginRequest.getImei())) { if (StrUtil.isEmpty(loginRequest.getImei())) {
if (!PasswordUtils.authAdminPwd(loginRequest.getPassword()).equals(SecureUtil.md5().digestHex(authAdmin.getPassWord()))) { if (!PasswordUtils.authAdminPwd(loginRequest.getPassword()).equals(SecureUtil.sha256(authAdmin.getPassWord()))) {
throw new JsonException(ResultEnum.DATA_NOT, "用户名或密码错误"); throw new JsonException(ResultEnum.DATA_NOT, "用户名或密码错误");
} }
} else { } else {
@ -115,7 +118,7 @@ public class LoginController {
Map<String, Object> claims = new HashMap<>(); Map<String, Object> claims = new HashMap<>();
claims.put("admin_id", authAdmin.getId()); claims.put("admin_id", authAdmin.getId());
String token = JwtUtils.createToken(claims, 86400L); // 一天后过期 String token = JwtUtils.createToken(claims, 1800l); // 一天后过期
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("id", authAdmin.getId()); map.put("id", authAdmin.getId());
@ -128,6 +131,7 @@ public class LoginController {
loginResponse.setDeptName(authAdmin.getDeptName()); loginResponse.setDeptName(authAdmin.getDeptName());
loginResponse.setNeedChangePwd(cn.hutool.core.date.DateUtil.between(authAdmin.getLastUpdatePwdTime() == null ? cn.hutool.core.date.DateUtil.date() : authAdmin.getLastUpdatePwdTime() loginResponse.setNeedChangePwd(cn.hutool.core.date.DateUtil.between(authAdmin.getLastUpdatePwdTime() == null ? cn.hutool.core.date.DateUtil.date() : authAdmin.getLastUpdatePwdTime()
, cn.hutool.core.date.DateUtil.date(), DateUnit.DAY) >= 90); , cn.hutool.core.date.DateUtil.date(), DateUnit.DAY) >= 90);
logininforService.recordLogininfor(authAdmin.getEmployeeName(), Constant.LOGIN_SUCCESS, "登录成功!", request);
return ResultVOUtils.success(loginResponse); return ResultVOUtils.success(loginResponse);
} }
@ -223,7 +227,6 @@ public class LoginController {
* *
* @return * @return
*/ */
@Log(title = "获取登录用户信息")
@AuthRuleAnnotation("") @AuthRuleAnnotation("")
@GetMapping("/admin/auth/login/userInfo") @GetMapping("/admin/auth/login/userInfo")
public BaseResponse userInfo(HttpServletRequest request) { public BaseResponse userInfo(HttpServletRequest request) {
@ -258,7 +261,7 @@ public class LoginController {
* *
* @return * @return
*/ */
@Log(title = "修改密码",businessType = BusinessType.UPDATE) @Log(title = "修改密码", businessType = BusinessType.UPDATE)
@AuthRuleAnnotation("") // 需要登录验证,但是不需要权限验证时,value 值填空字符串 @AuthRuleAnnotation("") // 需要登录验证,但是不需要权限验证时,value 值填空字符串
@PostMapping("/admin/auth/login/password") @PostMapping("/admin/auth/login/password")
public BaseResponse password(@RequestBody @Valid UpdatePasswordRequest updatePasswordRequest, public BaseResponse password(@RequestBody @Valid UpdatePasswordRequest updatePasswordRequest,

@ -78,8 +78,12 @@ public interface UdiRelevanceDao {
/** /**
* UUID * UUID
*
* @param relId * @param relId
* @return * @return
*/ */
String selectUuidById(String relId); String selectUuidById(String relId);
List<UdiRelevanceEntity> selectGroupByNameCode(@Param("nameCode") String nameCode);
} }

@ -4,6 +4,7 @@ import com.glxp.api.admin.entity.basic.UdiRelevanceEntity;
import com.glxp.api.admin.req.basic.FilterUdiInfoRequest; import com.glxp.api.admin.req.basic.FilterUdiInfoRequest;
import com.glxp.api.admin.req.basic.UdiRelevanceRequest; import com.glxp.api.admin.req.basic.UdiRelevanceRequest;
import com.glxp.api.admin.res.basic.UdiRelevanceResponse; import com.glxp.api.admin.res.basic.UdiRelevanceResponse;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -64,8 +65,11 @@ public interface UdiRelevanceService {
/** /**
* uuid * uuid
*
* @param relId * @param relId
* @return * @return
*/ */
String findUuidById(String relId); String findUuidById(String relId);
List<UdiRelevanceEntity> selectGroupByNameCode(@Param("nameCode") String nameCode);
} }

@ -324,4 +324,9 @@ public class UdiRelevanceServiceImpl implements UdiRelevanceService {
public String findUuidById(String relId) { public String findUuidById(String relId) {
return udiRelevanceDao.selectUuidById(relId); return udiRelevanceDao.selectUuidById(relId);
} }
@Override
public List<UdiRelevanceEntity> selectGroupByNameCode(String nameCode) {
return udiRelevanceDao.selectGroupByNameCode(nameCode);
}
} }

@ -9,6 +9,7 @@ import com.glxp.api.admin.dao.business.InvSpaceDao;
import com.glxp.api.admin.dao.inventory.InvProductDetailDao; import com.glxp.api.admin.dao.inventory.InvProductDetailDao;
import com.glxp.api.admin.entity.basic.UdiEntity; import com.glxp.api.admin.entity.basic.UdiEntity;
import com.glxp.api.admin.entity.basic.UdiInfoEntity; import com.glxp.api.admin.entity.basic.UdiInfoEntity;
import com.glxp.api.admin.entity.basic.UdiRelevanceEntity;
import com.glxp.api.admin.entity.inout.IoCodeLostEntity; import com.glxp.api.admin.entity.inout.IoCodeLostEntity;
import com.glxp.api.admin.entity.inout.WarehouseEntity; import com.glxp.api.admin.entity.inout.WarehouseEntity;
import com.glxp.api.admin.entity.inventory.InvProductDetailEntity; import com.glxp.api.admin.entity.inventory.InvProductDetailEntity;
@ -28,6 +29,7 @@ import com.glxp.api.common.util.ResultVOUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@ -158,6 +160,7 @@ public class InvProductDetailServiceImpl implements InvProductDetailService {
List<UdiInfoEntity> udiInfoEntities = udiInfoService.findByUuids(udiInfoBean.getUuid()); List<UdiInfoEntity> udiInfoEntities = udiInfoService.findByUuids(udiInfoBean.getUuid());
if (udiInfoBean != null) { if (udiInfoBean != null) {
for (UdiInfoEntity udiInfoEntity : udiInfoEntities) { for (UdiInfoEntity udiInfoEntity : udiInfoEntities) {
udiInfoEntity.setRelId(udiInfoBean.getId() + "");
if (udiInfoBean.getIsUseDy() == 1) { if (udiInfoBean.getIsUseDy() == 1) {
if (udiInfoEntity.getDiType() == ConstantStatus.DITYPE_SYDY) { if (udiInfoEntity.getDiType() == ConstantStatus.DITYPE_SYDY) {
return udiInfoEntity; return udiInfoEntity;
@ -167,7 +170,7 @@ public class InvProductDetailServiceImpl implements InvProductDetailService {
return udiInfoEntity; return udiInfoEntity;
} }
} }
udiInfoEntity.setRelId(udiInfoBean.getId() + "");
} }
} }
return null; return null;
@ -181,37 +184,36 @@ public class InvProductDetailServiceImpl implements InvProductDetailService {
if (StrUtil.isEmpty(code)) { if (StrUtil.isEmpty(code)) {
return 0; return 0;
} }
IoCodeLostEntity codeLostEntity = codeLostService.findByCode(code); IoCodeLostEntity codeLostEntity = codeLostService.findByCode(code);
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest(); FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
UdiInfoEntity udiInfoEntity = getMinDi(code); UdiInfoEntity udiInfoEntity = getMinDi(code);
UdiEntity udiEntity = FilterUdiUtils.getUdi(code); UdiEntity udiEntity = FilterUdiUtils.getUdi(code);
if (codeLostEntity != null) { if (StrUtil.isEmpty(udiEntity.getBatchNo()) && codeLostEntity != null) {
udiEntity.setBatchNo(codeLostEntity.getBatchNo()); udiEntity.setBatchNo(codeLostEntity.getBatchNo());
udiEntity.setExpireDate(codeLostEntity.getExpireDate());
udiEntity.setProduceDate(codeLostEntity.getProduceDate());
} }
if (StrUtil.isEmpty(udiEntity.getBatchNo())) {
if (udiInfoEntity.getDiType() == ConstantStatus.DITYPE_PACK || udiInfoEntity.getDiType() == ConstantStatus.DITYPE_SYDY udiEntity.setBatchNo("empty");
|| (udiInfoEntity.getSjcpbm() != null && !"".equals(udiInfoEntity.getSjcpbm()))) {
udiEntity.setUdi(udiInfoEntity.getNameCode());
code = FilterUdiUtils.transGlxpNoSerStr(udiEntity);
} }
udiEntity.setUdi(udiInfoEntity.getNameCode());
String glxpCode = FilterUdiUtils.transGlxpNoSerStr(udiEntity);
filterInvProductDetailRequest.setOriginCode(null); filterInvProductDetailRequest.setOriginCode(null);
filterInvProductDetailRequest.setCode(code); List<InvProductDetailEntity> datas = new ArrayList<>();
if (StrUtil.isNotEmpty(udiEntity.getBatchNo())) //1.根据产品ID获取库存
List<UdiRelevanceEntity> udiRelevanceEntities = udiRelevanceService.selectGroupByNameCode(udiEntity.getUdi());
if (CollUtil.isNotEmpty(udiRelevanceEntities) && udiRelevanceEntities.size() == 1) {
filterInvProductDetailRequest.setProductIdFk(udiRelevanceEntities.get(0).getId());
filterInvProductDetailRequest.setBatchNo(udiEntity.getBatchNo()); filterInvProductDetailRequest.setBatchNo(udiEntity.getBatchNo());
else datas = invProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest);
filterInvProductDetailRequest.setBatchNo("empty"); } else {
filterInvProductDetailRequest.setProductionDate(udiEntity.getProduceDate()); filterInvProductDetailRequest.setCode(glxpCode);
filterInvProductDetailRequest.setExpireDate(udiEntity.getExpireDate()); datas = invProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest);
List<InvProductDetailEntity> if (CollUtil.isEmpty(datas)) {
filterInvProductDetailRequest.setCode(code);
datas = invProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest); datas = invProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest);
// } }
}
int count = 0; int count = 0;
if (CollUtil.isNotEmpty(datas)) { if (CollUtil.isNotEmpty(datas)) {
for (InvProductDetailEntity invProductDetailEntity : datas) { for (InvProductDetailEntity invProductDetailEntity : datas) {
if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT)) if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT))
count = count + invProductDetailEntity.getCount(); count = count + invProductDetailEntity.getCount();

@ -1,6 +1,6 @@
server.port=9992 server.port=9992
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.jdbc-url=jdbc:mysql://127.0.0.1:3306/udiwms_yxz?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true spring.datasource.jdbc-url=jdbc:mysql://127.0.0.1:3306/udiwms_ph1?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=root spring.datasource.username=root
spring.datasource.password=123456 spring.datasource.password=123456
spring.datasource.hikari.connection-timeout=60000 spring.datasource.hikari.connection-timeout=60000

@ -78,8 +78,8 @@
basic_products.basicPrductRemak8, basic_products.basicPrductRemak8,
basic_products.hchzsb basic_products.hchzsb
FROM basic_udirel FROM basic_udirel
inner JOIN basic_products inner JOIN basic_products
ON basic_products.uuid = basic_udirel.uuid ON basic_products.uuid = basic_udirel.uuid
<where> <where>
<if test="ylqxzcrbarmc != '' and ylqxzcrbarmc != null"> <if test="ylqxzcrbarmc != '' and ylqxzcrbarmc != null">
AND ylqxzcrbarmc LIKE concat('%', #{ylqxzcrbarmc}, '%') AND ylqxzcrbarmc LIKE concat('%', #{ylqxzcrbarmc}, '%')
@ -218,11 +218,11 @@
basic_products.basicPrductRemak8, basic_products.basicPrductRemak8,
basic_products.hchzsb basic_products.hchzsb
FROM basic_udirel FROM basic_udirel
inner JOIN basic_products inner JOIN basic_products
ON basic_products.uuid = basic_udirel.uuid ON basic_products.uuid = basic_udirel.uuid
left join company_product_relevance left join company_product_relevance
on basic_udirel.id = company_product_relevance.udiRlIdFk on basic_udirel.id = company_product_relevance.udiRlIdFk
left JOIN basic_corp on basic_corp.erpId = company_product_relevance.customerId left JOIN basic_corp on basic_corp.erpId = company_product_relevance.customerId
<where> <where>
<if test="ylqxzcrbarmc != '' and ylqxzcrbarmc != null"> <if test="ylqxzcrbarmc != '' and ylqxzcrbarmc != null">
AND ylqxzcrbarmc LIKE concat('%', #{ylqxzcrbarmc}, '%') AND ylqxzcrbarmc LIKE concat('%', #{ylqxzcrbarmc}, '%')
@ -361,9 +361,9 @@
basic_products.basicPrductRemak7, basic_products.basicPrductRemak7,
basic_products.basicPrductRemak8, basic_products.basicPrductRemak8,
basic_products.hchzsb basic_products.hchzsb
FROM basic_products FROM basic_products
right JOIN basic_udirel right JOIN basic_udirel
ON basic_products.uuid = basic_udirel.uuid ON basic_products.uuid = basic_udirel.uuid
<if test="supId != null and supId != ''"> <if test="supId != null and supId != ''">
left join company_product_relevance on basic_udirel.id = company_product_relevance.udiRlIdFk left join company_product_relevance on basic_udirel.id = company_product_relevance.udiRlIdFk
</if> </if>
@ -390,15 +390,15 @@
<if test="unionCode != '' and unionCode != null"> <if test="unionCode != '' and unionCode != null">
and ( and (
nameCode LIKE concat('%', #{unionCode}, '%') nameCode LIKE concat('%', #{unionCode}, '%')
or basic_udirel.ybbm LIKE concat('%', #{unionCode}, '%') or basic_udirel.ybbm LIKE concat('%', #{unionCode}, '%')
or basic_udirel.sptm LIKE concat('%', #{unionCode}, '%')) or basic_udirel.sptm LIKE concat('%', #{unionCode}, '%'))
</if> </if>
<if test="thrPiId != '' and thrPiId != null"> <if test="thrPiId != '' and thrPiId != null">
and (thirdId LIKE concat('%', #{thrPiId}, '%') and (thirdId LIKE concat('%', #{thrPiId}, '%')
or thirdId1 LIKE concat('%', #{thrPiId}, '%') or thirdId1 LIKE concat('%', #{thrPiId}, '%')
or thirdId2 LIKE concat('%', #{thrPiId}, '%') or thirdId2 LIKE concat('%', #{thrPiId}, '%')
or thirdId3 LIKE concat('%', #{thrPiId}, '%') or thirdId3 LIKE concat('%', #{thrPiId}, '%')
or thirdId4 LIKE concat('%', #{thrPiId}, '%')) or thirdId4 LIKE concat('%', #{thrPiId}, '%'))
</if> </if>
<if test="uuid != '' and uuid != null"> <if test="uuid != '' and uuid != null">
AND basic_udirel.uuid = #{uuid} AND basic_udirel.uuid = #{uuid}
@ -487,7 +487,7 @@
resultType="com.glxp.api.admin.entity.basic.UdiRelevanceEntity"> resultType="com.glxp.api.admin.entity.basic.UdiRelevanceEntity">
select * select *
from basic_udirel from basic_udirel
INNER JOIN basic_products on basic_udirel.uuid = basic_products.uuid INNER JOIN basic_products on basic_udirel.uuid = basic_products.uuid
<where> <where>
<if test="uuid != '' and uuid != null"> <if test="uuid != '' and uuid != null">
AND basic_udirel.uuid = #{uuid} AND basic_udirel.uuid = #{uuid}
@ -571,6 +571,16 @@
</select> </select>
<select id="selectGroupByNameCode" parameterType="com.glxp.api.admin.req.basic.FilterUdiInfoRequest"
resultType="com.glxp.api.admin.entity.basic.UdiRelevanceEntity">
select *
FROM basic_udirel
inner join basic_products
on basic_udirel.uuid = basic_products.uuid
where basic_products.nameCode = #{nameCode}
group by basic_udirel.id
</select>
<select id="filterEntity" parameterType="com.glxp.api.admin.req.basic.FilterUdiInfoRequest" <select id="filterEntity" parameterType="com.glxp.api.admin.req.basic.FilterUdiInfoRequest"
resultType="com.glxp.api.admin.entity.basic.UdiRelevanceEntity"> resultType="com.glxp.api.admin.entity.basic.UdiRelevanceEntity">
select * select *
@ -609,12 +619,13 @@
<insert id="insertUdiRelevance" keyProperty="id" parameterType="com.glxp.api.admin.entity.basic.UdiRelevanceEntity"> <insert id="insertUdiRelevance" keyProperty="id" parameterType="com.glxp.api.admin.entity.basic.UdiRelevanceEntity">
replace replace
INTO basic_udirel INTO basic_udirel
(id, (id,
thirdId, thirdName, uuid, isUseDy, updateTime, modifyTime, thirdId, thirdName, uuid, isUseDy, updateTime, modifyTime,
thirdId1, thirdId2, thirdId3, thirdId4, thirdName1, thirdName2, thirdName3, thirdName4, manufactory, measname, thirdId1, thirdId2, thirdId3, thirdId4, thirdName1, thirdName2, thirdName3, thirdName4, manufactory,
ybbm, sptm, isDisable, isLock measname,
, mainId, mainName, lockStatus, udplatCode, isAdavence, supName, price, dispatch, groupBuy) ybbm, sptm, isDisable, isLock
, mainId, mainName, lockStatus, udplatCode, isAdavence, supName, price, dispatch, groupBuy)
values (#{id}, values (#{id},
#{thirdId}, #{thirdId},
#{thirdName}, #{thirdName},
@ -647,13 +658,15 @@
<insert id="insertUdiRelevanceignore" keyProperty="id" <insert id="insertUdiRelevanceignore" keyProperty="id"
parameterType="com.glxp.api.admin.entity.basic.UdiRelevanceEntity"> parameterType="com.glxp.api.admin.entity.basic.UdiRelevanceEntity">
insert insert
ignore ignore
INTO basic_udirel INTO basic_udirel
(id, (id,
thirdId, thirdName, uuid, isUseDy, updateTime, thirdId, thirdName, uuid, isUseDy, updateTime,
thirdId1, thirdId2, thirdId3, thirdId4, thirdName1, thirdName2, thirdName3, thirdName4, manufactory, measname, thirdId1, thirdId2, thirdId3, thirdId4, thirdName1, thirdName2, thirdName3, thirdName4, manufactory,
ybbm, sptm, isDisable, isLock measname,
, mainId, mainName, lockStatus, udplatCode, isAdavence, supName, price, modifyTime, dispatch, groupBuy) ybbm, sptm, isDisable, isLock
, mainId, mainName, lockStatus, udplatCode, isAdavence, supName, price, modifyTime, dispatch,
groupBuy)
values (#{id}, values (#{id},
#{thirdId}, #{thirdId},
#{thirdName}, #{thirdName},
@ -816,7 +829,7 @@
thirdId4, thirdName1, thirdName2, thirdName3, thirdName4, ybbm, sptm, manufactory, thirdId4, thirdName1, thirdName2, thirdName3, thirdName4, ybbm, sptm, manufactory,
measname, isDisable, mainId, mainName, udplatCode, supName, price, modifyTime, measname, isDisable, mainId, mainName, udplatCode, supName, price, modifyTime,
dispatch, groupBuy) dispatch, groupBuy)
values values
<foreach collection="udiRelevanceEntities" item="item" index="index" separator=","> <foreach collection="udiRelevanceEntities" item="item" index="index" separator=",">
(#{item.id}, (#{item.id},
#{item.thirdId}, #{item.thirdId},

Loading…
Cancel
Save