123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823 |
- package com.jsh.erp.controller;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.jsh.erp.base.BaseController;
- import com.jsh.erp.base.TableDataInfo;
- import com.jsh.erp.datasource.entities.Material;
- import com.jsh.erp.datasource.entities.MaterialExtend;
- import com.jsh.erp.datasource.entities.MaterialVo4Unit;
- import com.jsh.erp.datasource.entities.Unit;
- import com.jsh.erp.service.DepotService;
- import com.jsh.erp.service.DepotItemService;
- import com.jsh.erp.service.MaterialService;
- import com.jsh.erp.service.RoleService;
- import com.jsh.erp.service.SystemConfigService;
- import com.jsh.erp.service.UnitService;
- import com.jsh.erp.service.UserService;
- import com.jsh.erp.utils.*;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.web.bind.annotation.*;
- import org.springframework.web.multipart.MultipartFile;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.math.BigDecimal;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import static com.jsh.erp.utils.ResponseJsonUtil.returnJson;
- import static com.jsh.erp.utils.ResponseJsonUtil.returnStr;
- /**
- * @author ji|sheng|hua jshERP
- */
- @RestController
- @RequestMapping(value = "/material")
- @Api(tags = {"商品管理"})
- public class MaterialController extends BaseController {
- private Logger logger = LoggerFactory.getLogger(MaterialController.class);
- @Resource
- private MaterialService materialService;
- @Resource
- private DepotItemService depotItemService;
- @Resource
- private SystemConfigService systemConfigService;
- @Resource
- private UnitService unitService;
- @Resource
- private DepotService depotService;
- @Resource
- private RoleService roleService;
- @Resource
- private UserService userService;
- @Value(value="${file.uploadType}")
- private Long fileUploadType;
- @GetMapping(value = "/info")
- @ApiOperation(value = "根据id获取信息")
- public String getList(@RequestParam("id") Long id,
- HttpServletRequest request) throws Exception {
- Material material = materialService.getMaterial(id);
- Map<String, Object> objectMap = new HashMap<>();
- if(material != null) {
- objectMap.put("info", material);
- return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code);
- } else {
- return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code);
- }
- }
- @GetMapping(value = "/list")
- @ApiOperation(value = "获取信息列表")
- public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search,
- HttpServletRequest request)throws Exception {
- String categoryId = StringUtil.getInfo(search, "categoryId");
- String materialParam = StringUtil.getInfo(search, "materialParam");
- String standard = StringUtil.getInfo(search, "standard");
- String model = StringUtil.getInfo(search, "model");
- String color = StringUtil.getInfo(search, "color");
- String brand = StringUtil.getInfo(search, "brand");
- String mfrs = StringUtil.getInfo(search, "mfrs");
- String materialOther = StringUtil.getInfo(search, "materialOther");
- String weight = StringUtil.getInfo(search, "weight");
- String expiryNum = StringUtil.getInfo(search, "expiryNum");
- String enableSerialNumber = StringUtil.getInfo(search, "enableSerialNumber");
- String enableBatchNumber = StringUtil.getInfo(search, "enableBatchNumber");
- String position = StringUtil.getInfo(search, "position");
- String enabled = StringUtil.getInfo(search, "enabled");
- String remark = StringUtil.getInfo(search, "remark");
- String mpList = StringUtil.getInfo(search, "mpList");
- List<MaterialVo4Unit> list = materialService.select(materialParam, standard, model, color, brand, mfrs, materialOther, weight, expiryNum,
- enableSerialNumber, enableBatchNumber, position, enabled, remark, categoryId, mpList);
- return getDataTable(list);
- }
- @PostMapping(value = "/add")
- @ApiOperation(value = "新增")
- public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception {
- Map<String, Object> objectMap = new HashMap<>();
- int insert = materialService.insertMaterial(obj, request);
- return returnStr(objectMap, insert);
- }
- @PutMapping(value = "/update")
- @ApiOperation(value = "修改")
- public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception {
- Map<String, Object> objectMap = new HashMap<>();
- int update = materialService.updateMaterial(obj, request);
- return returnStr(objectMap, update);
- }
- @DeleteMapping(value = "/delete")
- @ApiOperation(value = "删除")
- public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception {
- Map<String, Object> objectMap = new HashMap<>();
- int delete = materialService.deleteMaterial(id, request);
- return returnStr(objectMap, delete);
- }
- @DeleteMapping(value = "/deleteBatch")
- @ApiOperation(value = "批量删除")
- public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception {
- Map<String, Object> objectMap = new HashMap<>();
- int delete = materialService.batchDeleteMaterial(ids, request);
- return returnStr(objectMap, delete);
- }
- @GetMapping(value = "/checkIsNameExist")
- @ApiOperation(value = "检查名称是否存在")
- public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name,
- HttpServletRequest request)throws Exception {
- Map<String, Object> objectMap = new HashMap<>();
- int exist = materialService.checkIsNameExist(id, name);
- if(exist > 0) {
- objectMap.put("status", true);
- } else {
- objectMap.put("status", false);
- }
- return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code);
- }
- /**
- * 检查商品是否存在
- * @param id
- * @param name
- * @param model
- * @param color
- * @param standard
- * @param mfrs
- * @param otherField1
- * @param otherField2
- * @param otherField3
- * @param unit
- * @param unitId
- * @param request
- * @return
- * @throws Exception
- */
- @GetMapping(value = "/checkIsExist")
- @ApiOperation(value = "检查商品是否存在")
- public String checkIsExist(@RequestParam("id") Long id, @RequestParam("name") String name,
- @RequestParam("model") String model, @RequestParam("color") String color,
- @RequestParam("standard") String standard, @RequestParam("mfrs") String mfrs,
- @RequestParam("otherField1") String otherField1, @RequestParam("otherField2") String otherField2,
- @RequestParam("otherField3") String otherField3, @RequestParam("unit") String unit,@RequestParam("unitId") Long unitId,
- HttpServletRequest request)throws Exception {
- Map<String, Object> objectMap = new HashMap<String, Object>();
- int exist = materialService.checkIsExist(id, name, StringUtil.toNull(model), StringUtil.toNull(color),
- StringUtil.toNull(standard), StringUtil.toNull(mfrs), StringUtil.toNull(otherField1),
- StringUtil.toNull(otherField2), StringUtil.toNull(otherField3), StringUtil.toNull(unit), unitId);
- if(exist > 0) {
- objectMap.put("status", true);
- } else {
- objectMap.put("status", false);
- }
- return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code);
- }
- /**
- * 批量设置状态-启用或者禁用
- * @param jsonObject
- * @param request
- * @return
- * @throws Exception
- */
- @PostMapping(value = "/batchSetStatus")
- @ApiOperation(value = "批量设置状态-启用或者禁用")
- public String batchSetStatus(@RequestBody JSONObject jsonObject,
- HttpServletRequest request)throws Exception {
- Boolean status = jsonObject.getBoolean("status");
- String ids = jsonObject.getString("ids");
- Map<String, Object> objectMap = new HashMap<>();
- int res = materialService.batchSetStatus(status, ids);
- if(res > 0) {
- return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code);
- } else {
- return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code);
- }
- }
- /**
- * 根据id来查询商品名称
- * @param id
- * @param request
- * @return
- */
- @GetMapping(value = "/findById")
- @ApiOperation(value = "根据id来查询商品名称")
- public BaseResponseInfo findById(@RequestParam("id") Long id, HttpServletRequest request) throws Exception{
- BaseResponseInfo res = new BaseResponseInfo();
- try {
- List<MaterialVo4Unit> list = materialService.findById(id);
- res.code = 200;
- res.data = list;
- } catch(Exception e){
- logger.error(e.getMessage(), e);
- res.code = 500;
- res.data = "获取数据失败";
- }
- return res;
- }
- /**
- * 根据meId来查询商品名称
- * @param meId
- * @param request
- * @return
- */
- @GetMapping(value = "/findByIdWithBarCode")
- @ApiOperation(value = "根据meId来查询商品名称")
- public BaseResponseInfo findByIdWithBarCode(@RequestParam("meId") Long meId,
- @RequestParam("mpList") String mpList,
- HttpServletRequest request) throws Exception{
- BaseResponseInfo res = new BaseResponseInfo();
- try {
- String[] mpArr = mpList.split(",");
- MaterialVo4Unit mu = new MaterialVo4Unit();
- List<MaterialVo4Unit> list = materialService.findByIdWithBarCode(meId);
- if(list!=null && list.size()>0) {
- mu = list.get(0);
- mu.setMaterialOther(materialService.getMaterialOtherByParam(mpArr, mu));
- }
- res.code = 200;
- res.data = mu;
- } catch(Exception e){
- logger.error(e.getMessage(), e);
- res.code = 500;
- res.data = "获取数据失败";
- }
- return res;
- }
- /**
- * 根据关键词查找商品信息-条码、名称、规格、型号
- * @param q
- * @param request
- * @return
- */
- @GetMapping(value = "/getMaterialByParam")
- @ApiOperation(value = "根据关键词查找商品信息")
- public BaseResponseInfo getMaterialByParam(@RequestParam("q") String q,
- HttpServletRequest request) throws Exception{
- BaseResponseInfo res = new BaseResponseInfo();
- try {
- JSONArray arr = materialService.getMaterialByParam(q);
- res.code = 200;
- res.data = arr;
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- res.code = 500;
- res.data = "获取数据失败";
- }
- return res;
- }
- /**
- * 查找商品信息-下拉框
- * @param mpList
- * @param request
- * @return
- */
- @GetMapping(value = "/findBySelect")
- @ApiOperation(value = "查找商品信息")
- public JSONObject findBySelect(@RequestParam(value = "categoryId", required = false) Long categoryId,
- @RequestParam(value = "q", required = false) String q,
- @RequestParam(value = "standardOrModel", required = false) String standardOrModel,
- @RequestParam(value = "mpList", required = false) String mpList,
- @RequestParam(value = "depotId", required = false) Long depotId,
- @RequestParam(value = "color", required = false) String color,
- @RequestParam(value = "brand", required = false) String brand,
- @RequestParam(value = "mfrs", required = false) String mfrs,
- @RequestParam(value = "enableSerialNumber", required = false) String enableSerialNumber,
- @RequestParam(value = "enableBatchNumber", required = false) String enableBatchNumber,
- @RequestParam("page") Integer currentPage,
- @RequestParam("rows") Integer pageSize,
- HttpServletRequest request) throws Exception{
- JSONObject object = new JSONObject();
- try {
- String[] mpArr = new String[]{};
- if(StringUtil.isNotEmpty(mpList)){
- mpArr= mpList.split(",");
- }
- List<MaterialVo4Unit> dataList = materialService.findBySelectWithBarCode(categoryId, q, StringUtil.toNull(standardOrModel),
- StringUtil.toNull(color), StringUtil.toNull(brand), StringUtil.toNull(mfrs), enableSerialNumber, enableBatchNumber,
- (currentPage-1)*pageSize, pageSize);
- int total = materialService.findBySelectWithBarCodeCount(categoryId, q, StringUtil.toNull(standardOrModel),
- StringUtil.toNull(color), StringUtil.toNull(brand), StringUtil.toNull(mfrs), enableSerialNumber, enableBatchNumber);
- object.put("total", total);
- JSONArray dataArray = new JSONArray();
- //存放数据json数组
- if (null != dataList) {
- for (MaterialVo4Unit material : dataList) {
- JSONObject item = new JSONObject();
- item.put("id", material.getMeId()); //商品扩展表的id
- String ratioStr = ""; //比例
- Unit unit = new Unit();
- if (material.getUnitId() == null) {
- ratioStr = "";
- } else {
- unit = unitService.getUnit(material.getUnitId());
- //拼接副单位的比例
- String commodityUnit = material.getCommodityUnit();
- if(commodityUnit.equals(unit.getBasicUnit())) {
- ratioStr = "[基本]";
- }
- if(commodityUnit.equals(unit.getOtherUnit()) && unit.getRatio()!=null) {
- ratioStr = "[" + unit.getRatio().stripTrailingZeros().toPlainString() + unit.getBasicUnit() + "]";
- }
- if(commodityUnit.equals(unit.getOtherUnitTwo()) && unit.getRatioTwo()!=null) {
- ratioStr = "[" + unit.getRatioTwo().stripTrailingZeros().toPlainString() + unit.getBasicUnit() + "]";
- }
- if(commodityUnit.equals(unit.getOtherUnitThree()) && unit.getRatioThree()!=null) {
- ratioStr = "[" + unit.getRatioThree().stripTrailingZeros().toPlainString() + unit.getBasicUnit() + "]";
- }
- }
- item.put("mBarCode", material.getmBarCode());
- item.put("name", material.getName());
- item.put("mnemonic", material.getMnemonic());
- item.put("categoryName", material.getCategoryName());
- item.put("standard", material.getStandard());
- item.put("model", material.getModel());
- item.put("color", material.getColor());
- item.put("brand", material.getBrand());
- //item.put("mfrs", material.getMfrs());
- item.put("unit", material.getCommodityUnit() + ratioStr);
- item.put("sku", material.getSku());
- item.put("enableSerialNumber", material.getEnableSerialNumber());
- item.put("enableBatchNumber", material.getEnableBatchNumber());
- BigDecimal stock;
- if(StringUtil.isNotEmpty(material.getSku())){
- stock = depotItemService.getSkuStockByParam(depotId,material.getMeId(),null,null);
- } else {
- stock = depotItemService.getCurrentStockByParam(depotId, material.getId());
- if (material.getUnitId()!=null){
- String commodityUnit = material.getCommodityUnit();
- stock = unitService.parseStockByUnit(stock, unit, commodityUnit);
- }
- }
- item.put("stock", stock);
- item.put("expand", materialService.getMaterialOtherByParam(mpArr, material));
- item.put("imgName", material.getImgName());
- if(fileUploadType == 2) {
- item.put("imgSmall", "small");
- item.put("imgLarge", "large");
- } else {
- item.put("imgSmall", "");
- item.put("imgLarge", "");
- }
- dataArray.add(item);
- }
- }
- object.put("rows", dataArray);
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- }
- return object;
- }
- /**
- * 根据商品id查找商品信息
- * @param meId
- * @param request
- * @return
- * @throws Exception
- */
- @GetMapping(value = "/getMaterialByMeId")
- @ApiOperation(value = "根据商品id查找商品信息")
- public JSONObject getMaterialByMeId(@RequestParam(value = "meId", required = false) Long meId,
- @RequestParam("mpList") String mpList,
- HttpServletRequest request) throws Exception{
- JSONObject item = new JSONObject();
- try {
- String[] mpArr = mpList.split(",");
- List<MaterialVo4Unit> materialList = materialService.getMaterialByMeId(meId);
- if(materialList!=null && materialList.size()!=1) {
- return item;
- } else if(materialList.size() == 1) {
- MaterialVo4Unit material = materialList.get(0);
- item.put("Id", material.getMeId()); //商品扩展表的id
- String ratio; //比例
- if (material.getUnitId() == null || material.getUnitId().equals("")) {
- ratio = "";
- } else {
- ratio = material.getUnitName();
- ratio = ratio.substring(ratio.indexOf("("));
- }
- //名称/型号/扩展信息/包装
- String MaterialName = "";
- MaterialName = MaterialName + material.getmBarCode() + "_" + material.getName()
- + ((material.getStandard() == null || material.getStandard().equals("")) ? "" : "(" + material.getStandard() + ")");
- String expand = materialService.getMaterialOtherByParam(mpArr, material); //扩展信息
- MaterialName = MaterialName + expand + ((material.getUnit() == null || material.getUnit().equals("")) ? "" : "(" + material.getUnit() + ")") + ratio;
- item.put("MaterialName", MaterialName);
- item.put("name", material.getName());
- item.put("expand", expand);
- item.put("model", material.getModel());
- item.put("standard", material.getStandard());
- item.put("unit", material.getUnit() + ratio);
- }
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- }
- return item;
- }
- /**
- * 生成excel表格
- * @param categoryId
- * @param materialParam
- * @param color
- * @param weight
- * @param expiryNum
- * @param enabled
- * @param enableSerialNumber
- * @param enableBatchNumber
- * @param remark
- * @param mpList
- * @param request
- * @param response
- */
- @GetMapping(value = "/exportExcel")
- @ApiOperation(value = "生成excel表格")
- public void exportExcel(@RequestParam(value = "categoryId", required = false) String categoryId,
- @RequestParam(value = "materialParam", required = false) String materialParam,
- @RequestParam(value = "color", required = false) String color,
- @RequestParam(value = "materialOther", required = false) String materialOther,
- @RequestParam(value = "weight", required = false) String weight,
- @RequestParam(value = "expiryNum", required = false) String expiryNum,
- @RequestParam(value = "enabled", required = false) String enabled,
- @RequestParam(value = "enableSerialNumber", required = false) String enableSerialNumber,
- @RequestParam(value = "enableBatchNumber", required = false) String enableBatchNumber,
- @RequestParam(value = "remark", required = false) String remark,
- @RequestParam(value = "mpList", required = false) String mpList,
- HttpServletRequest request, HttpServletResponse response) {
- try {
- materialService.exportExcel(StringUtil.toNull(categoryId), StringUtil.toNull(materialParam), StringUtil.toNull(color),
- StringUtil.toNull(materialOther), StringUtil.toNull(weight),
- StringUtil.toNull(expiryNum), StringUtil.toNull(enabled), StringUtil.toNull(enableSerialNumber),
- StringUtil.toNull(enableBatchNumber), StringUtil.toNull(remark), response);
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- }
- }
- /**
- * excel表格导入产品(含初始库存)
- * @param file
- * @param request
- * @param response
- * @return
- */
- @PostMapping(value = "/importExcel")
- @ApiOperation(value = "excel表格导入产品")
- public BaseResponseInfo importExcel(MultipartFile file,
- HttpServletRequest request, HttpServletResponse response) throws Exception{
- BaseResponseInfo res = new BaseResponseInfo();
- try {
- res = materialService.importExcel(file, request);
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- }
- return res;
- }
- /**
- * 获取商品序列号
- * @param q
- * @param currentPage
- * @param pageSize
- * @param request
- * @param response
- * @return
- * @throws Exception
- */
- @GetMapping(value = "/getMaterialEnableSerialNumberList")
- @ApiOperation(value = "获取商品序列号")
- public JSONObject getMaterialEnableSerialNumberList(
- @RequestParam(value = "q", required = false) String q,
- @RequestParam("page") Integer currentPage,
- @RequestParam("rows") Integer pageSize,
- HttpServletRequest request,
- HttpServletResponse response)throws Exception {
- JSONObject object= new JSONObject();
- try {
- List<MaterialVo4Unit> list = materialService.getMaterialEnableSerialNumberList(q, (currentPage-1)*pageSize, pageSize);
- Long count = materialService.getMaterialEnableSerialNumberCount(q);
- object.put("rows", list);
- object.put("total", count);
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- }
- return object;
- }
- /**
- * 获取最大条码
- * @return
- * @throws Exception
- */
- @GetMapping(value = "/getMaxBarCode")
- @ApiOperation(value = "获取最大条码")
- public BaseResponseInfo getMaxBarCode() throws Exception {
- BaseResponseInfo res = new BaseResponseInfo();
- Map<String, Object> map = new HashMap<String, Object>();
- String barCode = materialService.getMaxBarCode();
- map.put("barCode", barCode);
- res.code = 200;
- res.data = map;
- return res;
- }
- /**
- * 商品名称模糊匹配
- * @return
- * @throws Exception
- */
- @GetMapping(value = "/getMaterialNameList")
- @ApiOperation(value = "商品名称模糊匹配")
- public JSONArray getMaterialNameList() throws Exception {
- JSONArray arr = new JSONArray();
- try {
- List<String> list = materialService.getMaterialNameList();
- for (String s : list) {
- JSONObject item = new JSONObject();
- item.put("value", s);
- item.put("text", s);
- arr.add(item);
- }
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- }
- return arr;
- }
- /**
- * 根据条码查询商品信息
- * @return
- * @throws Exception
- */
- @GetMapping(value = "/getMaterialByBarCode")
- @ApiOperation(value = "根据条码查询商品信息")
- public BaseResponseInfo getMaterialByBarCode(@RequestParam("barCode") String barCode,
- @RequestParam(value = "organId", required = false) Long organId,
- @RequestParam(value = "depotId", required = false) Long depotId,
- @RequestParam("mpList") String mpList,
- @RequestParam(required = false, value = "prefixNo") String prefixNo,
- HttpServletRequest request) throws Exception {
- BaseResponseInfo res = new BaseResponseInfo();
- try {
- Long userId = userService.getUserId(request);
- String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit();
- String[] mpArr = mpList.split(",");
- //支持序列号查询,先根据序列号查询条码,如果查不到就直接查条码
- MaterialExtend materialExtend = materialService.getMaterialExtendBySerialNumber(barCode);
- if(materialExtend!=null && StringUtil.isNotEmpty(materialExtend.getBarCode())) {
- barCode = materialExtend.getBarCode();
- }
- List<MaterialVo4Unit> list = materialService.getMaterialByBarCode(barCode);
- if(list!=null && list.size()>0) {
- for(MaterialVo4Unit mvo: list) {
- mvo.setMaterialOther(materialService.getMaterialOtherByParam(mpArr, mvo));
- if ("LSCK".equals(prefixNo) || "LSTH".equals(prefixNo)) {
- //零售价
- mvo.setBillPrice(mvo.getCommodityDecimal());
- } else if ("CGDD".equals(prefixNo) || "CGRK".equals(prefixNo) || "CGTH".equals(prefixNo)) {
- //采购价
- mvo.setBillPrice(mvo.getPurchaseDecimal());
- } else if("QTRK".equals(prefixNo) || "DBCK".equals(prefixNo) || "ZZD".equals(prefixNo) || "CXD".equals(prefixNo)
- || "PDLR".equals(prefixNo) || "PDFP".equals(prefixNo)) {
- //采购价-给录入界面按权限屏蔽
- mvo.setBillPrice(roleService.parseBillPriceByLimit(mvo.getPurchaseDecimal(), "buy", priceLimit, request));
- } if ("XSDD".equals(prefixNo) || "XSCK".equals(prefixNo) || "XSTH".equals(prefixNo) || "QTCK".equals(prefixNo)) {
- //销售价
- if(organId == null) {
- mvo.setBillPrice(mvo.getWholesaleDecimal());
- } else {
- //查询最后一单的销售价,实现不同的客户不同的销售价
- BigDecimal lastUnitPrice = depotItemService.getLastUnitPriceByParam(organId, mvo.getMeId(), prefixNo);
- mvo.setBillPrice(lastUnitPrice!=null? lastUnitPrice : mvo.getWholesaleDecimal());
- }
- //销售价-给录入界面按权限屏蔽价格
- if("QTCK".equals(prefixNo)) {
- mvo.setBillPrice(roleService.parseBillPriceByLimit(mvo.getWholesaleDecimal(), "sale", priceLimit, request));
- }
- }
- //仓库id
- if (depotId == null) {
- JSONArray depotArr = depotService.findDepotByCurrentUser();
- for (Object obj : depotArr) {
- JSONObject depotObj = JSONObject.parseObject(obj.toString());
- if (depotObj.get("isDefault") != null) {
- Boolean isDefault = depotObj.getBoolean("isDefault");
- if (isDefault) {
- Long id = depotObj.getLong("id");
- if (!"CGDD".equals(prefixNo) && !"XSDD".equals(prefixNo)) {
- //除订单之外的单据才有仓库
- mvo.setDepotId(id);
- }
- getStockByMaterialInfo(mvo);
- }
- }
- }
- } else {
- mvo.setDepotId(depotId);
- getStockByMaterialInfo(mvo);
- }
- }
- }
- res.code = 200;
- res.data = list;
- } catch(Exception e){
- logger.error(e.getMessage(), e);
- res.code = 500;
- res.data = "获取数据失败";
- }
- return res;
- }
- /**
- * 根据商品信息获取库存,进行赋值
- * @param mvo
- * @throws Exception
- */
- private void getStockByMaterialInfo(MaterialVo4Unit mvo) throws Exception {
- BigDecimal stock;
- if (StringUtil.isNotEmpty(mvo.getSku())) {
- stock = depotItemService.getSkuStockByParam(mvo.getDepotId(), mvo.getMeId(), null, null);
- } else {
- stock = depotItemService.getCurrentStockByParam(mvo.getDepotId(), mvo.getId());
- if (mvo.getUnitId() != null) {
- Unit unit = unitService.getUnit(mvo.getUnitId());
- String commodityUnit = mvo.getCommodityUnit();
- stock = unitService.parseStockByUnit(stock, unit, commodityUnit);
- }
- }
- mvo.setStock(stock);
- }
- /**
- * 商品库存查询
- * @param currentPage
- * @param pageSize
- * @param depotIds
- * @param categoryId
- * @param materialParam
- * @param zeroStock
- * @param column
- * @param order
- * @param request
- * @return
- * @throws Exception
- */
- @GetMapping(value = "/getListWithStock")
- @ApiOperation(value = "商品库存查询")
- public BaseResponseInfo getListWithStock(@RequestParam("currentPage") Integer currentPage,
- @RequestParam("pageSize") Integer pageSize,
- @RequestParam(value = "depotIds", required = false) String depotIds,
- @RequestParam(value = "categoryId", required = false) Long categoryId,
- @RequestParam(value = "position", required = false) String position,
- @RequestParam("materialParam") String materialParam,
- @RequestParam("zeroStock") Integer zeroStock,
- @RequestParam(value = "column", required = false, defaultValue = "createTime") String column,
- @RequestParam(value = "order", required = false, defaultValue = "desc") String order,
- HttpServletRequest request)throws Exception {
- BaseResponseInfo res = new BaseResponseInfo();
- Map<String, Object> map = new HashMap<>();
- try {
- List<Long> idList = new ArrayList<>();
- List<Long> depotList = new ArrayList<>();
- if(categoryId != null){
- idList = materialService.getListByParentId(categoryId);
- }
- if(StringUtil.isNotEmpty(depotIds)) {
- depotList = StringUtil.strToLongList(depotIds);
- } else {
- //未选择仓库时默认为当前用户有权限的仓库
- JSONArray depotArr = depotService.findDepotByCurrentUser();
- for(Object obj: depotArr) {
- JSONObject object = JSONObject.parseObject(obj.toString());
- depotList.add(object.getLong("id"));
- }
- }
- Boolean moveAvgPriceFlag = systemConfigService.getMoveAvgPriceFlag();
- List<MaterialVo4Unit> dataList = materialService.getListWithStock(depotList, idList, StringUtil.toNull(position), StringUtil.toNull(materialParam),
- moveAvgPriceFlag, zeroStock, StringUtil.safeSqlParse(column), StringUtil.safeSqlParse(order), (currentPage-1)*pageSize, pageSize);
- int total = materialService.getListWithStockCount(depotList, idList, StringUtil.toNull(position), StringUtil.toNull(materialParam), zeroStock);
- MaterialVo4Unit materialVo4Unit= materialService.getTotalStockAndPrice(depotList, idList, StringUtil.toNull(position), StringUtil.toNull(materialParam));
- map.put("total", total);
- map.put("currentStock", materialVo4Unit.getCurrentStock()!=null?materialVo4Unit.getCurrentStock():BigDecimal.ZERO);
- if(moveAvgPriceFlag) {
- map.put("currentStockPrice", materialVo4Unit.getCurrentStockMovePrice()!=null?materialVo4Unit.getCurrentStockMovePrice():BigDecimal.ZERO);
- } else {
- map.put("currentStockPrice", materialVo4Unit.getCurrentStockPrice()!=null?materialVo4Unit.getCurrentStockPrice():BigDecimal.ZERO);
- }
- map.put("currentWeight", materialVo4Unit.getCurrentWeight()!=null?materialVo4Unit.getCurrentWeight():BigDecimal.ZERO);
- map.put("rows", dataList);
- res.code = 200;
- res.data = map;
- } catch(Exception e){
- logger.error(e.getMessage(), e);
- res.code = 500;
- res.data = "获取数据失败";
- }
- return res;
- }
- /**
- * 批量设置商品当前的实时库存(按每个仓库)
- * @param jsonObject
- * @param request
- * @return
- * @throws Exception
- */
- @PostMapping(value = "/batchSetMaterialCurrentStock")
- @ApiOperation(value = "批量设置商品当前的实时库存(按每个仓库)")
- public String batchSetMaterialCurrentStock(@RequestBody JSONObject jsonObject,
- HttpServletRequest request)throws Exception {
- String ids = jsonObject.getString("ids");
- Map<String, Object> objectMap = new HashMap<>();
- int res = materialService.batchSetMaterialCurrentStock(ids);
- if(res > 0) {
- return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code);
- } else {
- return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code);
- }
- }
- /**
- * 批量设置商品当前的成本价
- * @param jsonObject
- * @param request
- * @return
- * @throws Exception
- */
- @PostMapping(value = "/batchSetMaterialCurrentUnitPrice")
- @ApiOperation(value = "批量设置商品当前的成本价")
- public String batchSetMaterialCurrentUnitPrice(@RequestBody JSONObject jsonObject,
- HttpServletRequest request)throws Exception {
- String ids = jsonObject.getString("ids");
- Map<String, Object> objectMap = new HashMap<>();
- int res = materialService.batchSetMaterialCurrentUnitPrice(ids);
- if(res > 0) {
- return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code);
- } else {
- return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code);
- }
- }
- /**
- * 批量更新商品信息
- * @param jsonObject
- * @param request
- * @return
- * @throws Exception
- */
- @PostMapping(value = "/batchUpdate")
- @ApiOperation(value = "批量更新商品信息")
- public String batchUpdate(@RequestBody JSONObject jsonObject,
- HttpServletRequest request)throws Exception {
- Map<String, Object> objectMap = new HashMap<>();
- int res = materialService.batchUpdate(jsonObject);
- if(res > 0) {
- return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code);
- } else {
- return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code);
- }
- }
- /**
- * 转换名称为拼音
- * @param jsonObject
- */
- @PostMapping(value = "/changeNameToPinYin")
- @ApiOperation(value = "转换名称为拼音")
- public BaseResponseInfo changeNameToPinYin(@RequestBody JSONObject jsonObject)throws Exception {
- BaseResponseInfo res = new BaseResponseInfo();
- try {
- String name = jsonObject.getString("name");
- res.code = 200;
- res.data = PinYinUtil.getFirstLettersLo(name);
- } catch(Exception e){
- logger.error(e.getMessage(), e);
- res.code = 500;
- res.data = "获取数据失败";
- }
- return res;
- }
- }
|